@strapi/content-type-builder 5.15.1 → 5.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js +12 -23
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +12 -23
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
- package/dist/admin/components/CustomRadioGroup/Styles.js +2 -4
- package/dist/admin/components/CustomRadioGroup/Styles.js.map +1 -1
- package/dist/admin/components/CustomRadioGroup/Styles.mjs +2 -4
- package/dist/admin/components/CustomRadioGroup/Styles.mjs.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.js +10 -22
- package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.mjs +10 -22
- package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
- package/dist/admin/components/DataManager/utils/cleanData.js +98 -16
- package/dist/admin/components/DataManager/utils/cleanData.js.map +1 -1
- package/dist/admin/components/DataManager/utils/cleanData.mjs +98 -16
- package/dist/admin/components/DataManager/utils/cleanData.mjs.map +1 -1
- package/dist/admin/components/DynamicZoneList.js +15 -28
- package/dist/admin/components/DynamicZoneList.js.map +1 -1
- package/dist/admin/components/DynamicZoneList.mjs +15 -28
- package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/advancedForm.js +18 -3
- package/dist/admin/components/FormModal/attributes/advancedForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/advancedForm.mjs +18 -3
- package/dist/admin/components/FormModal/attributes/advancedForm.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/Components.js +7 -0
- package/dist/admin/components/Relation/RelationNaturePicker/Components.js.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/Components.mjs +7 -0
- package/dist/admin/components/Relation/RelationNaturePicker/Components.mjs.map +1 -1
- package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +287 -273
- package/dist/admin/translations/en.json.js +2 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +2 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/fr.json.js +4 -0
- package/dist/admin/translations/fr.json.js.map +1 -1
- package/dist/admin/translations/fr.json.mjs +4 -0
- package/dist/admin/translations/fr.json.mjs.map +1 -1
- package/dist/server/controllers/validation/common.js +0 -6
- package/dist/server/controllers/validation/common.js.map +1 -1
- package/dist/server/controllers/validation/common.mjs +1 -6
- package/dist/server/controllers/validation/common.mjs.map +1 -1
- package/dist/server/controllers/validation/schema.js +4 -1
- package/dist/server/controllers/validation/schema.js.map +1 -1
- package/dist/server/controllers/validation/schema.mjs +4 -1
- package/dist/server/controllers/validation/schema.mjs.map +1 -1
- package/dist/server/controllers/validation/types.js +9 -2
- package/dist/server/controllers/validation/types.js.map +1 -1
- package/dist/server/controllers/validation/types.mjs +10 -3
- package/dist/server/controllers/validation/types.mjs.map +1 -1
- package/dist/server/src/controllers/validation/schema.d.ts +192 -0
- package/dist/server/src/controllers/validation/schema.d.ts.map +1 -1
- package/dist/server/src/services/schema.d.ts +6 -0
- package/dist/server/src/services/schema.d.ts.map +1 -1
- package/dist/server/src/utils/attributes.d.ts +1 -0
- package/dist/server/src/utils/attributes.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -117,18 +117,11 @@ const DataManagerProvider = ({ children })=>{
|
|
|
117
117
|
acc[uid] = PluginForms.mutateContentTypeSchema(contentType, initialContentTypes[uid]);
|
|
118
118
|
return acc;
|
|
119
119
|
}, {});
|
|
120
|
-
const requestData = stateToRequestData({
|
|
120
|
+
const { requestData, trackingEventProperties } = stateToRequestData({
|
|
121
121
|
components: state.current.components,
|
|
122
122
|
contentTypes: mutatedCTs
|
|
123
123
|
});
|
|
124
124
|
const isSendingContentTypes = Object.keys(state.current.contentTypes).length > 0;
|
|
125
|
-
const isSendingComponents = Object.keys(state.current.components).length > 0;
|
|
126
|
-
if (isSendingContentTypes) {
|
|
127
|
-
trackUsage('willSaveContentType');
|
|
128
|
-
}
|
|
129
|
-
if (isSendingComponents) {
|
|
130
|
-
trackUsage('willSaveComponent');
|
|
131
|
-
}
|
|
132
125
|
lockAppWithAutoreload();
|
|
133
126
|
try {
|
|
134
127
|
await fetchClient.post(`/content-type-builder/update-schema`, {
|
|
@@ -139,13 +132,6 @@ const DataManagerProvider = ({ children })=>{
|
|
|
139
132
|
trackUsage('didCreateGuidedTourCollectionType');
|
|
140
133
|
setCurrentStep(null);
|
|
141
134
|
}
|
|
142
|
-
if (isSendingContentTypes) {
|
|
143
|
-
trackUsage('didSaveContentType');
|
|
144
|
-
// trackUsage('didEditNameOfContentType');
|
|
145
|
-
}
|
|
146
|
-
if (isSendingComponents) {
|
|
147
|
-
trackUsage('didSaveComponent');
|
|
148
|
-
}
|
|
149
135
|
// Make sure the server has restarted
|
|
150
136
|
await serverRestartWatcher();
|
|
151
137
|
// refetch and update initial state after the data has been saved
|
|
@@ -153,12 +139,6 @@ const DataManagerProvider = ({ children })=>{
|
|
|
153
139
|
// Update the app's permissions
|
|
154
140
|
await updatePermissions();
|
|
155
141
|
} catch (err) {
|
|
156
|
-
// if (isSendingContentTypes) {
|
|
157
|
-
// trackUsage('didNotSaveContentType');
|
|
158
|
-
// }
|
|
159
|
-
if (isSendingComponents) {
|
|
160
|
-
trackUsage('didNotSaveComponent');
|
|
161
|
-
}
|
|
162
142
|
console.error({
|
|
163
143
|
err
|
|
164
144
|
});
|
|
@@ -169,9 +149,17 @@ const DataManagerProvider = ({ children })=>{
|
|
|
169
149
|
defaultMessage: 'An error occurred'
|
|
170
150
|
})
|
|
171
151
|
});
|
|
152
|
+
trackUsage('didUpdateCTBSchema', {
|
|
153
|
+
...trackingEventProperties,
|
|
154
|
+
success: false
|
|
155
|
+
});
|
|
172
156
|
} finally{
|
|
173
|
-
setIsSaving(
|
|
157
|
+
setIsSaving(false);
|
|
174
158
|
unlockAppWithAutoreload();
|
|
159
|
+
trackUsage('didUpdateCTBSchema', {
|
|
160
|
+
...trackingEventProperties,
|
|
161
|
+
success: true
|
|
162
|
+
});
|
|
175
163
|
}
|
|
176
164
|
};
|
|
177
165
|
const componentsThatHaveOtherComponentInTheirAttributes = React.useMemo(()=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataManagerProvider.mjs","sources":["../../../../admin/src/components/DataManager/DataManagerProvider.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useGuidedTour,\n useTracking,\n useStrapiApp,\n useNotification,\n useAppInfo,\n useFetchClient,\n useAuth,\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';\n\nimport { getTrad } from '../../utils/getTrad';\nimport { useAutoReloadOverlayBlocker } from '../AutoReloadOverlayBlocker';\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\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 { setCurrentStep, setStepState } = useGuidedTour('DataManagerProvider', (state) => state);\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 } = useTracking();\n const refetchPermissions = useAuth('DataManagerProvider', (state) => state.refetchPermissions);\n const { onCloseModal } = useFormModalNavigation();\n\n const [isSaving, setIsSaving] = React.useState(false);\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\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 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 = stateToRequestData({\n components: state.current.components,\n contentTypes: mutatedCTs,\n });\n\n const isSendingContentTypes = Object.keys(state.current.contentTypes).length > 0;\n const isSendingComponents = Object.keys(state.current.components).length > 0;\n\n if (isSendingContentTypes) {\n trackUsage('willSaveContentType');\n }\n if (isSendingComponents) {\n trackUsage('willSaveComponent');\n }\n\n lockAppWithAutoreload();\n\n try {\n await fetchClient.post(`/content-type-builder/update-schema`, { data: requestData });\n\n if (isSendingContentTypes) {\n setStepState('contentTypeBuilder.success', true);\n trackUsage('didCreateGuidedTourCollectionType');\n setCurrentStep(null);\n }\n\n if (isSendingContentTypes) {\n trackUsage('didSaveContentType');\n\n // trackUsage('didEditNameOfContentType');\n }\n if (isSendingComponents) {\n trackUsage('didSaveComponent');\n }\n\n // Make sure the server has restarted\n await serverRestartWatcher();\n\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 // if (isSendingContentTypes) {\n // trackUsage('didNotSaveContentType');\n // }\n\n if (isSendingComponents) {\n trackUsage('didNotSaveComponent');\n }\n\n console.error({ err });\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n } finally {\n setIsSaving(true);\n unlockAppWithAutoreload();\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 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","components","contentTypes","reservedNames","initialComponents","initialContentTypes","isLoading","current","toggleNotification","useNotification","lockAppWithAutoreload","unlockAppWithAutoreload","useAutoReloadOverlayBlocker","setCurrentStep","setStepState","useGuidedTour","serverRestartWatcher","useServerRestartWatcher","getPlugin","useStrapiApp","plugin","autoReload","useAppInfo","formatMessage","useIntl","trackUsage","useTracking","refetchPermissions","useAuth","onCloseModal","useFormModalNavigation","isSaving","setIsSaving","React","useState","isModified","useMemo","isEqual","fetchClient","useFetchClient","isInDevelopmentMode","getDataRef","useRef","schemaResponse","reservedNamesResponse","Promise","all","get","data","actions","init","mapValues","component","status","contentType","clearHistory","err","console","error","type","message","id","defaultMessage","useEffect","reloadPlugin","getTrad","getAllComponentsThatHaveAComponentInTheirAttributes","composWithCompos","retrieveComponentsThatHaveComponents","getAllNestedComponents","appNestedCompo","retrieveNestedComponents","updatePermissions","saveSchema","PluginForms","apis","forms","mutatedCTs","Object","entries","reduce","acc","uid","mutateContentTypeSchema","requestData","stateToRequestData","isSendingContentTypes","keys","length","isSendingComponents","post","componentsThatHaveOtherComponentInTheirAttributes","nestedComponents","allComponentsCategories","retrieveSpecificInfoFromComponents","componentsGroupedByCategory","groupBy","sortedContentTypesList","sortContentType","context","addAttribute","payload","editAttribute","addCustomFieldAttribute","editCustomFieldAttribute","addCreatedComponentToDynamicZone","createSchema","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.mjs","sources":["../../../../admin/src/components/DataManager/DataManagerProvider.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useGuidedTour,\n useTracking,\n useStrapiApp,\n useNotification,\n useAppInfo,\n useFetchClient,\n useAuth,\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';\n\nimport { getTrad } from '../../utils/getTrad';\nimport { useAutoReloadOverlayBlocker } from '../AutoReloadOverlayBlocker';\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\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 { setCurrentStep, setStepState } = useGuidedTour('DataManagerProvider', (state) => state);\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 } = useTracking();\n const refetchPermissions = useAuth('DataManagerProvider', (state) => state.refetchPermissions);\n const { onCloseModal } = useFormModalNavigation();\n\n const [isSaving, setIsSaving] = React.useState(false);\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\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 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 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 setStepState('contentTypeBuilder.success', true);\n trackUsage('didCreateGuidedTourCollectionType');\n setCurrentStep(null);\n }\n\n // Make sure the server has restarted\n await serverRestartWatcher();\n\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', { ...trackingEventProperties, success: false });\n } finally {\n setIsSaving(false);\n unlockAppWithAutoreload();\n\n trackUsage('didUpdateCTBSchema', { ...trackingEventProperties, success: true });\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 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","components","contentTypes","reservedNames","initialComponents","initialContentTypes","isLoading","current","toggleNotification","useNotification","lockAppWithAutoreload","unlockAppWithAutoreload","useAutoReloadOverlayBlocker","setCurrentStep","setStepState","useGuidedTour","serverRestartWatcher","useServerRestartWatcher","getPlugin","useStrapiApp","plugin","autoReload","useAppInfo","formatMessage","useIntl","trackUsage","useTracking","refetchPermissions","useAuth","onCloseModal","useFormModalNavigation","isSaving","setIsSaving","React","useState","isModified","useMemo","isEqual","fetchClient","useFetchClient","isInDevelopmentMode","getDataRef","useRef","schemaResponse","reservedNamesResponse","Promise","all","get","data","actions","init","mapValues","component","status","contentType","clearHistory","err","console","error","type","message","id","defaultMessage","useEffect","reloadPlugin","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","componentsThatHaveOtherComponentInTheirAttributes","nestedComponents","allComponentsCategories","retrieveSpecificInfoFromComponents","componentsGroupedByCategory","groupBy","sortedContentTypesList","sortContentType","context","addAttribute","payload","editAttribute","addCustomFieldAttribute","editCustomFieldAttribute","addCreatedComponentToDynamicZone","createSchema","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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"}
|
|
@@ -18,23 +18,54 @@ const sortContentType = (types)=>{
|
|
|
18
18
|
status: types[uid].status
|
|
19
19
|
})).filter((obj)=>obj !== null), (obj)=>camelCase(obj.title));
|
|
20
20
|
};
|
|
21
|
-
const stateToRequestData = (
|
|
22
|
-
const
|
|
21
|
+
const stateToRequestData = ({ components, contentTypes })=>{
|
|
22
|
+
const trackingEventProperties = {
|
|
23
|
+
newContentTypes: 0,
|
|
24
|
+
editedContentTypes: 0,
|
|
25
|
+
deletedContentTypes: 0,
|
|
26
|
+
newComponents: 0,
|
|
27
|
+
editedComponents: 0,
|
|
28
|
+
deletedComponents: 0,
|
|
29
|
+
newFields: 0,
|
|
30
|
+
editedFields: 0,
|
|
31
|
+
deletedFields: 0
|
|
32
|
+
};
|
|
33
|
+
const formattedComponents = Object.values(components).filter((compo)=>{
|
|
34
|
+
return [
|
|
35
|
+
'NEW',
|
|
36
|
+
'CHANGED',
|
|
37
|
+
'REMOVED'
|
|
38
|
+
].includes(compo.status);
|
|
39
|
+
}).map((component)=>{
|
|
40
|
+
const requestFormattedComponent = formatTypeForRequest(component);
|
|
41
|
+
const eventAction = requestFormattedComponent.action;
|
|
42
|
+
updateEventCounts({
|
|
43
|
+
...component,
|
|
44
|
+
action: eventAction
|
|
45
|
+
}, trackingEventProperties, 'component');
|
|
46
|
+
return requestFormattedComponent;
|
|
47
|
+
});
|
|
48
|
+
const formattedContentTypes = Object.values(contentTypes).filter((contentType)=>{
|
|
49
|
+
return [
|
|
50
|
+
'NEW',
|
|
51
|
+
'CHANGED',
|
|
52
|
+
'REMOVED'
|
|
53
|
+
].includes(contentType.status);
|
|
54
|
+
}).map((contentType)=>{
|
|
55
|
+
const requestFormattedContentType = formatTypeForRequest(contentType);
|
|
56
|
+
const eventAction = requestFormattedContentType.action;
|
|
57
|
+
updateEventCounts({
|
|
58
|
+
...contentType,
|
|
59
|
+
action: eventAction
|
|
60
|
+
}, trackingEventProperties, 'contentType');
|
|
61
|
+
return requestFormattedContentType;
|
|
62
|
+
});
|
|
23
63
|
return {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
].includes(compo.status);
|
|
30
|
-
}).map(formatTypeForRequest),
|
|
31
|
-
contentTypes: Object.values(contentTypes).filter((ct)=>{
|
|
32
|
-
return [
|
|
33
|
-
'NEW',
|
|
34
|
-
'CHANGED',
|
|
35
|
-
'REMOVED'
|
|
36
|
-
].includes(ct.status);
|
|
37
|
-
}).map(formatTypeForRequest)
|
|
64
|
+
requestData: {
|
|
65
|
+
components: formattedComponents,
|
|
66
|
+
contentTypes: formattedContentTypes
|
|
67
|
+
},
|
|
68
|
+
trackingEventProperties
|
|
38
69
|
};
|
|
39
70
|
};
|
|
40
71
|
const removeNullKeys = (obj)=>{
|
|
@@ -122,6 +153,57 @@ const formatTypeForRequest = (type)=>{
|
|
|
122
153
|
})
|
|
123
154
|
};
|
|
124
155
|
};
|
|
156
|
+
const updateEventCounts = (type, counts, entityType)=>{
|
|
157
|
+
if (!type || typeof type.action !== 'string') {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const isContentType = entityType === 'contentType';
|
|
161
|
+
switch(type.action){
|
|
162
|
+
case 'create':
|
|
163
|
+
if (isContentType) {
|
|
164
|
+
counts.newContentTypes++;
|
|
165
|
+
} else {
|
|
166
|
+
counts.newComponents++;
|
|
167
|
+
}
|
|
168
|
+
break;
|
|
169
|
+
case 'update':
|
|
170
|
+
if (isContentType) {
|
|
171
|
+
counts.editedContentTypes++;
|
|
172
|
+
} else {
|
|
173
|
+
counts.editedComponents++;
|
|
174
|
+
}
|
|
175
|
+
break;
|
|
176
|
+
case 'delete':
|
|
177
|
+
if (isContentType) {
|
|
178
|
+
counts.deletedContentTypes++;
|
|
179
|
+
} else {
|
|
180
|
+
counts.deletedComponents++;
|
|
181
|
+
}
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
if (Array.isArray(type.attributes)) {
|
|
185
|
+
if (type.action === 'delete') {
|
|
186
|
+
counts.deletedFields += type.attributes.length;
|
|
187
|
+
} else {
|
|
188
|
+
type.attributes.forEach((attribute)=>{
|
|
189
|
+
if (!attribute || typeof attribute.status !== 'string') {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
switch(attribute.status){
|
|
193
|
+
case 'NEW':
|
|
194
|
+
counts.newFields++;
|
|
195
|
+
break;
|
|
196
|
+
case 'CHANGED':
|
|
197
|
+
counts.editedFields++;
|
|
198
|
+
break;
|
|
199
|
+
case 'REMOVED':
|
|
200
|
+
counts.deletedFields++;
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
};
|
|
125
207
|
|
|
126
208
|
exports.sortContentType = sortContentType;
|
|
127
209
|
exports.stateToRequestData = stateToRequestData;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanData.js","sources":["../../../../../admin/src/components/DataManager/utils/cleanData.ts"],"sourcesContent":["import camelCase from 'lodash/camelCase';\nimport omit from 'lodash/omit';\nimport sortBy from 'lodash/sortBy';\n\nimport { pluginId } from '../../../pluginId';\n\nimport type {\n Component,\n Components,\n ContentTypes,\n ContentType,\n AnyAttribute,\n} from '../../../types';\nimport type { UID } from '@strapi/types';\n\nconst sortContentType = (types: ContentTypes) => {\n return sortBy(\n Object.keys(types)\n .map((uid) => ({\n visible: types[uid].visible,\n name: uid as UID.ContentType,\n title: types[uid].info.displayName,\n plugin: types[uid].plugin,\n uid: uid as UID.ContentType,\n to: `/plugins/${pluginId}/content-types/${uid}`,\n kind: types[uid].kind,\n restrictRelationsTo: types[uid].restrictRelationsTo,\n status: types[uid].status,\n }))\n .filter((obj) => obj !== null),\n (obj) => camelCase(obj.title)\n );\n};\n\nconst stateToRequestData = (state: { components: Components; contentTypes: ContentTypes }) => {\n const { components, contentTypes } = state;\n\n return {\n components: Object.values(components)\n .filter((compo) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(compo.status);\n })\n .map(formatTypeForRequest),\n contentTypes: Object.values(contentTypes)\n .filter((ct) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(ct.status);\n })\n .map(formatTypeForRequest),\n };\n};\n\nconst removeNullKeys = (obj: Record<string, unknown>) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n if (typeof value === 'object' && value !== null) {\n return Object.keys(value).length > 0;\n }\n return value !== null && value !== undefined;\n })\n );\n};\n\nconst formatAttribute = (attr: AnyAttribute) => {\n if ('customField' in attr) {\n return { ...attr, type: 'customField' };\n }\n\n if ('targetAttribute' in attr) {\n return { ...attr, targetAttribute: attr.targetAttribute === '-' ? null : attr.targetAttribute };\n }\n\n return attr;\n};\n\nconst formatTypeForRequest = (type: ContentType | Component) => {\n let action;\n // should we do a diff with the initial data instead of trusting the state status ??\n switch (type.status) {\n case 'NEW':\n action = 'create';\n break;\n case 'CHANGED':\n action = 'update';\n break;\n case 'REMOVED':\n return { action: 'delete', uid: type.uid };\n default:\n throw new Error('Invalid status');\n }\n\n return {\n action,\n uid: type.uid,\n category: 'category' in type ? type.category : undefined,\n ...omit(type, ['info', 'options', 'visible', 'uid', 'restrictRelationsTo']),\n ...type.options,\n ...type.info,\n attributes: type.attributes.map((attr) => {\n let action;\n\n switch (attr.status) {\n // NOTE: we want to always send the full data to preserve the order\n\n case 'NEW':\n action = 'create';\n break;\n case 'REMOVED':\n return { action: 'delete', name: attr.name };\n case 'UNCHANGED':\n case 'CHANGED':\n default:\n action = 'update';\n }\n\n return {\n action,\n name: attr.name,\n properties: removeNullKeys(omit(formatAttribute(attr), ['status', 'name'])),\n };\n }),\n };\n};\n\nexport { stateToRequestData, sortContentType };\n"],"names":["sortContentType","types","sortBy","Object","keys","map","uid","visible","name","title","info","displayName","plugin","to","pluginId","kind","restrictRelationsTo","status","filter","obj","camelCase","stateToRequestData","state","components","contentTypes","values","compo","includes","formatTypeForRequest","ct","removeNullKeys","fromEntries","entries","_","value","Array","isArray","length","undefined","formatAttribute","attr","type","targetAttribute","action","Error","category","omit","options","attributes","properties"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cleanData.js","sources":["../../../../../admin/src/components/DataManager/utils/cleanData.ts"],"sourcesContent":["import camelCase from 'lodash/camelCase';\nimport omit from 'lodash/omit';\nimport sortBy from 'lodash/sortBy';\n\nimport { pluginId } from '../../../pluginId';\n\nimport type {\n Component,\n Components,\n ContentTypes,\n ContentType,\n AnyAttribute,\n} from '../../../types';\nimport type { UID } from '@strapi/types';\n\nconst sortContentType = (types: ContentTypes) => {\n return sortBy(\n Object.keys(types)\n .map((uid) => ({\n visible: types[uid].visible,\n name: uid as UID.ContentType,\n title: types[uid].info.displayName,\n plugin: types[uid].plugin,\n uid: uid as UID.ContentType,\n to: `/plugins/${pluginId}/content-types/${uid}`,\n kind: types[uid].kind,\n restrictRelationsTo: types[uid].restrictRelationsTo,\n status: types[uid].status,\n }))\n .filter((obj) => obj !== null),\n (obj) => camelCase(obj.title)\n );\n};\n\ntype TrackingEventProperties = {\n newContentTypes: number;\n editedContentTypes: number;\n deletedContentTypes: number;\n newComponents: number;\n editedComponents: number;\n deletedComponents: number;\n newFields: number;\n editedFields: number;\n deletedFields: number;\n};\n\nconst stateToRequestData = ({\n components,\n contentTypes,\n}: {\n components: Components;\n contentTypes: ContentTypes;\n}) => {\n const trackingEventProperties: TrackingEventProperties = {\n newContentTypes: 0,\n editedContentTypes: 0,\n deletedContentTypes: 0,\n newComponents: 0,\n editedComponents: 0,\n deletedComponents: 0,\n newFields: 0,\n editedFields: 0,\n deletedFields: 0,\n };\n\n const formattedComponents = Object.values(components)\n .filter((compo) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(compo.status);\n })\n .map((component) => {\n const requestFormattedComponent = formatTypeForRequest(component);\n\n const eventAction = requestFormattedComponent.action as 'create' | 'update' | 'delete';\n updateEventCounts(\n { ...component, action: eventAction },\n trackingEventProperties,\n 'component'\n );\n\n return requestFormattedComponent;\n });\n\n const formattedContentTypes = Object.values(contentTypes)\n .filter((contentType) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(contentType.status);\n })\n .map((contentType) => {\n const requestFormattedContentType = formatTypeForRequest(contentType);\n\n const eventAction = requestFormattedContentType.action as 'create' | 'update' | 'delete';\n updateEventCounts(\n { ...contentType, action: eventAction },\n trackingEventProperties,\n 'contentType'\n );\n\n return requestFormattedContentType;\n });\n\n return {\n requestData: {\n components: formattedComponents,\n contentTypes: formattedContentTypes,\n },\n trackingEventProperties,\n };\n};\n\nconst removeNullKeys = (obj: Record<string, unknown>) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n if (typeof value === 'object' && value !== null) {\n return Object.keys(value).length > 0;\n }\n return value !== null && value !== undefined;\n })\n );\n};\n\nconst formatAttribute = (attr: AnyAttribute) => {\n if ('customField' in attr) {\n return { ...attr, type: 'customField' };\n }\n\n if ('targetAttribute' in attr) {\n return { ...attr, targetAttribute: attr.targetAttribute === '-' ? null : attr.targetAttribute };\n }\n\n return attr;\n};\n\nconst formatTypeForRequest = (type: ContentType | Component) => {\n let action;\n // should we do a diff with the initial data instead of trusting the state status ??\n switch (type.status) {\n case 'NEW':\n action = 'create';\n break;\n case 'CHANGED':\n action = 'update';\n break;\n case 'REMOVED':\n return { action: 'delete', uid: type.uid };\n default:\n throw new Error('Invalid status');\n }\n\n return {\n action,\n uid: type.uid,\n category: 'category' in type ? type.category : undefined,\n ...omit(type, ['info', 'options', 'visible', 'uid', 'restrictRelationsTo']),\n ...type.options,\n ...type.info,\n attributes: type.attributes.map((attr) => {\n let action;\n\n switch (attr.status) {\n // NOTE: we want to always send the full data to preserve the order\n\n case 'NEW':\n action = 'create';\n break;\n case 'REMOVED':\n return { action: 'delete', name: attr.name };\n case 'UNCHANGED':\n case 'CHANGED':\n default:\n action = 'update';\n }\n\n return {\n action,\n name: attr.name,\n properties: removeNullKeys(omit(formatAttribute(attr), ['status', 'name'])),\n };\n }),\n };\n};\n\nconst updateEventCounts = (\n type: (ContentType | Component) & { action?: 'create' | 'update' | 'delete' },\n counts: TrackingEventProperties,\n entityType: 'component' | 'contentType'\n) => {\n if (!type || typeof type.action !== 'string') {\n return;\n }\n\n const isContentType = entityType === 'contentType';\n\n switch (type.action) {\n case 'create':\n if (isContentType) {\n counts.newContentTypes++;\n } else {\n counts.newComponents++;\n }\n break;\n case 'update':\n if (isContentType) {\n counts.editedContentTypes++;\n } else {\n counts.editedComponents++;\n }\n break;\n case 'delete':\n if (isContentType) {\n counts.deletedContentTypes++;\n } else {\n counts.deletedComponents++;\n }\n break;\n default:\n break;\n }\n\n if (Array.isArray(type.attributes)) {\n if (type.action === 'delete') {\n counts.deletedFields += type.attributes.length;\n } else {\n type.attributes.forEach((attribute) => {\n if (!attribute || typeof attribute.status !== 'string') {\n return;\n }\n\n switch (attribute.status) {\n case 'NEW':\n counts.newFields++;\n break;\n case 'CHANGED':\n counts.editedFields++;\n break;\n case 'REMOVED':\n counts.deletedFields++;\n break;\n case 'UNCHANGED':\n default:\n break;\n }\n });\n }\n }\n};\n\nexport { stateToRequestData, sortContentType };\n"],"names":["sortContentType","types","sortBy","Object","keys","map","uid","visible","name","title","info","displayName","plugin","to","pluginId","kind","restrictRelationsTo","status","filter","obj","camelCase","stateToRequestData","components","contentTypes","trackingEventProperties","newContentTypes","editedContentTypes","deletedContentTypes","newComponents","editedComponents","deletedComponents","newFields","editedFields","deletedFields","formattedComponents","values","compo","includes","component","requestFormattedComponent","formatTypeForRequest","eventAction","action","updateEventCounts","formattedContentTypes","contentType","requestFormattedContentType","requestData","removeNullKeys","fromEntries","entries","_","value","Array","isArray","length","undefined","formatAttribute","attr","type","targetAttribute","Error","category","omit","options","attributes","properties","counts","entityType","isContentType","forEach","attribute"],"mappings":"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"}
|
|
@@ -16,23 +16,54 @@ const sortContentType = (types)=>{
|
|
|
16
16
|
status: types[uid].status
|
|
17
17
|
})).filter((obj)=>obj !== null), (obj)=>camelCase(obj.title));
|
|
18
18
|
};
|
|
19
|
-
const stateToRequestData = (
|
|
20
|
-
const
|
|
19
|
+
const stateToRequestData = ({ components, contentTypes })=>{
|
|
20
|
+
const trackingEventProperties = {
|
|
21
|
+
newContentTypes: 0,
|
|
22
|
+
editedContentTypes: 0,
|
|
23
|
+
deletedContentTypes: 0,
|
|
24
|
+
newComponents: 0,
|
|
25
|
+
editedComponents: 0,
|
|
26
|
+
deletedComponents: 0,
|
|
27
|
+
newFields: 0,
|
|
28
|
+
editedFields: 0,
|
|
29
|
+
deletedFields: 0
|
|
30
|
+
};
|
|
31
|
+
const formattedComponents = Object.values(components).filter((compo)=>{
|
|
32
|
+
return [
|
|
33
|
+
'NEW',
|
|
34
|
+
'CHANGED',
|
|
35
|
+
'REMOVED'
|
|
36
|
+
].includes(compo.status);
|
|
37
|
+
}).map((component)=>{
|
|
38
|
+
const requestFormattedComponent = formatTypeForRequest(component);
|
|
39
|
+
const eventAction = requestFormattedComponent.action;
|
|
40
|
+
updateEventCounts({
|
|
41
|
+
...component,
|
|
42
|
+
action: eventAction
|
|
43
|
+
}, trackingEventProperties, 'component');
|
|
44
|
+
return requestFormattedComponent;
|
|
45
|
+
});
|
|
46
|
+
const formattedContentTypes = Object.values(contentTypes).filter((contentType)=>{
|
|
47
|
+
return [
|
|
48
|
+
'NEW',
|
|
49
|
+
'CHANGED',
|
|
50
|
+
'REMOVED'
|
|
51
|
+
].includes(contentType.status);
|
|
52
|
+
}).map((contentType)=>{
|
|
53
|
+
const requestFormattedContentType = formatTypeForRequest(contentType);
|
|
54
|
+
const eventAction = requestFormattedContentType.action;
|
|
55
|
+
updateEventCounts({
|
|
56
|
+
...contentType,
|
|
57
|
+
action: eventAction
|
|
58
|
+
}, trackingEventProperties, 'contentType');
|
|
59
|
+
return requestFormattedContentType;
|
|
60
|
+
});
|
|
21
61
|
return {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
].includes(compo.status);
|
|
28
|
-
}).map(formatTypeForRequest),
|
|
29
|
-
contentTypes: Object.values(contentTypes).filter((ct)=>{
|
|
30
|
-
return [
|
|
31
|
-
'NEW',
|
|
32
|
-
'CHANGED',
|
|
33
|
-
'REMOVED'
|
|
34
|
-
].includes(ct.status);
|
|
35
|
-
}).map(formatTypeForRequest)
|
|
62
|
+
requestData: {
|
|
63
|
+
components: formattedComponents,
|
|
64
|
+
contentTypes: formattedContentTypes
|
|
65
|
+
},
|
|
66
|
+
trackingEventProperties
|
|
36
67
|
};
|
|
37
68
|
};
|
|
38
69
|
const removeNullKeys = (obj)=>{
|
|
@@ -120,6 +151,57 @@ const formatTypeForRequest = (type)=>{
|
|
|
120
151
|
})
|
|
121
152
|
};
|
|
122
153
|
};
|
|
154
|
+
const updateEventCounts = (type, counts, entityType)=>{
|
|
155
|
+
if (!type || typeof type.action !== 'string') {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const isContentType = entityType === 'contentType';
|
|
159
|
+
switch(type.action){
|
|
160
|
+
case 'create':
|
|
161
|
+
if (isContentType) {
|
|
162
|
+
counts.newContentTypes++;
|
|
163
|
+
} else {
|
|
164
|
+
counts.newComponents++;
|
|
165
|
+
}
|
|
166
|
+
break;
|
|
167
|
+
case 'update':
|
|
168
|
+
if (isContentType) {
|
|
169
|
+
counts.editedContentTypes++;
|
|
170
|
+
} else {
|
|
171
|
+
counts.editedComponents++;
|
|
172
|
+
}
|
|
173
|
+
break;
|
|
174
|
+
case 'delete':
|
|
175
|
+
if (isContentType) {
|
|
176
|
+
counts.deletedContentTypes++;
|
|
177
|
+
} else {
|
|
178
|
+
counts.deletedComponents++;
|
|
179
|
+
}
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
if (Array.isArray(type.attributes)) {
|
|
183
|
+
if (type.action === 'delete') {
|
|
184
|
+
counts.deletedFields += type.attributes.length;
|
|
185
|
+
} else {
|
|
186
|
+
type.attributes.forEach((attribute)=>{
|
|
187
|
+
if (!attribute || typeof attribute.status !== 'string') {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
switch(attribute.status){
|
|
191
|
+
case 'NEW':
|
|
192
|
+
counts.newFields++;
|
|
193
|
+
break;
|
|
194
|
+
case 'CHANGED':
|
|
195
|
+
counts.editedFields++;
|
|
196
|
+
break;
|
|
197
|
+
case 'REMOVED':
|
|
198
|
+
counts.deletedFields++;
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
};
|
|
123
205
|
|
|
124
206
|
export { sortContentType, stateToRequestData };
|
|
125
207
|
//# sourceMappingURL=cleanData.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanData.mjs","sources":["../../../../../admin/src/components/DataManager/utils/cleanData.ts"],"sourcesContent":["import camelCase from 'lodash/camelCase';\nimport omit from 'lodash/omit';\nimport sortBy from 'lodash/sortBy';\n\nimport { pluginId } from '../../../pluginId';\n\nimport type {\n Component,\n Components,\n ContentTypes,\n ContentType,\n AnyAttribute,\n} from '../../../types';\nimport type { UID } from '@strapi/types';\n\nconst sortContentType = (types: ContentTypes) => {\n return sortBy(\n Object.keys(types)\n .map((uid) => ({\n visible: types[uid].visible,\n name: uid as UID.ContentType,\n title: types[uid].info.displayName,\n plugin: types[uid].plugin,\n uid: uid as UID.ContentType,\n to: `/plugins/${pluginId}/content-types/${uid}`,\n kind: types[uid].kind,\n restrictRelationsTo: types[uid].restrictRelationsTo,\n status: types[uid].status,\n }))\n .filter((obj) => obj !== null),\n (obj) => camelCase(obj.title)\n );\n};\n\nconst stateToRequestData = (state: { components: Components; contentTypes: ContentTypes }) => {\n const { components, contentTypes } = state;\n\n return {\n components: Object.values(components)\n .filter((compo) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(compo.status);\n })\n .map(formatTypeForRequest),\n contentTypes: Object.values(contentTypes)\n .filter((ct) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(ct.status);\n })\n .map(formatTypeForRequest),\n };\n};\n\nconst removeNullKeys = (obj: Record<string, unknown>) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n if (typeof value === 'object' && value !== null) {\n return Object.keys(value).length > 0;\n }\n return value !== null && value !== undefined;\n })\n );\n};\n\nconst formatAttribute = (attr: AnyAttribute) => {\n if ('customField' in attr) {\n return { ...attr, type: 'customField' };\n }\n\n if ('targetAttribute' in attr) {\n return { ...attr, targetAttribute: attr.targetAttribute === '-' ? null : attr.targetAttribute };\n }\n\n return attr;\n};\n\nconst formatTypeForRequest = (type: ContentType | Component) => {\n let action;\n // should we do a diff with the initial data instead of trusting the state status ??\n switch (type.status) {\n case 'NEW':\n action = 'create';\n break;\n case 'CHANGED':\n action = 'update';\n break;\n case 'REMOVED':\n return { action: 'delete', uid: type.uid };\n default:\n throw new Error('Invalid status');\n }\n\n return {\n action,\n uid: type.uid,\n category: 'category' in type ? type.category : undefined,\n ...omit(type, ['info', 'options', 'visible', 'uid', 'restrictRelationsTo']),\n ...type.options,\n ...type.info,\n attributes: type.attributes.map((attr) => {\n let action;\n\n switch (attr.status) {\n // NOTE: we want to always send the full data to preserve the order\n\n case 'NEW':\n action = 'create';\n break;\n case 'REMOVED':\n return { action: 'delete', name: attr.name };\n case 'UNCHANGED':\n case 'CHANGED':\n default:\n action = 'update';\n }\n\n return {\n action,\n name: attr.name,\n properties: removeNullKeys(omit(formatAttribute(attr), ['status', 'name'])),\n };\n }),\n };\n};\n\nexport { stateToRequestData, sortContentType };\n"],"names":["sortContentType","types","sortBy","Object","keys","map","uid","visible","name","title","info","displayName","plugin","to","pluginId","kind","restrictRelationsTo","status","filter","obj","camelCase","stateToRequestData","state","components","contentTypes","values","compo","includes","formatTypeForRequest","ct","removeNullKeys","fromEntries","entries","_","value","Array","isArray","length","undefined","formatAttribute","attr","type","targetAttribute","action","Error","category","omit","options","attributes","properties"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cleanData.mjs","sources":["../../../../../admin/src/components/DataManager/utils/cleanData.ts"],"sourcesContent":["import camelCase from 'lodash/camelCase';\nimport omit from 'lodash/omit';\nimport sortBy from 'lodash/sortBy';\n\nimport { pluginId } from '../../../pluginId';\n\nimport type {\n Component,\n Components,\n ContentTypes,\n ContentType,\n AnyAttribute,\n} from '../../../types';\nimport type { UID } from '@strapi/types';\n\nconst sortContentType = (types: ContentTypes) => {\n return sortBy(\n Object.keys(types)\n .map((uid) => ({\n visible: types[uid].visible,\n name: uid as UID.ContentType,\n title: types[uid].info.displayName,\n plugin: types[uid].plugin,\n uid: uid as UID.ContentType,\n to: `/plugins/${pluginId}/content-types/${uid}`,\n kind: types[uid].kind,\n restrictRelationsTo: types[uid].restrictRelationsTo,\n status: types[uid].status,\n }))\n .filter((obj) => obj !== null),\n (obj) => camelCase(obj.title)\n );\n};\n\ntype TrackingEventProperties = {\n newContentTypes: number;\n editedContentTypes: number;\n deletedContentTypes: number;\n newComponents: number;\n editedComponents: number;\n deletedComponents: number;\n newFields: number;\n editedFields: number;\n deletedFields: number;\n};\n\nconst stateToRequestData = ({\n components,\n contentTypes,\n}: {\n components: Components;\n contentTypes: ContentTypes;\n}) => {\n const trackingEventProperties: TrackingEventProperties = {\n newContentTypes: 0,\n editedContentTypes: 0,\n deletedContentTypes: 0,\n newComponents: 0,\n editedComponents: 0,\n deletedComponents: 0,\n newFields: 0,\n editedFields: 0,\n deletedFields: 0,\n };\n\n const formattedComponents = Object.values(components)\n .filter((compo) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(compo.status);\n })\n .map((component) => {\n const requestFormattedComponent = formatTypeForRequest(component);\n\n const eventAction = requestFormattedComponent.action as 'create' | 'update' | 'delete';\n updateEventCounts(\n { ...component, action: eventAction },\n trackingEventProperties,\n 'component'\n );\n\n return requestFormattedComponent;\n });\n\n const formattedContentTypes = Object.values(contentTypes)\n .filter((contentType) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(contentType.status);\n })\n .map((contentType) => {\n const requestFormattedContentType = formatTypeForRequest(contentType);\n\n const eventAction = requestFormattedContentType.action as 'create' | 'update' | 'delete';\n updateEventCounts(\n { ...contentType, action: eventAction },\n trackingEventProperties,\n 'contentType'\n );\n\n return requestFormattedContentType;\n });\n\n return {\n requestData: {\n components: formattedComponents,\n contentTypes: formattedContentTypes,\n },\n trackingEventProperties,\n };\n};\n\nconst removeNullKeys = (obj: Record<string, unknown>) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n if (typeof value === 'object' && value !== null) {\n return Object.keys(value).length > 0;\n }\n return value !== null && value !== undefined;\n })\n );\n};\n\nconst formatAttribute = (attr: AnyAttribute) => {\n if ('customField' in attr) {\n return { ...attr, type: 'customField' };\n }\n\n if ('targetAttribute' in attr) {\n return { ...attr, targetAttribute: attr.targetAttribute === '-' ? null : attr.targetAttribute };\n }\n\n return attr;\n};\n\nconst formatTypeForRequest = (type: ContentType | Component) => {\n let action;\n // should we do a diff with the initial data instead of trusting the state status ??\n switch (type.status) {\n case 'NEW':\n action = 'create';\n break;\n case 'CHANGED':\n action = 'update';\n break;\n case 'REMOVED':\n return { action: 'delete', uid: type.uid };\n default:\n throw new Error('Invalid status');\n }\n\n return {\n action,\n uid: type.uid,\n category: 'category' in type ? type.category : undefined,\n ...omit(type, ['info', 'options', 'visible', 'uid', 'restrictRelationsTo']),\n ...type.options,\n ...type.info,\n attributes: type.attributes.map((attr) => {\n let action;\n\n switch (attr.status) {\n // NOTE: we want to always send the full data to preserve the order\n\n case 'NEW':\n action = 'create';\n break;\n case 'REMOVED':\n return { action: 'delete', name: attr.name };\n case 'UNCHANGED':\n case 'CHANGED':\n default:\n action = 'update';\n }\n\n return {\n action,\n name: attr.name,\n properties: removeNullKeys(omit(formatAttribute(attr), ['status', 'name'])),\n };\n }),\n };\n};\n\nconst updateEventCounts = (\n type: (ContentType | Component) & { action?: 'create' | 'update' | 'delete' },\n counts: TrackingEventProperties,\n entityType: 'component' | 'contentType'\n) => {\n if (!type || typeof type.action !== 'string') {\n return;\n }\n\n const isContentType = entityType === 'contentType';\n\n switch (type.action) {\n case 'create':\n if (isContentType) {\n counts.newContentTypes++;\n } else {\n counts.newComponents++;\n }\n break;\n case 'update':\n if (isContentType) {\n counts.editedContentTypes++;\n } else {\n counts.editedComponents++;\n }\n break;\n case 'delete':\n if (isContentType) {\n counts.deletedContentTypes++;\n } else {\n counts.deletedComponents++;\n }\n break;\n default:\n break;\n }\n\n if (Array.isArray(type.attributes)) {\n if (type.action === 'delete') {\n counts.deletedFields += type.attributes.length;\n } else {\n type.attributes.forEach((attribute) => {\n if (!attribute || typeof attribute.status !== 'string') {\n return;\n }\n\n switch (attribute.status) {\n case 'NEW':\n counts.newFields++;\n break;\n case 'CHANGED':\n counts.editedFields++;\n break;\n case 'REMOVED':\n counts.deletedFields++;\n break;\n case 'UNCHANGED':\n default:\n break;\n }\n });\n }\n }\n};\n\nexport { stateToRequestData, sortContentType };\n"],"names":["sortContentType","types","sortBy","Object","keys","map","uid","visible","name","title","info","displayName","plugin","to","pluginId","kind","restrictRelationsTo","status","filter","obj","camelCase","stateToRequestData","components","contentTypes","trackingEventProperties","newContentTypes","editedContentTypes","deletedContentTypes","newComponents","editedComponents","deletedComponents","newFields","editedFields","deletedFields","formattedComponents","values","compo","includes","component","requestFormattedComponent","formatTypeForRequest","eventAction","action","updateEventCounts","formattedContentTypes","contentType","requestFormattedContentType","requestData","removeNullKeys","fromEntries","entries","_","value","Array","isArray","length","undefined","formatAttribute","attr","type","targetAttribute","Error","category","omit","options","attributes","properties","counts","entityType","isContentType","forEach","attribute"],"mappings":";;;;;AAeA,MAAMA,kBAAkB,CAACC,KAAAA,GAAAA;IACvB,OAAOC,MAAAA,CACLC,OAAOC,IAAI,CAACH,OACTI,GAAG,CAAC,CAACC,GAAAA,IAAS;AACbC,YAAAA,OAAAA,EAASN,KAAK,CAACK,GAAI,CAAA,CAACC,OAAO;YAC3BC,IAAMF,EAAAA,GAAAA;AACNG,YAAAA,KAAAA,EAAOR,KAAK,CAACK,GAAAA,CAAI,CAACI,IAAI,CAACC,WAAW;AAClCC,YAAAA,MAAAA,EAAQX,KAAK,CAACK,GAAI,CAAA,CAACM,MAAM;YACzBN,GAAKA,EAAAA,GAAAA;AACLO,YAAAA,EAAAA,EAAI,CAAC,SAAS,EAAEC,SAAS,eAAe,EAAER,IAAI,CAAC;AAC/CS,YAAAA,IAAAA,EAAMd,KAAK,CAACK,GAAI,CAAA,CAACS,IAAI;AACrBC,YAAAA,mBAAAA,EAAqBf,KAAK,CAACK,GAAI,CAAA,CAACU,mBAAmB;AACnDC,YAAAA,MAAAA,EAAQhB,KAAK,CAACK,GAAI,CAAA,CAACW;SACrB,CAAA,CAAA,CACCC,MAAM,CAAC,CAACC,GAAAA,GAAQA,GAAQ,KAAA,IAAA,CAAA,EAC3B,CAACA,GAAAA,GAAQC,SAAUD,CAAAA,GAAAA,CAAIV,KAAK,CAAA,CAAA;AAEhC;AAcA,MAAMY,qBAAqB,CAAC,EAC1BC,UAAU,EACVC,YAAY,EAIb,GAAA;AACC,IAAA,MAAMC,uBAAmD,GAAA;QACvDC,eAAiB,EAAA,CAAA;QACjBC,kBAAoB,EAAA,CAAA;QACpBC,mBAAqB,EAAA,CAAA;QACrBC,aAAe,EAAA,CAAA;QACfC,gBAAkB,EAAA,CAAA;QAClBC,iBAAmB,EAAA,CAAA;QACnBC,SAAW,EAAA,CAAA;QACXC,YAAc,EAAA,CAAA;QACdC,aAAe,EAAA;AACjB,KAAA;AAEA,IAAA,MAAMC,sBAAsB/B,MAAOgC,CAAAA,MAAM,CAACb,UACvCJ,CAAAA,CAAAA,MAAM,CAAC,CAACkB,KAAAA,GAAAA;QACP,OAAO;AAAC,YAAA,KAAA;AAAO,YAAA,SAAA;AAAW,YAAA;SAAU,CAACC,QAAQ,CAACD,KAAAA,CAAMnB,MAAM,CAAA;KAE3DZ,CAAAA,CAAAA,GAAG,CAAC,CAACiC,SAAAA,GAAAA;AACJ,QAAA,MAAMC,4BAA4BC,oBAAqBF,CAAAA,SAAAA,CAAAA;QAEvD,MAAMG,WAAAA,GAAcF,0BAA0BG,MAAM;QACpDC,iBACE,CAAA;AAAE,YAAA,GAAGL,SAAS;YAAEI,MAAQD,EAAAA;AAAY,SAAA,EACpCjB,uBACA,EAAA,WAAA,CAAA;QAGF,OAAOe,yBAAAA;AACT,KAAA,CAAA;AAEF,IAAA,MAAMK,wBAAwBzC,MAAOgC,CAAAA,MAAM,CAACZ,YACzCL,CAAAA,CAAAA,MAAM,CAAC,CAAC2B,WAAAA,GAAAA;QACP,OAAO;AAAC,YAAA,KAAA;AAAO,YAAA,SAAA;AAAW,YAAA;SAAU,CAACR,QAAQ,CAACQ,WAAAA,CAAY5B,MAAM,CAAA;KAEjEZ,CAAAA,CAAAA,GAAG,CAAC,CAACwC,WAAAA,GAAAA;AACJ,QAAA,MAAMC,8BAA8BN,oBAAqBK,CAAAA,WAAAA,CAAAA;QAEzD,MAAMJ,WAAAA,GAAcK,4BAA4BJ,MAAM;QACtDC,iBACE,CAAA;AAAE,YAAA,GAAGE,WAAW;YAAEH,MAAQD,EAAAA;AAAY,SAAA,EACtCjB,uBACA,EAAA,aAAA,CAAA;QAGF,OAAOsB,2BAAAA;AACT,KAAA,CAAA;IAEF,OAAO;QACLC,WAAa,EAAA;YACXzB,UAAYY,EAAAA,mBAAAA;YACZX,YAAcqB,EAAAA;AAChB,SAAA;AACApB,QAAAA;AACF,KAAA;AACF;AAEA,MAAMwB,iBAAiB,CAAC7B,GAAAA,GAAAA;AACtB,IAAA,OAAOhB,MAAO8C,CAAAA,WAAW,CACvB9C,MAAAA,CAAO+C,OAAO,CAAC/B,GAAKD,CAAAA,CAAAA,MAAM,CAAC,CAAC,CAACiC,CAAAA,EAAGC,KAAM,CAAA,GAAA;QACpC,IAAIC,KAAAA,CAAMC,OAAO,CAACF,KAAQ,CAAA,EAAA;YACxB,OAAOA,KAAAA,CAAMG,MAAM,GAAG,CAAA;AACxB;AACA,QAAA,IAAI,OAAOH,KAAAA,KAAU,QAAYA,IAAAA,KAAAA,KAAU,IAAM,EAAA;AAC/C,YAAA,OAAOjD,MAAOC,CAAAA,IAAI,CAACgD,KAAAA,CAAAA,CAAOG,MAAM,GAAG,CAAA;AACrC;QACA,OAAOH,KAAAA,KAAU,QAAQA,KAAUI,KAAAA,SAAAA;AACrC,KAAA,CAAA,CAAA;AAEJ,CAAA;AAEA,MAAMC,kBAAkB,CAACC,IAAAA,GAAAA;AACvB,IAAA,IAAI,iBAAiBA,IAAM,EAAA;QACzB,OAAO;AAAE,YAAA,GAAGA,IAAI;YAAEC,IAAM,EAAA;AAAc,SAAA;AACxC;AAEA,IAAA,IAAI,qBAAqBD,IAAM,EAAA;QAC7B,OAAO;AAAE,YAAA,GAAGA,IAAI;AAAEE,YAAAA,eAAAA,EAAiBF,KAAKE,eAAe,KAAK,GAAM,GAAA,IAAA,GAAOF,KAAKE;AAAgB,SAAA;AAChG;IAEA,OAAOF,IAAAA;AACT,CAAA;AAEA,MAAMlB,uBAAuB,CAACmB,IAAAA,GAAAA;IAC5B,IAAIjB,MAAAA;;AAEJ,IAAA,OAAQiB,KAAK1C,MAAM;QACjB,KAAK,KAAA;YACHyB,MAAS,GAAA,QAAA;AACT,YAAA;QACF,KAAK,SAAA;YACHA,MAAS,GAAA,QAAA;AACT,YAAA;QACF,KAAK,SAAA;YACH,OAAO;gBAAEA,MAAQ,EAAA,QAAA;AAAUpC,gBAAAA,GAAAA,EAAKqD,KAAKrD;AAAI,aAAA;AAC3C,QAAA;AACE,YAAA,MAAM,IAAIuD,KAAM,CAAA,gBAAA,CAAA;AACpB;IAEA,OAAO;AACLnB,QAAAA,MAAAA;AACApC,QAAAA,GAAAA,EAAKqD,KAAKrD,GAAG;AACbwD,QAAAA,QAAAA,EAAU,UAAcH,IAAAA,IAAAA,GAAOA,IAAKG,CAAAA,QAAQ,GAAGN,SAAAA;AAC/C,QAAA,GAAGO,KAAKJ,IAAM,EAAA;AAAC,YAAA,MAAA;AAAQ,YAAA,SAAA;AAAW,YAAA,SAAA;AAAW,YAAA,KAAA;AAAO,YAAA;SAAsB,CAAC;AAC3E,QAAA,GAAGA,KAAKK,OAAO;AACf,QAAA,GAAGL,KAAKjD,IAAI;AACZuD,QAAAA,UAAAA,EAAYN,IAAKM,CAAAA,UAAU,CAAC5D,GAAG,CAAC,CAACqD,IAAAA,GAAAA;YAC/B,IAAIhB,MAAAA;AAEJ,YAAA,OAAQgB,KAAKzC,MAAM;;gBAGjB,KAAK,KAAA;oBACHyB,MAAS,GAAA,QAAA;AACT,oBAAA;gBACF,KAAK,SAAA;oBACH,OAAO;wBAAEA,MAAQ,EAAA,QAAA;AAAUlC,wBAAAA,IAAAA,EAAMkD,KAAKlD;AAAK,qBAAA;gBAC7C,KAAK,WAAA;gBACL,KAAK,SAAA;AACL,gBAAA;oBACEkC,MAAS,GAAA,QAAA;AACb;YAEA,OAAO;AACLA,gBAAAA,MAAAA;AACAlC,gBAAAA,IAAAA,EAAMkD,KAAKlD,IAAI;gBACf0D,UAAYlB,EAAAA,cAAAA,CAAee,IAAKN,CAAAA,eAAAA,CAAgBC,IAAO,CAAA,EAAA;AAAC,oBAAA,QAAA;AAAU,oBAAA;AAAO,iBAAA,CAAA;AAC3E,aAAA;AACF,SAAA;AACF,KAAA;AACF,CAAA;AAEA,MAAMf,iBAAAA,GAAoB,CACxBgB,IAAAA,EACAQ,MACAC,EAAAA,UAAAA,GAAAA;AAEA,IAAA,IAAI,CAACT,IAAQ,IAAA,OAAOA,IAAKjB,CAAAA,MAAM,KAAK,QAAU,EAAA;AAC5C,QAAA;AACF;AAEA,IAAA,MAAM2B,gBAAgBD,UAAe,KAAA,aAAA;AAErC,IAAA,OAAQT,KAAKjB,MAAM;QACjB,KAAK,QAAA;AACH,YAAA,IAAI2B,aAAe,EAAA;AACjBF,gBAAAA,MAAAA,CAAO1C,eAAe,EAAA;aACjB,MAAA;AACL0C,gBAAAA,MAAAA,CAAOvC,aAAa,EAAA;AACtB;AACA,YAAA;QACF,KAAK,QAAA;AACH,YAAA,IAAIyC,aAAe,EAAA;AACjBF,gBAAAA,MAAAA,CAAOzC,kBAAkB,EAAA;aACpB,MAAA;AACLyC,gBAAAA,MAAAA,CAAOtC,gBAAgB,EAAA;AACzB;AACA,YAAA;QACF,KAAK,QAAA;AACH,YAAA,IAAIwC,aAAe,EAAA;AACjBF,gBAAAA,MAAAA,CAAOxC,mBAAmB,EAAA;aACrB,MAAA;AACLwC,gBAAAA,MAAAA,CAAOrC,iBAAiB,EAAA;AAC1B;AACA,YAAA;AAGJ;AAEA,IAAA,IAAIuB,KAAMC,CAAAA,OAAO,CAACK,IAAAA,CAAKM,UAAU,CAAG,EAAA;QAClC,IAAIN,IAAAA,CAAKjB,MAAM,KAAK,QAAU,EAAA;AAC5ByB,YAAAA,MAAAA,CAAOlC,aAAa,IAAI0B,IAAKM,CAAAA,UAAU,CAACV,MAAM;SACzC,MAAA;AACLI,YAAAA,IAAAA,CAAKM,UAAU,CAACK,OAAO,CAAC,CAACC,SAAAA,GAAAA;AACvB,gBAAA,IAAI,CAACA,SAAa,IAAA,OAAOA,SAAUtD,CAAAA,MAAM,KAAK,QAAU,EAAA;AACtD,oBAAA;AACF;AAEA,gBAAA,OAAQsD,UAAUtD,MAAM;oBACtB,KAAK,KAAA;AACHkD,wBAAAA,MAAAA,CAAOpC,SAAS,EAAA;AAChB,wBAAA;oBACF,KAAK,SAAA;AACHoC,wBAAAA,MAAAA,CAAOnC,YAAY,EAAA;AACnB,wBAAA;oBACF,KAAK,SAAA;AACHmC,wBAAAA,MAAAA,CAAOlC,aAAa,EAAA;AACpB,wBAAA;AAIJ;AACF,aAAA,CAAA;AACF;AACF;AACF,CAAA;;;;"}
|
|
@@ -22,17 +22,6 @@ const StyledAddIcon = styledComponents.styled(Icons.Plus)`
|
|
|
22
22
|
fill: ${({ theme, disabled })=>disabled ? theme.colors.neutral600 : theme.colors.primary600};
|
|
23
23
|
}
|
|
24
24
|
`;
|
|
25
|
-
const ScrollableStack = styledComponents.styled(designSystem.Flex)`
|
|
26
|
-
width: 100%;
|
|
27
|
-
overflow-x: auto;
|
|
28
|
-
|
|
29
|
-
scrollbar-width: none;
|
|
30
|
-
-ms-overflow-style: none;
|
|
31
|
-
|
|
32
|
-
&::-webkit-scrollbar {
|
|
33
|
-
display: none;
|
|
34
|
-
}
|
|
35
|
-
`;
|
|
36
25
|
const ComponentStack = styledComponents.styled(designSystem.Flex)`
|
|
37
26
|
flex-shrink: 0;
|
|
38
27
|
width: 14rem;
|
|
@@ -60,8 +49,10 @@ const DynamicZoneList = ({ components = [], addComponent, name, forTarget, targe
|
|
|
60
49
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
61
50
|
padding: 2,
|
|
62
51
|
paddingLeft: "104px",
|
|
63
|
-
children: /*#__PURE__*/ jsxRuntime.jsxs(
|
|
52
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
53
|
+
role: "tablist",
|
|
64
54
|
gap: 2,
|
|
55
|
+
wrap: "wrap",
|
|
65
56
|
children: [
|
|
66
57
|
isInDevelopmentMode && /*#__PURE__*/ jsxRuntime.jsx("button", {
|
|
67
58
|
type: "button",
|
|
@@ -90,22 +81,18 @@ const DynamicZoneList = ({ components = [], addComponent, name, forTarget, targe
|
|
|
90
81
|
]
|
|
91
82
|
})
|
|
92
83
|
}),
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
targetUid: targetUid,
|
|
106
|
-
disabled: disabled
|
|
107
|
-
}, component);
|
|
108
|
-
})
|
|
84
|
+
components.map((component, index)=>{
|
|
85
|
+
return /*#__PURE__*/ jsxRuntime.jsx(ComponentCard.ComponentCard, {
|
|
86
|
+
dzName: name || '',
|
|
87
|
+
index: index,
|
|
88
|
+
component: component,
|
|
89
|
+
isActive: activeTab === index,
|
|
90
|
+
isInDevelopmentMode: isInDevelopmentMode,
|
|
91
|
+
onClick: ()=>toggle(index),
|
|
92
|
+
forTarget: forTarget,
|
|
93
|
+
targetUid: targetUid,
|
|
94
|
+
disabled: disabled
|
|
95
|
+
}, component);
|
|
109
96
|
})
|
|
110
97
|
]
|
|
111
98
|
})
|