import { ConfigurationForm, TEMP_FIELD_NAME } from "./chunk-TUQVYWWY.js"; import "./chunk-CD3FLTLL.js"; import { useTypedSelector } from "./chunk-VE2D6HMA.js"; import "./chunk-NAZM6EA4.js"; import { DEFAULT_SETTINGS, convertEditLayoutToFieldLayouts, extractContentTypeComponents, setIn, useGetInitialDataQuery } from "./chunk-UATNJIHQ.js"; import { contentManagerApi } from "./chunk-P4VL3IHZ.js"; import "./chunk-HIZVCZYI.js"; import "./chunk-QF6GPHA4.js"; import "./chunk-SYWYLB7I.js"; import "./chunk-S3HPKOXW.js"; import "./chunk-JRLAXHTE.js"; import "./chunk-E4IFZ6ZT.js"; import "./chunk-QLEKUQKW.js"; import "./chunk-4J3VOWQV.js"; import "./chunk-PFI4R5WA.js"; import "./chunk-B3BGMYGX.js"; import "./chunk-W6ICJ5TB.js"; import "./chunk-IHYIPMY2.js"; import "./chunk-UWHSN2C7.js"; import "./chunk-ERK7O2GM.js"; import "./chunk-FCIM6RNO.js"; import "./chunk-J33IXKN4.js"; import "./chunk-NP53ZCXD.js"; import "./chunk-MBK4V2X7.js"; import "./chunk-5ESYXDTN.js"; import "./chunk-K65KIEAL.js"; import "./chunk-B7ZLODDO.js"; import "./chunk-PW7XKCYO.js"; import "./chunk-RMBEU7DO.js"; import "./chunk-RI2W2UZ6.js"; import "./chunk-IY256CNP.js"; import "./chunk-IFOFBKTA.js"; import "./chunk-XLSIZGJF.js"; import "./chunk-EGNP2T5O.js"; import "./chunk-GSN7U3BK.js"; import "./chunk-T3B5F2LV.js"; import "./chunk-YXDCVYVT.js"; import "./chunk-QIJGNK42.js"; import "./chunk-7PUJSL55.js"; import "./chunk-C2ZJTFO7.js"; import "./chunk-C75BZXCZ.js"; import "./chunk-APGTER6B.js"; import "./chunk-ZM6TT53G.js"; import "./chunk-6AXVGFVQ.js"; import "./chunk-BFLP6DBI.js"; import "./chunk-CMLQV3Z2.js"; import "./chunk-IGCTEXRF.js"; import "./chunk-TIVRAWTC.js"; import "./chunk-PQINNV4N.js"; import "./chunk-VYSYYPOB.js"; import { Page, useAPIErrorHandler } from "./chunk-5CAWUBTQ.js"; import "./chunk-W2TBR6J3.js"; import "./chunk-QEGMJR7H.js"; import "./chunk-LCL5TIBZ.js"; import "./chunk-WOQNBAGN.js"; import "./chunk-BHLYCXQ7.js"; import "./chunk-76QM3EFM.js"; import "./chunk-CE4VABH2.js"; import "./chunk-5VODLFKF.js"; import { useNotification } from "./chunk-N55RVBRV.js"; import { useIntl } from "./chunk-7XB6XSWQ.js"; import "./chunk-5ZC4PE57.js"; import { useParams } from "./chunk-TUXTO2Z5.js"; import "./chunk-FOD4ENRR.js"; import "./chunk-WRD5KPDH.js"; import { require_jsx_runtime } from "./chunk-NIAJZ5MX.js"; import "./chunk-ACIMPXWY.js"; import { require_react } from "./chunk-MADUDGYZ.js"; import { __toESM } from "./chunk-PLDDJCW6.js"; // node_modules/@strapi/content-manager/dist/admin/pages/ComponentConfigurationPage.mjs var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); var React = __toESM(require_react(), 1); // node_modules/@strapi/content-manager/dist/admin/services/components.mjs var componentsApi = contentManagerApi.injectEndpoints({ endpoints: (builder) => ({ getComponentConfiguration: builder.query({ query: (uid) => `/content-manager/components/${uid}/configuration`, transformResponse: (response) => response.data, providesTags: (_result, _error, uid) => [ { type: "ComponentConfiguration", id: uid } ] }), updateComponentConfiguration: builder.mutation({ query: ({ uid, ...body }) => ({ url: `/content-manager/components/${uid}/configuration`, method: "PUT", data: body }), transformResponse: (response) => response.data, invalidatesTags: (_result, _error, { uid }) => [ { type: "ComponentConfiguration", id: uid }, // otherwise layouts already fetched will have stale component configuration data. { type: "ContentTypeSettings", id: "LIST" } ] }) }) }); var { useGetComponentConfigurationQuery, useUpdateComponentConfigurationMutation } = componentsApi; // node_modules/@strapi/content-manager/dist/admin/pages/ComponentConfigurationPage.mjs var ComponentConfigurationPage = () => { const { slug: model } = useParams(); const { toggleNotification } = useNotification(); const { formatMessage } = useIntl(); const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(); const { components, fieldSizes, schema, error: errorSchema, isLoading: isLoadingSchema, isFetching: isFetchingSchema } = useGetInitialDataQuery(void 0, { selectFromResult: (res) => { var _a, _b, _c; const schema2 = (_a = res.data) == null ? void 0 : _a.components.find((ct) => ct.uid === model); const componentsByKey = (_b = res.data) == null ? void 0 : _b.components.reduce((acc, component) => { acc[component.uid] = component; return acc; }, {}); const components2 = extractContentTypeComponents(schema2 == null ? void 0 : schema2.attributes, componentsByKey); const fieldSizes2 = Object.entries(((_c = res.data) == null ? void 0 : _c.fieldSizes) ?? {}).reduce((acc, [attributeName, { default: size }]) => { acc[attributeName] = size; return acc; }, {}); return { isFetching: res.isFetching, isLoading: res.isLoading, error: res.error, components: components2, schema: schema2, fieldSizes: fieldSizes2 }; } }); React.useEffect(() => { if (errorSchema) { toggleNotification({ type: "danger", message: formatAPIError(errorSchema) }); } }, [ errorSchema, formatAPIError, toggleNotification ]); const { data, isLoading: isLoadingConfig, isFetching: isFetchingConfig, error } = useGetComponentConfigurationQuery(model ?? ""); React.useEffect(() => { if (error) { toggleNotification({ type: "danger", message: formatAPIError(error) }); } }, [ error, formatAPIError, toggleNotification ]); const isLoading = isLoadingConfig || isLoadingSchema || isFetchingConfig || isFetchingSchema; const editLayout = React.useMemo(() => data && !isLoading ? formatEditLayout(data, { schema, components }) : { layout: [], components: {}, metadatas: {}, options: {}, settings: DEFAULT_SETTINGS }, [ data, isLoading, schema, components ]); const [updateConfiguration] = useUpdateComponentConfigurationMutation(); const handleSubmit = async (formData) => { try { const meta = Object.entries((data == null ? void 0 : data.component.metadatas) ?? {}).reduce((acc, [name, { edit, list }]) => { const { __temp_key__, size: _size, name: _name, ...editedMetadata } = formData.layout.flatMap((row) => row.children).find((field) => field.name === name) ?? {}; acc[name] = { edit: { ...edit, ...editedMetadata }, list }; return acc; }, {}); const res = await updateConfiguration({ layouts: { edit: formData.layout.map((row) => row.children.reduce((acc, { name, size }) => { if (name !== TEMP_FIELD_NAME) { return [ ...acc, { name, size } ]; } return acc; }, [])), list: data == null ? void 0 : data.component.layouts.list }, settings: setIn(formData.settings, "displayName", void 0), metadatas: meta, uid: model }); if ("data" in res) { toggleNotification({ type: "success", message: formatMessage({ id: "notification.success.saved", defaultMessage: "Saved" }) }); } else { toggleNotification({ type: "danger", message: formatAPIError(res.error) }); } } catch { toggleNotification({ type: "danger", message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" }) }); } }; if (isLoading) { return (0, import_jsx_runtime.jsx)(Page.Loading, {}); } if (error || errorSchema || !schema) { return (0, import_jsx_runtime.jsx)(Page.Error, {}); } return (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [ (0, import_jsx_runtime.jsx)(Page.Title, { children: `Configure ${editLayout.settings.displayName} Edit View` }), (0, import_jsx_runtime.jsx)(ConfigurationForm, { onSubmit: handleSubmit, attributes: schema.attributes, fieldSizes, layout: editLayout }) ] }); }; var formatEditLayout = (data, { schema, components }) => { const editAttributes = convertEditLayoutToFieldLayouts(data.component.layouts.edit, schema == null ? void 0 : schema.attributes, data.component.metadatas, { configurations: data.components, schemas: components }); const componentEditAttributes = Object.entries(data.components).reduce((acc, [uid, configuration]) => { acc[uid] = { layout: convertEditLayoutToFieldLayouts(configuration.layouts.edit, components[uid].attributes, configuration.metadatas), settings: { ...configuration.settings, icon: components[uid].info.icon, displayName: components[uid].info.displayName } }; return acc; }, {}); const editMetadatas = Object.entries(data.component.metadatas).reduce((acc, [attribute, metadata]) => { return { ...acc, [attribute]: metadata.edit }; }, {}); return { layout: [ editAttributes ], components: componentEditAttributes, metadatas: editMetadatas, options: { ...schema == null ? void 0 : schema.options, ...schema == null ? void 0 : schema.pluginOptions }, settings: { ...data.component.settings, displayName: schema == null ? void 0 : schema.info.displayName } }; }; var ProtectedComponentConfigurationPage = () => { const permissions = useTypedSelector((state) => { var _a; return (_a = state.admin_app.permissions.contentManager) == null ? void 0 : _a.componentsConfigurations; }); return (0, import_jsx_runtime.jsx)(Page.Protect, { permissions, children: (0, import_jsx_runtime.jsx)(ComponentConfigurationPage, {}) }); }; export { ComponentConfigurationPage, ProtectedComponentConfigurationPage }; //# sourceMappingURL=ComponentConfigurationPage-2HPC6VSU.js.map