@strapi/content-type-builder 5.9.0 → 5.10.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/chunks/ListView-CDnrvVrV.mjs +1184 -0
- package/dist/admin/chunks/ListView-CDnrvVrV.mjs.map +1 -0
- package/dist/admin/chunks/ListView-CQwvSbZH.js +1186 -0
- package/dist/admin/chunks/ListView-CQwvSbZH.js.map +1 -0
- package/dist/admin/chunks/ar-Df0f0-PT.js +52 -0
- package/dist/admin/chunks/ar-Df0f0-PT.js.map +1 -0
- package/dist/admin/chunks/ar-sRW9VFC-.mjs +49 -0
- package/dist/admin/chunks/ar-sRW9VFC-.mjs.map +1 -0
- package/dist/admin/chunks/cs-BpQ26jiq.mjs +136 -0
- package/dist/{_chunks/cs-ChL4LaFY.mjs.map → admin/chunks/cs-BpQ26jiq.mjs.map} +1 -1
- package/dist/admin/chunks/cs-DeTwqc7p.js +140 -0
- package/dist/{_chunks/cs-Ci3js5EC.js.map → admin/chunks/cs-DeTwqc7p.js.map} +1 -1
- package/dist/admin/chunks/de-BJkS06jF.js +194 -0
- package/dist/{_chunks/de-DnlblIOh.js.map → admin/chunks/de-BJkS06jF.js.map} +1 -1
- package/dist/admin/chunks/de-DSxx5_x-.mjs +190 -0
- package/dist/{_chunks/de-DsHQNzp2.mjs.map → admin/chunks/de-DSxx5_x-.mjs.map} +1 -1
- package/dist/admin/chunks/dk-BnjVZ7A_.mjs +180 -0
- package/dist/{_chunks/es-BE_zx2_w.mjs.map → admin/chunks/dk-BnjVZ7A_.mjs.map} +1 -1
- package/dist/admin/chunks/dk-CGm-qVH7.js +184 -0
- package/dist/{_chunks/dk-D3XnOjYz.js.map → admin/chunks/dk-CGm-qVH7.js.map} +1 -1
- package/dist/admin/chunks/en-BJUu34b0.js +217 -0
- package/dist/{_chunks/en-CXG5y_vo.js.map → admin/chunks/en-BJUu34b0.js.map} +1 -1
- package/dist/admin/chunks/en-Bhut8Yay.mjs +213 -0
- package/dist/{_chunks/en-jBwb53yg.mjs.map → admin/chunks/en-Bhut8Yay.mjs.map} +1 -1
- package/dist/admin/chunks/es-DG8g9igJ.mjs +180 -0
- package/dist/admin/chunks/es-DG8g9igJ.mjs.map +1 -0
- package/dist/admin/chunks/es-J8kvHlNy.js +184 -0
- package/dist/{_chunks/es-DL8lez9W.js.map → admin/chunks/es-J8kvHlNy.js.map} +1 -1
- package/dist/admin/chunks/fr-C6y35iY7.js +76 -0
- package/dist/admin/chunks/fr-C6y35iY7.js.map +1 -0
- package/dist/admin/chunks/fr-UpV34MHY.mjs +73 -0
- package/dist/admin/chunks/fr-UpV34MHY.mjs.map +1 -0
- package/dist/admin/chunks/id-BWM18ljw.mjs +163 -0
- package/dist/{_chunks/ru-DGSjru5m.mjs.map → admin/chunks/id-BWM18ljw.mjs.map} +1 -1
- package/dist/admin/chunks/id-BvxV6wLP.js +167 -0
- package/dist/{_chunks/ru-C8A_4j0w.js.map → admin/chunks/id-BvxV6wLP.js.map} +1 -1
- package/dist/admin/chunks/index-BQ2VO38W.js +7781 -0
- package/dist/admin/chunks/index-BQ2VO38W.js.map +1 -0
- package/dist/admin/chunks/index-BZeN5KRn.js +1421 -0
- package/dist/admin/chunks/index-BZeN5KRn.js.map +1 -0
- package/dist/admin/chunks/index-BhX2euW0.mjs +1384 -0
- package/dist/admin/chunks/index-BhX2euW0.mjs.map +1 -0
- package/dist/admin/chunks/index-Cr5tfW7U.mjs +7754 -0
- package/dist/admin/chunks/index-Cr5tfW7U.mjs.map +1 -0
- package/dist/admin/chunks/it-1_vd9gV4.mjs +164 -0
- package/dist/{_chunks/tr-DsUerr-c.mjs.map → admin/chunks/it-1_vd9gV4.mjs.map} +1 -1
- package/dist/admin/chunks/it-C_IgFU-G.js +168 -0
- package/dist/{_chunks/sk-raWRcmPT.js.map → admin/chunks/it-C_IgFU-G.js.map} +1 -1
- package/dist/admin/chunks/ja-CWo4Qqq6.js +51 -0
- package/dist/admin/chunks/ja-CWo4Qqq6.js.map +1 -0
- package/dist/admin/chunks/ja-Cx23a2Ui.mjs +48 -0
- package/dist/admin/chunks/ja-Cx23a2Ui.mjs.map +1 -0
- package/dist/admin/chunks/ko-BsByJNEl.js +184 -0
- package/dist/admin/chunks/ko-BsByJNEl.js.map +1 -0
- package/dist/admin/chunks/ko-DC7paEx5.mjs +180 -0
- package/dist/admin/chunks/ko-DC7paEx5.mjs.map +1 -0
- package/dist/admin/chunks/ms-C3s4kxq6.mjs +160 -0
- package/dist/{_chunks/id-W1sKBFEw.mjs.map → admin/chunks/ms-C3s4kxq6.mjs.map} +1 -1
- package/dist/admin/chunks/ms-DPTzS7SH.js +164 -0
- package/dist/{_chunks/th-C83Bb_kR.js.map → admin/chunks/ms-DPTzS7SH.js.map} +1 -1
- package/dist/admin/chunks/nl-TzvfktV_.mjs +153 -0
- package/dist/{_chunks/nl-BaTAuelQ.mjs.map → admin/chunks/nl-TzvfktV_.mjs.map} +1 -1
- package/dist/admin/chunks/nl-db29QMOx.js +157 -0
- package/dist/{_chunks/nl-DQjrDEw0.js.map → admin/chunks/nl-db29QMOx.js.map} +1 -1
- package/dist/admin/chunks/pl-BdvupIN_.mjs +190 -0
- package/dist/admin/chunks/pl-BdvupIN_.mjs.map +1 -0
- package/dist/admin/chunks/pl-pYy1djj3.js +194 -0
- package/dist/admin/chunks/pl-pYy1djj3.js.map +1 -0
- package/dist/admin/chunks/pt-BQmWcdeG.js +52 -0
- package/dist/admin/chunks/pt-BQmWcdeG.js.map +1 -0
- package/dist/admin/chunks/pt-BR-CTPuXGWF.js +194 -0
- package/dist/{_chunks/pt-BR-DPd5nRnl.js.map → admin/chunks/pt-BR-CTPuXGWF.js.map} +1 -1
- package/dist/admin/chunks/pt-BR-DPrVmKeZ.mjs +190 -0
- package/dist/{_chunks/pt-BR-CCQGwXs0.mjs.map → admin/chunks/pt-BR-DPrVmKeZ.mjs.map} +1 -1
- package/dist/admin/chunks/pt-BTLIwmCv.mjs +49 -0
- package/dist/admin/chunks/pt-BTLIwmCv.mjs.map +1 -0
- package/dist/admin/chunks/ru-D46no502.mjs +165 -0
- package/dist/{_chunks/dk-BC7NAQR2.mjs.map → admin/chunks/ru-D46no502.mjs.map} +1 -1
- package/dist/admin/chunks/ru-DQiDXgUV.js +169 -0
- package/dist/admin/chunks/ru-DQiDXgUV.js.map +1 -0
- package/dist/admin/chunks/sk-Byr_l4Jc.mjs +164 -0
- package/dist/{_chunks/ko-DoNsXHXA.mjs.map → admin/chunks/sk-Byr_l4Jc.mjs.map} +1 -1
- package/dist/admin/chunks/sk-DrnebmXb.js +168 -0
- package/dist/{_chunks/it-DS4sM3km.js.map → admin/chunks/sk-DrnebmXb.js.map} +1 -1
- package/dist/admin/chunks/sv-Bbam7IDm.mjs +199 -0
- package/dist/admin/chunks/sv-Bbam7IDm.mjs.map +1 -0
- package/dist/admin/chunks/sv-CrWlNosi.js +203 -0
- package/dist/admin/chunks/sv-CrWlNosi.js.map +1 -0
- package/dist/admin/chunks/th-BbrCkfgX.js +165 -0
- package/dist/{_chunks/id-DYuTgqcc.js.map → admin/chunks/th-BbrCkfgX.js.map} +1 -1
- package/dist/admin/chunks/th-hfS0Wmk_.mjs +161 -0
- package/dist/{_chunks/it-D04lb2Wc.mjs.map → admin/chunks/th-hfS0Wmk_.mjs.map} +1 -1
- package/dist/admin/chunks/tr-CHdMj8m6.js +180 -0
- package/dist/admin/chunks/tr-CHdMj8m6.js.map +1 -0
- package/dist/admin/chunks/tr-DS7DBOhC.mjs +176 -0
- package/dist/admin/chunks/tr-DS7DBOhC.mjs.map +1 -0
- package/dist/admin/chunks/uk-BQEQ3weH.js +165 -0
- package/dist/{_chunks/uk-VwB0oiuV.js.map → admin/chunks/uk-BQEQ3weH.js.map} +1 -1
- package/dist/admin/chunks/uk-Cj8-BKeu.mjs +161 -0
- package/dist/{_chunks/sk-DVK4HfSC.mjs.map → admin/chunks/uk-Cj8-BKeu.mjs.map} +1 -1
- package/dist/admin/chunks/zh-BUVXH75-.mjs +199 -0
- package/dist/admin/chunks/zh-BUVXH75-.mjs.map +1 -0
- package/dist/admin/chunks/zh-CWj4avQA.js +203 -0
- package/dist/admin/chunks/zh-CWj4avQA.js.map +1 -0
- package/dist/admin/chunks/zh-Hans-BElOnuRb.mjs +144 -0
- package/dist/{_chunks/zh-Hans-Cc0M5PXr.mjs.map → admin/chunks/zh-Hans-BElOnuRb.mjs.map} +1 -1
- package/dist/admin/chunks/zh-Hans-lXbNiMp9.js +148 -0
- package/dist/{_chunks/zh-Hans-CLTLm_nt.js.map → admin/chunks/zh-Hans-lXbNiMp9.js.map} +1 -1
- package/dist/admin/index.js +24 -4
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +17 -7
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.d.ts +5 -2
- package/dist/admin/src/components/DataManagerProvider/reducer.d.ts +97 -6
- package/dist/admin/src/components/FormModal/reducer.d.ts +110 -4
- package/dist/admin/src/components/ListRow.d.ts +2 -1
- package/dist/admin/src/contexts/DataManagerContext.d.ts +4 -4
- package/dist/admin/src/index.d.ts +2 -1
- package/dist/admin/src/pages/ListView/LinkToCMSettingsView.d.ts +1 -2
- package/dist/admin/src/pluginId.d.ts +1 -1
- package/dist/admin/src/reducers.d.ts +8 -1
- package/dist/admin/src/types.d.ts +2 -5
- package/dist/server/index.js +2504 -2151
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +2500 -2147
- package/dist/server/index.mjs.map +1 -1
- package/package.json +13 -10
- package/dist/_chunks/ListView-B7k6NgwS.mjs +0 -959
- package/dist/_chunks/ListView-B7k6NgwS.mjs.map +0 -1
- package/dist/_chunks/ListView-CsRxS9zZ.js +0 -964
- package/dist/_chunks/ListView-CsRxS9zZ.js.map +0 -1
- package/dist/_chunks/ar-BYDB75EB.mjs +0 -51
- package/dist/_chunks/ar-BYDB75EB.mjs.map +0 -1
- package/dist/_chunks/ar-OCxhAFUy.js +0 -51
- package/dist/_chunks/ar-OCxhAFUy.js.map +0 -1
- package/dist/_chunks/cs-ChL4LaFY.mjs +0 -139
- package/dist/_chunks/cs-Ci3js5EC.js +0 -139
- package/dist/_chunks/de-DnlblIOh.js +0 -193
- package/dist/_chunks/de-DsHQNzp2.mjs +0 -193
- package/dist/_chunks/dk-BC7NAQR2.mjs +0 -183
- package/dist/_chunks/dk-D3XnOjYz.js +0 -183
- package/dist/_chunks/en-CXG5y_vo.js +0 -216
- package/dist/_chunks/en-jBwb53yg.mjs +0 -216
- package/dist/_chunks/es-BE_zx2_w.mjs +0 -183
- package/dist/_chunks/es-DL8lez9W.js +0 -183
- package/dist/_chunks/fr-DnTxugIo.js +0 -75
- package/dist/_chunks/fr-DnTxugIo.js.map +0 -1
- package/dist/_chunks/fr-lU_OMJma.mjs +0 -75
- package/dist/_chunks/fr-lU_OMJma.mjs.map +0 -1
- package/dist/_chunks/id-DYuTgqcc.js +0 -166
- package/dist/_chunks/id-W1sKBFEw.mjs +0 -166
- package/dist/_chunks/index-97hm9i_H.mjs +0 -1331
- package/dist/_chunks/index-97hm9i_H.mjs.map +0 -1
- package/dist/_chunks/index-B5tHY87r.mjs +0 -6694
- package/dist/_chunks/index-B5tHY87r.mjs.map +0 -1
- package/dist/_chunks/index-BgMd59JL.js +0 -6730
- package/dist/_chunks/index-BgMd59JL.js.map +0 -1
- package/dist/_chunks/index-Cr85ijm8.js +0 -1357
- package/dist/_chunks/index-Cr85ijm8.js.map +0 -1
- package/dist/_chunks/it-D04lb2Wc.mjs +0 -167
- package/dist/_chunks/it-DS4sM3km.js +0 -167
- package/dist/_chunks/ja-BHLK_2_g.mjs +0 -50
- package/dist/_chunks/ja-BHLK_2_g.mjs.map +0 -1
- package/dist/_chunks/ja-BjouJgZf.js +0 -50
- package/dist/_chunks/ja-BjouJgZf.js.map +0 -1
- package/dist/_chunks/ko-D_71Pdfn.js +0 -183
- package/dist/_chunks/ko-D_71Pdfn.js.map +0 -1
- package/dist/_chunks/ko-DoNsXHXA.mjs +0 -183
- package/dist/_chunks/ms-BtGFDB9t.mjs +0 -163
- package/dist/_chunks/ms-BtGFDB9t.mjs.map +0 -1
- package/dist/_chunks/ms-Re1pSHmx.js +0 -163
- package/dist/_chunks/ms-Re1pSHmx.js.map +0 -1
- package/dist/_chunks/nl-BaTAuelQ.mjs +0 -156
- package/dist/_chunks/nl-DQjrDEw0.js +0 -156
- package/dist/_chunks/pl-BGwXgwH7.js +0 -193
- package/dist/_chunks/pl-BGwXgwH7.js.map +0 -1
- package/dist/_chunks/pl-CP2Zgp01.mjs +0 -193
- package/dist/_chunks/pl-CP2Zgp01.mjs.map +0 -1
- package/dist/_chunks/pt-BR-CCQGwXs0.mjs +0 -193
- package/dist/_chunks/pt-BR-DPd5nRnl.js +0 -193
- package/dist/_chunks/pt-CJoUDTHQ.js +0 -51
- package/dist/_chunks/pt-CJoUDTHQ.js.map +0 -1
- package/dist/_chunks/pt-DMeTMW2x.mjs +0 -51
- package/dist/_chunks/pt-DMeTMW2x.mjs.map +0 -1
- package/dist/_chunks/ru-C8A_4j0w.js +0 -168
- package/dist/_chunks/ru-DGSjru5m.mjs +0 -168
- package/dist/_chunks/sk-DVK4HfSC.mjs +0 -167
- package/dist/_chunks/sk-raWRcmPT.js +0 -167
- package/dist/_chunks/sv-BGb12eW3.mjs +0 -202
- package/dist/_chunks/sv-BGb12eW3.mjs.map +0 -1
- package/dist/_chunks/sv-BNN71SFE.js +0 -202
- package/dist/_chunks/sv-BNN71SFE.js.map +0 -1
- package/dist/_chunks/th--u3VqsON.mjs +0 -164
- package/dist/_chunks/th--u3VqsON.mjs.map +0 -1
- package/dist/_chunks/th-C83Bb_kR.js +0 -164
- package/dist/_chunks/tr-BW20CfcO.js +0 -179
- package/dist/_chunks/tr-BW20CfcO.js.map +0 -1
- package/dist/_chunks/tr-DsUerr-c.mjs +0 -179
- package/dist/_chunks/uk-Bx5IlOKX.mjs +0 -164
- package/dist/_chunks/uk-Bx5IlOKX.mjs.map +0 -1
- package/dist/_chunks/uk-VwB0oiuV.js +0 -164
- package/dist/_chunks/zh-BiOCwPJu.js +0 -202
- package/dist/_chunks/zh-BiOCwPJu.js.map +0 -1
- package/dist/_chunks/zh-CsUDN13W.mjs +0 -202
- package/dist/_chunks/zh-CsUDN13W.mjs.map +0 -1
- package/dist/_chunks/zh-Hans-CLTLm_nt.js +0 -147
- package/dist/_chunks/zh-Hans-Cc0M5PXr.mjs +0 -147
- package/dist/admin/src/components/DataManagerProvider/constants.d.ts +0 -17
- package/dist/admin/src/components/FormModal/constants.d.ts +0 -12
- package/dist/admin/src/pages/RecursivePath/RecursivePath.d.ts +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-BgMd59JL.js","sources":["../../admin/src/utils/getTrad.ts","../../admin/src/contexts/DataManagerContext.ts","../../admin/src/hooks/useDataManager.ts","../../admin/src/contexts/FormModalNavigationContext.ts","../../admin/src/hooks/useFormModalNavigation.ts","../../admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.ts","../../admin/src/components/ContentTypeBuilderNav/ContentTypeBuilderNav.tsx","../../admin/src/utils/isAllowedContentTypesForRelations.ts","../../admin/src/utils/findAttribute.ts","../../admin/src/utils/getYupInnerErrors.ts","../../admin/src/components/AllowedTypesSelect.tsx","../../admin/src/components/AttributeIcon.tsx","../../admin/src/components/AttributeOptions/OptionBoxWrapper.tsx","../../admin/src/components/AttributeOptions/AttributeOption.tsx","../../admin/src/components/AttributeOptions/AttributeList.tsx","../../admin/src/components/AttributeOptions/CustomFieldOption.tsx","../../admin/src/components/AttributeOptions/EmptyAttributes.tsx","../../admin/src/components/AttributeOptions/CustomFieldsList.tsx","../../admin/src/components/AttributeOptions/AttributeOptions.tsx","../../admin/src/components/BooleanDefaultValueSelect.tsx","../../admin/src/components/CustomRadioGroup/Styles.tsx","../../admin/src/components/CustomRadioGroup/CustomRadioGroup.tsx","../../admin/src/components/BooleanRadioGroup.tsx","../../admin/src/components/CheckboxWithNumberField.tsx","../../admin/src/components/ContentTypeRadioGroup.tsx","../../admin/src/components/DraftAndPublishToggle.tsx","../../admin/src/components/FormModalEndActions.tsx","../../admin/src/components/FormModalHeader.tsx","../../admin/src/components/FormModalSubHeader.tsx","../../admin/src/components/IconPicker/constants.ts","../../admin/src/components/IconPicker/IconPicker.tsx","../../admin/src/components/PluralName.tsx","../../admin/src/utils/parseDateValue.ts","../../admin/src/utils/timeFormat.ts","../../admin/src/components/GenericInputs.tsx","../../admin/src/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.tsx","../../admin/src/components/Relation/RelationField/RelationField.tsx","../../admin/src/components/Relation/RelationNaturePicker/Components.tsx","../../admin/src/components/Relation/RelationNaturePicker/RelationNaturePicker.tsx","../../admin/src/components/Relation/Relation.tsx","../../admin/src/components/SelectCategory.tsx","../../admin/src/utils/getMaxDepth.ts","../../admin/src/components/SelectComponent.tsx","../../admin/src/components/SelectComponents.tsx","../../admin/src/components/SelectDateType.tsx","../../admin/src/components/SelectNumber.tsx","../../admin/src/components/SingularName.tsx","../../admin/src/components/TabForm.tsx","../../admin/src/components/TextareaEnum.tsx","../../admin/src/components/FormModal/attributes/nameField.ts","../../admin/src/components/FormModal/attributes/commonBaseForm.ts","../../admin/src/components/FormModal/component/componentForm.ts","../../admin/src/components/FormModal/attributes/attributeOptions.ts","../../admin/src/components/FormModal/attributes/advancedForm.ts","../../admin/src/components/FormModal/component/componentField.ts","../../admin/src/components/FormModal/attributes/baseForm.ts","../../admin/src/components/FormModal/attributes/form.ts","../../admin/src/utils/toRegressedEnumValue.ts","../../admin/src/components/FormModal/attributes/validation/common.ts","../../admin/src/components/FormModal/attributes/types.ts","../../admin/src/components/FormModal/category/regex.ts","../../admin/src/components/FormModal/category/createCategorySchema.ts","../../admin/src/components/FormModal/category/form.ts","../../admin/src/components/FormModal/component/createComponentSchema.ts","../../admin/src/components/FormModal/contentType/contentTypeForm.ts","../../admin/src/components/FormModal/contentType/createContentTypeSchema.ts","../../admin/src/components/FormModal/dynamiczoneForm.ts","../../admin/src/components/FormModal/forms/utils/addItemsToFormSection.ts","../../admin/src/components/FormModal/forms/utils/createCollectionName.ts","../../admin/src/components/FormModal/forms/utils/getUsedAttributeNames.ts","../../admin/src/components/FormModal/forms/forms.ts","../../admin/src/components/FormModal/selectors.ts","../../admin/src/components/FormModal/utils/canEditContentType.ts","../../admin/src/components/FormModal/utils/getAttributesToDisplay.ts","../../admin/src/components/FormModal/utils/getFormInputNames.ts","../../admin/src/components/FormModal/FormModal.tsx","../../admin/src/components/DataManagerProvider/selectors.ts","../../admin/src/components/DataManagerProvider/utils/cleanData.ts","../../admin/src/components/DataManagerProvider/utils/createDataObject.ts","../../admin/src/components/DataManagerProvider/utils/createModifiedDataSchema.ts","../../admin/src/components/DataManagerProvider/utils/formatSchemas.ts","../../admin/src/components/DataManagerProvider/utils/retrieveComponentsThatHaveComponents.ts","../../admin/src/components/DataManagerProvider/utils/retrieveNestedComponents.ts","../../admin/src/components/DataManagerProvider/utils/retrieveSpecificInfoFromComponents.ts","../../admin/src/components/DataManagerProvider/utils/serverRestartWatcher.ts","../../admin/src/components/DataManagerProvider/utils/validateSchema.ts","../../admin/src/components/DataManagerProvider/DataManagerProvider.tsx","../../admin/src/components/FormModalNavigationProvider/constants.ts","../../admin/src/components/FormModalNavigationProvider/FormModalNavigationProvider.tsx","../../admin/src/pages/RecursivePath/RecursivePath.tsx","../../admin/src/pages/App/index.tsx"],"sourcesContent":["import { pluginId } from '../pluginId';\n\nexport const getTrad = (id: string) => `${pluginId}.${id}`;\n","/* eslint-disable check-file/filename-naming-convention */\nimport { createContext } from 'react';\n\nimport type { SchemaType, Component } from '../types';\nimport type { Internal } from '@strapi/types';\n\n// TODO V5 Convert this any types to real types\nexport interface CustomFieldAttributeParams {\n attributeToSet: Record<string, any>;\n forTarget: SchemaType;\n targetUid: Internal.UID.Schema;\n initialAttribute: Record<string, any>;\n}\nexport interface DataManagerContextValue {\n addAttribute: (\n attributeToSet: Record<string, any>,\n forTarget: SchemaType,\n targetUid: Internal.UID.Schema,\n isEditing?: boolean,\n initialAttribute?: Record<string, any>,\n shouldAddComponentToData?: boolean\n ) => void;\n addCustomFieldAttribute: (params: CustomFieldAttributeParams) => void;\n editCustomFieldAttribute: (params: CustomFieldAttributeParams) => void;\n addCreatedComponentToDynamicZone: (dynamicZoneTarget: string, componentsToAdd: string[]) => void;\n createSchema: (\n data: Record<string, any>,\n schemaType: SchemaType,\n uid: Internal.UID.Schema,\n componentCategory?: string,\n shouldAddComponentToData?: boolean\n ) => void;\n changeDynamicZoneComponents: (dynamicZoneTarget: string, newComponents: string[]) => void;\n removeAttribute: (\n mainDataKey: string,\n attributeToRemoveName: string,\n componentUid?: string\n ) => void;\n deleteCategory: (categoryUid: string) => void;\n deleteData: () => void;\n editCategory: (categoryUid: string, body: any) => void;\n removeComponentFromDynamicZone: (dzName: string, componentToRemoveIndex: number) => void;\n setModifiedData: () => void;\n sortedContentTypesList: any[]; // Define the actual type\n submitData: (additionalContentTypeData?: Record<string, any>) => Promise<void>;\n updateSchema: (\n data: Record<string, any>,\n schemaType: SchemaType,\n componentUID: Internal.UID.Component\n ) => void;\n components: Record<Internal.UID.Component, Component>;\n componentsGroupedByCategory: Record<string, Component[]>;\n componentsThatHaveOtherComponentInTheirAttributes: any[]; // Define the actual type\n contentTypes: Record<string, any>;\n initialData: Record<string, any>;\n isInContentTypeView: boolean;\n isInDevelopmentMode?: boolean;\n modifiedData: Record<string, any>;\n nestedComponents: any[]; // Define the actual type\n reservedNames: {\n models: string[];\n attributes: string[];\n };\n allComponentsCategories: any[];\n}\n\n// @ts-expect-error need to pass initial value to params\nexport const DataManagerContext = createContext<DataManagerContextValue>();\n","import { useContext } from 'react';\n\nimport { DataManagerContext } from '../contexts/DataManagerContext';\n\nexport const useDataManager = () => useContext(DataManagerContext);\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { INITIAL_STATE_DATA } from '../components/FormModalNavigationProvider/constants';\n\nimport type {\n ModalEventProps,\n State,\n} from '../components/FormModalNavigationProvider/FormModalNavigationProvider';\nimport type { SchemaType } from '../types';\nimport type { Internal } from '@strapi/types';\n\nexport interface FormModalNavigationContextValue {\n onCloseModal: () => void;\n onOpenModalAddField: (options: {\n forTarget: SchemaType;\n targetUid?: Internal.UID.Schema;\n }) => void;\n onClickSelectField: (option: ModalEventProps) => void;\n onClickSelectCustomField: (option: ModalEventProps) => void;\n onNavigateToChooseAttributeModal: (options: ModalEventProps) => void;\n onNavigateToAddCompoToDZModal: (options: ModalEventProps) => void;\n onOpenModalAddComponentsToDZ: (options: ModalEventProps) => void;\n onNavigateToCreateComponentStep2: () => void;\n onOpenModalCreateSchema: (options: State) => void;\n onOpenModalEditCategory: (categoryName: string) => void;\n onOpenModalEditField: (options: ModalEventProps) => void;\n onOpenModalEditCustomField: (options: ModalEventProps) => void;\n onOpenModalEditSchema: (options: ModalEventProps) => void;\n setFormModalNavigationState: (value: React.SetStateAction<typeof INITIAL_STATE_DATA>) => void;\n actionType: string;\n attributeName: string;\n attributeType: string;\n customFieldUid: string;\n categoryName: string;\n dynamicZoneTarget: string;\n forTarget: SchemaType;\n modalType: string;\n isOpen: boolean;\n showBackLink: boolean;\n kind: string;\n step: string;\n targetUid: Internal.UID.Schema;\n activeTab: string;\n setActiveTab: (value: React.SetStateAction<string>) => void;\n}\n\n// @ts-expect-error need to pass initial value to params\nexport const FormModalNavigationContext = React.createContext<FormModalNavigationContextValue>();\n","import { useContext } from 'react';\n\nimport { FormModalNavigationContext } from '../contexts/FormModalNavigationContext';\n\nexport const useFormModalNavigation = () => useContext(FormModalNavigationContext);\n","import { useState, MouseEvent } from 'react';\n\nimport { useTracking, useNotification } from '@strapi/admin/strapi-admin';\nimport { useCollator, useFilter } from '@strapi/design-system';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\n\nimport { useDataManager } from '../../hooks/useDataManager';\nimport { useFormModalNavigation } from '../../hooks/useFormModalNavigation';\nimport { pluginId } from '../../pluginId';\nimport { getTrad } from '../../utils/getTrad';\n\nimport type { Internal } from '@strapi/types';\n\nexport const useContentTypeBuilderMenu = () => {\n const {\n components,\n componentsGroupedByCategory,\n contentTypes,\n isInDevelopmentMode,\n sortedContentTypesList,\n modifiedData,\n initialData,\n } = useDataManager();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [search, setSearch] = useState('');\n const { onOpenModalCreateSchema, onOpenModalEditCategory } = useFormModalNavigation();\n const { locale } = useIntl();\n\n const { startsWith } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const canOpenModalCreateCTorComponent =\n !Object.keys(contentTypes).some((ct) => contentTypes[ct].isTemporary === true) &&\n !Object.keys(components).some(\n (component) => components[component as Internal.UID.Component].isTemporary === true\n ) &&\n isEqual(modifiedData, initialData);\n\n const handleClickOpenModalCreateCollectionType = () => {\n if (canOpenModalCreateCTorComponent) {\n trackUsage(`willCreateContentType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'collectionType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n } else {\n toggleNotificationCannotCreateSchema();\n }\n };\n\n const handleClickOpenModalCreateSingleType = () => {\n if (canOpenModalCreateCTorComponent) {\n trackUsage(`willCreateSingleType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'singleType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n } else {\n toggleNotificationCannotCreateSchema();\n }\n };\n\n const handleClickOpenModalCreateComponent = () => {\n if (canOpenModalCreateCTorComponent) {\n trackUsage('willCreateComponent');\n\n const nextState = {\n modalType: 'component',\n kind: null,\n actionType: 'create',\n forTarget: 'component',\n };\n\n onOpenModalCreateSchema(nextState);\n } else {\n toggleNotificationCannotCreateSchema();\n }\n };\n\n const toggleNotificationCannotCreateSchema = () => {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: getTrad('notification.info.creating.notSaved'),\n defaultMessage: 'Please save your work before creating a new collection type or component',\n }),\n });\n };\n\n const componentsData = Object.entries(componentsGroupedByCategory)\n .map(([category, components]) => ({\n name: category,\n title: category,\n isEditable: isInDevelopmentMode,\n onClickEdit(e: MouseEvent, data: any) {\n e.stopPropagation();\n\n if (canOpenModalCreateCTorComponent) {\n onOpenModalEditCategory(data.name);\n } else {\n toggleNotificationCannotCreateSchema();\n }\n },\n links: components\n .map((component) => ({\n name: component.uid,\n to: `/plugins/${pluginId}/component-categories/${category}/${component.uid}`,\n title: component.schema.displayName,\n }))\n .sort((a, b) => formatter.compare(a.title, b.title)),\n }))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n const displayedContentTypes = sortedContentTypesList.filter((obj) => obj.visible);\n\n const data = [\n {\n name: 'models',\n title: {\n id: `${getTrad('menu.section.models.name')}`,\n defaultMessage: 'Collection Types',\n },\n customLink: isInDevelopmentMode && {\n id: `${getTrad('button.model.create')}`,\n defaultMessage: 'Create new collection type',\n onClick: handleClickOpenModalCreateCollectionType,\n },\n links: displayedContentTypes.filter((contentType) => contentType.kind === 'collectionType'),\n },\n {\n name: 'singleTypes',\n title: {\n id: `${getTrad('menu.section.single-types.name')}`,\n defaultMessage: 'Single Types',\n },\n customLink: isInDevelopmentMode && {\n id: `${getTrad('button.single-types.create')}`,\n defaultMessage: 'Create new single type',\n onClick: handleClickOpenModalCreateSingleType,\n },\n links: displayedContentTypes.filter((singleType) => singleType.kind === 'singleType'),\n },\n {\n name: 'components',\n title: {\n id: `${getTrad('menu.section.components.name')}`,\n defaultMessage: 'Components',\n },\n customLink: isInDevelopmentMode && {\n id: `${getTrad('button.component.create')}`,\n defaultMessage: 'Create a new component',\n onClick: handleClickOpenModalCreateComponent,\n },\n links: componentsData,\n },\n ].map((section) => {\n const hasChild = section.links.some((l) => Array.isArray(l.links));\n\n if (hasChild) {\n let filteredLinksCount = 0;\n\n return {\n ...section,\n links: section.links\n .map((link) => {\n const filteredLinks = link.links.filter((link: any) => startsWith(link.title, search));\n\n if (filteredLinks.length === 0) {\n return null;\n }\n\n filteredLinksCount += filteredLinks.length;\n\n return {\n ...link,\n links: filteredLinks.sort((a: any, b: any) => formatter.compare(a.title, b.title)),\n };\n })\n .filter(Boolean),\n linksCount: filteredLinksCount,\n };\n }\n\n const filteredLinks = section.links\n .filter((link) => startsWith(link.title, search))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n return {\n ...section,\n links: filteredLinks,\n linksCount: filteredLinks.length,\n };\n });\n\n return {\n menu: data,\n searchValue: search,\n onSearchChange: setSearch,\n };\n};\n","import { Fragment } from 'react';\n\nimport {\n Box,\n TextButton,\n SubNav,\n SubNavHeader,\n SubNavLink,\n SubNavLinkSection,\n SubNavSection,\n SubNavSections,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../../utils/getTrad';\n\nimport { useContentTypeBuilderMenu } from './useContentTypeBuilderMenu';\n\nconst SubNavLinkCustom = styled(SubNavLink)`\n div {\n width: inherit;\n span:nth-child(2) {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: inherit;\n }\n }\n`;\n\nexport const ContentTypeBuilderNav = () => {\n const { menu, searchValue, onSearchChange } = useContentTypeBuilderMenu();\n const { formatMessage } = useIntl();\n\n const pluginName = formatMessage({\n id: getTrad('plugin.name'),\n defaultMessage: 'Content-Type Builder',\n });\n\n return (\n <SubNav aria-label={pluginName}>\n <SubNavHeader\n searchable\n value={searchValue}\n onClear={() => onSearchChange('')}\n onChange={(e) => onSearchChange(e.target.value)}\n label={pluginName}\n searchLabel={formatMessage({\n id: 'global.search',\n defaultMessage: 'Search',\n })}\n />\n <SubNavSections>\n {menu.map((section) => (\n <Fragment key={section.name}>\n <SubNavSection\n label={formatMessage({\n id: section.title.id,\n defaultMessage: section.title.defaultMessage,\n })}\n collapsable\n badgeLabel={section.linksCount.toString()}\n >\n {section.links.map((link) => {\n if (link.links) {\n return (\n <SubNavLinkSection key={link.name} label={upperFirst(link.title)}>\n {link.links.map((subLink: any) => (\n <SubNavLink\n tag={NavLink}\n to={subLink.to}\n active={subLink.active}\n key={subLink.name}\n isSubSectionChild\n >\n {upperFirst(\n formatMessage({ id: subLink.name, defaultMessage: subLink.title })\n )}\n </SubNavLink>\n ))}\n </SubNavLinkSection>\n );\n }\n\n return (\n <SubNavLinkCustom\n tag={NavLink}\n to={link.to}\n active={link.active}\n key={link.name}\n width=\"100%\"\n >\n {upperFirst(formatMessage({ id: link.name, defaultMessage: link.title }))}\n </SubNavLinkCustom>\n );\n })}\n </SubNavSection>\n {section.customLink && (\n <Box paddingLeft={7}>\n <TextButton\n onClick={section.customLink.onClick}\n startIcon={<Plus width=\"0.8rem\" height=\"0.8rem\" />}\n marginTop={2}\n cursor=\"pointer\"\n >\n {formatMessage({\n id: section.customLink.id,\n defaultMessage: section.customLink.defaultMessage,\n })}\n </TextButton>\n </Box>\n )}\n </Fragment>\n ))}\n </SubNavSections>\n </SubNav>\n );\n};\n","import type { ContentType } from '../types';\n\nexport const isAllowedContentTypesForRelations = (contentType: ContentType) => {\n return (\n contentType.kind === 'collectionType' &&\n (contentType.restrictRelationsTo === null ||\n (Array.isArray(contentType.restrictRelationsTo) &&\n contentType.restrictRelationsTo.length > 0))\n );\n};\n","import { AttributeType } from '../types';\n\nexport const findAttribute = (attributes: AttributeType[], attributeToFind: string) => {\n return attributes.find(({ name }) => name === attributeToFind);\n};\n","import type { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport type { ValidationError } from 'yup';\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\nconst extractValuesFromYupError = (\n errorType?: string | undefined,\n errorParams?: Record<string, any> | undefined\n) => {\n if (!errorType || !errorParams) {\n return {};\n }\n\n return {\n [errorType]: errorParams[errorType],\n };\n};\n\nconst getYupInnerErrors = (error: ValidationError) =>\n (error?.inner || []).reduce<Record<string, TranslationMessage>>((acc, currentError) => {\n if (currentError.path) {\n acc[currentError.path.split('[').join('.').split(']').join('')] = {\n id: currentError.message,\n defaultMessage: currentError.message,\n values: extractValuesFromYupError(currentError?.type, currentError?.params),\n };\n }\n\n return acc;\n }, {});\n\nexport { getYupInnerErrors };\n","import { Field, MultiSelectNested } from '@strapi/design-system';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\n\nimport { IntlLabel } from '../types';\n\ninterface AllowedTypesSelectProps {\n intlLabel: IntlLabel;\n name: string;\n onChange: (value: any) => void;\n value?: any;\n}\n\nconst options = [\n {\n label: 'All',\n children: [\n { label: 'images (JPEG, PNG, GIF, SVG, TIFF, ICO, DVU)', value: 'images' },\n { label: 'videos (MPEG, MP4, Quicktime, WMV, AVI, FLV)', value: 'videos' },\n { label: 'audios (MP3, WAV, OGG)', value: 'audios' },\n { label: 'files (CSV, ZIP, PDF, Excel, JSON, ...)', value: 'files' },\n ],\n },\n];\n\nexport const AllowedTypesSelect = ({\n intlLabel,\n name,\n onChange,\n value = null,\n}: AllowedTypesSelectProps) => {\n const { formatMessage } = useIntl();\n\n /* eslint-disable indent */\n const displayedValue =\n value === null || value?.length === 0\n ? formatMessage({ id: 'global.none', defaultMessage: 'None' })\n : [...value]\n .sort()\n .map((v) => upperFirst(v))\n .join(', ');\n\n /* eslint-enable indent */\n\n const label = intlLabel.id\n ? formatMessage({ id: intlLabel.id, defaultMessage: intlLabel.defaultMessage })\n : name;\n\n return (\n <Field.Root name={name}>\n <Field.Label>{label}</Field.Label>\n <MultiSelectNested\n customizeContent={() => displayedValue}\n onChange={(values: any[]) => {\n if (values.length > 0) {\n onChange({ target: { name, value: values, type: 'allowed-types-select' } });\n } else {\n onChange({ target: { name, value: null, type: 'allowed-types-select' } });\n }\n }}\n options={options}\n value={value || []}\n />\n </Field.Root>\n );\n};\n","import { ComponentType, SVGProps } from 'react';\n\nimport { useStrapiApp } from '@strapi/admin/strapi-admin';\nimport { Box } from '@strapi/design-system';\nimport {\n BooleanField,\n CollectionType,\n ComponentField,\n DateField,\n DynamicZoneField,\n EmailField,\n EnumerationField,\n JsonField,\n MediaField,\n NumberField,\n PasswordField,\n RelationField,\n MarkdownField,\n SingleType,\n TextField,\n UidField,\n BlocksField,\n} from '@strapi/icons/symbols';\nimport { styled } from 'styled-components';\n\nconst iconByTypes: Record<string, ComponentType<SVGProps<SVGSVGElement>>> = {\n biginteger: NumberField,\n blocks: BlocksField,\n boolean: BooleanField,\n collectionType: CollectionType,\n component: ComponentField,\n contentType: CollectionType,\n date: DateField,\n datetime: DateField,\n decimal: NumberField,\n dynamiczone: DynamicZoneField,\n email: EmailField,\n enum: EnumerationField,\n enumeration: EnumerationField,\n file: MediaField,\n files: MediaField,\n float: NumberField,\n integer: NumberField,\n json: JsonField,\n JSON: JsonField,\n media: MediaField,\n number: NumberField,\n password: PasswordField,\n relation: RelationField,\n richtext: MarkdownField,\n singleType: SingleType,\n string: TextField,\n text: TextField,\n time: DateField,\n timestamp: DateField,\n uid: UidField,\n};\n\nconst IconBox = styled(Box)`\n svg {\n height: 100%;\n width: 100%;\n }\n`;\n\nexport type IconByType = keyof typeof iconByTypes;\n\ntype AttributeIconProps = {\n type: IconByType;\n customField?: string | null;\n};\n\nexport const AttributeIcon = ({ type, customField = null, ...rest }: AttributeIconProps) => {\n const getCustomField = useStrapiApp('AttributeIcon', (state) => state.customFields.get);\n\n let Compo: any = iconByTypes[type];\n\n if (customField) {\n const customFieldObject = getCustomField(customField);\n const icon = customFieldObject?.icon;\n if (icon) {\n Compo = icon;\n }\n }\n\n if (!iconByTypes[type]) {\n return null;\n }\n\n return (\n <IconBox width=\"3.2rem\" shrink={0} {...rest} aria-hidden>\n <Box tag={Compo} />\n </IconBox>\n );\n};\n","import { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nexport const OptionBoxWrapper = styled(Box)`\n width: 100%;\n height: 100%;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n text-align: left;\n &:hover {\n cursor: pointer;\n background: ${({ theme }) => theme.colors.primary100};\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n }\n`;\n","/**\n *\n * AttributeOption\n *\n */\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { Sparkle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useFormModalNavigation } from '../../hooks/useFormModalNavigation';\nimport { getTrad } from '../../utils/getTrad';\nimport { AttributeIcon, IconByType } from '../AttributeIcon';\n\nimport { OptionBoxWrapper } from './OptionBoxWrapper';\n\nconst newAttributes: string[] = [];\n\nconst NewBadge = () => (\n <Flex grow={1} justifyContent=\"flex-end\">\n <Flex gap={1} hasRadius background=\"alternative100\" padding={`0.2rem 0.4rem`}>\n <Sparkle width={`1rem`} height={`1rem`} fill=\"alternative600\" />\n <Typography textColor=\"alternative600\" variant=\"sigma\">\n New\n </Typography>\n </Flex>\n </Flex>\n);\n\ntype AttributeOptionProps = {\n type: IconByType;\n};\n\nexport const AttributeOption = ({ type = 'text' }: AttributeOptionProps) => {\n const { formatMessage } = useIntl();\n\n const { onClickSelectField } = useFormModalNavigation();\n\n const handleClick = () => {\n const step = type === 'component' ? '1' : null;\n\n onClickSelectField({\n attributeType: type,\n step,\n });\n };\n\n return (\n <OptionBoxWrapper padding={4} tag=\"button\" hasRadius type=\"button\" onClick={handleClick}>\n <Flex>\n <AttributeIcon type={type} />\n <Box paddingLeft={4} width=\"100%\">\n <Flex justifyContent=\"space-between\">\n <Typography fontWeight=\"bold\" textColor=\"neutral800\">\n {formatMessage({ id: getTrad(`attribute.${type}`), defaultMessage: type })}\n </Typography>\n {newAttributes.includes(type) && <NewBadge />}\n </Flex>\n <Flex>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad(`attribute.${type}.description`),\n defaultMessage: 'A type for modeling data',\n })}\n </Typography>\n </Flex>\n </Box>\n </Flex>\n </OptionBoxWrapper>\n );\n};\n","import { Flex, Grid, KeyboardNavigable } from '@strapi/design-system';\n\nimport { IconByType } from '../AttributeIcon';\n\nimport { AttributeOption } from './AttributeOption';\n\ntype AttributeListProps = {\n attributes: IconByType[][];\n};\n\nexport const AttributeList = ({ attributes }: AttributeListProps) => (\n <KeyboardNavigable tagName=\"button\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8}>\n {attributes.map((attributeRow, index) => {\n return (\n // eslint-disable-next-line react/no-array-index-key\n <Grid.Root key={index} gap={3}>\n {attributeRow.map((attribute) => (\n <Grid.Item key={attribute} col={6} direction=\"column\" alignItems=\"stretch\">\n <AttributeOption type={attribute} />\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n })}\n </Flex>\n </KeyboardNavigable>\n);\n","import * as React from 'react';\n\nimport { StrapiAppContextValue } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFormModalNavigation } from '../../hooks/useFormModalNavigation';\nimport { AttributeIcon, IconByType } from '../AttributeIcon';\n\nimport { OptionBoxWrapper } from './OptionBoxWrapper';\n\nexport type CustomFieldOption = {\n name: string;\n type: IconByType;\n icon: React.ComponentType;\n intlLabel: {\n id: string;\n defaultMessage: string;\n };\n intlDescription: {\n id: string;\n defaultMessage: string;\n };\n};\n\ntype CustomFieldOptionProps = {\n customFieldUid: string;\n customField: NonNullable<ReturnType<StrapiAppContextValue['customFields']['get']>>;\n};\n\nexport const CustomFieldOption = ({ customFieldUid, customField }: CustomFieldOptionProps) => {\n const { type, intlLabel, intlDescription } = customField;\n const { formatMessage } = useIntl();\n\n const { onClickSelectCustomField } = useFormModalNavigation();\n\n const handleClick = () => {\n onClickSelectCustomField({\n attributeType: type,\n customFieldUid,\n });\n };\n\n return (\n <OptionBoxWrapper padding={4} tag=\"button\" hasRadius type=\"button\" onClick={handleClick}>\n <Flex>\n <AttributeIcon type={type} customField={customFieldUid} />\n <Box paddingLeft={4}>\n <Flex>\n <Typography fontWeight=\"bold\" textColor=\"neutral800\">\n {formatMessage(intlLabel)}\n </Typography>\n </Flex>\n <Flex>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(intlDescription)}\n </Typography>\n </Flex>\n </Box>\n </Flex>\n </OptionBoxWrapper>\n );\n};\n","import { Box, Flex, Typography, LinkButton } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../../utils';\n\nconst EmptyCard = styled(Box)`\n background: ${({ theme }) =>\n `linear-gradient(180deg, rgba(234, 234, 239, 0) 0%, ${theme.colors.neutral150} 100%)`};\n opacity: 0.33;\n`;\n\nexport const EmptyCardGrid = () => {\n return (\n <Flex wrap=\"wrap\" gap={4}>\n {[...Array(4)].map((_, idx) => {\n return (\n <EmptyCard\n // eslint-disable-next-line react/no-array-index-key\n key={`empty-card-${idx}`}\n height=\"138px\"\n width=\"375px\"\n hasRadius\n />\n );\n })}\n </Flex>\n );\n};\n\nexport const EmptyAttributes = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Box position=\"relative\">\n <EmptyCardGrid />\n <Box position=\"absolute\" top={6} width=\"100%\">\n <Flex alignItems=\"center\" justifyContent=\"center\" direction=\"column\">\n <EmptyDocuments width=\"160px\" height=\"88px\" />\n <Box paddingTop={6} paddingBottom={4}>\n <Box textAlign=\"center\">\n <Typography variant=\"delta\" tag=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('modalForm.empty.heading'),\n defaultMessage: 'Nothing in here yet.',\n })}\n </Typography>\n <Box paddingTop={4}>\n <Typography variant=\"delta\" tag=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('modalForm.empty.sub-heading'),\n defaultMessage:\n 'Find what you are looking for through a wide range of extensions.',\n })}\n </Typography>\n </Box>\n </Box>\n </Box>\n <LinkButton\n tag={Link}\n to={`/marketplace?${qs.stringify({ categories: ['Custom fields'] })}`}\n variant=\"secondary\"\n startIcon={<Plus />}\n >\n {formatMessage({\n id: getTrad('modalForm.empty.button'),\n defaultMessage: 'Add custom fields',\n })}\n </LinkButton>\n </Flex>\n </Box>\n </Box>\n );\n};\n","import { useStrapiApp } from '@strapi/admin/strapi-admin';\nimport { Flex, Grid, KeyboardNavigable, Link } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../utils';\n\nimport { CustomFieldOption } from './CustomFieldOption';\nimport { EmptyAttributes } from './EmptyAttributes';\n\nexport const CustomFieldsList = () => {\n const { formatMessage } = useIntl();\n const getAllCustomFields = useStrapiApp('CustomFieldsList', (state) => state.customFields.getAll);\n // TODO change this once useCustomFields is typed (helper-plugin types are solved)\n const registeredCustomFields = Object.entries(getAllCustomFields());\n\n if (!registeredCustomFields.length) {\n return <EmptyAttributes />;\n }\n\n // Sort the array alphabetically by customField name\n const sortedCustomFields = registeredCustomFields.sort((a, b) =>\n a[1].name > b[1].name ? 1 : -1\n );\n\n return (\n <KeyboardNavigable tagName=\"button\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <Grid.Root gap={3}>\n {sortedCustomFields.map(([uid, customField]) => (\n <Grid.Item key={uid} col={6} direction=\"column\" alignItems=\"stretch\">\n <CustomFieldOption key={uid} customFieldUid={uid} customField={customField} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <Link\n href=\"https://docs.strapi.io/developer-docs/latest/development/custom-fields.html\"\n isExternal\n >\n {formatMessage({\n id: getTrad('modalForm.tabs.custom.howToLink'),\n defaultMessage: 'How to add custom fields',\n })}\n </Link>\n </Flex>\n </KeyboardNavigable>\n );\n};\n","/**\n *\n * AttributeOptions\n *\n */\n\nimport { Divider, Flex, Modal, Tabs, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../utils';\nimport { IconByType } from '../AttributeIcon';\n\nimport { AttributeList } from './AttributeList';\nimport { CustomFieldsList } from './CustomFieldsList';\n\ntype AttributeOptionsProps = {\n attributes: IconByType[][];\n forTarget: string;\n kind: string;\n};\n\nexport const AttributeOptions = ({ attributes, forTarget, kind }: AttributeOptionsProps) => {\n const { formatMessage } = useIntl();\n\n const defaultTabId = getTrad('modalForm.tabs.default');\n const customTabId = getTrad('modalForm.tabs.custom');\n\n const titleIdSuffix = forTarget.includes('component') ? 'component' : kind;\n const titleId = getTrad(`modalForm.sub-header.chooseAttribute.${titleIdSuffix}`);\n\n return (\n <Modal.Body>\n <Tabs.Root variant=\"simple\" defaultValue=\"default\">\n <Flex justifyContent=\"space-between\">\n <Typography variant=\"beta\" tag=\"h2\">\n {formatMessage({ id: titleId, defaultMessage: 'Select a field' })}\n </Typography>\n <Tabs.List>\n <Tabs.Trigger value=\"default\">\n {formatMessage({ id: defaultTabId, defaultMessage: 'Default' })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"custom\">\n {formatMessage({ id: customTabId, defaultMessage: 'Custom' })}\n </Tabs.Trigger>\n </Tabs.List>\n </Flex>\n <Divider marginBottom={6} />\n <Tabs.Content value=\"default\">\n <AttributeList attributes={attributes} />\n </Tabs.Content>\n <Tabs.Content value=\"custom\">\n <CustomFieldsList />\n </Tabs.Content>\n </Tabs.Root>\n </Modal.Body>\n );\n};\n","import { Field, SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { IntlLabel } from '../types';\n\ninterface Metadata {\n intlLabel: IntlLabel;\n disabled?: boolean;\n hidden?: boolean;\n}\n\ninterface Option {\n metadatas: Metadata;\n key: string | number;\n value: string | number;\n}\n\ninterface BooleanDefaultValueSelectProps {\n intlLabel: IntlLabel;\n name: string;\n onChange: (value: any) => void;\n options: Option[];\n value?: any;\n}\n\nexport const BooleanDefaultValueSelect = ({\n intlLabel,\n name,\n options,\n onChange,\n value = null,\n}: BooleanDefaultValueSelectProps) => {\n const { formatMessage } = useIntl();\n const label = intlLabel.id\n ? formatMessage(\n { id: intlLabel.id, defaultMessage: intlLabel.defaultMessage },\n { ...intlLabel.values }\n )\n : name;\n\n const handleChange = (value: any) => {\n let nextValue: boolean | string = '';\n\n if (value === 'true') {\n nextValue = true;\n }\n\n if (value === 'false') {\n nextValue = false;\n }\n\n onChange({ target: { name, value: nextValue, type: 'select-default-boolean' } });\n };\n\n return (\n <Field.Root name={name}>\n <Field.Label>{label}</Field.Label>\n <SingleSelect onChange={handleChange} value={(value === null ? '' : value).toString()}>\n {options.map(({ metadatas: { intlLabel, disabled, hidden }, key, value }) => {\n return (\n <SingleSelectOption key={key} value={value} disabled={disabled} hidden={hidden}>\n {/* No need to translate the options */}\n {intlLabel.defaultMessage}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Field.Root>\n );\n};\n","import { Flex, inputFocusStyle } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nconst Wrapper = styled(Flex)`\n position: relative;\n align-items: stretch;\n\n label {\n border-radius: 4px;\n max-width: 50%;\n cursor: pointer;\n user-select: none;\n flex: 1;\n border-radius: 4px;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n\n ${inputFocusStyle()}\n }\n\n input {\n position: absolute;\n opacity: 0;\n }\n\n .option {\n height: 100%;\n border-radius: 4px;\n will-change: transform, opacity;\n background: ${({ theme }) => theme.colors.neutral0};\n\n .checkmark {\n position: relative;\n display: block;\n will-change: transform;\n background: ${({ theme }) => theme.colors.neutral0};\n width: ${({ theme }) => theme.spaces[5]};\n height: ${({ theme }) => theme.spaces[5]};\n border: solid 1px ${({ theme }) => theme.colors.neutral300};\n border-radius: 50%;\n\n &:before,\n &:after {\n content: '';\n display: block;\n border-radius: 50%;\n width: ${({ theme }) => theme.spaces[3]};\n height: ${({ theme }) => theme.spaces[3]};\n position: absolute;\n top: 3px;\n left: 3px;\n }\n\n &:after {\n transform: scale(0);\n transition: inherit;\n will-change: transform;\n }\n }\n }\n\n .container input:checked ~ div {\n background: ${({ theme }) => theme.colors.primary100};\n color: ${({ theme }) => theme.colors.primary600};\n .checkmark {\n border: solid 1px ${({ theme }) => theme.colors.primary600};\n &::after {\n background: ${({ theme }) => theme.colors.primary600};\n transform: scale(1);\n }\n }\n }\n`;\n\nexport { Wrapper };\n","import { Box, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { Wrapper } from './Styles';\n\nimport type { IntlLabel } from '../../types';\n\ninterface Radio {\n title: IntlLabel;\n description: IntlLabel;\n value: any;\n}\n\ninterface CustomRadioGroupProps {\n intlLabel: IntlLabel;\n name: string;\n onChange: (value: any) => void;\n radios?: Radio[];\n value?: string | boolean;\n}\n\nexport const CustomRadioGroup = ({\n intlLabel,\n name,\n onChange,\n radios = [],\n value,\n}: CustomRadioGroupProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral800\" htmlFor={name} tag=\"label\">\n {formatMessage(intlLabel)}\n </Typography>\n <Wrapper gap={4} alignItems=\"stretch\">\n {radios.map((radio) => {\n return (\n <label htmlFor={radio.value.toString()} key={radio.value} className=\"container\">\n <input\n id={radio.value.toString()}\n name={name}\n className=\"option-input\"\n checked={radio.value === value}\n value={radio.value}\n key={radio.value}\n onChange={onChange}\n type=\"radio\"\n />\n <Box className=\"option\" padding={4}>\n <Flex>\n <Box paddingRight={4}>\n <span className=\"checkmark\" />\n </Box>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography fontWeight=\"bold\">{formatMessage(radio.title)}</Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(radio.description)}\n </Typography>\n </Flex>\n </Flex>\n </Box>\n </label>\n );\n })}\n </Wrapper>\n </Flex>\n );\n};\n","import * as React from 'react';\n\nimport { IntlLabel } from '../types';\n\nimport { CustomRadioGroup } from './CustomRadioGroup';\n\ninterface BooleanRadioGroupProps {\n intlLabel: IntlLabel;\n name: string;\n onChange: (value: any) => void;\n}\n\nexport const BooleanRadioGroup = ({\n onChange,\n name,\n intlLabel,\n ...rest\n}: BooleanRadioGroupProps) => {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const checked = e.target.value !== 'false';\n\n onChange({ target: { name, value: checked, type: 'boolean-radio-group' } });\n };\n\n return <CustomRadioGroup {...rest} name={name} onChange={handleChange} intlLabel={intlLabel} />;\n};\n","import { Box, Checkbox, Field, Flex, NumberInput, TextInput } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { IntlLabel } from '../types';\n\ninterface CheckboxWithNumberFieldProps {\n error?: string;\n intlLabel: IntlLabel;\n modifiedData: Record<string, any>;\n name: string;\n onChange: (value: any) => void;\n value?: any;\n}\n\nexport const CheckboxWithNumberField = ({\n error,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value = null,\n}: CheckboxWithNumberFieldProps) => {\n const { formatMessage } = useIntl();\n const label = intlLabel.id\n ? formatMessage(\n { id: intlLabel.id, defaultMessage: intlLabel.defaultMessage },\n { ...intlLabel.values }\n )\n : name;\n\n const type = modifiedData.type === 'biginteger' ? 'text' : 'number';\n\n const disabled = !modifiedData.type;\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Checkbox\n id={name}\n name={name}\n onCheckedChange={(value) => {\n const initValue = type === 'text' ? '0' : 0;\n const nextValue = value ? initValue : null;\n\n onChange({ target: { name, value: nextValue } });\n }}\n checked={value !== null}\n >\n {label}\n </Checkbox>\n {value !== null && (\n <Box paddingLeft={6} style={{ maxWidth: '200px' }}>\n {type === 'text' ? (\n <Field.Root error={errorMessage} name={name}>\n <TextInput\n aria-label={label}\n disabled={disabled}\n onChange={onChange}\n value={value === null ? '' : value}\n />\n <Field.Error />\n </Field.Root>\n ) : (\n <Field.Root error={errorMessage} name={name}>\n <NumberInput\n aria-label={label}\n disabled={disabled}\n onValueChange={(value: any) => {\n onChange({ target: { name, value: value ?? 0, type } });\n }}\n value={value || 0}\n />\n <Field.Error />\n </Field.Root>\n )}\n </Box>\n )}\n </Flex>\n );\n};\n","import { useNotification } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../utils';\n\nimport { CustomRadioGroup } from './CustomRadioGroup';\n\nimport type { IntlLabel } from '../types';\n\ninterface Radio {\n title: IntlLabel;\n description: IntlLabel;\n value: any;\n}\n\ninterface ContentTypeRadioGroupProps {\n intlLabel: IntlLabel;\n name: string;\n onChange: (value: any) => void;\n radios?: Radio[];\n value?: string | boolean;\n}\n\nexport const ContentTypeRadioGroup = ({ onChange, ...rest }: ContentTypeRadioGroupProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n\n const handleChange = (e: any) => {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: getTrad('contentType.kind.change.warning'),\n defaultMessage:\n 'You just changed the kind of a content type: API will be reset (routes, controllers, and services will be overwritten).',\n }),\n });\n\n onChange(e);\n };\n\n return <CustomRadioGroup {...rest} onChange={handleChange} />;\n};\n","/**\n *\n * DraftAndPublishToggle\n *\n */\n\nimport { useState } from 'react';\n\nimport { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport { Button, Checkbox, CheckboxProps, Dialog, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../utils';\n\nimport type { IntlLabel } from '../types';\n\ninterface Description {\n id: string;\n defaultMessage: string;\n values?: Record<string, any>;\n}\n\ninterface DraftAndPublishToggleProps {\n description?: Description;\n disabled?: boolean;\n intlLabel: IntlLabel;\n isCreating: boolean;\n name: string;\n onChange: (value: { target: { name: string; value: boolean } }) => void;\n value?: boolean;\n}\n\nexport const DraftAndPublishToggle = ({\n description,\n disabled = false,\n intlLabel,\n isCreating,\n name,\n onChange,\n value = false,\n}: DraftAndPublishToggleProps) => {\n const { formatMessage } = useIntl();\n const [showWarning, setShowWarning] = useState(false);\n const label = intlLabel.id\n ? formatMessage(\n { id: intlLabel.id, defaultMessage: intlLabel.defaultMessage },\n { ...intlLabel.values }\n )\n : name;\n\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n\n const handleConfirm = () => {\n onChange({ target: { name, value: false } });\n\n setShowWarning(false);\n };\n\n const handleChange: CheckboxProps['onCheckedChange'] = (checked) => {\n if (!checked && !isCreating) {\n setShowWarning(true);\n\n return;\n }\n\n onChange({ target: { name, value: !!checked } });\n };\n\n return (\n <>\n <Field.Root hint={hint} name={name}>\n <Checkbox checked={value} disabled={disabled} onCheckedChange={handleChange}>\n {label}\n </Checkbox>\n <Field.Hint />\n </Field.Root>\n\n <Dialog.Root open={showWarning} onOpenChange={(isOpen) => setShowWarning(isOpen)}>\n <ConfirmDialog\n endAction={\n <Button onClick={handleConfirm} variant=\"danger\" width=\"100%\" justifyContent=\"center\">\n {formatMessage({\n id: getTrad('popUpWarning.draft-publish.button.confirm'),\n defaultMessage: 'Yes, disable',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: getTrad('popUpWarning.draft-publish.message'),\n defaultMessage: 'If you disable the draft & publish, your drafts will be deleted.',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </>\n );\n};\n","/**\n *\n * FormModalEndActions\n *\n */\n\nimport { SyntheticEvent } from 'react';\n\nimport { Button, Flex } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../utils';\n\ntype FormModalEndActionsProps = {\n categoryName?: string;\n deleteCategory: (categoryName: string) => void;\n deleteComponent: () => void;\n deleteContentType: () => void;\n isAttributeModal: boolean;\n isCustomFieldModal: boolean;\n isComponentAttribute: boolean;\n isComponentModal: boolean;\n isComponentToDzModal: boolean;\n isContentTypeModal: boolean;\n isCreatingComponent: boolean;\n isCreatingComponentAttribute: boolean;\n isCreatingComponentInDz: boolean;\n isCreatingComponentWhileAddingAField: boolean;\n isCreatingContentType: boolean;\n isCreatingDz: boolean;\n isDzAttribute: boolean;\n isEditingAttribute: boolean;\n isEditingCategory: boolean;\n isInFirstComponentStep: boolean;\n onSubmitAddComponentAttribute: (e: SyntheticEvent, shouldContinue: boolean) => void;\n onSubmitAddComponentToDz: (e: SyntheticEvent, shouldContinue: boolean) => void;\n onSubmitCreateContentType: (e: SyntheticEvent, shouldContinue: boolean) => void;\n onSubmitCreateComponent: (e: SyntheticEvent, shouldContinue: boolean) => void;\n onSubmitCreateDz: (e: SyntheticEvent, shouldContinue: boolean) => void;\n onSubmitEditAttribute: (e: SyntheticEvent, shouldContinue: boolean) => void;\n onSubmitEditCategory: (e: SyntheticEvent) => void;\n onSubmitEditComponent: (e: SyntheticEvent, shouldContinue: boolean) => void;\n onSubmitEditContentType: (e: SyntheticEvent, shouldContinue: boolean) => void;\n onSubmitEditCustomFieldAttribute: (e: SyntheticEvent, shouldContinue: boolean) => void;\n onSubmitEditDz: (e: SyntheticEvent, shouldContinue: boolean) => void;\n onClickFinish: () => void;\n};\n\nexport const FormModalEndActions = ({\n categoryName,\n deleteCategory,\n deleteComponent,\n deleteContentType,\n isAttributeModal,\n isCustomFieldModal,\n isComponentAttribute,\n isComponentToDzModal,\n isContentTypeModal,\n isCreatingComponent,\n isCreatingComponentAttribute,\n isCreatingComponentInDz,\n isCreatingComponentWhileAddingAField,\n isCreatingContentType,\n isCreatingDz,\n isComponentModal,\n isDzAttribute,\n isEditingAttribute,\n isEditingCategory,\n isInFirstComponentStep,\n onSubmitAddComponentAttribute,\n onSubmitAddComponentToDz,\n onSubmitCreateContentType,\n onSubmitCreateComponent,\n onSubmitCreateDz,\n onSubmitEditAttribute,\n onSubmitEditCategory,\n onSubmitEditComponent,\n onSubmitEditContentType,\n onSubmitEditCustomFieldAttribute,\n onSubmitEditDz,\n onClickFinish,\n}: FormModalEndActionsProps) => {\n const { formatMessage } = useIntl();\n\n if (isComponentToDzModal) {\n if (isCreatingComponentInDz) {\n return (\n <Button\n variant=\"secondary\"\n type=\"submit\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n\n onSubmitAddComponentToDz(e, true);\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: getTrad('form.button.add-first-field-to-created-component'),\n defaultMessage: 'Add first field to the component',\n })}\n </Button>\n );\n }\n\n return (\n <Button\n variant=\"default\"\n type=\"submit\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n\n onSubmitAddComponentToDz(e, false);\n }}\n >\n {formatMessage({\n id: 'global.finish',\n defaultMessage: 'Finish',\n })}\n </Button>\n );\n }\n\n if (isAttributeModal && isDzAttribute && !isCreatingDz) {\n return (\n <Button\n variant=\"default\"\n type=\"submit\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n\n onClickFinish();\n onSubmitEditDz(e, false);\n }}\n >\n {formatMessage({\n id: 'global.finish',\n defaultMessage: 'Finish',\n })}\n </Button>\n );\n }\n\n if (isAttributeModal && isDzAttribute && isCreatingDz) {\n return (\n <>\n <Button\n variant=\"secondary\"\n type=\"submit\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n\n onSubmitCreateDz(e, true);\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: getTrad('form.button.add-components-to-dynamiczone'),\n defaultMessage: 'Add components to the zone',\n })}\n </Button>\n {/* // TO FIX fix doesnt close the modal */}\n {/* <Button\n variant=\"default\"\n type=\"button\"\n onClick={e => {\n e.preventDefault();\n\n onSubmitCreateDz(e, false);\n }}\n >\n {formatMessage({\n id: 'global.finish',\n defaultMessage: 'Finish',\n })}\n </Button> */}\n </>\n );\n }\n\n if (isAttributeModal && isComponentAttribute) {\n if (isInFirstComponentStep) {\n return (\n <Button\n variant=\"secondary\"\n type=\"submit\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n\n onSubmitAddComponentAttribute(e, true);\n }}\n >\n {isCreatingComponentAttribute\n ? formatMessage({\n id: getTrad('form.button.configure-component'),\n defaultMessage: 'Configure the component',\n })\n : formatMessage({\n id: getTrad('form.button.select-component'),\n defaultMessage: 'Configure the component',\n })}\n </Button>\n );\n }\n\n return (\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n type=\"submit\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n\n onSubmitAddComponentAttribute(e, true);\n }}\n startIcon={<Plus />}\n >\n {isCreatingComponentWhileAddingAField\n ? formatMessage({\n id: getTrad('form.button.add-first-field-to-created-component'),\n defaultMessage: 'Add first field to the component',\n })\n : formatMessage({\n id: getTrad('form.button.add-field'),\n defaultMessage: 'Add another field',\n })}\n </Button>\n <Button\n variant=\"default\"\n type=\"button\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n\n onClickFinish();\n onSubmitAddComponentAttribute(e, false);\n }}\n >\n {formatMessage({\n id: 'global.finish',\n defaultMessage: 'Finish',\n })}\n </Button>\n </Flex>\n );\n }\n\n if (isAttributeModal && !isComponentAttribute && !isDzAttribute) {\n return (\n <Flex gap={2}>\n <Button\n type={isEditingAttribute ? 'button' : 'submit'}\n variant=\"secondary\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n\n onSubmitEditAttribute(e, true);\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: getTrad('form.button.add-field'),\n defaultMessage: 'Add another field',\n })}\n </Button>\n <Button\n type={isEditingAttribute ? 'submit' : 'button'}\n variant=\"default\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n\n onClickFinish();\n onSubmitEditAttribute(e, false);\n }}\n >\n {formatMessage({\n id: 'global.finish',\n defaultMessage: 'Finish',\n })}\n </Button>\n </Flex>\n );\n }\n\n if (isContentTypeModal) {\n return (\n <Flex gap={2}>\n {!isCreatingContentType && (\n <>\n <Button\n type=\"button\"\n variant=\"danger\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n deleteContentType();\n }}\n >\n {formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })}\n </Button>\n <Button\n type=\"submit\"\n variant=\"default\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n\n onSubmitEditContentType(e, false);\n }}\n >\n {formatMessage({\n id: 'global.finish',\n defaultMessage: 'Finish',\n })}\n </Button>\n </>\n )}\n {isCreatingContentType && (\n <Button\n type=\"submit\"\n variant=\"secondary\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n\n onSubmitCreateContentType(e, true);\n }}\n >\n {formatMessage({\n id: 'global.continue',\n defaultMessage: 'Continue',\n })}\n </Button>\n )}\n </Flex>\n );\n }\n\n if (isComponentModal) {\n return (\n <Flex gap={2}>\n {!isCreatingComponent && (\n <>\n <Button\n type=\"button\"\n variant=\"danger\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n deleteComponent();\n }}\n >\n {formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })}\n </Button>\n <Button\n type=\"submit\"\n variant=\"default\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n\n onSubmitEditComponent(e, false);\n }}\n >\n {formatMessage({\n id: 'global.finish',\n defaultMessage: 'Finish',\n })}\n </Button>\n </>\n )}\n {isCreatingComponent && (\n <Button\n type=\"submit\"\n variant=\"secondary\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n\n onSubmitCreateComponent(e, true);\n }}\n >\n {formatMessage({\n id: 'global.continue',\n defaultMessage: 'Continue',\n })}\n </Button>\n )}\n </Flex>\n );\n }\n\n if (isEditingCategory) {\n return (\n <Flex gap={2}>\n <Button\n type=\"button\"\n variant=\"danger\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n if (categoryName) {\n deleteCategory(categoryName);\n }\n }}\n >\n {formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })}\n </Button>\n <Button\n type=\"submit\"\n variant=\"default\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n\n onSubmitEditCategory(e);\n }}\n >\n {formatMessage({\n id: 'global.finish',\n defaultMessage: 'finish',\n })}\n </Button>\n </Flex>\n );\n }\n\n if (isCustomFieldModal) {\n return (\n <Flex gap={2}>\n <Button\n type={isEditingAttribute ? 'button' : 'submit'}\n variant=\"secondary\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n\n onSubmitEditCustomFieldAttribute(e, true);\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: getTrad('form.button.add-field'),\n defaultMessage: 'Add another field',\n })}\n </Button>\n <Button\n type={isEditingAttribute ? 'submit' : 'button'}\n variant=\"default\"\n onClick={(e: SyntheticEvent) => {\n e.preventDefault();\n\n onClickFinish();\n onSubmitEditCustomFieldAttribute(e, false);\n }}\n >\n {formatMessage({\n id: 'global.finish',\n defaultMessage: 'Finish',\n })}\n </Button>\n </Flex>\n );\n }\n\n return null;\n};\n","/**\n *\n * FormModalHeader\n *\n */\nimport { Box, Flex, Breadcrumbs, Crumb, Link, Modal } from '@strapi/design-system';\nimport { ArrowLeft } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\n\nimport { useDataManager } from '../hooks/useDataManager';\nimport { useFormModalNavigation } from '../hooks/useFormModalNavigation';\nimport { getTrad } from '../utils';\n\nimport { AttributeIcon, IconByType } from './AttributeIcon';\n\nimport type { SchemaType } from '../types';\nimport type { Internal } from '@strapi/types';\n\ninterface Header {\n label: string;\n info?: { category: string; name: string };\n}\n\ninterface FormModalHeaderProps {\n actionType?: string | null;\n attributeName: string;\n attributeType: IconByType;\n categoryName: string;\n contentTypeKind: IconByType;\n dynamicZoneTarget: string;\n forTarget: SchemaType;\n modalType: string | null;\n targetUid: Internal.UID.Schema;\n customFieldUid?: string | null;\n showBackLink?: boolean;\n}\n\nexport const FormModalHeader = ({\n actionType = null,\n attributeName,\n attributeType,\n categoryName,\n contentTypeKind,\n dynamicZoneTarget,\n forTarget,\n modalType = null,\n targetUid,\n customFieldUid = null,\n showBackLink = false,\n}: FormModalHeaderProps) => {\n const { formatMessage } = useIntl();\n const { modifiedData } = useDataManager();\n const { onOpenModalAddField } = useFormModalNavigation();\n\n let icon: IconByType = 'component';\n let headers: Header[] = [];\n\n const schema = modifiedData?.[forTarget]?.[targetUid] || modifiedData?.[forTarget] || null;\n const displayName = schema?.schema.displayName;\n\n if (modalType === 'contentType') {\n icon = contentTypeKind;\n }\n\n if (['component', 'editCategory'].includes(modalType || '')) {\n icon = 'component';\n }\n\n const isCreatingMainSchema = ['component', 'contentType'].includes(modalType || '');\n\n if (isCreatingMainSchema) {\n let headerId = getTrad(`modalForm.component.header-${actionType}`);\n\n if (modalType === 'contentType') {\n headerId = getTrad(`modalForm.${contentTypeKind}.header-create`);\n }\n\n if (actionType === 'edit') {\n headerId = getTrad(`modalForm.header-edit`);\n }\n\n return (\n <Modal.Header>\n <Flex>\n <Box>\n <AttributeIcon type={icon} />\n </Box>\n <Box paddingLeft={3}>\n <Modal.Title>{formatMessage({ id: headerId }, { name: displayName })}</Modal.Title>\n </Box>\n </Flex>\n </Modal.Header>\n );\n }\n\n headers = [\n {\n label: displayName,\n info: { category: schema?.category || null, name: schema?.schema.displayName },\n },\n ];\n\n if (modalType === 'chooseAttribute') {\n icon = ['component', 'components'].includes(forTarget) ? 'component' : schema.schema.kind;\n }\n\n if (modalType === 'addComponentToDynamicZone') {\n icon = 'dynamiczone';\n headers.push({ label: dynamicZoneTarget });\n }\n\n if (modalType === 'attribute' || modalType === 'customField') {\n icon = attributeType;\n headers.push({ label: attributeName });\n }\n\n if (modalType === 'editCategory') {\n const label = formatMessage({\n id: getTrad('modalForm.header.categories'),\n defaultMessage: 'Categories',\n });\n\n headers = [{ label }, { label: categoryName }];\n }\n\n return (\n <Modal.Header>\n <Flex gap={3}>\n {showBackLink && (\n // This is a workaround and should use the LinkButton with a variant that currently doesn't exist\n <Link\n aria-label={formatMessage({\n id: getTrad('modalForm.header.back'),\n defaultMessage: 'Back',\n })}\n startIcon={<ArrowLeft />}\n onClick={() => onOpenModalAddField({ forTarget, targetUid })}\n href=\"#back\"\n isExternal={false}\n />\n )}\n <AttributeIcon type={icon} customField={customFieldUid} />\n\n <Breadcrumbs label={headers.map(({ label }) => label).join(',')}>\n {headers.map(({ label, info }, index, arr) => {\n label = upperFirst(label);\n\n if (!label) {\n return null;\n }\n\n const key = `${label}.${index}`;\n\n if (info?.category) {\n label = `${label} (${upperFirst(info.category)} - ${upperFirst(info.name)})`;\n }\n\n return (\n <Crumb isCurrent={index === arr.length - 1} key={key}>\n {label}\n </Crumb>\n );\n })}\n </Breadcrumbs>\n </Flex>\n </Modal.Header>\n );\n};\n","import { StrapiAppContextValue } from '@strapi/admin/strapi-admin';\nimport { Flex, Typography } from '@strapi/design-system';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../utils';\n\nimport type { SchemaType } from '../types';\n\ntype ModalTitleProps = {\n forTarget?: SchemaType;\n step?: string;\n kind?: string;\n modalType?: string;\n actionType?: string;\n};\n\nexport const getModalTitleSubHeader = ({\n modalType,\n forTarget,\n kind,\n actionType,\n step,\n}: ModalTitleProps) => {\n switch (modalType) {\n case 'chooseAttribute':\n return getTrad(\n `modalForm.sub-header.chooseAttribute.${\n forTarget?.includes('component') ? 'component' : kind || 'collectionType'\n }`\n );\n case 'attribute': {\n return getTrad(\n `modalForm.sub-header.attribute.${actionType}${\n step !== 'null' && step !== null && actionType !== 'edit' ? '.step' : ''\n }`\n );\n }\n case 'customField': {\n return getTrad(`modalForm.sub-header.attribute.${actionType}`);\n }\n case 'addComponentToDynamicZone':\n return getTrad('modalForm.sub-header.addComponentToDynamicZone');\n default:\n return getTrad('configurations');\n }\n};\n\ntype FormModalSubHeaderProps = {\n actionType: string;\n modalType: string;\n forTarget: SchemaType;\n kind?: string;\n step?: string;\n attributeType: string;\n attributeName: string;\n customField?: ReturnType<StrapiAppContextValue['customFields']['get']>;\n};\n\nexport const FormModalSubHeader = ({\n actionType,\n modalType,\n forTarget,\n kind,\n step,\n attributeType,\n attributeName,\n customField,\n}: FormModalSubHeaderProps) => {\n const { formatMessage } = useIntl();\n const intlLabel =\n modalType === 'customField'\n ? customField?.intlLabel\n : { id: getTrad(`attribute.${attributeType}`) };\n\n return (\n <Flex direction=\"column\" alignItems=\"flex-start\" paddingBottom={1} gap={1}>\n <Typography tag=\"h2\" variant=\"beta\">\n {formatMessage(\n {\n id: getModalTitleSubHeader({\n actionType,\n forTarget,\n kind,\n step,\n modalType,\n }),\n defaultMessage: 'Add new field',\n },\n {\n type: intlLabel ? upperFirst(formatMessage(intlLabel)) : '',\n name: upperFirst(attributeName),\n step,\n }\n )}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad(`attribute.${attributeType}.description`),\n defaultMessage: 'A type for modeling data',\n })}\n </Typography>\n </Flex>\n );\n};\n","import * as Icons from '@strapi/icons';\nimport * as Symbols from '@strapi/icons/symbols';\n\nexport type Icon = (typeof Icons)[keyof typeof Icons] | (typeof Symbols)[keyof typeof Symbols];\n\nconst COMPONENT_ICONS: Record<string, Icon> = {\n alien: Icons.Alien,\n apps: Icons.GridNine,\n archive: Icons.Archive,\n arrowDown: Icons.ArrowDown,\n arrowLeft: Icons.ArrowLeft,\n arrowRight: Icons.ArrowRight,\n arrowUp: Icons.ArrowUp,\n attachment: Icons.Paperclip,\n bell: Icons.Bell,\n bold: Icons.Bold,\n book: Icons.Book,\n briefcase: Icons.Briefcase,\n brush: Icons.PaintBrush,\n bulletList: Icons.BulletList,\n calendar: Icons.Calendar,\n car: Icons.Car,\n cast: Icons.Cast,\n chartBubble: Icons.ChartBubble,\n chartCircle: Icons.ChartCircle,\n chartPie: Icons.ChartPie,\n check: Icons.Check,\n clock: Icons.Clock,\n cloud: Icons.Cloud,\n code: Icons.Code,\n cog: Icons.Cog,\n collapse: Icons.Collapse,\n command: Icons.Command,\n connector: Icons.Faders,\n crop: Icons.Crop,\n crown: Icons.Crown,\n cup: Icons.Coffee,\n cursor: Icons.Cursor,\n dashboard: Icons.SquaresFour,\n database: Icons.Database,\n discuss: Icons.Discuss,\n doctor: Icons.Stethoscope,\n earth: Icons.Earth,\n emotionHappy: Icons.EmotionHappy,\n emotionUnhappy: Icons.EmotionUnhappy,\n envelop: Icons.Mail,\n exit: Icons.SignOut,\n expand: Icons.Expand,\n eye: Icons.Eye,\n feather: Icons.Feather,\n file: Icons.File,\n fileError: Icons.FileError,\n filePdf: Icons.FilePdf,\n filter: Icons.Filter,\n folder: Icons.Folder,\n gate: Icons.CastleTurret,\n gift: Icons.Gift,\n globe: Icons.Globe,\n grid: Icons.GridFour,\n handHeart: Icons.HandHeart,\n hashtag: Icons.Hashtag,\n headphone: Icons.Headphones,\n heart: Icons.Heart,\n house: Icons.House,\n information: Icons.Information,\n italic: Icons.Italic,\n key: Icons.Key,\n landscape: Icons.Images,\n layer: Icons.ListPlus,\n layout: Icons.Layout,\n lightbulb: Icons.Lightbulb,\n link: Icons.Link,\n lock: Icons.Lock,\n magic: Icons.Magic,\n manyToMany: Icons.ManyToMany,\n manyToOne: Icons.ManyToOne,\n manyWays: Icons.ManyWays,\n medium: Symbols.Medium,\n message: Icons.Message,\n microphone: Icons.Microphone,\n monitor: Icons.Monitor,\n moon: Icons.Moon,\n music: Icons.MusicNotes,\n oneToMany: Icons.OneToMany,\n oneToOne: Icons.OneToOne,\n oneWay: Icons.OneWay,\n paint: Icons.PaintBrush,\n paintBrush: Icons.PaintBrush,\n paperPlane: Icons.PaperPlane,\n pencil: Icons.Pencil,\n phone: Icons.Phone,\n picture: Icons.Image,\n pin: Icons.Pin,\n pinMap: Icons.PinMap,\n plane: Icons.Plane,\n play: Icons.Play,\n plus: Icons.Plus,\n priceTag: Icons.PriceTag,\n puzzle: Icons.PuzzlePiece,\n question: Icons.Question,\n quote: Icons.Quotes,\n refresh: Icons.ArrowClockwise,\n restaurant: Icons.Restaurant,\n rocket: Icons.Rocket,\n rotate: Icons.ArrowsCounterClockwise,\n scissors: Icons.Scissors,\n search: Icons.Search,\n seed: Icons.Plant,\n server: Icons.Server,\n shield: Icons.Shield,\n shirt: Icons.Shirt,\n shoppingCart: Icons.ShoppingCart,\n slideshow: Icons.PresentationChart,\n stack: Icons.Stack,\n star: Icons.Star,\n store: Icons.Store,\n strikeThrough: Icons.StrikeThrough,\n sun: Icons.Sun,\n television: Icons.Television,\n thumbDown: Icons.ThumbDown,\n thumbUp: Icons.ThumbUp,\n train: Icons.Train,\n twitter: Symbols.X,\n typhoon: Icons.Typhoon,\n underline: Icons.Underline,\n user: Icons.User,\n volumeMute: Icons.VolumeMute,\n volumeUp: Icons.VolumeUp,\n walk: Icons.Walk,\n wheelchair: Icons.Wheelchair,\n write: Icons.Feather,\n};\n\nexport { COMPONENT_ICONS };\n","import { useEffect, useRef, useState } from 'react';\n\nimport {\n Box,\n Field,\n Flex,\n IconButton,\n inputFocusStyle,\n Searchbar,\n Tooltip,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Search, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../../utils';\n\nimport { COMPONENT_ICONS } from './constants';\n\nimport type { IntlLabel } from '../../types';\n\nconst IconPickerWrapper = styled(Flex)`\n label {\n ${inputFocusStyle()}\n border-radius: ${({ theme }) => theme.borderRadius};\n border: 1px solid ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\ntype Icons = keyof typeof COMPONENT_ICONS;\n\ninterface IconPickProps {\n iconKey: Icons;\n name: string;\n onChange: (value: any) => void;\n isSelected: boolean;\n ariaLabel: string;\n}\n\nconst IconPick = ({ iconKey, name, onChange, isSelected, ariaLabel }: IconPickProps) => {\n const Icon = COMPONENT_ICONS[iconKey];\n\n return (\n <Field.Root name={name} required={false}>\n <Field.Label>\n <VisuallyHidden>\n {ariaLabel}\n <Field.Input\n type=\"radio\"\n checked={isSelected}\n onChange={onChange}\n value={iconKey}\n aria-checked={isSelected}\n />\n </VisuallyHidden>\n <Flex\n padding={2}\n cursor=\"pointer\"\n hasRadius\n background={isSelected ? 'primary200' : undefined}\n >\n <Icon fill={isSelected ? 'primary600' : 'neutral300'} />\n </Flex>\n </Field.Label>\n </Field.Root>\n );\n};\n\nexport interface IconPickerProps {\n intlLabel: IntlLabel;\n name: string;\n onChange: (value: { target: { name: string; value: string } }) => void;\n value?: string;\n}\n\nexport const IconPicker = ({ intlLabel, name, onChange, value = '' }: IconPickerProps) => {\n const { formatMessage } = useIntl();\n const [showSearch, setShowSearch] = useState(false);\n const [search, setSearch] = useState('');\n const allIcons = Object.keys(COMPONENT_ICONS) as Icons[];\n const [icons, setIcons] = useState(allIcons);\n const searchIconRef = useRef(null);\n const searchBarRef = useRef(null);\n\n const toggleSearch = () => {\n setShowSearch(!showSearch);\n };\n\n const onChangeSearch = ({ target: { value } }: { target: { value: string } }) => {\n setSearch(value);\n setIcons(() => allIcons.filter((icon) => icon.toLowerCase().includes(value.toLowerCase())));\n };\n\n const onClearSearch = () => {\n toggleSearch();\n setSearch('');\n setIcons(allIcons);\n };\n\n const removeIconSelected = () => {\n onChange({ target: { name, value: '' } });\n };\n\n useEffect(() => {\n if (showSearch) {\n (searchBarRef.current as unknown as HTMLInputElement)?.focus();\n }\n }, [showSearch]);\n\n return (\n <>\n <Flex justifyContent=\"space-between\" paddingBottom={2}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral800\" tag=\"label\">\n {formatMessage(intlLabel)}\n </Typography>\n <Flex gap={1}>\n {showSearch ? (\n <Searchbar\n ref={searchBarRef}\n name=\"searchbar\"\n placeholder={formatMessage({\n id: getTrad('ComponentIconPicker.search.placeholder'),\n defaultMessage: 'Search for an icon',\n })}\n onBlur={() => {\n if (!search) {\n toggleSearch();\n }\n }}\n onChange={onChangeSearch}\n value={search}\n onClear={onClearSearch}\n clearLabel={formatMessage({\n id: getTrad('IconPicker.search.clear.label'),\n defaultMessage: 'Clear the icon search',\n })}\n >\n {formatMessage({\n id: getTrad('IconPicker.search.placeholder.label'),\n defaultMessage: 'Search for an icon',\n })}\n </Searchbar>\n ) : (\n <IconButton\n ref={searchIconRef}\n onClick={toggleSearch}\n withTooltip={false}\n label={formatMessage({\n id: getTrad('IconPicker.search.button.label'),\n defaultMessage: 'Search icon button',\n })}\n variant=\"ghost\"\n >\n <Search />\n </IconButton>\n )}\n {value && (\n <Tooltip\n label={formatMessage({\n id: getTrad('IconPicker.remove.tooltip'),\n defaultMessage: 'Remove the selected icon',\n })}\n >\n <IconButton\n onClick={removeIconSelected}\n withTooltip={false}\n label={formatMessage({\n id: getTrad('IconPicker.remove.button'),\n defaultMessage: 'Remove the selected icon',\n })}\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n </Tooltip>\n )}\n </Flex>\n </Flex>\n <IconPickerWrapper\n position=\"relative\"\n padding={1}\n background=\"neutral100\"\n hasRadius\n wrap=\"wrap\"\n gap={2}\n maxHeight=\"126px\"\n overflow=\"auto\"\n textAlign=\"center\"\n >\n {icons.length > 0 ? (\n icons.map((iconKey) => (\n <IconPick\n key={iconKey}\n iconKey={iconKey}\n name={name}\n onChange={onChange}\n isSelected={iconKey === value}\n ariaLabel={formatMessage(\n {\n id: getTrad('IconPicker.icon.label'),\n defaultMessage: 'Select {icon} icon',\n },\n { icon: iconKey }\n )}\n />\n ))\n ) : (\n <Box padding={4} grow={2}>\n <Typography variant=\"delta\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: getTrad('IconPicker.emptyState.label'),\n defaultMessage: 'No icon found',\n })}\n </Typography>\n </Box>\n )}\n </IconPickerWrapper>\n </>\n );\n};\n","import { useEffect, useRef } from 'react';\n\nimport { Field, TextInput } from '@strapi/design-system';\nimport pluralize from 'pluralize';\nimport { useIntl } from 'react-intl';\n\nimport { nameToSlug } from '../utils/nameToSlug';\n\nimport type { IntlLabel } from '../types';\n\ninterface Description {\n id: string;\n defaultMessage: string;\n values?: Record<string, any>;\n}\n\ninterface PluralNameProps {\n description?: Description;\n error?: string;\n intlLabel: IntlLabel;\n modifiedData: Record<string, any>;\n name: string;\n onChange: (value: { target: { name: string; value: string } }) => void;\n value?: string;\n}\n\nexport const PluralName = ({\n description,\n error,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value,\n}: PluralNameProps) => {\n const { formatMessage } = useIntl();\n const onChangeRef = useRef(onChange);\n const displayName = modifiedData?.displayName || '';\n\n useEffect(() => {\n if (displayName) {\n const value = nameToSlug(displayName);\n\n try {\n const plural = pluralize(value, 2);\n onChangeRef.current({ target: { name, value: plural } });\n } catch (err) {\n onChangeRef.current({ target: { name, value } });\n }\n } else {\n onChangeRef.current({ target: { name, value: '' } });\n }\n }, [displayName, name]);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n const label = formatMessage(intlLabel);\n\n return (\n <Field.Root error={errorMessage} hint={hint} name={name}>\n <Field.Label>{label}</Field.Label>\n <TextInput onChange={onChange} value={value || ''} />\n <Field.Error />\n </Field.Root>\n );\n};\n","export const parseDateValue = (value: unknown): Date | undefined => {\n if (value instanceof Date && isValidDate(value)) {\n return value;\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n const date = new Date(value);\n if (isValidDate(date)) {\n return date;\n }\n }\n};\n\nconst isValidDate = (date: Date): boolean => !isNaN(date.getTime());\n","type TimeChangeHandler = (params: {\n target: { name: string; value: string | undefined; type: string };\n}) => void;\n\ntype TimeChangeParams = {\n value?: string;\n onChange: TimeChangeHandler;\n name: string;\n type: string;\n};\n\n// The backend sends a value which has the following format: '00:45:00.000'\n// but the time picker only supports hours & minutes so we need to mutate the value\nconst removeSeconds = (time: string): string => {\n const [hours, minutes] = time.split(':');\n return `${hours}:${minutes}`;\n};\n\n// we need to send back the value with the same '00:45:00.000' format\nconst addSecondsAndMilliseconds = (time: string): string => {\n return time.split(':').length === 2 ? `${time}:00.000` : time;\n};\n\nconst formatTimeForInput = (value?: string): string | undefined => {\n if (!value) return;\n return value.split(':').length > 2 ? removeSeconds(value) : value;\n};\n\nconst formatTimeForOutput = (value?: string): string | undefined => {\n if (!value) return undefined;\n return addSecondsAndMilliseconds(value);\n};\n\nexport const handleTimeChange = ({ value }: TimeChangeParams): string | undefined => {\n const formattedInputTime = formatTimeForInput(value);\n\n return formattedInputTime;\n};\n\nexport const handleTimeChangeEvent = (\n onChange: TimeChangeHandler,\n name: string,\n type: string,\n time?: string\n): void => {\n const formattedOutputTime = formatTimeForOutput(time);\n\n onChange({\n target: {\n name,\n value: formattedOutputTime,\n type,\n },\n });\n};\n","/**\n * TODO: we should be using the FormRenderer from the admin to do this,\n * but the CTB has no tests or types, so we can't refactor it safely.\n * So we're just adding this to the tech debt.\n */\n\nimport * as React from 'react';\n\nimport {\n Checkbox,\n DatePicker,\n DateTimePicker,\n Field,\n JSONInput,\n NumberInput,\n SingleSelect,\n SingleSelectOption,\n Textarea,\n TextInput,\n TimePicker,\n Toggle,\n} from '@strapi/design-system';\nimport { Eye, EyeStriked } from '@strapi/icons';\nimport formatISO from 'date-fns/formatISO';\nimport isEqual from 'lodash/isEqual';\nimport { type MessageDescriptor, type PrimitiveType, useIntl } from 'react-intl';\n\nimport { parseDateValue } from '../utils/parseDateValue';\nimport { handleTimeChange, handleTimeChangeEvent } from '../utils/timeFormat';\n\nimport type { Schema } from '@strapi/types';\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\ninterface InputOption {\n metadatas: {\n intlLabel: TranslationMessage;\n disabled: boolean;\n hidden: boolean;\n };\n key: string;\n value: string;\n}\n\ninterface CustomInputProps<TAttribute extends Schema.Attribute.AnyAttribute>\n extends Omit<GenericInputProps<TAttribute>, 'customInputs'> {\n ref?: React.Ref<HTMLElement>;\n hint?: string | React.JSX.Element | (string | React.JSX.Element)[];\n}\n\ninterface GenericInputProps<\n TAttribute extends Schema.Attribute.AnyAttribute = Schema.Attribute.AnyAttribute,\n> {\n attribute?: TAttribute;\n autoComplete?: string;\n customInputs?: Record<string, React.ComponentType<CustomInputProps<TAttribute>>>;\n description?: TranslationMessage;\n disabled?: boolean;\n error?: string | TranslationMessage;\n intlLabel: TranslationMessage;\n labelAction?: React.ReactNode;\n name: string;\n onChange: (\n payload: {\n target: {\n name: string;\n value: Schema.Attribute.Value<TAttribute>;\n type?: string;\n };\n },\n shouldSetInitialValue?: boolean\n ) => void;\n options?: InputOption[];\n placeholder?: TranslationMessage;\n required?: boolean;\n step?: number;\n type: string;\n // TODO: The value depends on the input type, too complicated to handle all cases here\n value?: Schema.Attribute.Value<TAttribute>;\n isNullable?: boolean;\n}\n\nconst GenericInput = ({\n autoComplete,\n customInputs,\n description,\n disabled,\n intlLabel,\n labelAction,\n error,\n name,\n onChange,\n options = [],\n placeholder,\n required,\n step,\n type,\n value: defaultValue,\n isNullable,\n attribute,\n ...rest\n}: GenericInputProps) => {\n const { formatMessage } = useIntl();\n\n // TODO: Workaround to get the field hint values if they exist on the type\n const getFieldHintValue = (\n attribute?: Schema.Attribute.AnyAttribute,\n key?: keyof FieldSchema\n ) => {\n if (!attribute) return;\n\n if (key === 'minLength' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'maxLength' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'max' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'min' && key in attribute) {\n return attribute[key];\n }\n };\n\n const { hint } = useFieldHint({\n description,\n fieldSchema: {\n minLength: getFieldHintValue(attribute, 'minLength'),\n maxLength: getFieldHintValue(attribute, 'maxLength'),\n max: getFieldHintValue(attribute, 'max'),\n min: getFieldHintValue(attribute, 'min'),\n },\n type: attribute?.type || type,\n });\n\n const [showPassword, setShowPassword] = React.useState(false);\n\n const CustomInput = customInputs ? customInputs[type] : null;\n\n // the API always returns null, which throws an error in React,\n // therefore we cast this case to undefined\n const value = defaultValue ?? undefined;\n\n /*\n TODO: ideally we should pass in `defaultValue` and `value` for\n inputs, in order to make them controlled components. This variable\n acts as a fallback for now, to prevent React errors in devopment mode\n\n See: https://github.com/strapi/strapi/pull/12861\n */\n const valueWithEmptyStringFallback = value ?? '';\n\n function getErrorMessage(error: string | TranslationMessage | undefined) {\n if (!error) {\n return null;\n }\n\n if (typeof error === 'string') {\n return formatMessage({ id: error, defaultMessage: error });\n }\n\n const values = {\n ...error.values,\n };\n\n return formatMessage(\n {\n id: error.id,\n defaultMessage: error?.defaultMessage ?? error.id,\n },\n values\n );\n }\n\n const errorMessage = getErrorMessage(error) ?? undefined;\n\n if (CustomInput) {\n return (\n <CustomInput\n {...rest}\n attribute={attribute}\n description={description}\n hint={hint}\n disabled={disabled}\n intlLabel={intlLabel}\n labelAction={labelAction}\n error={errorMessage || ''}\n name={name}\n onChange={onChange}\n options={options}\n required={required}\n placeholder={placeholder}\n type={type}\n value={value}\n />\n );\n }\n\n const label = intlLabel.id\n ? formatMessage(\n { id: intlLabel.id, defaultMessage: intlLabel.defaultMessage },\n { ...intlLabel.values }\n )\n : name;\n\n const formattedPlaceholder = placeholder\n ? formatMessage(\n { id: placeholder.id, defaultMessage: placeholder.defaultMessage },\n { ...placeholder.values }\n )\n : '';\n\n const getComponent = () => {\n switch (type) {\n case 'json': {\n return (\n <JSONInput\n value={value}\n disabled={disabled}\n onChange={(json) => {\n // Default to null when the field is not required and there is no input value\n const value =\n attribute && 'required' in attribute && !attribute?.required && !json.length\n ? null\n : json;\n onChange({ target: { name, value } }, false);\n }}\n minHeight=\"25.2rem\"\n maxHeight=\"50.4rem\"\n />\n );\n }\n case 'bool': {\n return (\n <Toggle\n checked={defaultValue === null ? null : defaultValue || false}\n disabled={disabled}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.checked } });\n }}\n />\n );\n }\n case 'checkbox': {\n return (\n <Checkbox\n disabled={disabled}\n onCheckedChange={(value) => {\n onChange({ target: { name, value } });\n }}\n checked={Boolean(value)}\n >\n {label}\n </Checkbox>\n );\n }\n case 'datetime': {\n const dateValue = parseDateValue(value);\n return (\n <DateTimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(date) => {\n // check if date is not null or undefined\n const formattedDate = date ? date.toISOString() : null;\n\n onChange({ target: { name, value: formattedDate, type } });\n }}\n onClear={() => onChange({ target: { name, value: null, type } })}\n placeholder={formattedPlaceholder}\n value={dateValue}\n />\n );\n }\n case 'date': {\n const dateValue = parseDateValue(value);\n return (\n <DatePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(date) => {\n onChange({\n target: {\n name,\n value: date ? formatISO(date, { representation: 'date' }) : null,\n type,\n },\n });\n }}\n onClear={() => onChange({ target: { name, value: null, type } })}\n placeholder={formattedPlaceholder}\n value={dateValue}\n />\n );\n }\n case 'number': {\n return (\n <NumberInput\n disabled={disabled}\n onValueChange={(value) => {\n onChange({ target: { name, value, type } });\n }}\n placeholder={formattedPlaceholder}\n step={step}\n value={value}\n />\n );\n }\n case 'email': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type=\"email\"\n value={valueWithEmptyStringFallback}\n />\n );\n }\n case 'timestamp':\n case 'text':\n case 'string': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type=\"text\"\n value={valueWithEmptyStringFallback}\n />\n );\n }\n case 'password': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n endAction={\n <button\n aria-label={formatMessage({\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n })}\n onClick={() => {\n setShowPassword((prev) => !prev);\n }}\n style={{\n border: 'none',\n padding: 0,\n background: 'transparent',\n }}\n type=\"button\"\n >\n {showPassword ? <Eye fill=\"neutral500\" /> : <EyeStriked fill=\"neutral500\" />}\n </button>\n }\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type={showPassword ? 'text' : 'password'}\n value={valueWithEmptyStringFallback}\n />\n );\n }\n case 'select': {\n return (\n <SingleSelect\n disabled={disabled}\n onChange={(value) => {\n onChange({ target: { name, value, type: 'select' } });\n }}\n placeholder={formattedPlaceholder}\n value={value}\n >\n {options.map(({ metadatas: { intlLabel, disabled, hidden }, key, value }) => {\n return (\n <SingleSelectOption key={key} value={value} disabled={disabled} hidden={hidden}>\n {formatMessage(intlLabel)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n }\n case 'textarea': {\n return (\n <Textarea\n disabled={disabled}\n onChange={(event) => onChange({ target: { name, value: event.target.value, type } })}\n placeholder={formattedPlaceholder}\n value={valueWithEmptyStringFallback}\n />\n );\n }\n case 'time': {\n const formattedValue = handleTimeChange({ value, onChange, name, type });\n\n return (\n <TimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(time) => handleTimeChangeEvent(onChange, name, type, time)}\n onClear={() => handleTimeChangeEvent(onChange, name, type, undefined)}\n value={formattedValue}\n />\n );\n }\n default: {\n /**\n * If there's no component for the given type, we return a disabled text input\n * showing a \"Not supported\" title to illustrate the issue.\n */\n return <TextInput disabled placeholder=\"Not supported\" type=\"text\" value=\"\" />;\n }\n }\n };\n\n return (\n <Field.Root error={errorMessage} name={name} hint={hint} required={required}>\n {type !== 'checkbox' ? <Field.Label action={labelAction}>{label}</Field.Label> : null}\n {getComponent()}\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n\ntype FieldSchema = {\n minLength?: number | string;\n maxLength?: number | string;\n max?: number | string;\n min?: number | string;\n};\ninterface UseFieldHintProps {\n description?: MessageDescriptor & { values?: Record<string, PrimitiveType> };\n fieldSchema?: FieldSchema;\n type?: string;\n}\n\n/**\n * @description\n * A hook for generating the hint for a field\n */\nconst useFieldHint = ({ description, fieldSchema, type }: UseFieldHintProps) => {\n const { formatMessage } = useIntl();\n\n const buildDescription = () =>\n description?.id\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n\n const buildHint = () => {\n const { maximum, minimum } = getMinMax(fieldSchema);\n const units = getFieldUnits({\n type,\n minimum,\n maximum,\n });\n\n const minIsNumber = typeof minimum === 'number';\n const maxIsNumber = typeof maximum === 'number';\n const hasMinAndMax = maxIsNumber && minIsNumber;\n const hasMinOrMax = maxIsNumber || minIsNumber;\n\n if (!description?.id && !hasMinOrMax) {\n return '';\n }\n\n return formatMessage(\n {\n id: 'content-manager.form.Input.hint.text',\n defaultMessage:\n '{min, select, undefined {} other {min. {min}}}{divider}{max, select, undefined {} other {max. {max}}}{unit}{br}{description}',\n },\n {\n min: minimum,\n max: maximum,\n description: buildDescription(),\n unit: units?.message && hasMinOrMax ? formatMessage(units.message, units.values) : null,\n divider: hasMinAndMax\n ? formatMessage({\n id: 'content-manager.form.Input.hint.minMaxDivider',\n defaultMessage: ' / ',\n })\n : null,\n br: hasMinOrMax ? <br /> : null,\n }\n );\n };\n\n return { hint: buildHint() };\n};\n\nconst getFieldUnits = ({\n type,\n minimum,\n maximum,\n}: {\n type?: string;\n minimum?: number;\n maximum?: number;\n}) => {\n if (type && ['biginteger', 'integer', 'number'].includes(type)) {\n return {};\n }\n const maxValue = Math.max(minimum || 0, maximum || 0);\n\n return {\n message: {\n id: 'content-manager.form.Input.hint.character.unit',\n defaultMessage: '{maxValue, plural, one { character} other { characters}}',\n },\n values: {\n maxValue,\n },\n };\n};\n\nconst getMinMax = (fieldSchema?: FieldSchema) => {\n if (!fieldSchema) {\n return { maximum: undefined, minimum: undefined };\n }\n\n const { minLength, maxLength, max, min } = fieldSchema;\n\n let minimum;\n let maximum;\n\n const parsedMin = Number(min);\n const parsedMinLength = Number(minLength);\n\n if (!Number.isNaN(parsedMin)) {\n minimum = parsedMin;\n } else if (!Number.isNaN(parsedMinLength)) {\n minimum = parsedMinLength;\n }\n\n const parsedMax = Number(max);\n const parsedMaxLength = Number(maxLength);\n\n if (!Number.isNaN(parsedMax)) {\n maximum = parsedMax;\n } else if (!Number.isNaN(parsedMaxLength)) {\n maximum = parsedMaxLength;\n }\n\n return { maximum, minimum };\n};\n\n/**\n * we've memoized this component because we use a context to store all the data in our form in the content-manager.\n * This then causes _every_ component to re-render because there are no selects incurring performance issues\n * in content-types as the content-type gets more complicated.\n */\nconst MemoizedGenericInput = React.memo(GenericInput, isEqual);\n\nexport type { GenericInputProps, CustomInputProps };\nexport { MemoizedGenericInput as GenericInput };\n","import { Menu } from '@strapi/design-system';\nimport { useDispatch } from 'react-redux';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../../../../hooks/useDataManager';\nimport { isAllowedContentTypesForRelations } from '../../../../utils';\nimport { ON_CHANGE_RELATION_TARGET } from '../../../FormModal/constants';\n\ninterface RelationTargetPickerProps {\n oneThatIsCreatingARelationWithAnother: string;\n target: string;\n}\n\nexport const RelationTargetPicker = ({\n oneThatIsCreatingARelationWithAnother,\n target,\n}: RelationTargetPickerProps) => {\n const { contentTypes, sortedContentTypesList } = useDataManager();\n const dispatch = useDispatch();\n // TODO: replace with an obj { relation: 'x', bidirctional: true|false }\n const allowedContentTypesForRelation = sortedContentTypesList.filter(\n isAllowedContentTypesForRelations\n );\n\n const { plugin = null, schema: { displayName } = { displayName: 'error' } } =\n contentTypes?.[target] ?? {};\n\n const handleSelect =\n ({\n uid,\n plugin,\n title,\n restrictRelationsTo,\n }: {\n uid: string;\n plugin: boolean;\n title: string;\n restrictRelationsTo: any;\n }) =>\n () => {\n const selectedContentTypeFriendlyName = plugin ? `${plugin}_${title}` : title;\n\n dispatch({\n type: ON_CHANGE_RELATION_TARGET,\n target: {\n value: uid,\n oneThatIsCreatingARelationWithAnother,\n selectedContentTypeFriendlyName,\n targetContentTypeAllowedRelations: restrictRelationsTo,\n },\n });\n };\n\n /**\n * TODO: This should be a Select but the design doesn't match the\n * styles of the select component and there isn't the ability to\n * change it correctly.\n */\n return (\n <Menu.Root>\n <MenuTrigger>{`${displayName} ${plugin ? `(from: ${plugin})` : ''}`}</MenuTrigger>\n <Menu.Content zIndex=\"popover\">\n {allowedContentTypesForRelation.map(({ uid, title, restrictRelationsTo, plugin }) => (\n <Menu.Item key={uid} onSelect={handleSelect({ uid, plugin, title, restrictRelationsTo })}>\n {title} \n {plugin && <>(from: {plugin})</>}\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Root>\n );\n};\n\nconst MenuTrigger = styled(Menu.Trigger)`\n max-width: 16.8rem;\n span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n`;\n","import { Box, Divider, Flex, Typography } from '@strapi/design-system';\n\nimport { getTrad } from '../../../utils/getTrad';\nimport { GenericInput } from '../../GenericInputs';\n\nimport { RelationTargetPicker } from './RelationTargetPicker/RelationTargetPicker';\n\ninterface RelationFormBoxProps {\n disabled?: boolean;\n error?: Record<string, any>;\n header?: string;\n isMain?: boolean;\n name: string;\n onChange: (value: any) => void;\n oneThatIsCreatingARelationWithAnother?: string;\n target?: string;\n value?: string;\n}\n\nexport const RelationFormBox = ({\n disabled = false,\n error,\n header,\n isMain = false,\n name,\n onChange,\n oneThatIsCreatingARelationWithAnother = '',\n target = '',\n value = '',\n}: RelationFormBoxProps) => {\n return (\n <Box background=\"neutral100\" hasRadius borderColor=\"neutral200\">\n <Flex paddingTop={isMain ? 4 : 1} paddingBottom={isMain ? 3 : 1} justifyContent=\"center\">\n {isMain ? (\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral800\">\n {header}\n </Typography>\n ) : (\n <RelationTargetPicker\n target={target}\n oneThatIsCreatingARelationWithAnother={oneThatIsCreatingARelationWithAnother}\n />\n )}\n </Flex>\n <Divider background=\"neutral200\" />\n <Box padding={4}>\n <GenericInput\n disabled={disabled}\n error={error?.id || null}\n intlLabel={{\n id: getTrad('form.attribute.item.defineRelation.fieldName'),\n defaultMessage: 'Field name',\n }}\n name={name}\n onChange={onChange}\n type=\"text\"\n value={value}\n />\n </Box>\n </Box>\n );\n};\n","import { Box, BoxComponent, Flex, FlexComponent } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nconst Wrapper = styled<BoxComponent>(Box)`\n position: relative;\n width: 100%;\n &::before {\n content: '';\n position: absolute;\n top: calc(50% - 0px);\n height: 2px;\n width: 100%;\n background-color: ${({ theme }) => theme.colors.primary600};\n z-index: 0;\n }\n`;\n\nconst IconWrapper = styled<BoxComponent<'button'>>(Box)<{ $isSelected: boolean }>`\n background: ${({ theme, $isSelected }) => theme.colors[$isSelected ? 'primary100' : 'neutral0']};\n border: 1px solid\n ${({ theme, $isSelected }) => theme.colors[$isSelected ? 'primary700' : 'neutral200']};\n border-radius: ${({ theme }) => theme.borderRadius};\n z-index: 1;\n flex: 0 0 2.4rem;\n svg {\n width: 2.4rem;\n height: 2.4rem;\n max-width: unset;\n path {\n fill: ${({ theme, $isSelected }) => theme.colors[$isSelected ? 'primary700' : 'neutral500']};\n }\n }\n cursor: pointer;\n &:disabled {\n cursor: not-allowed;\n }\n`;\n\nconst InfosWrapper = styled<FlexComponent>(Flex)`\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n`;\n\nexport { IconWrapper, InfosWrapper, Wrapper };\n","import { Flex, KeyboardNavigable, Typography } from '@strapi/design-system';\nimport {\n ManyToMany,\n ManyToOne,\n ManyWays as ManyWay,\n OneToMany,\n OneToOne,\n OneWay,\n} from '@strapi/icons';\nimport get from 'lodash/get';\nimport truncate from 'lodash/truncate';\nimport pluralize from 'pluralize';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\n\nimport { useDataManager } from '../../../hooks/useDataManager';\nimport { getTrad } from '../../../utils/getTrad';\nimport { ON_CHANGE_RELATION_TYPE } from '../../FormModal/constants';\n\nimport { IconWrapper, InfosWrapper, Wrapper } from './Components';\n\nconst relations = {\n oneWay: OneWay,\n oneToOne: OneToOne,\n oneToMany: OneToMany,\n manyToOne: ManyToOne,\n manyToMany: ManyToMany,\n manyWay: ManyWay,\n};\n\ntype RelationType = keyof typeof relations;\n\ninterface RelationNaturePickerProps {\n naturePickerType: string;\n oneThatIsCreatingARelationWithAnother: string;\n relationType: string;\n target: string;\n}\n\nexport const RelationNaturePicker = ({\n naturePickerType,\n oneThatIsCreatingARelationWithAnother,\n relationType,\n target,\n}: RelationNaturePickerProps) => {\n const dispatch = useDispatch();\n const { formatMessage } = useIntl();\n\n const { contentTypes, modifiedData } = useDataManager();\n const ctRelations = ['oneWay', 'oneToOne', 'oneToMany', 'manyToOne', 'manyToMany', 'manyWay'];\n const componentRelations = ['oneWay', 'manyWay'];\n const dataType =\n naturePickerType === 'contentType'\n ? get(modifiedData, [naturePickerType, 'schema', 'kind'], '')\n : naturePickerType;\n const relationsType = (\n dataType === 'collectionType' ? ctRelations : componentRelations\n ) as RelationType[];\n\n const areDisplayedNamesInverted = relationType === 'manyToOne';\n const targetLabel = get(contentTypes, [target, 'schema', 'displayName'], 'unknown');\n const leftTarget = areDisplayedNamesInverted\n ? targetLabel\n : oneThatIsCreatingARelationWithAnother;\n const rightTarget = areDisplayedNamesInverted\n ? oneThatIsCreatingARelationWithAnother\n : targetLabel;\n const leftDisplayedValue = pluralize(leftTarget, relationType === 'manyToMany' ? 2 : 1);\n const restrictedRelations = get(contentTypes, [target, 'schema', 'restrictRelationsTo'], null);\n\n const rightDisplayedValue = pluralize(\n rightTarget,\n ['manyToMany', 'oneToMany', 'manyToOne', 'manyWay'].includes(relationType) ? 2 : 1\n );\n\n if (!relationType) {\n return null;\n }\n\n return (\n <Flex style={{ flex: 1 }}>\n <Wrapper>\n <Flex paddingLeft={9} paddingRight={9} paddingTop={1} justifyContent=\"center\">\n <KeyboardNavigable tagName=\"button\">\n <Flex gap={3}>\n {relationsType.map((relation) => {\n const Asset = relations[relation];\n const isEnabled =\n restrictedRelations === null || restrictedRelations.includes(relation);\n\n return (\n <IconWrapper\n tag=\"button\"\n $isSelected={relationType === relation}\n disabled={!isEnabled}\n key={relation}\n onClick={() => {\n if (isEnabled) {\n dispatch({\n type: ON_CHANGE_RELATION_TYPE,\n target: {\n oneThatIsCreatingARelationWithAnother,\n targetContentType: target,\n value: relation,\n },\n });\n }\n }}\n padding={2}\n type=\"button\"\n >\n <Asset key={relation} />\n </IconWrapper>\n );\n })}\n </Flex>\n </KeyboardNavigable>\n </Flex>\n </Wrapper>\n <InfosWrapper justifyContent=\"center\">\n <Typography>{truncate(leftDisplayedValue, { length: 24 })} </Typography>\n <Typography textColor=\"primary600\">\n {formatMessage({ id: getTrad(`relation.${relationType}`) })} \n </Typography>\n <Typography>{truncate(rightDisplayedValue, { length: 24 })}</Typography>\n </InfosWrapper>\n </Flex>\n );\n};\n","import { Flex } from '@strapi/design-system';\n\nimport { getRelationType } from '../../utils/getRelationType';\n\nimport { RelationFormBox } from './RelationField/RelationField';\nimport { RelationNaturePicker } from './RelationNaturePicker/RelationNaturePicker';\n\ninterface RelationProps {\n formErrors: Record<string, any>;\n mainBoxHeader: string;\n modifiedData: Record<string, any>;\n onChange: (value: any) => void;\n naturePickerType: string;\n}\n\nexport const Relation = ({\n formErrors,\n mainBoxHeader,\n modifiedData,\n naturePickerType,\n onChange,\n}: RelationProps) => {\n const relationType = getRelationType(modifiedData.relation, modifiedData.targetAttribute);\n\n return (\n <Flex style={{ position: 'relative' }}>\n <RelationFormBox\n isMain\n header={mainBoxHeader}\n error={formErrors?.name || null}\n name=\"name\"\n onChange={onChange}\n value={modifiedData?.name || ''}\n />\n <RelationNaturePicker\n naturePickerType={naturePickerType}\n oneThatIsCreatingARelationWithAnother={mainBoxHeader}\n relationType={relationType!}\n target={modifiedData.target}\n />\n <RelationFormBox\n disabled={['oneWay', 'manyWay'].includes(relationType!)}\n error={formErrors?.targetAttribute || null}\n name=\"targetAttribute\"\n onChange={onChange}\n oneThatIsCreatingARelationWithAnother={mainBoxHeader}\n target={modifiedData.target}\n value={modifiedData?.targetAttribute || ''}\n />\n </Flex>\n );\n};\n","import { useState } from 'react';\n\nimport { ComboboxOption, Combobox, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useDataManager } from '../hooks/useDataManager';\n\ninterface SelectCategoryProps {\n error?: string | null;\n intlLabel: {\n id: string;\n defaultMessage: string;\n values?: Record<string, any>;\n };\n name: string;\n onChange: (value: { target: { name: string; value: any; type: string } }) => void;\n value?: string;\n isCreating?: boolean;\n dynamicZoneTarget?: string | null;\n}\n\nexport const SelectCategory = ({\n error = null,\n intlLabel,\n name,\n onChange,\n value = undefined,\n isCreating,\n dynamicZoneTarget,\n}: SelectCategoryProps) => {\n const { formatMessage } = useIntl();\n const { allComponentsCategories } = useDataManager();\n const [categories, setCategories] = useState(allComponentsCategories);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const label = formatMessage(intlLabel);\n\n const handleChange = (value: any) => {\n onChange({ target: { name, value, type: 'select-category' } });\n };\n\n const handleCreateOption = (value: any) => {\n setCategories((prev) => [...prev, value]);\n handleChange(value);\n };\n\n return (\n <Field.Root error={errorMessage} name={name}>\n <Field.Label>{label}</Field.Label>\n <Combobox\n // TODO: re-enable category edits, renaming categories of already existing components currently breaks other functionality\n // See https://github.com/strapi/strapi/issues/20356\n disabled={!isCreating && !dynamicZoneTarget}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n value={value}\n creatable\n >\n {categories.map((category) => (\n <ComboboxOption key={category} value={category}>\n {category}\n </ComboboxOption>\n ))}\n </Combobox>\n <Field.Error />\n </Field.Root>\n );\n};\n","import type { ComponentWithChildren } from '../components/DataManagerProvider/utils/retrieveComponentsThatHaveComponents';\nimport type { NestedComponent } from '../components/DataManagerProvider/utils/retrieveNestedComponents';\nimport type { Internal } from '@strapi/types';\n\nconst findComponent = <T extends { component: Internal.UID.Component }>(\n componentUid: Internal.UID.Schema,\n components: Array<T>\n) => {\n return components.find((c) => c.component === componentUid);\n};\n\n/**\n * Recursively calculates the maximum depth of nested child components\n * for a given component UID.\n *\n * @param componentUid - The UID of the component to start from.\n * @param components - The array of all components with their child components.\n * @param currentDepth - The current depth of the recursion. Defaults to 0.\n * @returns The maximum depth of the nested child components.\n */\nexport const getChildrenMaxDepth = (\n componentUid: Internal.UID.Component,\n components: Array<ComponentWithChildren>,\n currentDepth = 0\n) => {\n const component = findComponent(componentUid, components);\n\n // If the component doesn't exist or has no child components, return the current depth.\n if (!component || !component.childComponents || component.childComponents.length === 0) {\n return currentDepth;\n }\n\n let maxDepth = currentDepth;\n\n // Iterate through each child component to calculate their respective depths.\n component.childComponents.forEach((child) => {\n // Recursively calculate the depth of the child component.\n const depth = getChildrenMaxDepth(child.component, components, currentDepth + 1);\n // Update the maximum depth if the child's depth is greater.\n if (depth > maxDepth) {\n maxDepth = depth;\n }\n });\n\n return maxDepth;\n};\n\n/**\n * Calculates the depth of a component within a nested component tree.\n * Depth is defined as the level at which the component is nested.\n * For example, a component at Depth 3 is the third nested component.\n *\n * @param component - The UID of the component to find the depth for.\n * @param components - The array of all nested components.\n * @returns The depth level of the component within the nested tree.\n */\nexport const getComponentDepth = (\n component: Internal.UID.Schema,\n components: Array<NestedComponent>\n) => {\n /**\n * Helper function to recursively calculate the depth of a component.\n *\n * @param currentComponent - The current component being inspected.\n * @param currentLevel - The current level of depth in the tree.\n * @returns An array of depth levels found for the component.\n */\n const getDepth = (currentComponent: NestedComponent, currentLevel: number): Array<number> => {\n const levels = [];\n levels.push(currentLevel);\n\n // If the component has no parent UIDs, return the current levels\n if (!currentComponent.uidsOfAllParents) {\n return levels;\n }\n\n // Iterate over each parent UID to calculate their respective depths\n for (const parentUid of currentComponent.uidsOfAllParents) {\n const parentComponent = findComponent(parentUid, components);\n if (parentComponent) {\n levels.push(...getDepth(parentComponent, currentLevel + 1));\n }\n }\n\n return levels;\n };\n\n const nestedCompo = findComponent(component, components);\n // return depth 0 if component is not nested\n if (!nestedCompo) {\n return 0;\n }\n const compoDepth = Math.max(...getDepth(nestedCompo, 1));\n return compoDepth;\n};\n","import { SingleSelectOption, SingleSelect, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { MAX_COMPONENT_DEPTH } from '../constants';\nimport { useDataManager } from '../hooks/useDataManager';\nimport { getChildrenMaxDepth, getComponentDepth } from '../utils/getMaxDepth';\n\nimport type { Internal } from '@strapi/types';\ninterface Option {\n uid: string;\n label: string;\n categoryName: string;\n}\n\ninterface SelectComponentProps {\n componentToCreate?: Record<string, any> | null;\n error?: string | null;\n intlLabel: {\n id: string;\n defaultMessage: string;\n values?: Record<string, any>;\n };\n isAddingAComponentToAnotherComponent: boolean;\n isCreating: boolean;\n isCreatingComponentWhileAddingAField: boolean;\n name: string;\n onChange: (value: any) => void;\n targetUid: Internal.UID.Schema;\n value: string;\n forTarget: string;\n}\n\nexport const SelectComponent = ({\n error = null,\n intlLabel,\n isAddingAComponentToAnotherComponent,\n isCreating,\n isCreatingComponentWhileAddingAField,\n componentToCreate,\n name,\n onChange,\n targetUid,\n forTarget,\n value,\n}: SelectComponentProps) => {\n const { formatMessage } = useIntl();\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const label = formatMessage(intlLabel);\n\n const {\n componentsGroupedByCategory,\n componentsThatHaveOtherComponentInTheirAttributes,\n nestedComponents,\n } = useDataManager();\n\n const isTargetAComponent = ['component', 'components'].includes(forTarget);\n\n let options: Option[] = Object.entries(componentsGroupedByCategory).reduce(\n (acc: Option[], current) => {\n const [categoryName, components] = current;\n const compos = components.map((component) => {\n return {\n uid: component.uid,\n label: component.schema.displayName,\n categoryName,\n };\n });\n\n return [...acc, ...compos];\n },\n []\n );\n\n if (isAddingAComponentToAnotherComponent) {\n options = options.filter(({ uid }: any) => {\n const maxDepth = getChildrenMaxDepth(uid, componentsThatHaveOtherComponentInTheirAttributes);\n const componentDepth = getComponentDepth(targetUid, nestedComponents);\n const totalDepth = maxDepth + componentDepth;\n return totalDepth <= MAX_COMPONENT_DEPTH;\n });\n }\n\n if (isTargetAComponent) {\n options = options.filter((option) => {\n return option.uid !== targetUid;\n });\n }\n\n if (isCreatingComponentWhileAddingAField) {\n options = [\n {\n uid: value,\n label: componentToCreate?.displayName,\n categoryName: componentToCreate?.category,\n },\n ];\n }\n\n return (\n <Field.Root error={errorMessage} name={name}>\n <Field.Label>{label}</Field.Label>\n <SingleSelect\n disabled={isCreatingComponentWhileAddingAField || !isCreating}\n onChange={(value: any) => {\n onChange({ target: { name, value, type: 'select-category' } });\n }}\n value={value || ''}\n >\n {options.map((option) => {\n return (\n <SingleSelectOption key={option.uid} value={option.uid}>\n {`${option.categoryName} - ${option.label}`}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n );\n};\n","import { Field, MultiSelectNested } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useDataManager } from '../hooks/useDataManager';\nimport { getTrad } from '../utils';\nimport { findAttribute } from '../utils/findAttribute';\n\nimport type { Component } from '../types';\n\ntype SelectComponentsProps = {\n dynamicZoneTarget: string;\n intlLabel: {\n id: string;\n defaultMessage: string;\n values?: object;\n };\n name: string;\n onChange: (value: {\n target: {\n name: string;\n value: string[];\n type?: string;\n };\n }) => void;\n value: string[];\n};\n\nexport const SelectComponents = ({\n dynamicZoneTarget,\n intlLabel,\n name,\n onChange,\n value,\n}: SelectComponentsProps) => {\n const { formatMessage } = useIntl();\n const { componentsGroupedByCategory, modifiedData } = useDataManager();\n const dzSchema = findAttribute(modifiedData.contentType.schema.attributes, dynamicZoneTarget);\n const alreadyUsedComponents = dzSchema?.components || [];\n const filteredComponentsGroupedByCategory = Object.keys(componentsGroupedByCategory).reduce(\n (acc, current) => {\n const filteredComponents = componentsGroupedByCategory[current].filter(({ uid }) => {\n return !alreadyUsedComponents.includes(uid);\n });\n\n if (filteredComponents.length > 0) {\n acc[current] = filteredComponents;\n }\n\n return acc;\n },\n {} as Record<string, Component[]>\n );\n const options = Object.entries(filteredComponentsGroupedByCategory).reduce(\n (acc, current) => {\n const [categoryName, components] = current;\n const section = {\n label: categoryName,\n children: components.map(({ uid, schema: { displayName } }) => {\n return { label: displayName, value: uid };\n }),\n };\n\n acc.push(section);\n\n return acc;\n },\n [] as Array<{ label: string; children: Array<{ label: string; value: string }> }>\n );\n\n const displayedValue = formatMessage(\n {\n id: getTrad('components.SelectComponents.displayed-value'),\n defaultMessage:\n '{number, plural, =0 {# components} one {# component} other {# components}} selected',\n },\n { number: value?.length ?? 0 }\n );\n\n return (\n <Field.Root name={name}>\n <Field.Label>{formatMessage(intlLabel)}</Field.Label>\n <MultiSelectNested\n id=\"select1\"\n customizeContent={() => displayedValue}\n onChange={(values) => {\n onChange({ target: { name, value: values, type: 'select-components' } });\n }}\n options={options}\n value={value || []}\n />\n </Field.Root>\n );\n};\n","import { Field, SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { PrimitiveType, useIntl } from 'react-intl';\n\ntype SelectDateTypeProps = {\n intlLabel: {\n id: string;\n defaultMessage: string;\n values?: object;\n };\n error?: string;\n modifiedData: {\n default: number;\n max: number;\n min: number;\n };\n name: string;\n onChange: (value: {\n target: {\n name: string;\n value: string | number | null;\n type?: string;\n };\n }) => void;\n options: Array<{\n metadatas: {\n intlLabel: {\n id: string;\n defaultMessage: string;\n values: Record<string, PrimitiveType> | undefined;\n };\n disabled?: boolean;\n hidden?: boolean;\n };\n key: string | number;\n value: string | number;\n }>;\n value?: string;\n};\n\nexport const SelectDateType = ({\n intlLabel,\n error = undefined,\n modifiedData,\n name,\n onChange,\n options,\n value = '',\n}: SelectDateTypeProps) => {\n const { formatMessage } = useIntl();\n const label = formatMessage(intlLabel);\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n\n const handleChange = (nextValue: string | number) => {\n onChange({ target: { name, value: nextValue, type: 'select' } });\n\n if (!value) {\n return;\n }\n\n if (modifiedData.default !== undefined && modifiedData.default !== null) {\n onChange({ target: { name: 'default', value: null } });\n }\n };\n\n return (\n <Field.Root error={errorMessage} name={name}>\n <Field.Label>{label}</Field.Label>\n <SingleSelect onChange={handleChange} value={value || ''}>\n {options.map(({ metadatas: { intlLabel, disabled, hidden }, key, value }) => {\n return (\n <SingleSelectOption key={key} value={value} disabled={disabled} hidden={hidden}>\n {formatMessage(\n { id: intlLabel.id, defaultMessage: intlLabel.defaultMessage },\n intlLabel.values\n )}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n );\n};\n","import { SingleSelectOption, SingleSelect, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\ntype SelectNumberProps = {\n intlLabel: {\n id: string;\n defaultMessage: string;\n values?: object;\n };\n error?: string;\n modifiedData: {\n default: number;\n max: number;\n min: number;\n };\n name: string;\n onChange: (value: {\n target: {\n name: string;\n value: string | number | null;\n type?: string;\n };\n }) => void;\n options: Array<{\n metadatas: {\n intlLabel: {\n id: string;\n defaultMessage: string;\n };\n disabled?: boolean;\n hidden?: boolean;\n };\n key: string | number;\n value: string | number;\n }>;\n value?: string;\n};\n\nexport const SelectNumber = ({\n intlLabel,\n error = undefined,\n modifiedData,\n name,\n onChange,\n options,\n value = '',\n}: SelectNumberProps) => {\n const { formatMessage } = useIntl();\n const label = formatMessage(intlLabel);\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n\n const handleChange = (nextValue: string | number) => {\n onChange({ target: { name, value: nextValue, type: 'select' } });\n\n if (!value) {\n return;\n }\n\n if (nextValue === 'biginteger' && value !== 'biginteger') {\n if (modifiedData.default !== undefined && modifiedData.default !== null) {\n onChange({ target: { name: 'default', value: null } });\n }\n\n if (modifiedData.max !== undefined && modifiedData.max !== null) {\n onChange({ target: { name: 'max', value: null } });\n }\n\n if (modifiedData.min !== undefined && modifiedData.min !== null) {\n onChange({ target: { name: 'min', value: null } });\n }\n }\n\n if (\n typeof nextValue === 'string' &&\n ['decimal', 'float', 'integer'].includes(nextValue) &&\n value === 'biginteger'\n ) {\n if (modifiedData.default !== undefined && modifiedData.default !== null) {\n onChange({ target: { name: 'default', value: null } });\n }\n\n if (modifiedData.max !== undefined && modifiedData.max !== null) {\n onChange({ target: { name: 'max', value: null } });\n }\n\n if (modifiedData.min !== undefined && modifiedData.min !== null) {\n onChange({ target: { name: 'min', value: null } });\n }\n }\n };\n\n return (\n <Field.Root error={errorMessage} name={name}>\n <Field.Label>{label}</Field.Label>\n <SingleSelect onChange={handleChange} value={value || ''}>\n {options.map(({ metadatas: { intlLabel, disabled, hidden }, key, value }) => {\n return (\n <SingleSelectOption key={key} value={value} disabled={disabled} hidden={hidden}>\n {formatMessage(intlLabel)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n );\n};\n\nSelectNumber.defaultProps = {\n error: undefined,\n value: '',\n};\n","import { useEffect, useRef } from 'react';\n\nimport { Field, TextInput } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { nameToSlug } from '../utils/nameToSlug';\n\nimport type { IntlLabel } from '../types';\n\ninterface SingularNameProps {\n description?: IntlLabel | null;\n error?: string | null;\n intlLabel: IntlLabel;\n modifiedData: Record<string, any>;\n name: string;\n onChange: (value: { target: { name: string; value: string } }) => void;\n value?: string | null;\n}\n\nexport const SingularName = ({\n description = null,\n error = null,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value = null,\n}: SingularNameProps) => {\n const { formatMessage } = useIntl();\n const onChangeRef = useRef(onChange);\n const displayName = modifiedData?.displayName || '';\n\n useEffect(() => {\n if (displayName) {\n onChangeRef.current({ target: { name, value: nameToSlug(displayName) } });\n } else {\n onChangeRef.current({ target: { name, value: '' } });\n }\n }, [displayName, name]);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n const label = formatMessage(intlLabel);\n\n return (\n <Field.Root error={errorMessage} hint={hint} name={name}>\n <Field.Label>{label}</Field.Label>\n <TextInput onChange={onChange} value={value || ''} />\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n","import { Box, Grid, Typography } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { GenericInput } from './GenericInputs';\n\ninterface TabFormProps {\n form: Array<Record<string, any>>;\n formErrors: Record<string, any>;\n genericInputProps: Record<string, any>;\n modifiedData: Record<string, any>;\n onChange: (value: any) => void;\n}\n\n/* eslint-disable react/no-array-index-key */\nexport const TabForm = ({\n form,\n formErrors,\n genericInputProps,\n modifiedData,\n onChange,\n}: TabFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n {form.map((section, sectionIndex) => {\n // Don't display an empty section\n if (section.items.length === 0) {\n return null;\n }\n\n return (\n <Box key={sectionIndex}>\n {section.sectionTitle && (\n <Box paddingBottom={4}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage(section.sectionTitle)}\n </Typography>\n </Box>\n )}\n <Grid.Root gap={4}>\n {section.items.map((input: any, i: number) => {\n const key = `${sectionIndex}.${i}`;\n\n /**\n * Use undefined as the default value because not every input wants a string e.g. Date pickers\n */\n const value = get(modifiedData, input.name, undefined);\n\n // When extending the yup schema of an existing field (like in https://github.com/strapi/strapi/blob/293ff3b8f9559236609d123a2774e3be05ce8274/packages/strapi-plugin-i18n/admin/src/index.js#L52)\n // and triggering a yup validation error in the UI (missing a required field for example)\n // We got an object that looks like: formErrors = { \"pluginOptions.i18n.localized\": {...} }\n // In order to deal with this error, we can't rely on lodash.get to resolve this key\n // - lodash will try to access {pluginOptions: {i18n: {localized: true}}})\n // - and we just want to access { \"pluginOptions.i18n.localized\": {...} }\n // NOTE: this is a hack\n const pluginOptionError = Object.keys(formErrors).find((key) => key === input.name);\n\n // Retrieve the error for a specific input\n const errorId = pluginOptionError\n ? formErrors[pluginOptionError].id\n : get(\n formErrors,\n [\n ...input.name\n .split('.')\n // The filter here is used when creating a component\n // in the component step 1 modal\n // Since the component info is stored in the\n // componentToCreate object we can access the error\n // By removing the key\n .filter((key: string) => key !== 'componentToCreate'),\n 'id',\n ],\n null\n );\n\n if (input.type === 'pushRight') {\n return (\n <Grid.Item\n col={input.size || 6}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <div />\n </Grid.Item>\n );\n }\n\n return (\n <Grid.Item\n col={input.size || 6}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </>\n );\n};\n","import { ReactNode, ChangeEvent } from 'react';\n\nimport { Field, Textarea } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport type { IntlLabel } from '../types';\n\ninterface TextareaEnumProps {\n description?: IntlLabel | null;\n disabled?: boolean;\n error?: string;\n intlLabel: IntlLabel;\n labelAction?: ReactNode;\n name: string;\n onChange: (value: { target: { name: string; value: string | string[] } }) => void;\n placeholder?: IntlLabel | null;\n value: string | string[] | undefined;\n}\n\nexport const TextareaEnum = ({\n description = null,\n disabled = false,\n error = '',\n intlLabel,\n labelAction,\n name,\n onChange,\n placeholder = null,\n value = '',\n}: TextareaEnumProps) => {\n const { formatMessage } = useIntl();\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n const label = formatMessage(intlLabel);\n const formattedPlaceholder = placeholder\n ? formatMessage(\n { id: placeholder.id, defaultMessage: placeholder.defaultMessage },\n { ...placeholder.values }\n )\n : '';\n\n const inputValue = Array.isArray(value) ? value.join('\\n') : '';\n\n const handleChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n const arrayValue = e.target.value.split('\\n');\n\n onChange({ target: { name, value: arrayValue } });\n };\n\n return (\n <Field.Root error={errorMessage} hint={hint} name={name}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n <Textarea\n disabled={disabled}\n onChange={handleChange}\n placeholder={formattedPlaceholder}\n value={inputValue}\n />\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n","import { getTrad } from '../../../utils/getTrad';\n\nexport const nameField = {\n name: 'name',\n type: 'text',\n intlLabel: {\n id: 'global.name',\n defaultMessage: 'Name',\n },\n description: {\n id: getTrad('modalForm.attribute.form.base.name.description'),\n defaultMessage: 'No space is allowed for the name of the attribute',\n },\n // validations: {\n // required: true,\n // },\n};\n","import { nameField } from './nameField';\n\nexport const commonBaseForm = {\n sections: [{ sectionTitle: null, items: [nameField] }],\n};\n","import { getTrad } from '../../../utils/getTrad';\n\nexport const componentForm = {\n base(prefix = '') {\n const sections = [\n {\n sectionTitle: null,\n items: [\n {\n name: `${prefix}displayName`,\n type: 'text',\n intlLabel: {\n id: getTrad('contentType.displayName.label'),\n defaultMessage: 'Display Name',\n },\n },\n {\n name: `${prefix}category`,\n type: 'select-category',\n intlLabel: {\n id: getTrad('modalForm.components.create-component.category.label'),\n defaultMessage: 'Select a category or enter a name to create a new one',\n },\n },\n ],\n },\n {\n sectionTitle: null,\n items: [\n {\n name: `${prefix}icon`,\n type: 'icon-picker',\n size: 12,\n intlLabel: {\n id: getTrad('modalForm.components.icon.label'),\n defaultMessage: 'Icon',\n },\n },\n ],\n },\n ];\n\n return sections;\n },\n advanced() {\n const sections: Array<unknown> = [];\n\n return sections;\n },\n};\n","import { getTrad } from '../../../utils/getTrad';\n\nexport const attributeOptions = {\n default: {\n name: 'default',\n type: 'text',\n intlLabel: {\n id: getTrad('form.attribute.settings.default'),\n defaultMessage: 'Default value',\n },\n },\n max: {\n name: 'max',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.maximum'),\n defaultMessage: 'Maximum value',\n },\n },\n maxLength: {\n name: 'maxLength',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.maximumLength'),\n defaultMessage: 'Maximum length',\n },\n },\n min: {\n name: 'min',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.minimum'),\n defaultMessage: 'Minimum value',\n },\n },\n minLength: {\n name: 'minLength',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.minimumLength'),\n defaultMessage: 'Minimum length',\n },\n },\n private: {\n name: 'private',\n type: 'checkbox',\n intlLabel: {\n id: getTrad('form.attribute.item.privateField'),\n defaultMessage: 'Private field',\n },\n description: {\n id: getTrad('form.attribute.item.privateField.description'),\n defaultMessage: 'This field will not show up in the API response',\n },\n },\n regex: {\n intlLabel: {\n id: getTrad('form.attribute.item.text.regex'),\n defaultMessage: 'RegExp pattern',\n },\n name: 'regex',\n type: 'text',\n description: {\n id: getTrad('form.attribute.item.text.regex.description'),\n defaultMessage: 'The text of the regular expression',\n },\n },\n required: {\n name: 'required',\n type: 'checkbox',\n intlLabel: {\n id: getTrad('form.attribute.item.requiredField'),\n defaultMessage: 'Required field',\n },\n description: {\n id: getTrad('form.attribute.item.requiredField.description'),\n defaultMessage: \"You won't be able to create an entry if this field is empty\",\n },\n },\n unique: {\n name: 'unique',\n type: 'checkbox',\n intlLabel: {\n id: getTrad('form.attribute.item.uniqueField'),\n defaultMessage: 'Unique field',\n },\n description: {\n id: getTrad('form.attribute.item.uniqueField.description'),\n defaultMessage:\n \"You won't be able to create an entry if there is an existing entry with identical content\",\n },\n },\n};\n","import { getTrad } from '../../../utils/getTrad';\nimport { componentForm } from '../component/componentForm';\n\nimport { attributeOptions } from './attributeOptions';\n\ntype DataType = 'biginteger' | 'string' | 'integer' | 'float' | 'decimal';\n\nexport const advancedForm = {\n blocks() {\n return {\n sections: [\n {\n sectionTitle: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n items: [attributeOptions.required, attributeOptions.private],\n },\n ],\n };\n },\n boolean() {\n return {\n sections: [\n {\n sectionTitle: null,\n items: [\n {\n autoFocus: true,\n type: 'select-default-boolean',\n intlLabel: {\n id: getTrad('form.attribute.settings.default'),\n defaultMessage: 'Default value',\n },\n name: 'default',\n options: [\n {\n value: 'true',\n key: 'true',\n metadatas: { intlLabel: { id: 'true', defaultMessage: 'true' } },\n },\n {\n value: '',\n key: 'null',\n metadatas: { intlLabel: { id: 'null', defaultMessage: 'null' } },\n },\n {\n value: 'false',\n key: 'false',\n metadatas: { intlLabel: { id: 'false', defaultMessage: 'false' } },\n },\n ],\n },\n ],\n },\n {\n sectionTitle: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n items: [attributeOptions.required, attributeOptions.private],\n },\n ],\n };\n },\n component({ repeatable }: { repeatable: boolean }, step: string) {\n if (step === '1') {\n return { sections: componentForm.advanced() };\n }\n\n if (repeatable) {\n return {\n sections: [\n {\n sectionTitle: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n items: [\n attributeOptions.required,\n attributeOptions.private,\n attributeOptions.max,\n attributeOptions.min,\n ],\n },\n ],\n };\n }\n\n return {\n sections: [\n {\n sectionTitle: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n items: [attributeOptions.required, attributeOptions.private],\n },\n ],\n };\n },\n date({ type }: { type: string }) {\n return {\n sections: [\n {\n sectionTitle: null,\n items: [\n {\n ...attributeOptions.default,\n type: type || 'date',\n value: null,\n withDefaultValue: false,\n disabled: !type,\n autoFocus: false,\n },\n ],\n },\n {\n sectionTitle: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n items: [attributeOptions.required, attributeOptions.unique, attributeOptions.private],\n },\n ],\n };\n },\n dynamiczone() {\n return {\n sections: [\n {\n sectionTitle: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n items: [attributeOptions.required, attributeOptions.max, attributeOptions.min],\n },\n ],\n };\n },\n email() {\n return {\n sections: [\n {\n sectionTitle: null,\n items: [\n {\n ...attributeOptions.default,\n type: 'email',\n },\n ],\n },\n\n {\n sectionTitle: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n items: [\n attributeOptions.required,\n attributeOptions.unique,\n attributeOptions.maxLength,\n attributeOptions.minLength,\n attributeOptions.private,\n ],\n },\n ],\n };\n },\n enumeration(data: { enum: Array<string> }) {\n return {\n sections: [\n {\n sectionTitle: null,\n items: [\n {\n name: 'default',\n type: 'select',\n intlLabel: {\n id: getTrad('form.attribute.settings.default'),\n defaultMessage: 'Default value',\n },\n validations: {},\n options: [\n {\n key: '__null_reset_value__',\n value: '',\n metadatas: {\n intlLabel: {\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n },\n },\n },\n ...(data.enum || [])\n .filter((value, index) => data.enum.indexOf(value) === index && value)\n .map((value) => {\n return {\n key: value,\n value,\n metadatas: {\n intlLabel: { id: `${value}.no-override`, defaultMessage: value },\n },\n };\n }),\n ],\n },\n {\n intlLabel: {\n id: getTrad('form.attribute.item.enumeration.graphql'),\n defaultMessage: 'Name override for GraphQL',\n },\n name: 'enumName',\n type: 'text',\n validations: {},\n description: {\n id: getTrad('form.attribute.item.enumeration.graphql.description'),\n defaultMessage: 'Allows you to override the default generated name for GraphQL',\n },\n },\n ],\n },\n\n {\n sectionTitle: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n items: [attributeOptions.required, attributeOptions.private],\n },\n ],\n };\n },\n json() {\n return {\n sections: [\n {\n sectionTitle: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n items: [attributeOptions.required, attributeOptions.private],\n },\n ],\n };\n },\n media() {\n return {\n sections: [\n {\n sectionTitle: null,\n items: [\n {\n intlLabel: {\n id: getTrad('form.attribute.media.allowed-types'),\n defaultMessage: 'Select allowed types of media',\n },\n name: 'allowedTypes',\n type: 'allowed-types-select',\n size: 7,\n value: '',\n validations: {},\n },\n ],\n },\n {\n sectionTitle: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n items: [attributeOptions.required, attributeOptions.private],\n },\n ],\n };\n },\n number(data: { type: DataType }) {\n const inputStep = data.type === 'decimal' || data.type === 'float' ? 'any' : 1;\n\n return {\n sections: [\n {\n sectionTitle: null,\n items: [\n {\n autoFocus: true,\n name: 'default',\n type: data.type === 'biginteger' ? 'text' : 'number',\n step: inputStep,\n intlLabel: {\n id: getTrad('form.attribute.settings.default'),\n defaultMessage: 'Default value',\n },\n validations: {},\n },\n ],\n },\n {\n sectionTitle: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n items: [\n attributeOptions.required,\n attributeOptions.unique,\n attributeOptions.max,\n attributeOptions.min,\n attributeOptions.private,\n ],\n },\n ],\n };\n },\n password() {\n return {\n sections: [\n { sectionTitle: null, items: [attributeOptions.default] },\n\n {\n sectionTitle: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n items: [\n attributeOptions.required,\n attributeOptions.maxLength,\n attributeOptions.minLength,\n attributeOptions.private,\n ],\n },\n ],\n };\n },\n relation() {\n return {\n sections: [\n {\n sectionTitle: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n items: [attributeOptions.private],\n },\n ],\n };\n },\n richtext() {\n return {\n sections: [\n { sectionTitle: null, items: [attributeOptions.default] },\n {\n sectionTitle: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n items: [\n attributeOptions.required,\n attributeOptions.maxLength,\n attributeOptions.minLength,\n attributeOptions.private,\n ],\n },\n ],\n };\n },\n text() {\n return {\n sections: [\n { sectionTitle: null, items: [attributeOptions.default, attributeOptions.regex] },\n\n {\n sectionTitle: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n items: [\n attributeOptions.required,\n attributeOptions.unique,\n attributeOptions.maxLength,\n attributeOptions.minLength,\n attributeOptions.private,\n ],\n },\n ],\n };\n },\n uid(data: { targetField: string }) {\n return {\n sections: [\n {\n sectionTitle: null,\n items: [\n { ...attributeOptions.default, disabled: Boolean(data.targetField), type: 'text' },\n ],\n },\n\n {\n sectionTitle: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n items: [\n attributeOptions.required,\n attributeOptions.maxLength,\n attributeOptions.minLength,\n attributeOptions.private,\n ],\n },\n ],\n };\n },\n};\n","import { getTrad } from '../../../utils/getTrad';\n\nexport const componentField = {\n intlLabel: {\n id: 'global.type',\n defaultMessage: 'Type',\n },\n name: 'createComponent',\n type: 'boolean-radio-group',\n size: 12,\n radios: [\n {\n title: {\n id: getTrad('form.attribute.component.option.create'),\n defaultMessage: 'Create a new component',\n },\n description: {\n id: getTrad('form.attribute.component.option.create.description'),\n defaultMessage:\n 'A component is shared across types and components, it will be available and accessible everywhere.',\n },\n value: true,\n },\n {\n title: {\n id: getTrad('form.attribute.component.option.reuse-existing'),\n defaultMessage: 'Use an existing component',\n },\n description: {\n id: getTrad('form.attribute.component.option.reuse-existing.description'),\n defaultMessage:\n 'Reuse a component already created to keep your data consistent across content-types.',\n },\n value: false,\n },\n ],\n};\n","import { getTrad } from '../../../utils/getTrad';\nimport { componentField } from '../component/componentField';\nimport { componentForm } from '../component/componentForm';\n\nimport { nameField } from './nameField';\n\nexport const baseForm = {\n component(data: { createComponent: boolean }, step: string) {\n if (step === '1') {\n const itemsToConcat =\n data.createComponent === true ? componentForm.base('componentToCreate.') : [];\n\n return {\n sections: [{ sectionTitle: null, items: [componentField] }, ...itemsToConcat],\n };\n }\n\n return {\n sections: [\n {\n sectionTitle: null,\n items: [\n nameField,\n {\n name: 'component',\n type: 'select-component',\n intlLabel: {\n id: getTrad('modalForm.attributes.select-component'),\n defaultMessage: 'Select a component',\n },\n isMultiple: false,\n },\n ],\n },\n {\n sectionTitle: null,\n items: [\n {\n intlLabel: {\n id: 'global.type',\n defaultMessage: 'Type',\n },\n name: 'repeatable',\n type: 'boolean-radio-group',\n size: 12,\n radios: [\n {\n title: {\n id: getTrad('form.attribute.component.option.repeatable'),\n defaultMessage: 'Repeatable component',\n },\n description: {\n id: getTrad('form.attribute.component.option.repeatable.description'),\n defaultMessage:\n 'Best for multiple instances (array) of ingredients, meta tags, etc..',\n },\n value: true,\n },\n {\n title: {\n id: getTrad('form.attribute.component.option.single'),\n defaultMessage: 'Single component',\n },\n description: {\n id: getTrad('form.attribute.component.option.single.description'),\n defaultMessage:\n 'Best for grouping fields like full address, main information, etc...',\n },\n value: false,\n },\n ],\n },\n ],\n },\n ],\n };\n },\n date() {\n return {\n sections: [\n {\n sectionTitle: null,\n items: [\n nameField,\n {\n intlLabel: {\n id: 'global.type',\n defaultMessage: 'Type',\n },\n name: 'type',\n type: 'select-date',\n options: [\n {\n key: '__null_reset_value__',\n value: '',\n metadatas: {\n intlLabel: {\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n },\n hidden: true,\n },\n },\n {\n key: 'date',\n value: 'date',\n metadatas: {\n intlLabel: {\n id: getTrad('form.attribute.item.date.type.date'),\n defaultMessage: 'date (ex: 01/01/{currentYear})',\n values: { currentYear: new Date().getFullYear() },\n },\n },\n },\n {\n key: 'datetime',\n value: 'datetime',\n metadatas: {\n intlLabel: {\n id: getTrad('form.attribute.item.date.type.datetime'),\n defaultMessage: 'datetime (ex: 01/01/{currentYear} 00:00 AM)',\n values: { currentYear: new Date().getFullYear() },\n },\n },\n },\n {\n key: 'time',\n value: 'time',\n metadatas: {\n intlLabel: {\n id: getTrad('form.attribute.item.date.type.time'),\n defaultMessage: 'time (ex: 00:00 AM)',\n },\n },\n },\n ],\n },\n ],\n },\n ],\n };\n },\n enumeration() {\n return {\n sections: [\n { sectionTitle: null, items: [nameField] },\n {\n sectionTitle: null,\n items: [\n {\n name: 'enum',\n type: 'textarea-enum',\n size: 6,\n intlLabel: {\n id: getTrad('form.attribute.item.enumeration.rules'),\n defaultMessage: 'Values (one line per value)',\n },\n placeholder: {\n id: getTrad('form.attribute.item.enumeration.placeholder'),\n defaultMessage: 'Ex:\\nmorning\\nnoon\\nevening',\n },\n validations: {\n required: true,\n },\n },\n ],\n },\n ],\n };\n },\n media() {\n return {\n sections: [\n { sectionTitle: null, items: [nameField] },\n {\n sectionTitle: null,\n items: [\n {\n intlLabel: {\n id: 'global.type',\n defaultMessage: 'Type',\n },\n name: 'multiple',\n size: 12,\n type: 'boolean-radio-group',\n radios: [\n {\n title: {\n id: getTrad('form.attribute.media.option.multiple'),\n defaultMessage: 'Multiple media',\n },\n description: {\n id: getTrad('form.attribute.media.option.multiple.description'),\n defaultMessage: 'Best for sliders, carousels or multiple files download',\n },\n value: true,\n },\n {\n title: {\n id: getTrad('form.attribute.media.option.single'),\n defaultMessage: 'Single media',\n },\n description: {\n id: getTrad('form.attribute.media.option.single.description'),\n defaultMessage: 'Best for avatar, profile picture or cover',\n },\n value: false,\n },\n ],\n },\n ],\n },\n ],\n };\n },\n number() {\n return {\n sections: [\n {\n sectionTitle: null,\n items: [\n nameField,\n {\n intlLabel: {\n id: getTrad('form.attribute.item.number.type'),\n defaultMessage: 'Number format',\n },\n name: 'type',\n type: 'select-number',\n options: [\n {\n key: '__null_reset_value__',\n value: '',\n metadatas: {\n intlLabel: {\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n },\n hidden: true,\n },\n },\n {\n key: 'integer',\n value: 'integer',\n metadatas: {\n intlLabel: {\n id: getTrad('form.attribute.item.number.type.integer'),\n defaultMessage: 'integer (ex: 10)',\n },\n },\n },\n {\n key: 'biginteger',\n value: 'biginteger',\n metadatas: {\n intlLabel: {\n id: getTrad('form.attribute.item.number.type.biginteger'),\n defaultMessage: 'biginteger (ex: 123456789)',\n },\n },\n },\n {\n key: 'decimal',\n value: 'decimal',\n metadatas: {\n intlLabel: {\n id: getTrad('form.attribute.item.number.type.decimal'),\n defaultMessage: 'decimal (ex: 2.22)',\n },\n },\n },\n {\n key: 'float',\n value: 'float',\n metadatas: {\n intlLabel: {\n id: getTrad('form.attribute.item.number.type.float'),\n defaultMessage: 'decimal (ex: 3.3333333)',\n },\n },\n },\n ],\n },\n ],\n },\n ],\n };\n },\n relation() {\n return {\n sections: [\n {\n sectionTitle: null,\n items: [\n {\n intlLabel: { id: 'FIXME', defaultMessage: 'FIXME' },\n name: 'relation',\n size: 12,\n type: 'relation',\n },\n ],\n },\n ],\n };\n },\n string() {\n return {\n sections: [\n { sectionTitle: null, items: [nameField] },\n {\n sectionTitle: null,\n items: [\n {\n intlLabel: {\n id: 'global.type',\n defaultMessage: 'Type',\n },\n name: 'type',\n size: 12,\n type: 'radio-group',\n radios: [\n {\n title: {\n id: getTrad('form.attribute.text.option.short-text'),\n defaultMessage: 'Sort text',\n },\n description: {\n id: getTrad('form.attribute.text.option.short-text.description'),\n defaultMessage:\n 'Best for titles, names, links (URL). It also enables exact search on the field.',\n },\n value: 'string',\n },\n {\n title: {\n id: getTrad('form.attribute.text.option.long-text'),\n defaultMessage: 'Long text',\n },\n description: {\n id: getTrad('form.attribute.text.option.long-text.description'),\n defaultMessage: 'Best for descriptions, biography. Exact search is disabled.',\n },\n value: 'text',\n },\n ],\n },\n ],\n },\n ],\n };\n },\n text() {\n return {\n sections: [\n { sectionTitle: null, items: [nameField] },\n {\n sectionTitle: null,\n items: [\n {\n intlLabel: {\n id: 'global.type',\n defaultMessage: 'Type',\n },\n name: 'type',\n size: 12,\n type: 'radio-group',\n radios: [\n {\n title: {\n id: getTrad('form.attribute.text.option.short-text'),\n defaultMessage: 'Sort text',\n },\n description: {\n id: getTrad('form.attribute.text.option.short-text.description'),\n defaultMessage:\n 'Best for titles, names, links (URL). It also enables exact search on the field.',\n },\n value: 'string',\n },\n {\n title: {\n id: getTrad('form.attribute.text.option.long-text'),\n defaultMessage: 'Long text',\n },\n description: {\n id: getTrad('form.attribute.text.option.long-text.description'),\n defaultMessage: 'Best for descriptions, biography. Exact search is disabled.',\n },\n value: 'text',\n },\n ],\n },\n ],\n },\n ],\n };\n },\n uid(_data: unknown, step: string, attributes: Array<{ type: string; name: string }>) {\n const options = attributes\n .filter(({ type }) => ['string', 'text'].includes(type))\n .map(({ name }) => ({\n key: name,\n value: name,\n metadatas: {\n intlLabel: { id: `${name}.no-override`, defaultMessage: name },\n },\n }));\n\n return {\n sections: [\n {\n sectionTitle: null,\n items: [\n {\n ...nameField,\n placeholder: {\n id: getTrad('modalForm.attribute.form.base.name.placeholder'),\n defaultMessage: 'e.g. slug, seoUrl, canonicalUrl',\n },\n },\n {\n intlLabel: {\n id: getTrad('modalForm.attribute.target-field'),\n defaultMessage: 'Attached field',\n },\n name: 'targetField',\n type: 'select',\n options: [\n {\n key: '__null_reset_value__',\n value: '',\n metadatas: { intlLabel: { id: 'global.none', defaultMessage: 'None' } },\n },\n ...options,\n ],\n },\n ],\n },\n ],\n };\n },\n};\n","import { advancedForm } from './advancedForm';\nimport { baseForm } from './baseForm';\n\nexport const attributesForm = {\n advanced: advancedForm,\n base: baseForm,\n};\n","import slugify from '@sindresorhus/slugify';\n\nexport const toRegressedEnumValue = (value: string | undefined) => {\n if (!value) {\n return '';\n }\n return slugify(value, {\n decamelize: false,\n lowercase: false,\n separator: '_',\n });\n};\n","import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport toNumber from 'lodash/toNumber';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../../utils/getTrad';\n\nconst NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\n\nconst alreadyUsedAttributeNames = (\n usedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'attributeNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !usedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst getUsedContentTypeAttributeNames = (\n ctShema: any,\n isEdition: boolean,\n attributeNameToEdit: string\n) => {\n const attributes = ctShema?.schema?.attributes ?? {};\n\n return Object.keys(attributes).filter((attr) => {\n if (isEdition) {\n return attr !== attributeNameToEdit;\n }\n\n return true;\n });\n};\n\nconst isNameAllowed = (\n reservedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'forbiddenAttributeName',\n message: getTrad('error.attributeName.reserved-name'),\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst validators = {\n default: () => yup.string().nullable(),\n max: () => yup.number().integer().nullable(),\n min: () =>\n yup\n .number()\n .integer()\n .when('max', (max, schema) => {\n if (max) {\n return schema.max(max, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n maxLength: () => yup.number().integer().positive(getTrad('error.validation.positive')).nullable(),\n minLength: () =>\n yup\n .number()\n .integer()\n .min(1)\n .when('maxLength', (maxLength, schema) => {\n if (maxLength) {\n return schema.max(maxLength, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n name(usedNames: Array<string>, reservedNames: Array<string>) {\n return yup\n .string()\n .test(alreadyUsedAttributeNames(usedNames))\n .test(isNameAllowed(reservedNames))\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id);\n },\n required: () => yup.boolean(),\n type: () => yup.string().required(errorsTrads.required.id),\n unique: () => yup.boolean().nullable(),\n};\n\nconst createTextShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\ntype GenericIsMinSuperiorThanMax<T extends (string | null) | number> = yup.TestConfig<\n T | undefined,\n Record<string, unknown>\n>;\n\nconst isMinSuperiorThanMax = <\n T extends (string | null) | number,\n>(): GenericIsMinSuperiorThanMax<T> => ({\n name: 'isMinSuperiorThanMax',\n message: getTrad('error.validation.minSupMax'),\n test(min: T | undefined) {\n if (!min) {\n return true;\n }\n\n const { max } = (this as any).parent;\n\n if (!max) {\n return true;\n }\n\n if (Number.isNaN(toNumber(min))) {\n return true;\n }\n\n return toNumber(max) >= toNumber(min);\n },\n});\n\nexport {\n alreadyUsedAttributeNames,\n createTextShape,\n getUsedContentTypeAttributeNames,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n};\n","import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport uniq from 'lodash/uniq';\nimport * as yup from 'yup';\n\nimport { getRelationType } from '../../../utils/getRelationType';\nimport { getTrad } from '../../../utils/getTrad';\nimport { toRegressedEnumValue } from '../../../utils/toRegressedEnumValue';\n\nimport {\n alreadyUsedAttributeNames,\n createTextShape,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n} from './validation/common';\n\nimport type { Schema } from '@strapi/types';\n\nexport const attributeTypes = {\n date(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n datetime(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n time(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n default(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n biginteger(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/),\n unique: validators.unique(),\n required: validators.required(),\n max: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n min: yup\n .string()\n .nullable()\n .test(isMinSuperiorThanMax<string | null>())\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n };\n\n return yup.object(shape);\n },\n boolean(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n default: yup.boolean().nullable(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n component(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n component: yup.string().required(errorsTrads.required.id),\n };\n\n return yup.object(shape);\n },\n decimal(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number(),\n required: validators.required(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n dynamiczone(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n email(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.string().email().nullable(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n enumeration(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n /**\n * For enumerations the least common denomiator is GraphQL, where\n * values needs to match the secure name regex:\n * GraphQL Spec https://spec.graphql.org/June2018/#sec-Names\n *\n * Therefore we need to make sure our users only use values, which\n * can be returned by GraphQL, by checking the regressed values\n * agains the GraphQL regex.\n *\n * TODO V5: check if we can avoid this coupling by moving this logic\n * into the GraphQL plugin.\n */\n const GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;\n\n const shape = {\n name: yup\n .string()\n .test(alreadyUsedAttributeNames(usedAttributeNames))\n .test(isNameAllowed(reservedNames))\n .matches(GRAPHQL_ENUM_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n enum: yup\n .array()\n .of(yup.string())\n .min(1, errorsTrads.min.id)\n .test({\n name: 'areEnumValuesUnique',\n message: getTrad('error.validation.enum-duplicate'),\n test(values) {\n if (!values) {\n return false;\n }\n const duplicates = uniq(\n values\n .map(toRegressedEnumValue)\n .filter((value, index, values) => values.indexOf(value) !== index)\n );\n\n return !duplicates.length;\n },\n })\n .test({\n name: 'doesNotHaveEmptyValues',\n message: getTrad('error.validation.enum-empty-string'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return !values.map(toRegressedEnumValue).some((val) => val === '');\n },\n })\n .test({\n name: 'doesMatchRegex',\n message: getTrad('error.validation.enum-regex'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return values\n .map(toRegressedEnumValue)\n .every((value) => GRAPHQL_ENUM_REGEX.test(value));\n },\n }),\n enumName: yup.string().nullable(),\n };\n\n return yup.object(shape);\n },\n float(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n default: yup.number(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n integer(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number().integer(),\n unique: validators.unique(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n json(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n media(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n multiple: yup.boolean(),\n required: validators.required(),\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1)\n .nullable(),\n };\n\n return yup.object(shape);\n },\n password(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n relation(\n usedAttributeNames: Array<string>,\n reservedNames: Array<string>,\n alreadyTakenTargetAttributes: Array<{ name: string }>,\n {\n initialData,\n modifiedData,\n }: {\n initialData: { targetAttribute?: string };\n modifiedData: {\n name?: string;\n relation?: Schema.Attribute.RelationKind.WithTarget;\n targetAttribute?: string;\n };\n }\n ) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n target: yup.string().required(errorsTrads.required.id),\n relation: yup.string().required(),\n type: yup.string().required(),\n targetAttribute: yup.lazy(() => {\n const relationType = getRelationType(modifiedData.relation, modifiedData.targetAttribute);\n\n if (relationType === 'oneWay' || relationType === 'manyWay') {\n return yup.string().nullable();\n }\n\n const schema = yup.string().test(isNameAllowed(reservedNames));\n const initialForbiddenName = [\n ...alreadyTakenTargetAttributes.map(({ name }) => name),\n modifiedData.name,\n ];\n\n const forbiddenTargetAttributeName = initialForbiddenName.filter(\n (val) => val !== initialData.targetAttribute\n );\n\n return schema\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .test({\n name: 'forbiddenTargetAttributeName',\n message: getTrad('error.validation.relation.targetAttribute-taken'),\n test(value) {\n if (!value) {\n return false;\n }\n\n return !forbiddenTargetAttributeName.includes(value);\n },\n })\n .required(errorsTrads.required.id);\n }),\n };\n\n return yup.object(shape);\n },\n richtext(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n blocks(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n string(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n text(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n uid(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n};\n","export const CATEGORY_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\n","import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport * as yup from 'yup';\n\nimport { CATEGORY_NAME_REGEX } from './regex';\n\nexport const createCategorySchema = (usedCategoryNames: Array<string>) => {\n const shape = {\n name: yup\n .string()\n .matches(CATEGORY_NAME_REGEX, errorsTrads.regex.id)\n .test({\n name: 'nameNotAllowed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n return !usedCategoryNames.includes(value?.toLowerCase());\n },\n })\n .required(errorsTrads.required.id),\n };\n\n return yup.object(shape);\n};\n","import { getTrad } from '../../../utils/getTrad';\n\nexport const categoryForm = {\n base: {\n sections: [\n {\n sectionTitle: null,\n items: [\n {\n autoFocus: true,\n name: 'name',\n type: 'text',\n intlLabel: {\n id: 'global.name',\n defaultMessage: 'Name',\n },\n\n // validations: {\n // required: true,\n // },\n description: {\n id: getTrad('modalForm.editCategory.base.name.description'),\n defaultMessage: 'No space is allowed for the name of the category',\n },\n },\n ],\n },\n ],\n },\n};\n","import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../utils/getTrad';\nimport { CATEGORY_NAME_REGEX } from '../category/regex';\nimport { createComponentUid } from '../utils/createUid';\n\nexport const createComponentSchema = (\n usedComponentNames: Array<string>,\n reservedNames: Array<string>,\n category: string,\n takenCollectionNames: Array<string>,\n currentCollectionName: string\n) => {\n const shape = {\n displayName: yup\n .string()\n .test({\n name: 'nameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const name = createComponentUid(value, category);\n\n const snakeCaseKey = snakeCase(name);\n const snakeCaseCollectionName = snakeCase(currentCollectionName);\n\n return (\n usedComponentNames.every((reserved) => {\n return snakeCase(reserved) !== snakeCaseKey;\n }) &&\n takenCollectionNames.every(\n (collectionName) => snakeCase(collectionName) !== snakeCaseCollectionName\n )\n );\n },\n })\n .test({\n name: 'nameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n return reservedNames.every((reserved) => {\n return snakeCase(reserved) !== snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n category: yup\n .string()\n .matches(CATEGORY_NAME_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id),\n\n icon: yup.string(),\n };\n\n return yup.object(shape);\n};\n","import { getTrad } from '../../../utils/getTrad';\n\nconst nameField = {\n name: 'displayName',\n type: 'text',\n intlLabel: {\n id: getTrad('contentType.displayName.label'),\n defaultMessage: 'Display name',\n },\n};\n\nexport const contentTypeForm = {\n advanced: {\n default() {\n return {\n sections: [\n {\n items: [\n {\n intlLabel: {\n id: getTrad('contentType.draftAndPublish.label'),\n defaultMessage: 'Draft & publish',\n },\n description: {\n id: getTrad('contentType.draftAndPublish.description'),\n defaultMessage:\n 'Allows writing a draft version of an entry, before it is published',\n },\n name: 'draftAndPublish',\n type: 'toggle-draft-publish',\n validations: {},\n },\n ],\n },\n ],\n };\n },\n },\n base: {\n create() {\n return {\n sections: [\n {\n sectionTitle: null,\n items: [\n nameField,\n {\n description: {\n id: getTrad('contentType.apiId-singular.description'),\n defaultMessage:\n 'Used to generate the API routes and databases tables/collections',\n },\n intlLabel: {\n id: getTrad('contentType.apiId-singular.label'),\n defaultMessage: 'API ID (Singular)',\n },\n name: 'singularName',\n type: 'text-singular',\n },\n {\n type: 'pushRight',\n size: 6,\n intlLabel: { id: '', defaultMessage: '' },\n name: 'pushRight',\n },\n {\n description: {\n id: getTrad('contentType.apiId-plural.description'),\n defaultMessage: 'Pluralized API ID',\n },\n intlLabel: {\n id: getTrad('contentType.apiId-plural.label'),\n defaultMessage: 'API ID (Plural)',\n },\n name: 'pluralName',\n type: 'text-plural',\n },\n ],\n },\n ],\n };\n },\n edit() {\n return {\n sections: [\n {\n sectionTitle: null,\n items: [\n nameField,\n {\n disabled: true,\n description: {\n id: getTrad('contentType.apiId-singular.description'),\n defaultMessage:\n 'Used to generate the API routes and databases tables/collections',\n },\n intlLabel: {\n id: getTrad('contentType.apiId-singular.label'),\n defaultMessage: 'API ID (Singular)',\n },\n name: 'singularName',\n type: 'text',\n },\n {\n type: 'pushRight',\n size: 6,\n intlLabel: { id: '', defaultMessage: '' },\n name: 'pushRight',\n },\n {\n disabled: true,\n description: {\n id: getTrad('contentType.apiId-plural.description'),\n defaultMessage: 'Pluralized API ID',\n },\n intlLabel: {\n id: getTrad('contentType.apiId-plural.label'),\n defaultMessage: 'API ID (Plural)',\n },\n name: 'pluralName',\n type: 'text',\n },\n {\n intlLabel: {\n id: 'global.type',\n defaultMessage: 'Type',\n },\n name: 'kind',\n type: 'content-type-radio-group',\n size: 12,\n radios: [\n {\n title: {\n id: getTrad('form.button.collection-type.name'),\n defaultMessage: 'Collection Type',\n },\n description: {\n id: getTrad('form.button.collection-type.description'),\n defaultMessage:\n 'Best for multiple instances like articles, products, comments, etc.',\n },\n value: 'collectionType',\n },\n {\n title: {\n id: getTrad('form.button.single-type.name'),\n defaultMessage: 'Single Type',\n },\n description: {\n id: getTrad('form.button.single-type.description'),\n defaultMessage: 'Best for single instance like about us, homepage, etc.',\n },\n value: 'singleType',\n },\n ],\n },\n ],\n },\n ],\n };\n },\n },\n};\n","import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../utils/getTrad';\nimport { createUid } from '../utils/createUid';\n\ntype CreateContentTypeSchemaParams = {\n usedContentTypeNames: Array<string>;\n reservedModels: Array<string>;\n singularNames: Array<string>;\n pluralNames: Array<string>;\n collectionNames: Array<string>;\n};\n\nexport const createContentTypeSchema = ({\n usedContentTypeNames = [],\n reservedModels = [],\n singularNames = [],\n pluralNames = [],\n collectionNames = [],\n}: CreateContentTypeSchemaParams) => {\n const shape = {\n displayName: yup\n .string()\n .test({\n name: 'nameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const name = createUid(value);\n\n const snakeCaseKey = snakeCase(name);\n\n return !usedContentTypeNames.some((value) => {\n return snakeCase(value) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'nameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedModels.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n pluralName: yup\n .string()\n .test({\n name: 'pluralNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !pluralNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralNameAlreadyUsedAsSingular',\n message: getTrad('error.contentType.pluralName-equals-singularName'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !singularNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralAndSingularAreUnique',\n message: getTrad('error.contentType.pluralName-used'),\n test(value, context) {\n if (!value) {\n return false;\n }\n\n return snakeCase(context.parent.singularName) !== snakeCase(value);\n },\n })\n .test({\n name: 'pluralNameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !reservedModels.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralNameNotAlreadyUsedInCollectionName',\n message: getTrad('error.contentType.pluralName-equals-collectionName'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !collectionNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n singularName: yup\n .string()\n .test({\n name: 'singularNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !singularNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'singularNameAlreadyUsedAsPlural',\n message: getTrad('error.contentType.singularName-equals-pluralName'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !pluralNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralAndSingularAreUnique',\n message: getTrad('error.contentType.singularName-used'),\n test(value, context) {\n if (!value) {\n return false;\n }\n\n return snakeCase(context.parent.pluralName) !== snakeCase(value);\n },\n })\n .test({\n name: 'singularNameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !reservedModels.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n draftAndPublish: yup.boolean(),\n kind: yup.string().oneOf(['singleType', 'collectionType']),\n };\n\n return yup.object(shape);\n};\n","import { getTrad } from '../../utils/getTrad';\n\nimport { componentField } from './component/componentField';\nimport { componentForm } from './component/componentForm';\n\nexport const dynamiczoneForm = {\n advanced: {\n default() {\n return {\n sections: componentForm.advanced(),\n };\n },\n },\n base: {\n createComponent() {\n return {\n sections: [\n { sectionTitle: null, items: [componentField] },\n ...componentForm.base('componentToCreate.'),\n ],\n };\n },\n default() {\n return {\n sections: [\n { sectionTitle: null, items: [componentField] },\n {\n sectionTitle: null,\n items: [\n {\n type: 'pushRight',\n size: 6,\n intlLabel: { id: '', defaultMessage: '' },\n name: 'pushRight',\n },\n {\n name: 'components',\n type: 'select-components',\n intlLabel: {\n id: getTrad('modalForm.attributes.select-components'),\n defaultMessage: 'Select the components',\n },\n isMultiple: true,\n },\n ],\n },\n ],\n };\n },\n },\n};\n","type SectionTitle = {\n id: string;\n defaultMessage: string;\n};\n\ntype Item = {\n intlLabel: {\n id: string;\n defaultMessage: string;\n };\n description?: { id: string; defaultMessage: string };\n name: string;\n type: string;\n value?: string;\n options?: {\n key: string;\n value: string;\n metadatas: {\n intlLabel: {\n id: string;\n defaultMessage: string;\n };\n };\n }[];\n};\n\ntype FormTypeOption = {\n sectionTitle: SectionTitle | null;\n items: Item[];\n};\n\nexport type FormTypeOptions = Array<FormTypeOption>;\n\n/**\n * @description\n * Adds form options to the default section or as a new section\n */\nexport const addItemsToFormSection = (\n formTypeOptions: FormTypeOptions | Item[],\n sections: FormTypeOptions\n) => {\n formTypeOptions.forEach((item) => {\n if (!('sectionTitle' in item)) {\n // When there is no sectionTitle key,\n // add the item to the default section\n sections[0].items?.push(item);\n return;\n }\n\n // Otherwise, when sectionTitle has a value (including null),\n // add the item as a new section\n sections.push(item);\n });\n};\n","import { snakeCase } from 'lodash/fp';\nimport pluralize from 'pluralize';\n\n// TODO: create a utility for this\n// Duplicate in server/src/services/schema-builder/component-builder.ts\nconst createComponentCollectionName = (name: string, category: string) => {\n return `components_${snakeCase(category)}_${pluralize(snakeCase(name))}`;\n};\n\nexport { createComponentCollectionName };\n","export type SchemaData = {\n initialData: {\n name: string;\n targetAttribute: any;\n };\n modifiedData: object;\n};\n\nexport type Attribute = {\n name: string;\n};\n\nexport const getUsedAttributeNames = (\n attributes: Array<Attribute>,\n schemaData: SchemaData\n): Array<string> => {\n return attributes\n .filter(({ name }) => {\n return name !== schemaData.initialData.name;\n })\n .map(({ name }) => name);\n};\n","import { getTrad } from '../../../utils';\nimport { commonBaseForm } from '../attributes/commonBaseForm';\nimport { attributesForm } from '../attributes/form';\nimport { nameField } from '../attributes/nameField';\nimport { attributeTypes } from '../attributes/types';\nimport { createCategorySchema } from '../category/createCategorySchema';\nimport { categoryForm } from '../category/form';\nimport { componentForm } from '../component/componentForm';\nimport { createComponentSchema } from '../component/createComponentSchema';\nimport { contentTypeForm } from '../contentType/contentTypeForm';\nimport { createContentTypeSchema } from '../contentType/createContentTypeSchema';\nimport { dynamiczoneForm } from '../dynamiczoneForm';\n\nimport { addItemsToFormSection, FormTypeOptions } from './utils/addItemsToFormSection';\nimport { createComponentCollectionName } from './utils/createCollectionName';\nimport { Attribute, getUsedAttributeNames, SchemaData } from './utils/getUsedAttributeNames';\n\nimport type { Internal } from '@strapi/types';\n\ntype ContentType = {\n schema: {\n singularName: string;\n pluralName: string;\n collectionName: string;\n };\n};\n\nexport type SchemaParams = {\n schemaAttributes: any;\n attributeType: keyof typeof attributeTypes;\n customFieldValidator: any;\n reservedNames: {\n attributes: Array<string>;\n };\n schemaData: any;\n ctbFormsAPI: any;\n};\n\ntype Base<TAttributesFormType extends 'base' | 'advanced'> = {\n data: any;\n type: keyof (typeof attributesForm)[TAttributesFormType];\n step: string;\n attributes: any;\n extensions: any;\n forTarget: string;\n};\n\nexport const forms = {\n customField: {\n schema({\n schemaAttributes,\n attributeType,\n customFieldValidator,\n reservedNames,\n schemaData,\n ctbFormsAPI,\n }: SchemaParams) {\n const usedAttributeNames = getUsedAttributeNames(schemaAttributes, schemaData);\n\n let attributeShape;\n if (attributeType === 'relation') {\n attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes,\n [],\n { initialData: {}, modifiedData: {} }\n );\n } else {\n attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes\n );\n }\n\n return ctbFormsAPI.makeCustomFieldValidator(\n attributeShape,\n customFieldValidator,\n usedAttributeNames,\n reservedNames.attributes,\n schemaData\n );\n },\n form: {\n base({ customField }: any) {\n // Default section with required name field\n const sections: FormTypeOptions = [{ sectionTitle: null, items: [nameField] }];\n\n if (customField.options?.base) {\n addItemsToFormSection(customField.options.base, sections);\n }\n\n return { sections };\n },\n advanced({ customField, data, step, extensions, ...rest }: any) {\n // Default section with no fields\n const sections: FormTypeOptions = [{ sectionTitle: null, items: [] }];\n const injectedInputs = extensions.getAdvancedForm(['attribute', customField.type], {\n data,\n type: customField.type,\n step,\n ...rest,\n });\n\n if (customField.options?.advanced) {\n addItemsToFormSection(customField.options.advanced, sections);\n }\n\n if (injectedInputs) {\n const extendedSettings = {\n sectionTitle: {\n id: getTrad('modalForm.custom-fields.advanced.settings.extended'),\n defaultMessage: 'Extended settings',\n },\n items: injectedInputs,\n };\n\n sections.push(extendedSettings);\n }\n\n return { sections };\n },\n },\n },\n attribute: {\n schema(\n currentSchema: any,\n attributeType: keyof typeof attributeTypes,\n reservedNames: {\n attributes: Array<string>;\n },\n alreadyTakenTargetContentTypeAttributes: Array<Attribute>,\n options: SchemaData,\n extensions: {\n makeValidator: any;\n }\n ) {\n // Get the attributes object on the schema\n const attributes: Array<Attribute> = currentSchema?.schema?.attributes ?? [];\n const usedAttributeNames = getUsedAttributeNames(attributes, options);\n\n try {\n const attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes,\n alreadyTakenTargetContentTypeAttributes,\n options\n );\n\n return extensions.makeValidator(\n ['attribute', attributeType],\n attributeShape,\n usedAttributeNames,\n reservedNames.attributes,\n alreadyTakenTargetContentTypeAttributes,\n options\n );\n } catch (err) {\n console.error('Error yup build schema', err);\n\n return attributeTypes.default(usedAttributeNames, reservedNames.attributes);\n }\n },\n form: {\n advanced({ data, type, step, extensions, ...rest }: Base<'advanced'>) {\n try {\n const baseForm = attributesForm.advanced[type](data, step).sections;\n const itemsToAdd = extensions.getAdvancedForm(['attribute', type], {\n data,\n type,\n step,\n ...rest,\n });\n\n const sections = baseForm.reduce((acc: Array<any>, current: any) => {\n if (current.sectionTitle === null) {\n acc.push(current);\n } else {\n acc.push({ ...current, items: [...current.items, ...itemsToAdd] });\n }\n\n return acc;\n }, []);\n // IF we want a dedicated section for the plugins\n // const sections = [\n // ...baseForm,\n // {\n // sectionTitle: { id: 'Zone pour plugins', defaultMessage: 'Zone pour plugins' },\n // items: itemsToAdd,\n // },\n // ];\n\n return { sections };\n } catch (err) {\n console.error(err);\n\n return { sections: [] };\n }\n },\n base({ data, type, step, attributes }: Base<'base'>) {\n try {\n return attributesForm.base[type](data, step, attributes);\n } catch (err) {\n return commonBaseForm;\n }\n },\n },\n },\n contentType: {\n schema(\n alreadyTakenNames: Array<string>,\n isEditing: boolean,\n ctUid: Internal.UID.ContentType,\n reservedNames: {\n models: any;\n },\n extensions: any,\n contentTypes: Record<string, ContentType>\n ) {\n const singularNames = Object.values(contentTypes).map((contentType) => {\n return contentType.schema.singularName;\n });\n\n const pluralNames = Object.values(contentTypes).map((contentType: any) => {\n return contentType?.schema?.pluralName ?? '';\n });\n\n const takenNames = isEditing\n ? alreadyTakenNames.filter((uid) => uid !== ctUid)\n : alreadyTakenNames;\n\n const takenSingularNames = isEditing\n ? singularNames.filter((singName) => {\n const { schema } = contentTypes[ctUid];\n\n return schema.singularName !== singName;\n })\n : singularNames;\n\n const takenPluralNames = isEditing\n ? pluralNames.filter((pluralName) => {\n const { schema } = contentTypes[ctUid];\n\n return schema.pluralName !== pluralName;\n })\n : pluralNames;\n\n // return the array of collection names not all normalized\n const collectionNames = Object.values(contentTypes).map((contentType) => {\n return contentType?.schema?.collectionName ?? '';\n });\n\n const takenCollectionNames = isEditing\n ? collectionNames.filter((collectionName) => {\n const { schema } = contentTypes[ctUid];\n const currentCollectionName = schema.collectionName;\n\n return collectionName !== currentCollectionName;\n })\n : collectionNames;\n\n const contentTypeShape = createContentTypeSchema({\n usedContentTypeNames: takenNames,\n reservedModels: reservedNames.models,\n singularNames: takenSingularNames,\n pluralNames: takenPluralNames,\n collectionNames: takenCollectionNames,\n });\n\n // FIXME\n return extensions.makeValidator(\n ['contentType'],\n contentTypeShape,\n takenNames,\n reservedNames.models,\n takenSingularNames,\n takenPluralNames\n );\n },\n form: {\n base({ actionType }: any) {\n if (actionType === 'create') {\n return contentTypeForm.base.create();\n }\n\n return contentTypeForm.base.edit();\n },\n advanced({ extensions }: any) {\n const baseForm = contentTypeForm.advanced\n .default()\n .sections.map((section) => section.items)\n .flat();\n const itemsToAdd = extensions.getAdvancedForm(['contentType']);\n\n return {\n sections: [\n {\n items: [...baseForm, ...itemsToAdd],\n },\n ],\n };\n },\n },\n },\n component: {\n schema(\n alreadyTakenAttributes: Array<Internal.UID.Component>,\n componentCategory: string,\n reservedNames: {\n models: any;\n },\n isEditing = false,\n components: Record<string, any>,\n componentDisplayName: string,\n compoUid: Internal.UID.Component | null = null\n ) {\n const takenNames = isEditing\n ? alreadyTakenAttributes.filter((uid: Internal.UID.Component) => uid !== compoUid)\n : alreadyTakenAttributes;\n const collectionNames = Object.values(components).map((component: any) => {\n return component?.schema?.collectionName;\n });\n\n const currentCollectionName = createComponentCollectionName(\n componentDisplayName,\n componentCategory\n );\n\n const takenCollectionNames = isEditing\n ? collectionNames.filter((collectionName) => collectionName !== currentCollectionName)\n : collectionNames;\n\n return createComponentSchema(\n takenNames,\n reservedNames.models,\n componentCategory,\n takenCollectionNames,\n currentCollectionName\n );\n },\n form: {\n advanced() {\n return {\n sections: componentForm.advanced(),\n };\n },\n base() {\n return {\n sections: componentForm.base(),\n };\n },\n },\n },\n addComponentToDynamicZone: {\n form: {\n advanced() {\n return dynamiczoneForm.advanced.default();\n },\n base({ data }: any) {\n const isCreatingComponent = data?.createComponent ?? false;\n\n if (isCreatingComponent) {\n return dynamiczoneForm.base.createComponent();\n }\n\n return dynamiczoneForm.base.default();\n },\n },\n },\n editCategory: {\n schema(allCategories: Array<any>, initialData: any) {\n const allowedCategories = allCategories\n .filter((cat) => cat !== initialData.name)\n .map((cat) => cat.toLowerCase());\n\n return createCategorySchema(allowedCategories);\n },\n form: {\n advanced: () => ({ sections: [] }),\n base() {\n return categoryForm.base;\n },\n },\n },\n};\n","import { createSelector } from '@reduxjs/toolkit';\n\nimport { pluginId } from '../../pluginId';\n\nimport { initialState } from './reducer';\n\n/**\n * Direct selector to the formModal state domain\n */\nconst formModalDomain = () => (state: any) => state[`${pluginId}_formModal`] || initialState;\n\n/**\n * Other specific selectors\n */\n\n/**\n * Default selector used by formModal\n */\n\nexport const makeSelectFormModal = () =>\n createSelector(formModalDomain(), (substate) => {\n return substate;\n });\n\nexport { formModalDomain };\n","import get from 'lodash/get';\n\nimport { getRelationType } from '../../../utils/getRelationType';\n\nimport type { AttributeType } from '../../../types';\nimport type { Internal, Struct } from '@strapi/types';\n\nexport type EditableContentTypeSchema = {\n kind: Struct.ContentTypeKind;\n name: string;\n attributes: AttributeType[];\n};\n\nexport type EditableContentTypeData = {\n contentType: {\n uid: Internal.UID.ContentType;\n schema: EditableContentTypeSchema;\n };\n};\n\ntype ModifiedData = {\n kind: Struct.ContentTypeKind;\n};\n\nexport const canEditContentType = (data: Record<string, any>, modifiedData: ModifiedData) => {\n const kind = get(data, ['contentType', 'schema', 'kind'], '');\n\n // if kind isn't modified or content type is a single type, there is no need to check attributes.\n if (kind === 'singleType' || kind === modifiedData.kind) {\n return true;\n }\n\n const contentTypeAttributes = get(\n data,\n ['contentType', 'schema', 'attributes'],\n []\n ) as AttributeType[];\n\n const relationAttributes = contentTypeAttributes.filter(({ relation, type, targetAttribute }) => {\n const relationType = getRelationType(relation, targetAttribute);\n\n return type === 'relation' && !['oneWay', 'manyWay'].includes(relationType || '');\n });\n\n return relationAttributes.length === 0;\n};\n","import { MAX_COMPONENT_DEPTH } from '../../../constants';\nimport { getComponentDepth } from '../../../utils/getMaxDepth';\n\nimport type { IconByType } from '../../AttributeIcon';\nimport type { NestedComponent } from '../../DataManagerProvider/utils/retrieveNestedComponents';\nimport type { Internal } from '@strapi/types';\n\nexport const getAttributesToDisplay = (\n dataTarget = '',\n targetUid: Internal.UID.Schema,\n nestedComponents: Array<NestedComponent>\n): IconByType[][] => {\n const defaultAttributes: IconByType[] = [\n 'text',\n 'boolean',\n 'blocks',\n 'json',\n 'number',\n 'email',\n 'date',\n 'password',\n 'media',\n 'enumeration',\n 'relation',\n 'richtext',\n ];\n\n const isPickingAttributeForAContentType = dataTarget === 'contentType';\n\n if (isPickingAttributeForAContentType) {\n return [\n // Insert UID before the last item (richtext)\n [...defaultAttributes.slice(0, -1), 'uid', ...defaultAttributes.slice(-1)],\n ['component', 'dynamiczone'],\n ];\n }\n\n // this will only run when adding attributes to components\n if (dataTarget) {\n const componentDepth = getComponentDepth(targetUid, nestedComponents);\n const isNestedInAnotherComponent = componentDepth >= MAX_COMPONENT_DEPTH;\n const canAddComponentInAnotherComponent =\n !isPickingAttributeForAContentType && !isNestedInAnotherComponent;\n if (canAddComponentInAnotherComponent) {\n return [defaultAttributes, ['component']];\n }\n }\n\n return [defaultAttributes];\n};\n","export const getFormInputNames = (form: any) =>\n form.reduce((acc: any, current: any) => {\n const names = current.items.reduce((acc: any, current: any) => {\n if (current.name) {\n acc.push(current.name);\n }\n\n return acc;\n }, []);\n\n return [...acc, ...names];\n }, []);\n","import * as React from 'react';\n\nimport { useStrapiApp, useTracking, useNotification } from '@strapi/admin/strapi-admin';\nimport { Button, Divider, Flex, Modal, Tabs } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEqual from 'lodash/isEqual';\nimport set from 'lodash/set';\nimport toLower from 'lodash/toLower';\nimport { useIntl } from 'react-intl';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../../hooks/useDataManager';\nimport { useFormModalNavigation } from '../../hooks/useFormModalNavigation';\nimport { pluginId } from '../../pluginId';\nimport { getTrad, isAllowedContentTypesForRelations } from '../../utils';\nimport { findAttribute } from '../../utils/findAttribute';\nimport { getYupInnerErrors } from '../../utils/getYupInnerErrors';\n// New compos\nimport { AllowedTypesSelect } from '../AllowedTypesSelect';\nimport { IconByType } from '../AttributeIcon';\nimport { AttributeOptions } from '../AttributeOptions/AttributeOptions';\nimport { BooleanDefaultValueSelect } from '../BooleanDefaultValueSelect';\nimport { BooleanRadioGroup } from '../BooleanRadioGroup';\nimport { CheckboxWithNumberField } from '../CheckboxWithNumberField';\nimport { ContentTypeRadioGroup } from '../ContentTypeRadioGroup';\nimport { CustomRadioGroup } from '../CustomRadioGroup';\nimport { DraftAndPublishToggle } from '../DraftAndPublishToggle';\nimport { FormModalEndActions } from '../FormModalEndActions';\nimport { FormModalHeader } from '../FormModalHeader';\nimport { FormModalSubHeader } from '../FormModalSubHeader';\nimport { IconPicker } from '../IconPicker/IconPicker';\nimport { PluralName } from '../PluralName';\nimport { Relation } from '../Relation/Relation';\nimport { SelectCategory } from '../SelectCategory';\nimport { SelectComponent } from '../SelectComponent';\nimport { SelectComponents } from '../SelectComponents';\nimport { SelectDateType } from '../SelectDateType';\nimport { SelectNumber } from '../SelectNumber';\nimport { SingularName } from '../SingularName';\nimport { TabForm } from '../TabForm';\nimport { TextareaEnum } from '../TextareaEnum';\n\nimport {\n ON_CHANGE,\n RESET_PROPS,\n RESET_PROPS_AND_SAVE_CURRENT_DATA,\n RESET_PROPS_AND_SET_FORM_FOR_ADDING_AN_EXISTING_COMPO,\n RESET_PROPS_AND_SET_THE_FORM_FOR_ADDING_A_COMPO_TO_A_DZ,\n SET_ATTRIBUTE_DATA_SCHEMA,\n SET_CUSTOM_FIELD_DATA_SCHEMA,\n SET_DATA_TO_EDIT,\n SET_DYNAMIC_ZONE_DATA_SCHEMA,\n SET_ERRORS,\n} from './constants';\nimport { forms } from './forms/forms';\nimport { makeSelectFormModal } from './selectors';\nimport { canEditContentType } from './utils/canEditContentType';\nimport { createComponentUid, createUid } from './utils/createUid';\nimport { getAttributesToDisplay } from './utils/getAttributesToDisplay';\nimport { getFormInputNames } from './utils/getFormInputNames';\n\nimport type { CustomFieldAttributeParams } from '../../contexts/DataManagerContext';\nimport type { AttributeType } from '../../types';\nimport type { Internal } from '@strapi/types';\n\n/* eslint-disable indent */\n/* eslint-disable react/no-array-index-key */\n\nconst FormComponent = styled.form`\n overflow: auto;\n`;\n\nexport const FormModal = () => {\n const {\n onCloseModal,\n onNavigateToChooseAttributeModal,\n onNavigateToAddCompoToDZModal,\n onNavigateToCreateComponentStep2,\n actionType,\n attributeName,\n attributeType,\n customFieldUid,\n categoryName,\n dynamicZoneTarget,\n forTarget,\n modalType,\n isOpen,\n kind,\n step,\n targetUid,\n showBackLink,\n activeTab,\n setActiveTab,\n } = useFormModalNavigation();\n\n const getPlugin = useStrapiApp('FormModal', (state) => state.getPlugin);\n const getCustomField = useStrapiApp('FormModal', (state) => state.customFields.get);\n const customField = getCustomField(customFieldUid);\n\n const formModalSelector = React.useMemo(makeSelectFormModal, []);\n const dispatch = useDispatch();\n const { toggleNotification } = useNotification();\n const reducerState = useSelector((state) => formModalSelector(state), shallowEqual);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const ctbPlugin = getPlugin(pluginId);\n const ctbFormsAPI: any = ctbPlugin?.apis.forms;\n const inputsFromPlugins = ctbFormsAPI.components.inputs;\n\n const {\n addAttribute,\n addCustomFieldAttribute,\n addCreatedComponentToDynamicZone,\n allComponentsCategories,\n changeDynamicZoneComponents,\n contentTypes,\n components,\n createSchema,\n deleteCategory,\n deleteData,\n editCategory,\n editCustomFieldAttribute,\n submitData,\n modifiedData: allDataSchema,\n nestedComponents,\n setModifiedData,\n sortedContentTypesList,\n updateSchema,\n reservedNames,\n } = useDataManager();\n\n const {\n componentToCreate,\n formErrors,\n initialData,\n isCreatingComponentWhileAddingAField,\n modifiedData,\n } = reducerState;\n\n const pathToSchema =\n forTarget === 'contentType' || forTarget === 'component' ? [forTarget] : [forTarget, targetUid];\n\n React.useEffect(() => {\n if (isOpen) {\n const collectionTypesForRelation = sortedContentTypesList.filter(\n isAllowedContentTypesForRelations\n );\n\n // Reset all the modification when opening the edit category modal\n if (modalType === 'editCategory') {\n setModifiedData();\n }\n\n if (actionType === 'edit' && modalType === 'attribute' && forTarget === 'contentType') {\n trackUsage('willEditFieldOfContentType');\n }\n\n const pathToAttributes = [...pathToSchema, 'schema', 'attributes'];\n\n // Case:\n // the user opens the modal chooseAttributes\n // selects dynamic zone => set the field name\n // then goes to step 1 (the modal is addComponentToDynamicZone) and finally reloads the app.\n // In this particular if the user tries to add components to the zone it will pop an error since the dz is unknown\n const foundDynamicZoneTarget =\n findAttribute(get(allDataSchema, pathToAttributes, []), dynamicZoneTarget) || null;\n\n // Edit category\n if (modalType === 'editCategory' && actionType === 'edit') {\n dispatch({\n type: SET_DATA_TO_EDIT,\n modalType,\n actionType,\n data: {\n name: categoryName,\n },\n });\n }\n\n // Create content type we need to add the default option draftAndPublish\n if (modalType === 'contentType' && actionType === 'create') {\n dispatch({\n type: SET_DATA_TO_EDIT,\n modalType,\n actionType,\n data: {\n draftAndPublish: true,\n },\n pluginOptions: {},\n });\n }\n\n // Edit content type\n if (modalType === 'contentType' && actionType === 'edit') {\n const { displayName, draftAndPublish, kind, pluginOptions, pluralName, singularName } = get(\n allDataSchema,\n [...pathToSchema, 'schema'],\n {\n displayName: null,\n pluginOptions: {},\n singularName: null,\n pluralName: null,\n }\n );\n\n dispatch({\n type: SET_DATA_TO_EDIT,\n actionType,\n modalType,\n data: {\n displayName,\n draftAndPublish,\n kind,\n pluginOptions,\n pluralName,\n singularName,\n },\n });\n }\n\n // Edit component\n if (modalType === 'component' && actionType === 'edit') {\n const data = get(allDataSchema, pathToSchema, {});\n\n dispatch({\n type: SET_DATA_TO_EDIT,\n actionType,\n modalType,\n data: {\n displayName: data.schema.displayName,\n category: data.category,\n icon: data.schema.icon,\n },\n });\n }\n\n // Special case for the dynamic zone\n if (modalType === 'addComponentToDynamicZone' && actionType === 'edit') {\n const attributeToEdit = {\n ...foundDynamicZoneTarget,\n // We filter the available components\n // Because this modal is only used for adding components\n components: [],\n name: dynamicZoneTarget,\n createComponent: false,\n componentToCreate: { type: 'component' },\n };\n\n dispatch({\n type: SET_DYNAMIC_ZONE_DATA_SCHEMA,\n attributeToEdit,\n });\n }\n\n // Set the predefined data structure to create an attribute\n if (attributeType) {\n const attributeToEditNotFormatted = findAttribute(\n get(allDataSchema, pathToAttributes, []),\n attributeName\n ) as AttributeType;\n const attributeToEdit = {\n ...attributeToEditNotFormatted,\n name: attributeName,\n };\n\n // We need to set the repeatable key to false when editing a component\n // The API doesn't send this info\n if (attributeType === 'component' && actionType === 'edit') {\n if (!attributeToEdit.repeatable) {\n set(attributeToEdit, 'repeatable', false);\n }\n }\n\n if (modalType === 'customField') {\n dispatch({\n type: SET_CUSTOM_FIELD_DATA_SCHEMA,\n customField,\n isEditing: actionType === 'edit',\n modifiedDataToSetForEditing: attributeToEdit,\n // NOTE: forTarget is used in the i18n middleware\n forTarget,\n });\n } else {\n dispatch({\n type: SET_ATTRIBUTE_DATA_SCHEMA,\n attributeType,\n nameToSetForRelation: get(collectionTypesForRelation, ['0', 'title'], 'error'),\n targetUid: get(collectionTypesForRelation, ['0', 'uid'], 'error'),\n isEditing: actionType === 'edit',\n modifiedDataToSetForEditing: attributeToEdit,\n step,\n forTarget,\n });\n }\n }\n } else {\n dispatch({ type: RESET_PROPS });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n actionType,\n attributeName,\n attributeType,\n categoryName,\n dynamicZoneTarget,\n forTarget,\n isOpen,\n modalType,\n ]);\n\n const isCreatingContentType = modalType === 'contentType';\n const isCreatingComponent = modalType === 'component';\n const isCreatingAttribute = modalType === 'attribute';\n const isCreatingCustomFieldAttribute = modalType === 'customField';\n const isComponentAttribute = attributeType === 'component' && isCreatingAttribute;\n const isCreating = actionType === 'create';\n const isCreatingComponentFromAView =\n get(modifiedData, 'createComponent', false) || isCreatingComponentWhileAddingAField;\n const isInFirstComponentStep = step === '1';\n const isEditingCategory = modalType === 'editCategory';\n const isPickingAttribute = modalType === 'chooseAttribute';\n const uid = createUid(modifiedData.displayName || '');\n const attributes = get(allDataSchema, [...pathToSchema, 'schema', 'attributes'], null) as {\n name: string;\n }[];\n\n const checkFormValidity = async () => {\n let schema;\n const dataToValidate =\n isCreatingComponentFromAView && step === '1'\n ? get(modifiedData, 'componentToCreate', {})\n : modifiedData;\n // Check form validity for content type\n if (isCreatingContentType) {\n schema = forms.contentType.schema(\n Object.keys(contentTypes),\n actionType === 'edit',\n // currentUID\n get(allDataSchema, [...pathToSchema, 'uid'], null),\n reservedNames,\n ctbFormsAPI,\n contentTypes\n );\n\n // Check form validity for component\n // This is happening when the user click on the link from the left menu\n } else if (isCreatingComponent) {\n schema = forms.component.schema(\n Object.keys(components) as Internal.UID.Component[],\n modifiedData.category || '',\n reservedNames,\n actionType === 'edit',\n components,\n modifiedData.displayName || '',\n get(allDataSchema, [...pathToSchema, 'uid'], null)\n // ctbFormsAPI\n );\n } else if (isCreatingCustomFieldAttribute) {\n schema = forms.customField.schema({\n schemaAttributes: get(allDataSchema, [...pathToSchema, 'schema', 'attributes'], []),\n attributeType: customField!.type,\n reservedNames,\n schemaData: { modifiedData, initialData },\n ctbFormsAPI,\n customFieldValidator: customField!.options?.validator,\n });\n\n // Check for validity for creating a component\n // This is happening when the user creates a component \"on the fly\"\n // Since we temporarily store the component info in another object\n // The data is set in the componentToCreate key\n } else if (isComponentAttribute && isCreatingComponentFromAView && isInFirstComponentStep) {\n schema = forms.component.schema(\n Object.keys(components) as Internal.UID.Component[],\n get(modifiedData, 'componentToCreate.category', ''),\n reservedNames,\n actionType === 'edit',\n components,\n modifiedData.componentToCreate.displayName || ''\n );\n\n // Check form validity for creating a 'common attribute'\n // We need to make sure that it is independent from the step\n } else if (isCreatingAttribute && !isInFirstComponentStep) {\n const type = attributeType === 'relation' ? 'relation' : modifiedData.type;\n\n let alreadyTakenTargetContentTypeAttributes = [];\n\n if (type === 'relation') {\n const targetContentTypeUID = get(modifiedData, ['target'], null);\n\n const targetContentTypeAttributes = get(\n contentTypes,\n [targetContentTypeUID, 'schema', 'attributes'],\n []\n );\n\n // Create an array with all the targetContentType attributes name\n // in order to prevent the user from creating a relation with a targetAttribute\n // that may exist in the other content type\n alreadyTakenTargetContentTypeAttributes = targetContentTypeAttributes.filter(\n ({ name: attrName }: { name: string }) => {\n // Keep all the target content type attributes when creating a relation\n if (actionType !== 'edit') {\n return true;\n }\n\n // Remove the already created one when editing\n return attrName !== initialData.targetAttribute;\n }\n );\n }\n schema = forms.attribute.schema(\n get(allDataSchema, pathToSchema, {}),\n type,\n reservedNames,\n alreadyTakenTargetContentTypeAttributes,\n { modifiedData, initialData },\n ctbFormsAPI\n );\n } else if (isEditingCategory) {\n schema = forms.editCategory.schema(allComponentsCategories, initialData);\n } else {\n // The user is either in the addComponentToDynamicZone modal or\n // in step 1 of the add component (modalType=attribute&attributeType=component) but not creating a component\n // eslint-disable-next-line no-lonely-if\n if (isInFirstComponentStep && isCreatingComponentFromAView) {\n schema = forms.component.schema(\n Object.keys(components) as Internal.UID.Component[],\n get(modifiedData, 'componentToCreate.category', ''),\n reservedNames,\n actionType === 'edit',\n components,\n modifiedData.componentToCreate.displayName || ''\n );\n } else {\n // The form is valid\n // The case here is being in the addComponentToDynamicZone modal and not creating a component\n return;\n }\n }\n\n await schema.validate(dataToValidate, { abortEarly: false });\n };\n\n const handleChange = React.useCallback(\n ({\n target: { name, value, type, ...rest },\n }: {\n target: { name: string; value: string; type: string };\n }) => {\n const namesThatCanResetToNullValue = [\n 'enumName',\n 'max',\n 'min',\n 'maxLength',\n 'minLength',\n 'regex',\n 'default',\n ];\n\n let val;\n\n if (namesThatCanResetToNullValue.includes(name) && value === '') {\n val = null;\n } else {\n val = value;\n }\n\n const clonedErrors = Object.assign({}, formErrors);\n\n // Reset min error when modifying the max\n if (name === 'max') {\n delete clonedErrors.min;\n }\n\n // Same here\n if (name === 'maxLength') {\n delete clonedErrors.minLength;\n }\n\n // Since the onBlur is deactivated we remove the errors directly when changing an input\n delete clonedErrors[name];\n\n dispatch({\n type: SET_ERRORS,\n errors: clonedErrors,\n });\n\n dispatch({\n type: ON_CHANGE,\n keys: name.split('.'),\n value: val,\n ...rest,\n });\n },\n [dispatch, formErrors]\n );\n\n const handleSubmit = async (e: React.SyntheticEvent, shouldContinue = isCreating) => {\n e.preventDefault();\n\n try {\n await checkFormValidity();\n\n sendButtonAddMoreFieldEvent(shouldContinue);\n const ctTargetUid = forTarget === 'components' ? targetUid : uid;\n\n if (isCreatingContentType) {\n // Create the content type schema\n if (isCreating) {\n createSchema({ ...modifiedData, kind }, modalType, uid);\n // Redirect the user to the created content type\n navigate({ pathname: `/plugins/${pluginId}/content-types/${uid}` });\n\n // Navigate to the choose attribute modal\n onNavigateToChooseAttributeModal({\n forTarget,\n targetUid: ctTargetUid,\n });\n } else {\n // We cannot switch from collection type to single when the modal is making relations other than oneWay or manyWay\n if (canEditContentType(allDataSchema, modifiedData)) {\n onCloseModal();\n\n await submitData(modifiedData);\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.contentType.relations.conflict' }),\n });\n }\n\n return;\n }\n // We are creating a component using the component modal from the left menu\n } else if (modalType === 'component') {\n if (isCreating) {\n // Create the component schema\n const componentUid = createComponentUid(modifiedData.displayName, modifiedData.category);\n const { category, ...rest } = modifiedData;\n\n createSchema(rest, 'component', componentUid, category);\n\n // Redirect the user to the created component\n navigate({\n pathname: `/plugins/${pluginId}/component-categories/${category}/${componentUid}`,\n });\n\n // Navigate to the choose attribute modal\n onNavigateToChooseAttributeModal({\n forTarget,\n targetUid: componentUid,\n });\n } else {\n updateSchema(modifiedData, modalType, targetUid as Internal.UID.Component);\n\n // Close the modal\n onCloseModal();\n\n return;\n }\n } else if (isEditingCategory) {\n if (toLower(initialData.name) === toLower(modifiedData.name)) {\n // Close the modal\n onCloseModal();\n\n return;\n }\n\n editCategory(initialData.name, modifiedData);\n\n return;\n // Add/edit a field to a content type\n // Add/edit a field to a created component (the end modal is not step 2)\n } else if (isCreatingCustomFieldAttribute) {\n const customFieldAttributeUpdate: CustomFieldAttributeParams = {\n attributeToSet: { ...modifiedData, customField: customFieldUid },\n forTarget,\n targetUid,\n initialAttribute: initialData,\n };\n\n if (actionType === 'edit') {\n editCustomFieldAttribute(customFieldAttributeUpdate);\n } else {\n addCustomFieldAttribute(customFieldAttributeUpdate);\n }\n\n if (shouldContinue) {\n onNavigateToChooseAttributeModal({\n forTarget,\n targetUid: ctTargetUid,\n });\n } else {\n onCloseModal();\n }\n\n return;\n } else if (isCreatingAttribute && !isCreatingComponentFromAView) {\n const isDynamicZoneAttribute = attributeType === 'dynamiczone';\n\n // The user is creating a DZ (he had entered the name of the dz)\n if (isDynamicZoneAttribute) {\n addAttribute(modifiedData, forTarget, targetUid, actionType === 'edit', initialData);\n\n // Adding a component to a dynamiczone is not the same logic as creating a simple field\n // so the search is different\n if (isCreating) {\n // Step 1 of adding a component to a DZ, the user has the option to create a component\n dispatch({\n type: RESET_PROPS_AND_SET_THE_FORM_FOR_ADDING_A_COMPO_TO_A_DZ,\n });\n\n setActiveTab('basic');\n onNavigateToAddCompoToDZModal({ dynamicZoneTarget: modifiedData.name });\n } else {\n onCloseModal();\n }\n\n return;\n }\n\n // Normal fields like boolean relations or dynamic zone\n if (!isComponentAttribute) {\n addAttribute(modifiedData, forTarget, targetUid, actionType === 'edit', initialData);\n\n if (shouldContinue) {\n onNavigateToChooseAttributeModal({\n forTarget,\n targetUid: ctTargetUid,\n });\n } else {\n onCloseModal();\n }\n\n return;\n\n // Adding an existing component\n }\n // eslint-disable-next-line no-lonely-if\n if (isInFirstComponentStep) {\n // Navigate the user to step 2\n onNavigateToCreateComponentStep2();\n\n // Clear the reducer and prepare the modified data\n // This way we don't have to add some logic to re-run the useEffect\n // The first step is either needed to create a component or just to navigate\n // To the modal for adding a \"common field\"\n dispatch({\n type: RESET_PROPS_AND_SET_FORM_FOR_ADDING_AN_EXISTING_COMPO,\n forTarget,\n });\n\n // We don't want all the props to be reset\n return;\n\n // Here we are in step 2\n // The step 2 is also use to edit an attribute that is a component\n }\n\n addAttribute(\n modifiedData,\n forTarget,\n targetUid,\n // This change the dispatched type\n // either 'EDIT_ATTRIBUTE' or 'ADD_ATTRIBUTE' in the DataManagerProvider\n actionType === 'edit',\n // This is for the edit part\n initialData,\n // Passing true will add the component to the components object\n // This way we can add fields to the added component (if it wasn't there already)\n true\n );\n\n if (shouldContinue) {\n onNavigateToChooseAttributeModal({\n forTarget,\n targetUid,\n });\n } else {\n onCloseModal();\n }\n\n // We don't need to end the loop here we want the reducer to be reinitialized\n\n // Logic for creating a component without clicking on the link in\n // the left menu\n // We need to separate the logic otherwise the component would be created\n // even though the user didn't set any field\n // We need to prevent the component from being created if the user closes the modal at step 2 without any submission\n } else if (isCreatingAttribute && isCreatingComponentFromAView) {\n // Step 1\n if (isInFirstComponentStep) {\n // Here the search could be refactored since it is the same as the case from above\n // Navigate the user to step 2\n\n trackUsage('willCreateComponentFromAttributesModal');\n\n // Here we clear the reducer state but we also keep the created component\n // If we were to create the component before\n dispatch({\n type: RESET_PROPS_AND_SAVE_CURRENT_DATA,\n forTarget,\n });\n\n onNavigateToCreateComponentStep2();\n\n // Terminate because we don't want the reducer to be entirely reset\n return;\n\n // Step 2 of creating a component (which is setting the attribute name in the parent's schema)\n }\n // We are destructuring because the modifiedData object doesn't have the appropriate format to create a field\n const { category, type, ...rest } = componentToCreate;\n // Create a the component temp UID\n // This could be refactored but I think it's more understandable to separate the logic\n const componentUid = createComponentUid(componentToCreate.displayName, category);\n // Create the component first and add it to the components data\n createSchema(\n // Component data\n rest,\n // Type will always be component\n // It will dispatch the CREATE_COMPONENT_SCHEMA action\n // So the component will be added in the main components object\n // This might not be needed if we don't allow navigation between entries while editing\n type,\n componentUid,\n category,\n // This will add the created component in the datamanager modifiedData components key\n // Like explained above we will be able to modify the created component structure\n isCreatingComponentFromAView\n );\n // Add the field to the schema\n addAttribute(modifiedData, forTarget, targetUid, false);\n\n dispatch({ type: RESET_PROPS });\n\n // Open modal attribute for adding attr to component\n if (shouldContinue) {\n onNavigateToChooseAttributeModal({ forTarget: 'components', targetUid: componentUid });\n } else {\n onCloseModal();\n }\n\n return;\n } else {\n // The modal is addComponentToDynamicZone\n if (isInFirstComponentStep) {\n if (isCreatingComponentFromAView) {\n const { category, type, ...rest } = modifiedData.componentToCreate;\n const componentUid = createComponentUid(\n modifiedData.componentToCreate.displayName,\n category\n );\n // Create the component first and add it to the components data\n createSchema(\n // Component data\n rest,\n // Type will always be component\n // It will dispatch the CREATE_COMPONENT_SCHEMA action\n // So the component will be added in the main components object\n // This might not be needed if we don't allow navigation between entries while editing\n type,\n componentUid,\n category,\n // This will add the created component in the datamanager modifiedData components key\n // Like explained above we will be able to modify the created component structure\n isCreatingComponentFromAView\n );\n // Add the created component to the DZ\n // We don't want to remove the old ones\n addCreatedComponentToDynamicZone(dynamicZoneTarget, [componentUid]);\n\n // The Dynamic Zone and the component is created\n // Open the modal to add fields to the created component\n onNavigateToChooseAttributeModal({ forTarget: 'components', targetUid: componentUid });\n } else {\n // Add the components to the DZ\n changeDynamicZoneComponents(dynamicZoneTarget, modifiedData.components);\n\n onCloseModal();\n }\n } else {\n console.error('This case is not handled');\n }\n\n return;\n }\n\n dispatch({\n type: RESET_PROPS,\n });\n } catch (err: any) {\n const errors = getYupInnerErrors(err);\n\n dispatch({\n type: SET_ERRORS,\n errors,\n });\n }\n };\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onCloseModal();\n\n dispatch({\n type: RESET_PROPS,\n });\n }\n };\n\n const handleClosed = () => {\n // Close the modal\n if (!isEqual(modifiedData, initialData)) {\n handleConfirmClose();\n } else {\n onCloseModal();\n // Reset the reducer\n dispatch({\n type: RESET_PROPS,\n });\n }\n };\n\n const sendAdvancedTabEvent = (tab: string) => {\n if (tab !== 'advanced') {\n return;\n }\n\n if (isCreatingContentType) {\n trackUsage('didSelectContentTypeSettings');\n\n return;\n }\n\n if (forTarget === 'contentType') {\n trackUsage('didSelectContentTypeFieldSettings');\n }\n };\n\n const sendButtonAddMoreFieldEvent = (shouldContinue: boolean) => {\n if (\n modalType === 'attribute' &&\n forTarget === 'contentType' &&\n attributeType !== 'dynamiczone' &&\n shouldContinue\n ) {\n trackUsage('willAddMoreFieldToContentType');\n }\n };\n\n const shouldDisableAdvancedTab = () => {\n if (modalType === 'editCategory') {\n return true;\n }\n\n if (modalType === 'component') {\n return true;\n }\n\n if (has(modifiedData, 'createComponent')) {\n return true;\n }\n\n return false;\n };\n\n // Display data for the attributes picker modal\n const displayedAttributes = getAttributesToDisplay(\n forTarget,\n targetUid,\n // We need the nested components so we know when to remove the component option\n nestedComponents\n );\n\n if (!modalType) {\n return null;\n }\n\n const formToDisplay = get(forms, [modalType, 'form'], {\n advanced: () => ({\n sections: [],\n }),\n base: () => ({\n sections: [],\n }),\n });\n\n const isAddingAComponentToAnotherComponent =\n forTarget === 'components' || forTarget === 'component';\n\n const genericInputProps = {\n customInputs: {\n 'allowed-types-select': AllowedTypesSelect,\n 'boolean-radio-group': BooleanRadioGroup,\n 'checkbox-with-number-field': CheckboxWithNumberField,\n 'icon-picker': IconPicker,\n 'content-type-radio-group': ContentTypeRadioGroup,\n 'radio-group': CustomRadioGroup,\n relation: Relation,\n 'select-category': SelectCategory,\n 'select-component': SelectComponent,\n 'select-components': SelectComponents,\n 'select-default-boolean': BooleanDefaultValueSelect,\n 'select-number': SelectNumber,\n 'select-date': SelectDateType,\n 'toggle-draft-publish': DraftAndPublishToggle,\n 'text-plural': PluralName,\n 'text-singular': SingularName,\n 'textarea-enum': TextareaEnum,\n ...inputsFromPlugins,\n },\n componentToCreate,\n dynamicZoneTarget,\n formErrors,\n isAddingAComponentToAnotherComponent,\n isCreatingComponentWhileAddingAField,\n mainBoxHeader: get(allDataSchema, [...pathToSchema, 'schema', 'displayName'], ''),\n modifiedData,\n naturePickerType: forTarget,\n isCreating,\n targetUid,\n forTarget,\n };\n\n const advancedForm = formToDisplay.advanced({\n data: modifiedData,\n type: attributeType,\n step,\n actionType,\n attributes,\n extensions: ctbFormsAPI,\n forTarget,\n contentTypeSchema: allDataSchema.contentType || {},\n customField,\n }).sections;\n const baseForm = formToDisplay.base({\n data: modifiedData,\n type: attributeType,\n step,\n actionType,\n attributes,\n extensions: ctbFormsAPI,\n forTarget,\n contentTypeSchema: allDataSchema.contentType || {},\n customField,\n }).sections;\n\n const baseFormInputNames = getFormInputNames(baseForm);\n\n const advancedFormInputNames = getFormInputNames(advancedForm);\n const doesBaseFormHasError = Object.keys(formErrors).some((key) =>\n baseFormInputNames.includes(key)\n );\n\n const doesAdvancedFormHasError = Object.keys(formErrors).some((key) =>\n advancedFormInputNames.includes(key)\n );\n\n const schemaKind = get(contentTypes, [targetUid, 'schema', 'kind']);\n\n const checkIsEditingFieldName = () =>\n actionType === 'edit' && attributes.every(({ name }) => name !== modifiedData?.name);\n\n const handleClickFinish = () => {\n if (checkIsEditingFieldName()) {\n trackUsage('didEditFieldNameOnContentType');\n }\n };\n\n return (\n <Modal.Root open={isOpen} onOpenChange={handleClosed}>\n <Modal.Content>\n <FormModalHeader\n actionType={actionType}\n attributeName={attributeName}\n categoryName={categoryName}\n contentTypeKind={kind as IconByType}\n dynamicZoneTarget={dynamicZoneTarget}\n modalType={modalType}\n forTarget={forTarget}\n targetUid={targetUid}\n attributeType={attributeType as IconByType}\n customFieldUid={customFieldUid}\n showBackLink={showBackLink}\n />\n {isPickingAttribute && (\n <AttributeOptions\n attributes={displayedAttributes}\n forTarget={forTarget}\n kind={schemaKind || 'collectionType'}\n />\n )}\n {!isPickingAttribute && (\n <FormComponent onSubmit={handleSubmit}>\n <Modal.Body>\n <Tabs.Root\n variant=\"simple\"\n value={activeTab}\n onValueChange={(value) => {\n setActiveTab(value);\n sendAdvancedTabEvent(value);\n }}\n hasError={\n doesBaseFormHasError ? 'basic' : doesAdvancedFormHasError ? 'advanced' : undefined\n }\n >\n <Flex justifyContent=\"space-between\">\n <FormModalSubHeader\n actionType={actionType}\n forTarget={forTarget}\n kind={kind}\n step={step}\n modalType={modalType}\n attributeType={attributeType}\n attributeName={attributeName}\n customField={customField}\n />\n <Tabs.List>\n <Tabs.Trigger value=\"basic\">\n {formatMessage({\n id: getTrad('popUpForm.navContainer.base'),\n defaultMessage: 'Basic settings',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"advanced\" disabled={shouldDisableAdvancedTab()}>\n {formatMessage({\n id: getTrad('popUpForm.navContainer.advanced'),\n defaultMessage: 'Advanced settings',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Flex>\n <Divider marginBottom={6} />\n <Tabs.Content value=\"basic\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <TabForm\n form={baseForm}\n formErrors={formErrors}\n genericInputProps={genericInputProps}\n modifiedData={modifiedData}\n onChange={handleChange}\n />\n </Flex>\n </Tabs.Content>\n <Tabs.Content value=\"advanced\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <TabForm\n form={advancedForm}\n formErrors={formErrors}\n genericInputProps={genericInputProps}\n modifiedData={modifiedData}\n onChange={handleChange}\n />\n </Flex>\n </Tabs.Content>\n </Tabs.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button variant=\"tertiary\" onClick={handleClosed}>\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n {/* TODO: refactor this component. Nuf said. */}\n <FormModalEndActions\n deleteCategory={deleteCategory}\n deleteContentType={deleteData}\n deleteComponent={deleteData}\n categoryName={initialData.name}\n isAttributeModal={modalType === 'attribute'}\n isCustomFieldModal={modalType === 'customField'}\n isComponentToDzModal={modalType === 'addComponentToDynamicZone'}\n isComponentAttribute={attributeType === 'component'}\n isComponentModal={modalType === 'component'}\n isContentTypeModal={modalType === 'contentType'}\n isCreatingComponent={actionType === 'create'}\n isCreatingDz={actionType === 'create'}\n isCreatingComponentAttribute={modifiedData.createComponent || false}\n isCreatingComponentInDz={modifiedData.createComponent || false}\n isCreatingComponentWhileAddingAField={isCreatingComponentWhileAddingAField}\n isCreatingContentType={actionType === 'create'}\n isEditingAttribute={actionType === 'edit'}\n isDzAttribute={attributeType === 'dynamiczone'}\n isEditingCategory={modalType === 'editCategory'}\n isInFirstComponentStep={step === '1'}\n onSubmitAddComponentAttribute={handleSubmit}\n onSubmitAddComponentToDz={handleSubmit}\n onSubmitCreateComponent={handleSubmit}\n onSubmitCreateContentType={handleSubmit}\n onSubmitCreateDz={handleSubmit}\n onSubmitEditAttribute={handleSubmit}\n onSubmitEditCategory={handleSubmit}\n onSubmitEditComponent={handleSubmit}\n onSubmitEditContentType={handleSubmit}\n onSubmitEditCustomFieldAttribute={handleSubmit}\n onSubmitEditDz={handleSubmit}\n onClickFinish={handleClickFinish}\n />\n </Modal.Footer>\n </FormComponent>\n )}\n </Modal.Content>\n </Modal.Root>\n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\n\nimport { pluginId } from '../../pluginId';\n\nimport { initialState } from './reducer';\n\nimport type { DataManagerStateType } from '../../types';\n\n/**\n * Direct selector to the dataManagerProvider state domain\n */\nconst dataManagerProviderDomain = () => (state: DataManagerStateType) =>\n state[`${pluginId}_dataManagerProvider`] || initialState;\n\n/**\n * Other specific selectors\n */\n\n/**\n * Default selector used by dataManagerProvider\n */\n\nconst makeSelectDataManagerProvider = () =>\n createSelector(dataManagerProviderDomain(), (substate) => {\n return substate;\n });\n\nexport { makeSelectDataManagerProvider, dataManagerProviderDomain };\n","import camelCase from 'lodash/camelCase';\nimport get from 'lodash/get';\nimport isEqual from 'lodash/isEqual';\nimport omit from 'lodash/omit';\nimport sortBy from 'lodash/sortBy';\n\nimport { pluginId } from '../../../pluginId';\nimport { makeUnique } from '../../../utils/makeUnique';\n\nimport type { Components, Component, AttributeType, ContentTypes } from '../../../types';\nimport type { Internal } from '@strapi/types';\n\nconst getCreatedAndModifiedComponents = (\n allComponents: Components,\n initialComponents: Components\n) => {\n const componentUIDsToReturn = Object.keys(allComponents).filter((compoUid) => {\n const currentCompo = get(allComponents, compoUid, {});\n const initialCompo = get(initialComponents, compoUid, {});\n const hasComponentBeenCreated = get(currentCompo, ['isTemporary'], false);\n const hasComponentBeenModified = !isEqual(currentCompo, initialCompo);\n\n return hasComponentBeenCreated || hasComponentBeenModified;\n });\n\n return makeUnique(componentUIDsToReturn);\n};\n\nconst formatComponent = (\n component: Component | Record<string, any>,\n mainDataUID: Internal.UID.Schema\n) => {\n const formattedAttributes = formatAttributes(\n get(component, 'schema.attributes', []),\n mainDataUID\n );\n\n // Set tmpUID if the component has just been created\n // Keep the uid if the component already exists\n const compoUID = get(component, 'isTemporary', false)\n ? { tmpUID: component.uid }\n : { uid: component.uid };\n\n const formattedComponent = Object.assign(\n {},\n compoUID,\n { category: component.category },\n // Omit the attributes since we want to format them\n omit(component.schema, 'attributes'),\n // Add the formatted attributes\n { attributes: formattedAttributes }\n );\n\n return formattedComponent;\n};\n\nconst formatMainDataType = (data: any, isComponent = false) => {\n const mainDataUID = get(data, 'uid', null);\n\n const formattedAttributes = formatAttributes(get(data, 'schema.attributes', []), mainDataUID);\n const initObj = isComponent ? { category: get(data, 'category', '') } : {};\n\n const formattedContentType = Object.assign(initObj, omit(data.schema, 'attributes'), {\n attributes: formattedAttributes,\n });\n\n delete formattedContentType.uid;\n delete formattedContentType.isTemporary;\n delete formattedContentType.visible;\n delete formattedContentType.restrictRelationsTo;\n\n return formattedContentType;\n};\n\n/**\n *\n * @param {Object} attributes\n * @param {String} mainDataUID uid of the main data type\n */\nconst formatAttributes = (attributes: AttributeType[], mainDataUID: Internal.UID.Schema) => {\n return attributes.reduce((acc: Record<string, AttributeType>, { name, ...rest }) => {\n const currentAttribute = rest;\n const hasARelationWithMainDataUID = currentAttribute.target === mainDataUID;\n const isRelationType = currentAttribute.type === 'relation';\n const currentTargetAttribute = get(currentAttribute, 'targetAttribute', null);\n\n if (!hasARelationWithMainDataUID) {\n if (isRelationType) {\n const relationAttr = Object.assign({}, currentAttribute, {\n targetAttribute: formatRelationTargetAttribute(currentTargetAttribute),\n });\n\n acc[name as string] = removeNullKeys(relationAttr) as AttributeType;\n } else {\n acc[name as string] = removeNullKeys(currentAttribute) as AttributeType;\n }\n }\n\n if (hasARelationWithMainDataUID) {\n const target = currentAttribute.target;\n\n const formattedRelationAttribute = Object.assign({}, currentAttribute, {\n target,\n targetAttribute: formatRelationTargetAttribute(currentTargetAttribute),\n });\n\n acc[name as string] = removeNullKeys(formattedRelationAttribute) as AttributeType;\n }\n\n if (currentAttribute.customField) {\n const customFieldAttribute = { ...currentAttribute, type: 'customField' };\n acc[name as string] = removeNullKeys(customFieldAttribute) as AttributeType;\n }\n\n return acc;\n }, {});\n};\n\nconst formatRelationTargetAttribute = (targetAttribute: string | null) =>\n targetAttribute === '-' ? null : targetAttribute;\n\nconst removeNullKeys = (obj: Record<string, any>) =>\n Object.keys(obj).reduce((acc: Record<string, any>, current) => {\n if (obj[current] !== null && current !== 'plugin') {\n acc[current] = obj[current];\n }\n\n return acc;\n }, {});\n\nconst getComponentsToPost = (\n allComponents: Components,\n initialComponents: Components,\n mainDataUID: Internal.UID.Schema\n) => {\n const componentsToFormat = getCreatedAndModifiedComponents(allComponents, initialComponents);\n const formattedComponents = componentsToFormat.map((compoUID) => {\n const currentCompo = get(allComponents, compoUID, {});\n const formattedComponent = formatComponent(currentCompo, mainDataUID);\n\n return formattedComponent;\n });\n\n return formattedComponents;\n};\n\nconst sortContentType = (types: ContentTypes) =>\n sortBy(\n Object.keys(types)\n .map((uid) => ({\n visible: types[uid].schema.visible,\n name: uid,\n title: types[uid].schema.displayName,\n plugin: types[uid].plugin || null,\n uid,\n to: `/plugins/${pluginId}/content-types/${uid}`,\n kind: types[uid].schema.kind,\n restrictRelationsTo: types[uid].schema.restrictRelationsTo,\n }))\n .filter((obj) => obj !== null),\n (obj) => camelCase(obj.title)\n );\n\nexport {\n formatComponent,\n formatMainDataType,\n getComponentsToPost,\n getCreatedAndModifiedComponents,\n sortContentType,\n};\n","import { ContentType } from '../../../types';\n\nexport const createDataObject = (arr: ContentType[]) =>\n arr.reduce((acc: Record<string, ContentType>, current) => {\n acc[current.uid!] = current;\n\n return acc;\n }, {});\n","import get from 'lodash/get';\n\nimport type { ContentType, Components } from '../../../types';\nimport type { Internal } from '@strapi/types';\n\nexport const createModifiedDataSchema = (\n contentTypeSchema: ContentType,\n retrievedComponents: Internal.UID.Component[],\n allComponentsSchema: Components,\n isInContentTypeView: boolean\n) => {\n const componentsAssociatedToContentType = retrievedComponents.reduce((acc: any, current) => {\n const componentSchema = get(allComponentsSchema, current, {});\n\n acc[current] = componentSchema;\n\n return acc;\n }, {});\n const keyName = isInContentTypeView ? 'contentType' : 'component';\n const schema = {\n [keyName]: contentTypeSchema,\n components: componentsAssociatedToContentType,\n };\n\n return schema;\n};\n","import { AttributeType } from '../../../types';\n\n/**\n * Format the attributes to array instead of an object\n */\nexport const formatSchemas = (schemas: Record<string, any>) => {\n return Object.keys(schemas).reduce((acc: any, current) => {\n const schema = schemas[current].schema;\n\n acc[current] = {\n ...schemas[current],\n schema: { ...schema, attributes: toAttributesArray(schema.attributes) },\n };\n\n return acc;\n }, {});\n};\n\nexport const toAttributesArray = (attributes: Record<string, AttributeType>) => {\n return Object.keys(attributes).reduce((acc: AttributeType[], current: any) => {\n acc.push({ ...attributes[current], name: current });\n\n return acc;\n }, []);\n};\n","import get from 'lodash/get';\n\nimport type { Component, AttributeType, Components } from '../../../types';\nimport type { Internal } from '@strapi/types';\n\ntype ChildComponent = {\n component: Internal.UID.Component;\n};\n\nexport type ComponentWithChildren = {\n component: Internal.UID.Component;\n childComponents: ChildComponent[];\n};\n\nconst retrieveComponentsThatHaveComponents = (allComponents: Components) => {\n const componentsThatHaveNestedComponents = Object.keys(allComponents).reduce(\n (acc: ComponentWithChildren[], current) => {\n const currentComponent = get(allComponents, [current]);\n\n const compoWithChildren = getComponentWithChildComponents(currentComponent);\n if (compoWithChildren.childComponents.length > 0) {\n acc.push(compoWithChildren);\n }\n\n return acc;\n },\n []\n );\n\n return componentsThatHaveNestedComponents;\n};\n\nconst getComponentWithChildComponents = (component: Component): ComponentWithChildren => {\n const attributes = get(component, ['schema', 'attributes'], []) as AttributeType[];\n return {\n component: component.uid,\n childComponents: attributes\n .filter((attribute) => {\n const { type } = attribute;\n\n return type === 'component';\n })\n .map((attribute) => {\n return {\n component: attribute.component,\n } as ChildComponent;\n }),\n };\n};\n\nexport { getComponentWithChildComponents, retrieveComponentsThatHaveComponents };\n","import type { Components, AttributeType } from '../../../types';\nimport type { Internal } from '@strapi/types';\n\nexport type NestedComponent = {\n component: Internal.UID.Component;\n uidsOfAllParents?: Internal.UID.Component[];\n parentCompoUid?: Internal.UID.Component;\n};\n\nexport const retrieveNestedComponents = (appComponents: Components): NestedComponent[] => {\n const nestedComponents = Object.keys(appComponents).reduce((acc: NestedComponent[], current) => {\n const componentAttributes = appComponents?.[current]?.schema?.attributes ?? [];\n const currentComponentNestedCompos = getComponentsNestedWithinComponent(\n componentAttributes,\n current as Internal.UID.Component\n );\n return [...acc, ...currentComponentNestedCompos];\n }, []);\n\n return mergeComponents(nestedComponents);\n};\n\nconst getComponentsNestedWithinComponent = (\n componentAttributes: AttributeType[],\n parentCompoUid: Internal.UID.Component\n) => {\n return componentAttributes.reduce((acc: NestedComponent[], current) => {\n const { type, component } = current;\n if (type === 'component') {\n acc.push({\n component,\n parentCompoUid,\n });\n }\n\n return acc;\n }, []);\n};\n\n// Merge duplicate components\nconst mergeComponents = (originalComponents: NestedComponent[]): NestedComponent[] => {\n const componentMap = new Map();\n // Populate the map with component and its parents\n originalComponents.forEach(({ component, parentCompoUid }) => {\n if (!componentMap.has(component)) {\n componentMap.set(component, new Set());\n }\n componentMap.get(component).add(parentCompoUid);\n });\n\n // Convert the map to the desired array format\n const transformedComponents: NestedComponent[] = Array.from(componentMap.entries()).map(\n ([component, parentCompoUidSet]) => ({\n component,\n uidsOfAllParents: Array.from(parentCompoUidSet),\n })\n );\n\n return transformedComponents;\n};\n","import get from 'lodash/get';\n\nimport { makeUnique } from '../../../utils/makeUnique';\n\nexport const retrieveSpecificInfoFromComponents = (allComponents: any, keysToRetrieve: any) => {\n const allData = Object.keys(allComponents).map((compo) => {\n return get(allComponents, [compo, ...keysToRetrieve], '');\n });\n\n return makeUnique(allData);\n};\n","const SERVER_HAS_NOT_BEEN_KILLED_MESSAGE = 'did-not-kill-server';\nconst SERVER_HAS_BEEN_KILLED_MESSAGE = 'server is down';\n\n/**\n * Server restart watcher\n * Sends an HEAD method to check if the server has been shut down correctly\n * and then pings until it's back on\n */\nexport function serverRestartWatcher(response: any, didShutDownServer?: boolean) {\n return new Promise((resolve) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n fetch(`${window.strapi.backendURL}/_health`, {\n method: 'HEAD',\n mode: 'no-cors',\n headers: {\n 'Content-Type': 'application/json',\n 'Keep-Alive': 'false',\n },\n })\n .then((res) => {\n if (res.status >= 400) {\n throw new Error(SERVER_HAS_BEEN_KILLED_MESSAGE);\n }\n\n if (!didShutDownServer) {\n throw new Error(SERVER_HAS_NOT_BEEN_KILLED_MESSAGE);\n }\n\n resolve(response);\n })\n .catch((err) => {\n setTimeout(() => {\n return serverRestartWatcher(\n response,\n err.message !== SERVER_HAS_NOT_BEEN_KILLED_MESSAGE\n ).then(resolve);\n }, 100);\n });\n });\n}\n","export const validateSchema = (schema: any) => {\n const dynamicZoneAttributes = Object.values(schema.attributes).filter(\n (attribute: any) => attribute.type === 'dynamiczone'\n );\n\n return dynamicZoneAttributes.every(\n (attribute: any) => Array.isArray(attribute.components) && attribute.components.length > 0\n );\n};\n","import { memo, useEffect, useMemo, useRef, ReactNode } from 'react';\n\nimport {\n Page,\n useGuidedTour,\n useTracking,\n useStrapiApp,\n useNotification,\n useAppInfo,\n useFetchClient,\n useAuth,\n} from '@strapi/admin/strapi-admin';\nimport get from 'lodash/get';\nimport groupBy from 'lodash/groupBy';\nimport set from 'lodash/set';\nimport size from 'lodash/size';\nimport { useIntl } from 'react-intl';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { Navigate, useLocation, useMatch } from 'react-router-dom';\n\nimport { DataManagerContext } from '../../contexts/DataManagerContext';\nimport { useFormModalNavigation } from '../../hooks/useFormModalNavigation';\nimport { pluginId } from '../../pluginId';\nimport { getTrad } from '../../utils/getTrad';\nimport { useAutoReloadOverlayBlocker } from '../AutoReloadOverlayBlocker';\nimport { FormModal } from '../FormModal/FormModal';\n\nimport {\n ADD_ATTRIBUTE,\n ADD_CREATED_COMPONENT_TO_DYNAMIC_ZONE,\n ADD_CUSTOM_FIELD_ATTRIBUTE,\n CHANGE_DYNAMIC_ZONE_COMPONENTS,\n CREATE_COMPONENT_SCHEMA,\n CREATE_SCHEMA,\n DELETE_NOT_SAVED_TYPE,\n EDIT_ATTRIBUTE,\n EDIT_CUSTOM_FIELD_ATTRIBUTE,\n GET_DATA_SUCCEEDED,\n RELOAD_PLUGIN,\n REMOVE_COMPONENT_FROM_DYNAMIC_ZONE,\n REMOVE_FIELD,\n REMOVE_FIELD_FROM_DISPLAYED_COMPONENT,\n SET_MODIFIED_DATA,\n UPDATE_SCHEMA,\n UPDATE_INITIAL_STATE,\n} from './constants';\nimport { makeSelectDataManagerProvider } from './selectors';\nimport { formatMainDataType, getComponentsToPost, sortContentType } from './utils/cleanData';\nimport { createDataObject } from './utils/createDataObject';\nimport { createModifiedDataSchema } from './utils/createModifiedDataSchema';\nimport { formatSchemas } from './utils/formatSchemas';\nimport { retrieveComponentsFromSchema } from './utils/retrieveComponentsFromSchema';\nimport { retrieveComponentsThatHaveComponents } from './utils/retrieveComponentsThatHaveComponents';\nimport { retrieveNestedComponents } from './utils/retrieveNestedComponents';\nimport { retrieveSpecificInfoFromComponents } from './utils/retrieveSpecificInfoFromComponents';\nimport { serverRestartWatcher } from './utils/serverRestartWatcher';\nimport { validateSchema } from './utils/validateSchema';\n\nimport type { ContentType, SchemaType, Components } from '../../types';\nimport type { Internal } from '@strapi/types';\n\ninterface DataManagerProviderProps {\n children: ReactNode;\n}\n\ninterface CustomFieldAttributeParams {\n attributeToSet: Record<string, any>;\n forTarget: SchemaType;\n targetUid: Internal.UID.Schema;\n initialAttribute: Record<string, any>;\n}\n\nconst DataManagerProvider = ({ children }: DataManagerProviderProps) => {\n const dispatch = useDispatch();\n const {\n components,\n contentTypes,\n isLoading,\n isLoadingForDataToBeSet,\n initialData,\n modifiedData,\n reservedNames,\n } = useSelector(makeSelectDataManagerProvider());\n const { toggleNotification } = useNotification();\n const { lockAppWithAutoreload, unlockAppWithAutoreload } = useAutoReloadOverlayBlocker();\n const { setCurrentStep, setStepState } = useGuidedTour('DataManagerProvider', (state) => state);\n\n const getPlugin = useStrapiApp('DataManagerProvider', (state) => state.getPlugin);\n\n const plugin = getPlugin(pluginId);\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 { pathname } = useLocation();\n const { onCloseModal } = useFormModalNavigation();\n const contentTypeMatch = useMatch(`/plugins/${pluginId}/content-types/:uid`);\n const componentMatch = useMatch(\n `/plugins/${pluginId}/component-categories/:categoryUid/:componentUid`\n );\n const fetchClient = useFetchClient();\n const { put, post, del } = fetchClient;\n\n const formatMessageRef = useRef<any>();\n formatMessageRef.current = formatMessage;\n const isInDevelopmentMode = autoReload;\n\n const isInContentTypeView = contentTypeMatch !== null;\n const firstKeyToMainSchema = isInContentTypeView ? 'contentType' : 'component';\n const currentUid = isInContentTypeView\n ? get(contentTypeMatch, 'params.uid', null)\n : get(componentMatch, 'params.componentUid', null);\n\n const getDataRef = useRef<any>();\n const endPoint = isInContentTypeView ? 'content-types' : 'components';\n\n getDataRef.current = async () => {\n try {\n const [\n {\n data: { data: componentsArray },\n },\n {\n data: { data: contentTypesArray },\n },\n { data: reservedNames },\n ] = await Promise.all(\n ['components', 'content-types', 'reserved-names'].map((endPoint) => {\n return fetchClient.get<{ data: any }>(`/${pluginId}/${endPoint}`);\n })\n );\n\n const components = createDataObject(componentsArray);\n const formattedComponents = formatSchemas(components);\n const contentTypes = createDataObject(contentTypesArray);\n const formattedContentTypes = formatSchemas(contentTypes);\n\n dispatch({\n type: GET_DATA_SUCCEEDED,\n components: formattedComponents,\n contentTypes: formattedContentTypes,\n reservedNames,\n });\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 useEffect(() => {\n getDataRef.current();\n\n return () => {\n // Reload the plugin so the cycle is new again\n dispatch({ type: RELOAD_PLUGIN });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n // We need to set the modifiedData after the data has been retrieved\n // and also on pathname change\n if (!isLoading && currentUid) {\n setModifiedData();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isLoading, pathname, currentUid]);\n\n useEffect(() => {\n if (!autoReload) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: getTrad('notification.info.autoreaload-disable') }),\n });\n }\n }, [autoReload, toggleNotification]);\n\n const addAttribute = (\n attributeToSet: Record<string, any>,\n forTarget: SchemaType,\n targetUid: Internal.UID.Schema,\n isEditing = false,\n initialAttribute?: Record<string, any>,\n shouldAddComponentToData = false\n ) => {\n const actionType = isEditing ? EDIT_ATTRIBUTE : ADD_ATTRIBUTE;\n\n dispatch({\n type: actionType,\n attributeToSet,\n forTarget,\n targetUid,\n initialAttribute,\n shouldAddComponentToData,\n });\n };\n\n const addCustomFieldAttribute = ({\n attributeToSet,\n forTarget,\n targetUid,\n initialAttribute,\n }: CustomFieldAttributeParams) => {\n dispatch({\n type: ADD_CUSTOM_FIELD_ATTRIBUTE,\n attributeToSet,\n forTarget,\n targetUid,\n initialAttribute,\n });\n };\n\n const editCustomFieldAttribute = ({\n attributeToSet,\n forTarget,\n targetUid,\n initialAttribute,\n }: CustomFieldAttributeParams) => {\n dispatch({\n type: EDIT_CUSTOM_FIELD_ATTRIBUTE,\n attributeToSet,\n forTarget,\n targetUid,\n initialAttribute,\n });\n };\n\n const addCreatedComponentToDynamicZone = (\n dynamicZoneTarget: string,\n componentsToAdd: string[]\n ) => {\n dispatch({\n type: ADD_CREATED_COMPONENT_TO_DYNAMIC_ZONE,\n dynamicZoneTarget,\n componentsToAdd,\n });\n };\n\n const createSchema = (\n data: Record<string, any>,\n schemaType: SchemaType,\n uid: Internal.UID.Schema,\n componentCategory?: string,\n shouldAddComponentToData = false\n ) => {\n const type = schemaType === 'contentType' ? CREATE_SCHEMA : CREATE_COMPONENT_SCHEMA;\n\n dispatch({\n type,\n data,\n componentCategory,\n schemaType,\n uid,\n shouldAddComponentToData,\n });\n };\n\n const changeDynamicZoneComponents = (dynamicZoneTarget: string, newComponents: string[]) => {\n dispatch({\n type: CHANGE_DYNAMIC_ZONE_COMPONENTS,\n dynamicZoneTarget,\n newComponents,\n });\n };\n\n const removeAttribute = (\n mainDataKey: string,\n attributeToRemoveName: string,\n componentUid = ''\n ) => {\n const type =\n mainDataKey === 'components' ? REMOVE_FIELD_FROM_DISPLAYED_COMPONENT : REMOVE_FIELD;\n\n if (mainDataKey === 'contentType') {\n trackUsage('willDeleteFieldOfContentType');\n }\n\n dispatch({\n type,\n mainDataKey,\n attributeToRemoveName,\n componentUid,\n });\n };\n\n const deleteCategory = async (categoryUid: string) => {\n try {\n const requestURL = `/${pluginId}/component-categories/${categoryUid}`;\n // eslint-disable-next-line no-alert\n const userConfirm = window.confirm(\n formatMessage({\n id: getTrad('popUpWarning.bodyMessage.category.delete'),\n })\n );\n // Close the modal\n onCloseModal();\n\n if (userConfirm) {\n lockAppWithAutoreload?.();\n\n await del(requestURL);\n\n // Make sure the server has restarted\n await serverRestartWatcher(true);\n\n // Unlock the app\n unlockAppWithAutoreload?.();\n\n await updatePermissions();\n }\n } catch (err) {\n console.error({ err });\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n } finally {\n unlockAppWithAutoreload?.();\n }\n };\n\n const deleteData = async () => {\n try {\n const requestURL = `/${pluginId}/${endPoint}/${currentUid}`;\n const isTemporary = get(modifiedData, [firstKeyToMainSchema, 'isTemporary'], false);\n // eslint-disable-next-line no-alert\n const userConfirm = window.confirm(\n formatMessage({\n id: getTrad(\n `popUpWarning.bodyMessage.${isInContentTypeView ? 'contentType' : 'component'}.delete`\n ),\n })\n );\n\n // Close the modal\n onCloseModal();\n\n if (userConfirm) {\n if (isTemporary) {\n // Delete the not saved type\n // Here we just need to reset the components to the initial ones and also the content types\n // Doing so will trigging a url change since the type doesn't exist in either the contentTypes or the components\n // so the modified and the initial data will also be reset in the useEffect...\n dispatch({ type: DELETE_NOT_SAVED_TYPE });\n\n return;\n }\n\n lockAppWithAutoreload?.();\n\n await del(requestURL);\n\n // Make sure the server has restarted\n await serverRestartWatcher(true);\n\n // Unlock the app\n await unlockAppWithAutoreload?.();\n\n // Refetch the permissions\n await updatePermissions();\n }\n } catch (err) {\n console.error({ err });\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n } finally {\n unlockAppWithAutoreload?.();\n }\n };\n\n const editCategory = async (categoryUid: string, body: any) => {\n try {\n const requestURL = `/${pluginId}/component-categories/${categoryUid}`;\n\n // Close the modal\n onCloseModal();\n\n // Lock the app\n lockAppWithAutoreload?.();\n\n // Update the category\n await put(requestURL, body);\n\n // Make sure the server has restarted\n await serverRestartWatcher(true);\n\n // Unlock the app\n await unlockAppWithAutoreload?.();\n\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 } finally {\n unlockAppWithAutoreload?.();\n }\n };\n\n const getAllComponentsThatHaveAComponentInTheirAttributes = () => {\n // We need to create an object with all the non modified compos\n // plus the ones that are created on the fly\n const allCompos = Object.assign({}, components, modifiedData.components);\n\n // Since we apply the modification of a specific component only in the modified data\n // we need to update all compos with the modifications\n if (!isInContentTypeView) {\n const currentEditedCompo = get(modifiedData, 'component', {});\n\n set(allCompos, get(currentEditedCompo, ['uid'], ''), currentEditedCompo);\n }\n\n const composWithCompos = retrieveComponentsThatHaveComponents(allCompos);\n\n return composWithCompos;\n };\n\n const getAllNestedComponents = () => {\n const appNestedCompo = retrieveNestedComponents(components);\n\n return appNestedCompo;\n };\n\n const removeComponentFromDynamicZone = (dzName: string, componentToRemoveIndex: number) => {\n dispatch({\n type: REMOVE_COMPONENT_FROM_DYNAMIC_ZONE,\n dzName,\n componentToRemoveIndex,\n });\n };\n\n const setModifiedData = () => {\n const currentSchemas = isInContentTypeView ? contentTypes : components;\n const schemaToSet = get(currentSchemas, currentUid ?? '', {\n schema: { attributes: [] },\n });\n\n const retrievedComponents = retrieveComponentsFromSchema(\n schemaToSet.schema.attributes,\n components\n );\n\n const newSchemaToSet = createModifiedDataSchema(\n schemaToSet,\n retrievedComponents,\n components,\n isInContentTypeView\n );\n\n const hasJustCreatedSchema =\n get(schemaToSet, 'isTemporary', false) &&\n size(get(schemaToSet, 'schema.attributes', [])) === 0;\n\n dispatch({\n type: SET_MODIFIED_DATA,\n schemaToSet: newSchemaToSet,\n hasJustCreatedSchema,\n });\n };\n\n const shouldRedirect = useMemo(() => {\n const dataSet = isInContentTypeView ? contentTypes : components;\n if (currentUid === 'create-content-type') {\n return false;\n }\n\n return !Object.keys(dataSet).includes(currentUid || '') && !isLoading;\n }, [components, contentTypes, currentUid, isInContentTypeView, isLoading]);\n\n const redirectEndpoint = useMemo(() => {\n const allowedEndpoints = Object.keys(contentTypes)\n .filter((uid) => get(contentTypes, [uid, 'schema', 'visible'], true))\n .sort();\n\n return get(allowedEndpoints, '0', 'create-content-type');\n }, [contentTypes]);\n\n if (shouldRedirect) {\n return <Navigate to={`/plugins/${pluginId}/content-types/${redirectEndpoint}`} />;\n }\n\n const submitData = async (additionalContentTypeData?: Record<string, any>) => {\n try {\n const isCreating = get(modifiedData, [firstKeyToMainSchema, 'isTemporary'], false);\n\n const body: {\n components: any[];\n contentType?: Record<string, any>;\n component?: any;\n } = {\n components: getComponentsToPost(\n modifiedData.components as Components,\n components as Components,\n currentUid as Internal.UID.Schema\n ),\n };\n\n if (isInContentTypeView) {\n const PluginForms = plugin?.apis?.forms as any;\n const contentType = PluginForms.mutateContentTypeSchema(\n {\n ...formatMainDataType(modifiedData.contentType),\n ...additionalContentTypeData,\n },\n initialData.contentType\n ) as ContentType;\n\n const isValidSchema = validateSchema(contentType);\n\n if (!isValidSchema) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTrad('notification.error.dynamiczone-min.validation'),\n defaultMessage:\n 'At least one component is required in a dynamic zone to be able to save a content type',\n }),\n });\n\n return;\n }\n\n body.contentType = contentType;\n\n trackUsage('willSaveContentType');\n } else {\n body.component = formatMainDataType(modifiedData.component, true);\n\n trackUsage('willSaveComponent');\n }\n\n // Lock the app\n lockAppWithAutoreload?.();\n\n const baseURL = `/${pluginId}/${endPoint}`;\n const requestURL = isCreating ? baseURL : `${baseURL}/${currentUid}`;\n\n if (isCreating) {\n await post(requestURL, body);\n } else {\n await put(requestURL, body);\n }\n\n if (\n isCreating &&\n (initialData.contentType?.schema.kind === 'collectionType' ||\n initialData.contentType?.schema.kind === 'singleType')\n ) {\n setStepState('contentTypeBuilder.success', true);\n trackUsage('didCreateGuidedTourCollectionType');\n setCurrentStep(null);\n }\n\n // Submit ct tracking success\n if (isInContentTypeView) {\n trackUsage('didSaveContentType');\n\n const oldName = get(body, ['contentType', 'schema', 'name'], '');\n const newName = get(initialData, ['contentType', 'schema', 'name'], '');\n\n if (!isCreating && oldName !== newName) {\n trackUsage('didEditNameOfContentType');\n }\n } else {\n trackUsage('didSaveComponent');\n }\n\n // Make sure the server has restarted\n await serverRestartWatcher(true);\n\n // Unlock the app\n unlockAppWithAutoreload?.();\n\n // refetch and update initial state after the data has been saved\n await getDataRef.current();\n dispatch({ type: UPDATE_INITIAL_STATE });\n\n // Update the app's permissions\n await updatePermissions();\n } catch (err: any) {\n if (!isInContentTypeView) {\n trackUsage('didNotSaveComponent');\n }\n\n console.error({ err: err.response });\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n } finally {\n unlockAppWithAutoreload?.();\n }\n };\n\n const updatePermissions = async () => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n await refetchPermissions();\n };\n\n const updateSchema = (\n data: Record<string, any>,\n schemaType: SchemaType,\n componentUID: Internal.UID.Schema\n ) => {\n dispatch({\n type: UPDATE_SCHEMA,\n data,\n schemaType,\n uid: componentUID,\n });\n };\n\n return (\n <DataManagerContext.Provider\n value={{\n addAttribute,\n addCustomFieldAttribute,\n addCreatedComponentToDynamicZone,\n allComponentsCategories: retrieveSpecificInfoFromComponents(components, ['category']),\n changeDynamicZoneComponents,\n components,\n componentsGroupedByCategory: groupBy(components, 'category') as Record<string, any[]>,\n componentsThatHaveOtherComponentInTheirAttributes:\n getAllComponentsThatHaveAComponentInTheirAttributes(),\n contentTypes,\n createSchema,\n deleteCategory,\n deleteData,\n editCategory,\n editCustomFieldAttribute,\n isInDevelopmentMode,\n initialData,\n isInContentTypeView,\n modifiedData,\n nestedComponents: getAllNestedComponents(),\n removeAttribute,\n removeComponentFromDynamicZone,\n reservedNames,\n setModifiedData,\n sortedContentTypesList: sortContentType(contentTypes),\n submitData,\n updateSchema,\n }}\n >\n {isLoadingForDataToBeSet ? (\n <Page.Loading />\n ) : (\n <>\n {children}\n {isInDevelopmentMode && <FormModal />}\n </>\n )}\n </DataManagerContext.Provider>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default memo(DataManagerProvider);\n","const INITIAL_STATE_DATA = {\n actionType: null,\n attributeName: null,\n attributeType: null,\n categoryName: null,\n dynamicZoneTarget: null,\n forTarget: null,\n modalType: null,\n isOpen: false,\n showBackLink: false,\n kind: null,\n step: null,\n targetUid: null,\n customFieldUid: null,\n activeTab: 'basic',\n};\n\nexport { INITIAL_STATE_DATA };\n","import * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\n\nimport { FormModalNavigationContext } from '../../contexts/FormModalNavigationContext';\n\nimport { INITIAL_STATE_DATA } from './constants';\n\ntype FormModalNavigationProviderProps = {\n children: React.ReactNode;\n};\n\nexport type State = any;\n\nexport type ModalEventProps = {\n attributeType?: string;\n customFieldUid?: string;\n dynamicZoneTarget?: string;\n forTarget?: string;\n targetUid?: string;\n attributeName?: string;\n step?: string | null;\n kind?: string;\n categoryName?: string;\n modalType?: string;\n actionType?: string;\n isOpen?: boolean;\n showBackLink?: boolean;\n};\n\nexport const FormModalNavigationProvider = ({ children }: FormModalNavigationProviderProps) => {\n const [state, setFormModalNavigationState] = React.useState(INITIAL_STATE_DATA);\n const { trackUsage } = useTracking();\n\n const onClickSelectCustomField = ({ attributeType, customFieldUid }: ModalEventProps) => {\n // TODO: Add tracking for custom fields\n setFormModalNavigationState((prevState: any) => {\n return {\n ...prevState,\n actionType: 'create',\n modalType: 'customField',\n attributeType,\n customFieldUid,\n activeTab: 'basic',\n };\n });\n };\n\n const onClickSelectField = ({ attributeType, step }: ModalEventProps) => {\n if (state.forTarget === 'contentType') {\n trackUsage('didSelectContentTypeFieldType', { type: attributeType });\n }\n\n setFormModalNavigationState((prevState: State) => {\n return {\n ...prevState,\n actionType: 'create',\n modalType: 'attribute',\n step,\n attributeType,\n showBackLink: true,\n activeTab: 'basic',\n };\n });\n };\n\n const onOpenModalAddComponentsToDZ = ({ dynamicZoneTarget, targetUid }: ModalEventProps) => {\n setFormModalNavigationState((prevState: State) => {\n return {\n ...prevState,\n dynamicZoneTarget,\n targetUid,\n modalType: 'addComponentToDynamicZone',\n forTarget: 'contentType',\n step: '1',\n actionType: 'edit',\n isOpen: true,\n };\n });\n };\n\n const onOpenModalAddField = ({ forTarget, targetUid }: ModalEventProps) => {\n setFormModalNavigationState((prevState: State) => {\n return {\n ...prevState,\n actionType: 'create',\n forTarget,\n targetUid,\n modalType: 'chooseAttribute',\n isOpen: true,\n showBackLink: false,\n activeTab: 'basic',\n };\n });\n };\n\n const onOpenModalCreateSchema = (nextState: State) => {\n setFormModalNavigationState((prevState) => {\n return { ...prevState, ...nextState, isOpen: true, activeTab: 'basic' };\n });\n };\n\n const onOpenModalEditCategory = (categoryName: string) => {\n setFormModalNavigationState((prevState: State) => {\n return {\n ...prevState,\n categoryName,\n actionType: 'edit',\n modalType: 'editCategory',\n isOpen: true,\n activeTab: 'basic',\n };\n });\n };\n\n const onOpenModalEditCustomField = ({\n forTarget,\n targetUid,\n attributeName,\n attributeType,\n customFieldUid,\n }: ModalEventProps) => {\n setFormModalNavigationState((prevState: State) => {\n return {\n ...prevState,\n modalType: 'customField',\n customFieldUid,\n actionType: 'edit',\n forTarget,\n targetUid,\n attributeName,\n attributeType,\n isOpen: true,\n activeTab: 'basic',\n };\n });\n };\n\n const onOpenModalEditField = ({\n forTarget,\n targetUid,\n attributeName,\n attributeType,\n step,\n }: ModalEventProps) => {\n setFormModalNavigationState((prevState: State) => {\n return {\n ...prevState,\n modalType: 'attribute',\n actionType: 'edit',\n forTarget,\n targetUid,\n attributeName,\n attributeType,\n step,\n isOpen: true,\n };\n });\n };\n\n const onOpenModalEditSchema = ({ modalType, forTarget, targetUid, kind }: ModalEventProps) => {\n setFormModalNavigationState((prevState: State) => {\n return {\n ...prevState,\n modalType,\n actionType: 'edit',\n forTarget,\n targetUid,\n kind,\n isOpen: true,\n activeTab: 'basic',\n };\n });\n };\n\n const onCloseModal = () => {\n setFormModalNavigationState(INITIAL_STATE_DATA);\n };\n\n const onNavigateToChooseAttributeModal = ({ forTarget, targetUid }: ModalEventProps) => {\n setFormModalNavigationState((prev: State) => {\n return {\n ...prev,\n forTarget,\n targetUid,\n modalType: 'chooseAttribute',\n activeTab: 'basic',\n };\n });\n };\n\n const onNavigateToCreateComponentStep2 = () => {\n setFormModalNavigationState((prev: State) => {\n return {\n ...prev,\n attributeType: 'component',\n modalType: 'attribute',\n step: '2',\n activeTab: 'basic',\n };\n });\n };\n\n const onNavigateToAddCompoToDZModal = ({ dynamicZoneTarget }: ModalEventProps) => {\n setFormModalNavigationState((prev: State) => {\n return {\n ...prev,\n dynamicZoneTarget,\n modalType: 'addComponentToDynamicZone',\n actionType: 'create',\n step: '1',\n attributeType: null,\n attributeName: null,\n activeTab: 'basic',\n };\n });\n };\n\n const setActiveTab = (value: string) => {\n setFormModalNavigationState((prev: State) => {\n return {\n ...prev,\n activeTab: value,\n };\n });\n };\n\n return (\n <FormModalNavigationContext.Provider\n value={\n {\n ...state,\n onClickSelectField,\n onClickSelectCustomField,\n onCloseModal,\n onNavigateToChooseAttributeModal,\n onNavigateToAddCompoToDZModal,\n onOpenModalAddComponentsToDZ,\n onNavigateToCreateComponentStep2,\n onOpenModalAddField,\n onOpenModalCreateSchema,\n onOpenModalEditCategory,\n onOpenModalEditField,\n onOpenModalEditCustomField,\n onOpenModalEditSchema,\n setFormModalNavigationState,\n setActiveTab,\n } as any\n }\n >\n {children}\n </FormModalNavigationContext.Provider>\n );\n};\n","import { lazy, Suspense } from 'react';\n\nimport { Page } from '@strapi/admin/strapi-admin';\nimport { Route, Routes } from 'react-router-dom';\n\nconst ListView = lazy(() => import('../ListView/ListView'));\n\nexport const RecursivePath = () => {\n return (\n <Suspense fallback={<Page.Loading />}>\n <Routes>\n <Route path={`/:componentUid`} element={<ListView />} />\n </Routes>\n </Suspense>\n );\n};\n","/* eslint-disable import/no-default-export */\n/* eslint-disable check-file/filename-naming-convention */\n/* eslint-disable check-file/no-index */\nimport { lazy, Suspense, useEffect, useRef } from 'react';\n\nimport { Page, useGuidedTour, Layouts } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { AutoReloadOverlayBlockerProvider } from '../../components/AutoReloadOverlayBlocker';\nimport { ContentTypeBuilderNav } from '../../components/ContentTypeBuilderNav/ContentTypeBuilderNav';\nimport DataManagerProvider from '../../components/DataManagerProvider/DataManagerProvider';\nimport { FormModalNavigationProvider } from '../../components/FormModalNavigationProvider/FormModalNavigationProvider';\nimport { PERMISSIONS } from '../../constants';\nimport { pluginId } from '../../pluginId';\nimport { RecursivePath } from '../RecursivePath/RecursivePath';\n\nconst ListView = lazy(() => import('../ListView/ListView'));\n\nconst App = () => {\n const { formatMessage } = useIntl();\n const title = formatMessage({\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Content Types Builder',\n });\n const startSection = useGuidedTour('App', (state) => state.startSection);\n const startSectionRef = useRef(startSection);\n\n useEffect(() => {\n if (startSectionRef.current) {\n startSectionRef.current('contentTypeBuilder');\n }\n }, []);\n\n // FIXME Error here\n return (\n <Page.Protect permissions={PERMISSIONS.main}>\n <Page.Title>{title}</Page.Title>\n <AutoReloadOverlayBlockerProvider>\n <FormModalNavigationProvider>\n {/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n {/* @ts-ignore */}\n <DataManagerProvider>\n <Layouts.Root sideNav={<ContentTypeBuilderNav />}>\n <Suspense fallback={<Page.Loading />}>\n <Routes>\n <Route path=\"content-types/:uid\" element={<ListView />} />\n <Route path={`component-categories/:categoryUid/*`} element={<RecursivePath />} />\n </Routes>\n </Suspense>\n </Layouts.Root>\n </DataManagerProvider>\n </FormModalNavigationProvider>\n </AutoReloadOverlayBlockerProvider>\n </Page.Protect>\n );\n};\n\nexport default App;\n"],"names":["pluginId","createContext","useContext","React","useNotification","useIntl","useTracking","useState","useFilter","useCollator","isEqual","components","data","filteredLinks","link","styled","SubNavLink","jsxs","SubNav","jsx","SubNavHeader","SubNavSections","Fragment","SubNavSection","SubNavLinkSection","upperFirst","NavLink","Box","TextButton","Plus","Field","MultiSelectNested","NumberField","BlocksField","BooleanField","CollectionType","ComponentField","DateField","DynamicZoneField","EmailField","EnumerationField","MediaField","JsonField","PasswordField","RelationField","MarkdownField","SingleType","TextField","UidField","useStrapiApp","Flex","Sparkle","Typography","KeyboardNavigable","index","Grid","EmptyDocuments","LinkButton","Link","qs","Modal","Tabs","Divider","options","value","SingleSelect","intlLabel","SingleSelectOption","Wrapper","inputFocusStyle","Checkbox","TextInput","NumberInput","Dialog","ConfirmDialog","Button","ArrowLeft","Breadcrumbs","Crumb","Icons","Symbols","VisuallyHidden","useRef","useEffect","Searchbar","IconButton","Search","Tooltip","Trash","nameToSlug","pluralize","attribute","error","JSONInput","Toggle","DateTimePicker","DatePicker","formatISO","Eye","EyeStriked","disabled","Textarea","TimePicker","useDispatch","plugin","ON_CHANGE_RELATION_TARGET","Menu","GenericInput","OneWay","OneToOne","OneToMany","ManyToOne","ManyToMany","ManyWay","get","ON_CHANGE_RELATION_TYPE","truncate","getRelationType","Combobox","ComboboxOption","MAX_COMPONENT_DEPTH","key","nameField","slugify","errorsTrads","snakeCase","yup","toNumber","uniq","values","createComponentUid","createUid","baseForm","initialState","createSelector","acc","current","useSelector","shallowEqual","useNavigate","SET_DATA_TO_EDIT","kind","SET_DYNAMIC_ZONE_DATA_SCHEMA","set","SET_CUSTOM_FIELD_DATA_SCHEMA","SET_ATTRIBUTE_DATA_SCHEMA","RESET_PROPS","SET_ERRORS","ON_CHANGE","toLower","RESET_PROPS_AND_SET_THE_FORM_FOR_ADDING_A_COMPO_TO_A_DZ","RESET_PROPS_AND_SET_FORM_FOR_ADDING_AN_EXISTING_COMPO","RESET_PROPS_AND_SAVE_CURRENT_DATA","has","advancedForm","makeUnique","omit","sortBy","camelCase","useAutoReloadOverlayBlocker","useGuidedTour","useAppInfo","useAuth","useLocation","useMatch","useFetchClient","reservedNames","endPoint","contentTypes","GET_DATA_SUCCEEDED","RELOAD_PLUGIN","EDIT_ATTRIBUTE","ADD_ATTRIBUTE","ADD_CUSTOM_FIELD_ATTRIBUTE","EDIT_CUSTOM_FIELD_ATTRIBUTE","ADD_CREATED_COMPONENT_TO_DYNAMIC_ZONE","CREATE_SCHEMA","CREATE_COMPONENT_SCHEMA","CHANGE_DYNAMIC_ZONE_COMPONENTS","REMOVE_FIELD_FROM_DISPLAYED_COMPONENT","REMOVE_FIELD","DELETE_NOT_SAVED_TYPE","REMOVE_COMPONENT_FROM_DYNAMIC_ZONE","retrieveComponentsFromSchema","size","SET_MODIFIED_DATA","useMemo","Navigate","UPDATE_INITIAL_STATE","UPDATE_SCHEMA","groupBy","Page","memo","ListView","lazy","Suspense","Routes","Route","PERMISSIONS","AutoReloadOverlayBlockerProvider","DataManagerProvider","Layouts"],"mappings":"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"}
|