@strapi/content-type-builder 5.13.1 → 5.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/AttributeIcon.js +1 -0
- package/dist/admin/components/AttributeIcon.js.map +1 -1
- package/dist/admin/components/AttributeIcon.mjs +1 -0
- package/dist/admin/components/AttributeIcon.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.js +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.js.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.mjs +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldOption.js +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldOption.js.map +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldOption.mjs +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldOption.mjs.map +1 -1
- package/dist/admin/components/AttributeRow.js +342 -0
- package/dist/admin/components/AttributeRow.js.map +1 -0
- package/dist/admin/components/AttributeRow.mjs +339 -0
- package/dist/admin/components/AttributeRow.mjs.map +1 -0
- package/dist/admin/components/AutoReloadOverlayBlocker.js +5 -2
- package/dist/admin/components/AutoReloadOverlayBlocker.js.map +1 -1
- package/dist/admin/components/AutoReloadOverlayBlocker.mjs +5 -2
- package/dist/admin/components/AutoReloadOverlayBlocker.mjs.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.js +13 -11
- package/dist/admin/components/ComponentCard/ComponentCard.js.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.mjs +13 -11
- package/dist/admin/components/ComponentCard/ComponentCard.mjs.map +1 -1
- package/dist/admin/components/ComponentList.js +12 -26
- package/dist/admin/components/ComponentList.js.map +1 -1
- package/dist/admin/components/ComponentList.mjs +12 -26
- package/dist/admin/components/ComponentList.mjs.map +1 -1
- package/dist/admin/components/{Tr.js → ComponentRow.js} +9 -15
- package/dist/admin/components/ComponentRow.js.map +1 -0
- package/dist/admin/components/{Tr.mjs → ComponentRow.mjs} +9 -15
- package/dist/admin/components/ComponentRow.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js +253 -70
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +256 -73
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +53 -81
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs +54 -82
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
- package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -0
- package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -0
- package/dist/admin/components/DataManager/DataManagerProvider.js +344 -0
- package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -0
- package/dist/admin/components/DataManager/DataManagerProvider.mjs +323 -0
- package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -0
- package/dist/admin/components/DataManager/reducer.js +546 -0
- package/dist/admin/components/DataManager/reducer.js.map +1 -0
- package/dist/admin/components/DataManager/reducer.mjs +542 -0
- package/dist/admin/components/DataManager/reducer.mjs.map +1 -0
- package/dist/admin/components/DataManager/undoRedo.js +102 -0
- package/dist/admin/components/DataManager/undoRedo.js.map +1 -0
- package/dist/admin/components/DataManager/undoRedo.mjs +100 -0
- package/dist/admin/components/DataManager/undoRedo.mjs.map +1 -0
- package/dist/admin/{hooks → components/DataManager}/useDataManager.js +1 -1
- package/dist/admin/components/DataManager/useDataManager.js.map +1 -0
- package/dist/admin/{hooks → components/DataManager}/useDataManager.mjs +1 -1
- package/dist/admin/components/DataManager/useDataManager.mjs.map +1 -0
- package/dist/admin/components/DataManager/useServerRestartWatcher.js +35 -0
- package/dist/admin/components/DataManager/useServerRestartWatcher.js.map +1 -0
- package/dist/admin/components/DataManager/useServerRestartWatcher.mjs +33 -0
- package/dist/admin/components/DataManager/useServerRestartWatcher.mjs.map +1 -0
- package/dist/admin/components/DataManager/utils/cleanData.js +128 -0
- package/dist/admin/components/DataManager/utils/cleanData.js.map +1 -0
- package/dist/admin/components/DataManager/utils/cleanData.mjs +125 -0
- package/dist/admin/components/DataManager/utils/cleanData.mjs.map +1 -0
- package/dist/admin/components/DataManager/utils/formatSchemas.js +21 -0
- package/dist/admin/components/DataManager/utils/formatSchemas.js.map +1 -0
- package/dist/admin/components/DataManager/utils/formatSchemas.mjs +18 -0
- package/dist/admin/components/DataManager/utils/formatSchemas.mjs.map +1 -0
- package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveComponentsThatHaveComponents.js +1 -5
- package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.js.map +1 -0
- package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveComponentsThatHaveComponents.mjs +1 -5
- package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.mjs.map +1 -0
- package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveNestedComponents.js +3 -3
- package/dist/admin/components/DataManager/utils/retrieveNestedComponents.js.map +1 -0
- package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveNestedComponents.mjs +3 -3
- package/dist/admin/components/DataManager/utils/retrieveNestedComponents.mjs.map +1 -0
- package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js.map +1 -0
- package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.mjs.map +1 -0
- package/dist/admin/components/DisplayedType.js +14 -14
- package/dist/admin/components/DisplayedType.js.map +1 -1
- package/dist/admin/components/DisplayedType.mjs +15 -15
- package/dist/admin/components/DisplayedType.mjs.map +1 -1
- package/dist/admin/components/DynamicZoneList.js +34 -38
- package/dist/admin/components/DynamicZoneList.js.map +1 -1
- package/dist/admin/components/DynamicZoneList.mjs +36 -40
- package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
- package/dist/admin/components/ExitPrompt.js +50 -0
- package/dist/admin/components/ExitPrompt.js.map +1 -0
- package/dist/admin/components/ExitPrompt.mjs +48 -0
- package/dist/admin/components/ExitPrompt.mjs.map +1 -0
- package/dist/admin/components/{NestedFooter.js → Footers.js} +35 -2
- package/dist/admin/components/Footers.js.map +1 -0
- package/dist/admin/components/{NestedFooter.mjs → Footers.mjs} +36 -4
- package/dist/admin/components/Footers.mjs.map +1 -0
- package/dist/admin/components/FormModal/FormModal.js +198 -164
- package/dist/admin/components/FormModal/FormModal.js.map +1 -1
- package/dist/admin/components/FormModal/FormModal.mjs +198 -165
- package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/types.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/types.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
- package/dist/admin/components/FormModal/component/createComponentSchema.js +2 -2
- package/dist/admin/components/FormModal/component/createComponentSchema.js.map +1 -1
- package/dist/admin/components/FormModal/component/createComponentSchema.mjs +1 -1
- package/dist/admin/components/FormModal/component/createComponentSchema.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.js +10 -27
- package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.mjs +10 -27
- package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.js.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.mjs.map +1 -1
- package/dist/admin/components/FormModal/reducer.js +4 -4
- package/dist/admin/components/FormModal/reducer.js.map +1 -1
- package/dist/admin/components/FormModal/reducer.mjs +4 -4
- package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/canEditContentType.js +9 -14
- package/dist/admin/components/FormModal/utils/canEditContentType.js.map +1 -1
- package/dist/admin/components/FormModal/utils/canEditContentType.mjs +9 -14
- package/dist/admin/components/FormModal/utils/canEditContentType.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/getAttributesToDisplay.js.map +1 -1
- package/dist/admin/components/FormModal/utils/getAttributesToDisplay.mjs.map +1 -1
- package/dist/admin/components/FormModalEndActions.js +1 -34
- package/dist/admin/components/FormModalEndActions.js.map +1 -1
- package/dist/admin/components/FormModalEndActions.mjs +1 -34
- package/dist/admin/components/FormModalEndActions.mjs.map +1 -1
- package/dist/admin/components/FormModalHeader.js +10 -28
- package/dist/admin/components/FormModalHeader.js.map +1 -1
- package/dist/admin/components/FormModalHeader.mjs +10 -28
- package/dist/admin/components/FormModalHeader.mjs.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js.map +1 -0
- package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.mjs.map +1 -0
- package/dist/admin/components/{FormModalNavigationProvider → FormModalNavigation}/FormModalNavigationProvider.js +91 -114
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js.map +1 -0
- package/dist/admin/components/{FormModalNavigationProvider → FormModalNavigation}/FormModalNavigationProvider.mjs +91 -96
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs.map +1 -0
- package/dist/admin/{hooks → components/FormModalNavigation}/useFormModalNavigation.js +1 -1
- package/dist/admin/components/FormModalNavigation/useFormModalNavigation.js.map +1 -0
- package/dist/admin/{hooks → components/FormModalNavigation}/useFormModalNavigation.mjs +1 -1
- package/dist/admin/components/FormModalNavigation/useFormModalNavigation.mjs.map +1 -0
- package/dist/admin/components/FormModalSubHeader.js.map +1 -1
- package/dist/admin/components/FormModalSubHeader.mjs.map +1 -1
- package/dist/admin/components/GenericInputs.js +9 -5
- package/dist/admin/components/GenericInputs.js.map +1 -1
- package/dist/admin/components/GenericInputs.mjs +9 -5
- package/dist/admin/components/GenericInputs.mjs.map +1 -1
- package/dist/admin/components/List.js +149 -199
- package/dist/admin/components/List.js.map +1 -1
- package/dist/admin/components/List.mjs +151 -202
- package/dist/admin/components/List.mjs.map +1 -1
- package/dist/admin/components/Relation/Relation.js +3 -2
- package/dist/admin/components/Relation/Relation.js.map +1 -1
- package/dist/admin/components/Relation/Relation.mjs +3 -2
- package/dist/admin/components/Relation/Relation.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.js +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.js.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.mjs +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.js +6 -5
- package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.js.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.mjs +6 -5
- package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js +19 -21
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs +19 -21
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs.map +1 -1
- package/dist/admin/components/SelectCategory.js +1 -1
- package/dist/admin/components/SelectCategory.js.map +1 -1
- package/dist/admin/components/SelectCategory.mjs +1 -1
- package/dist/admin/components/SelectCategory.mjs.map +1 -1
- package/dist/admin/components/SelectComponent.js +3 -6
- package/dist/admin/components/SelectComponent.js.map +1 -1
- package/dist/admin/components/SelectComponent.mjs +3 -6
- package/dist/admin/components/SelectComponent.mjs.map +1 -1
- package/dist/admin/components/SelectComponents.js +9 -6
- package/dist/admin/components/SelectComponents.js.map +1 -1
- package/dist/admin/components/SelectComponents.mjs +9 -6
- package/dist/admin/components/SelectComponents.mjs.map +1 -1
- package/dist/admin/components/SelectNumber.js +0 -4
- package/dist/admin/components/SelectNumber.js.map +1 -1
- package/dist/admin/components/SelectNumber.mjs +0 -4
- package/dist/admin/components/SelectNumber.mjs.map +1 -1
- package/dist/admin/components/Status.js +73 -0
- package/dist/admin/components/Status.js.map +1 -0
- package/dist/admin/components/Status.mjs +70 -0
- package/dist/admin/components/Status.mjs.map +1 -0
- package/dist/admin/components/TabForm.js +2 -1
- package/dist/admin/components/TabForm.js.map +1 -1
- package/dist/admin/components/TabForm.mjs +2 -1
- package/dist/admin/components/TabForm.mjs.map +1 -1
- package/dist/admin/icons/Curve.js +1 -1
- package/dist/admin/icons/Curve.js.map +1 -1
- package/dist/admin/icons/Curve.mjs +1 -1
- package/dist/admin/icons/Curve.mjs.map +1 -1
- package/dist/admin/pages/App/index.js +39 -19
- package/dist/admin/pages/App/index.js.map +1 -1
- package/dist/admin/pages/App/index.mjs +41 -21
- package/dist/admin/pages/App/index.mjs.map +1 -1
- package/dist/admin/pages/ListView/EmptyState.js +38 -0
- package/dist/admin/pages/ListView/EmptyState.js.map +1 -0
- package/dist/admin/pages/ListView/EmptyState.mjs +36 -0
- package/dist/admin/pages/ListView/EmptyState.mjs.map +1 -0
- package/dist/admin/pages/ListView/LinkToCMSettingsView.js +26 -17
- package/dist/admin/pages/ListView/LinkToCMSettingsView.js.map +1 -1
- package/dist/admin/pages/ListView/LinkToCMSettingsView.mjs +26 -17
- package/dist/admin/pages/ListView/LinkToCMSettingsView.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListView.js +105 -158
- package/dist/admin/pages/ListView/ListView.js.map +1 -1
- package/dist/admin/pages/ListView/ListView.mjs +110 -163
- package/dist/admin/pages/ListView/ListView.mjs.map +1 -1
- package/dist/admin/reducers.js +3 -4
- package/dist/admin/reducers.js.map +1 -1
- package/dist/admin/reducers.mjs +3 -4
- package/dist/admin/reducers.mjs.map +1 -1
- package/dist/admin/src/components/AttributeRow.d.ts +28 -0
- package/dist/admin/src/components/AutoReloadOverlayBlocker.d.ts +2 -2
- package/dist/admin/src/components/ComponentCard/ComponentCard.d.ts +5 -1
- package/dist/admin/src/components/ComponentList.d.ts +4 -6
- package/dist/admin/src/components/{BoxWrapper.d.ts → ComponentRow.d.ts} +5 -2
- package/dist/admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.d.ts +29 -14
- package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +138 -0
- package/dist/admin/src/components/DataManager/DataManagerProvider.d.ts +6 -0
- package/dist/admin/src/components/DataManager/reducer.d.ts +278 -0
- package/dist/admin/src/components/DataManager/undoRedo.d.ts +23 -0
- package/dist/admin/src/components/DataManager/useDataManager.d.ts +1 -0
- package/dist/admin/src/components/DataManager/useServerRestartWatcher.d.ts +1 -0
- package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +311 -0
- package/dist/admin/src/components/DataManager/utils/formatSchemas.d.ts +3 -0
- package/dist/admin/src/components/{DataManagerProvider → DataManager}/utils/retrieveComponentsThatHaveComponents.d.ts +3 -3
- package/dist/admin/src/components/{DataManagerProvider → DataManager}/utils/retrieveNestedComponents.d.ts +4 -4
- package/dist/admin/src/components/DisplayedType.d.ts +2 -1
- package/dist/admin/src/components/DynamicZoneList.d.ts +8 -5
- package/dist/admin/src/components/ExitPrompt.d.ts +1 -0
- package/dist/admin/src/components/{NestedFooter.d.ts → Footers.d.ts} +5 -1
- package/dist/admin/src/components/FormModal/forms/forms.d.ts +2 -38
- package/dist/admin/src/components/FormModal/forms/utils/getUsedAttributeNames.d.ts +3 -2
- package/dist/admin/src/components/FormModal/reducer.d.ts +10 -4
- package/dist/admin/src/components/FormModal/utils/canEditContentType.d.ts +4 -4
- package/dist/admin/src/components/FormModal/utils/getAttributesToDisplay.d.ts +1 -1
- package/dist/admin/src/components/FormModalEndActions.d.ts +1 -5
- package/dist/admin/src/components/FormModalHeader.d.ts +10 -7
- package/dist/admin/src/components/FormModalNavigation/FormModalNavigationContext.d.ts +19 -0
- package/dist/admin/src/components/FormModalNavigation/FormModalNavigationProvider.d.ts +54 -0
- package/dist/admin/src/components/FormModalNavigation/useFormModalNavigation.d.ts +1 -0
- package/dist/admin/src/components/FormModalSubHeader.d.ts +3 -3
- package/dist/admin/src/components/GenericInputs.d.ts +2 -1
- package/dist/admin/src/components/List.d.ts +16 -13
- package/dist/admin/src/components/Relation/Relation.d.ts +2 -1
- package/dist/admin/src/components/Relation/RelationField/RelationField.d.ts +2 -1
- package/dist/admin/src/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.d.ts +3 -2
- package/dist/admin/src/components/Relation/RelationNaturePicker/RelationNaturePicker.d.ts +2 -1
- package/dist/admin/src/components/SelectComponents.d.ts +3 -1
- package/dist/admin/src/components/SelectNumber.d.ts +1 -7
- package/dist/admin/src/components/Status.d.ts +6 -0
- package/dist/admin/src/pages/ListView/EmptyState.d.ts +1 -0
- package/dist/admin/src/pages/ListView/LinkToCMSettingsView.d.ts +3 -4
- package/dist/admin/src/pages/ListView/ListView.d.ts +1 -1
- package/dist/admin/src/reducers.d.ts +2 -8
- package/dist/admin/src/types.d.ts +40 -43
- package/dist/admin/src/utils/findAttribute.d.ts +2 -2
- package/dist/admin/src/utils/formAPI.d.ts +43 -1
- package/dist/admin/src/utils/getMaxDepth.d.ts +2 -2
- package/dist/admin/src/utils/getRelationType.d.ts +1 -1
- package/dist/admin/src/utils/isAllowedContentTypesForRelations.d.ts +1 -1
- package/dist/admin/translations/de.json.js +0 -1
- package/dist/admin/translations/de.json.js.map +1 -1
- package/dist/admin/translations/de.json.mjs +0 -1
- package/dist/admin/translations/de.json.mjs.map +1 -1
- package/dist/admin/translations/dk.json.js +0 -1
- package/dist/admin/translations/dk.json.js.map +1 -1
- package/dist/admin/translations/dk.json.mjs +0 -1
- package/dist/admin/translations/dk.json.mjs.map +1 -1
- package/dist/admin/translations/en.json.js +4 -2
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +4 -2
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +0 -1
- package/dist/admin/translations/es.json.js.map +1 -1
- package/dist/admin/translations/es.json.mjs +0 -1
- package/dist/admin/translations/es.json.mjs.map +1 -1
- package/dist/admin/translations/ko.json.js +0 -1
- package/dist/admin/translations/ko.json.js.map +1 -1
- package/dist/admin/translations/ko.json.mjs +0 -1
- package/dist/admin/translations/ko.json.mjs.map +1 -1
- package/dist/admin/translations/pl.json.js +0 -1
- package/dist/admin/translations/pl.json.js.map +1 -1
- package/dist/admin/translations/pl.json.mjs +0 -1
- package/dist/admin/translations/pl.json.mjs.map +1 -1
- package/dist/admin/translations/pt-BR.json.js +0 -1
- package/dist/admin/translations/pt-BR.json.js.map +1 -1
- package/dist/admin/translations/pt-BR.json.mjs +0 -1
- package/dist/admin/translations/pt-BR.json.mjs.map +1 -1
- package/dist/admin/translations/sv.json.js +0 -1
- package/dist/admin/translations/sv.json.js.map +1 -1
- package/dist/admin/translations/sv.json.mjs +0 -1
- package/dist/admin/translations/sv.json.mjs.map +1 -1
- package/dist/admin/translations/tr.json.js +0 -1
- package/dist/admin/translations/tr.json.js.map +1 -1
- package/dist/admin/translations/tr.json.mjs +0 -1
- package/dist/admin/translations/tr.json.mjs.map +1 -1
- package/dist/admin/translations/zh.json.js +0 -1
- package/dist/admin/translations/zh.json.js.map +1 -1
- package/dist/admin/translations/zh.json.mjs +0 -1
- package/dist/admin/translations/zh.json.mjs.map +1 -1
- package/dist/admin/utils/findAttribute.js.map +1 -1
- package/dist/admin/utils/findAttribute.mjs.map +1 -1
- package/dist/admin/utils/formAPI.js +0 -1
- package/dist/admin/utils/formAPI.js.map +1 -1
- package/dist/admin/utils/formAPI.mjs +0 -1
- package/dist/admin/utils/formAPI.mjs.map +1 -1
- package/dist/admin/utils/getMaxDepth.js.map +1 -1
- package/dist/admin/utils/getMaxDepth.mjs.map +1 -1
- package/dist/admin/utils/getRelationType.js.map +1 -1
- package/dist/admin/utils/getRelationType.mjs.map +1 -1
- package/dist/admin/utils/isAllowedContentTypesForRelations.js.map +1 -1
- package/dist/admin/utils/isAllowedContentTypesForRelations.mjs.map +1 -1
- package/dist/server/controllers/index.js +3 -1
- package/dist/server/controllers/index.js.map +1 -1
- package/dist/server/controllers/index.mjs +3 -1
- package/dist/server/controllers/index.mjs.map +1 -1
- package/dist/server/controllers/schema.js +55 -0
- package/dist/server/controllers/schema.js.map +1 -0
- package/dist/server/controllers/schema.mjs +53 -0
- package/dist/server/controllers/schema.mjs.map +1 -0
- package/dist/server/controllers/validation/common.js +2 -0
- package/dist/server/controllers/validation/common.js.map +1 -1
- package/dist/server/controllers/validation/common.mjs +2 -1
- package/dist/server/controllers/validation/common.mjs.map +1 -1
- package/dist/server/controllers/validation/content-type.js.map +1 -1
- package/dist/server/controllers/validation/content-type.mjs.map +1 -1
- package/dist/server/controllers/validation/schema.js +612 -0
- package/dist/server/controllers/validation/schema.js.map +1 -0
- package/dist/server/controllers/validation/schema.mjs +610 -0
- package/dist/server/controllers/validation/schema.mjs.map +1 -0
- package/dist/server/routes/admin.js +51 -0
- package/dist/server/routes/admin.js.map +1 -1
- package/dist/server/routes/admin.mjs +51 -0
- package/dist/server/routes/admin.mjs.map +1 -1
- package/dist/server/services/index.js +3 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs +3 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/schema-builder/component-builder.js +12 -2
- package/dist/server/services/schema-builder/component-builder.js.map +1 -1
- package/dist/server/services/schema-builder/component-builder.mjs +12 -2
- package/dist/server/services/schema-builder/component-builder.mjs.map +1 -1
- package/dist/server/services/schema-builder/content-type-builder.js +43 -28
- package/dist/server/services/schema-builder/content-type-builder.js.map +1 -1
- package/dist/server/services/schema-builder/content-type-builder.mjs +43 -28
- package/dist/server/services/schema-builder/content-type-builder.mjs.map +1 -1
- package/dist/server/services/schema-builder/index.js +51 -49
- package/dist/server/services/schema-builder/index.js.map +1 -1
- package/dist/server/services/schema-builder/index.mjs +51 -49
- package/dist/server/services/schema-builder/index.mjs.map +1 -1
- package/dist/server/services/schema.js +246 -0
- package/dist/server/services/schema.js.map +1 -0
- package/dist/server/services/schema.mjs +242 -0
- package/dist/server/services/schema.mjs.map +1 -0
- package/dist/server/src/controllers/index.d.ts +5 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/schema.d.ts +8 -0
- package/dist/server/src/controllers/schema.d.ts.map +1 -0
- package/dist/server/src/controllers/validation/common.d.ts +1 -0
- package/dist/server/src/controllers/validation/common.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/content-type.d.ts +3 -2
- package/dist/server/src/controllers/validation/content-type.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/schema.d.ts +80968 -0
- package/dist/server/src/controllers/validation/schema.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +6 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/admin.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +2 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/schema-builder/component-builder.d.ts +1 -0
- package/dist/server/src/services/schema-builder/component-builder.d.ts.map +1 -1
- package/dist/server/src/services/schema-builder/content-type-builder.d.ts +2 -3
- package/dist/server/src/services/schema-builder/content-type-builder.d.ts.map +1 -1
- package/dist/server/src/services/schema-builder/index.d.ts +3 -0
- package/dist/server/src/services/schema-builder/index.d.ts.map +1 -1
- package/dist/server/src/services/schema.d.ts +2756 -0
- package/dist/server/src/services/schema.d.ts.map +1 -0
- package/dist/server/src/utils/index.d.ts +2 -0
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/server/utils/index.js.map +1 -1
- package/dist/server/utils/index.mjs.map +1 -1
- package/package.json +13 -8
- package/dist/admin/components/BoxWrapper.js +0 -44
- package/dist/admin/components/BoxWrapper.js.map +0 -1
- package/dist/admin/components/BoxWrapper.mjs +0 -42
- package/dist/admin/components/BoxWrapper.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/DataManagerProvider.js +0 -520
- package/dist/admin/components/DataManagerProvider/DataManagerProvider.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/DataManagerProvider.mjs +0 -518
- package/dist/admin/components/DataManagerProvider/DataManagerProvider.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/reducer.js +0 -583
- package/dist/admin/components/DataManagerProvider/reducer.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/reducer.mjs +0 -579
- package/dist/admin/components/DataManagerProvider/reducer.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/selectors.js +0 -20
- package/dist/admin/components/DataManagerProvider/selectors.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/selectors.mjs +0 -17
- package/dist/admin/components/DataManagerProvider/selectors.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/cleanData.js +0 -126
- package/dist/admin/components/DataManagerProvider/utils/cleanData.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/cleanData.mjs +0 -120
- package/dist/admin/components/DataManagerProvider/utils/cleanData.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/createDataObject.js +0 -9
- package/dist/admin/components/DataManagerProvider/utils/createDataObject.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/createDataObject.mjs +0 -7
- package/dist/admin/components/DataManagerProvider/utils/createDataObject.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/createModifiedDataSchema.js +0 -20
- package/dist/admin/components/DataManagerProvider/utils/createModifiedDataSchema.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/createModifiedDataSchema.mjs +0 -18
- package/dist/admin/components/DataManagerProvider/utils/createModifiedDataSchema.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/formatSchemas.js +0 -30
- package/dist/admin/components/DataManagerProvider/utils/formatSchemas.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/formatSchemas.mjs +0 -27
- package/dist/admin/components/DataManagerProvider/utils/formatSchemas.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsFromSchema.js +0 -46
- package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsFromSchema.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsFromSchema.mjs +0 -44
- package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsFromSchema.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsThatHaveComponents.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsThatHaveComponents.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/retrieveNestedComponents.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/retrieveNestedComponents.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/retrieveSpecificInfoFromComponents.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/retrieveSpecificInfoFromComponents.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/serverRestartWatcher.js +0 -37
- package/dist/admin/components/DataManagerProvider/utils/serverRestartWatcher.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/serverRestartWatcher.mjs +0 -35
- package/dist/admin/components/DataManagerProvider/utils/serverRestartWatcher.mjs.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/validateSchema.js +0 -9
- package/dist/admin/components/DataManagerProvider/utils/validateSchema.js.map +0 -1
- package/dist/admin/components/DataManagerProvider/utils/validateSchema.mjs +0 -7
- package/dist/admin/components/DataManagerProvider/utils/validateSchema.mjs.map +0 -1
- package/dist/admin/components/FormModal/category/createCategorySchema.js +0 -43
- package/dist/admin/components/FormModal/category/createCategorySchema.js.map +0 -1
- package/dist/admin/components/FormModal/category/createCategorySchema.mjs +0 -22
- package/dist/admin/components/FormModal/category/createCategorySchema.mjs.map +0 -1
- package/dist/admin/components/FormModal/category/form.js +0 -34
- package/dist/admin/components/FormModal/category/form.js.map +0 -1
- package/dist/admin/components/FormModal/category/form.mjs +0 -32
- package/dist/admin/components/FormModal/category/form.mjs.map +0 -1
- package/dist/admin/components/FormModal/category/regex.js +0 -6
- package/dist/admin/components/FormModal/category/regex.js.map +0 -1
- package/dist/admin/components/FormModal/category/regex.mjs +0 -4
- package/dist/admin/components/FormModal/category/regex.mjs.map +0 -1
- package/dist/admin/components/FormModal/selectors.js +0 -20
- package/dist/admin/components/FormModal/selectors.js.map +0 -1
- package/dist/admin/components/FormModal/selectors.mjs +0 -17
- package/dist/admin/components/FormModal/selectors.mjs.map +0 -1
- package/dist/admin/components/FormModalNavigationProvider/FormModalNavigationProvider.js.map +0 -1
- package/dist/admin/components/FormModalNavigationProvider/FormModalNavigationProvider.mjs.map +0 -1
- package/dist/admin/components/FormModalNavigationProvider/constants.js +0 -21
- package/dist/admin/components/FormModalNavigationProvider/constants.js.map +0 -1
- package/dist/admin/components/FormModalNavigationProvider/constants.mjs +0 -19
- package/dist/admin/components/FormModalNavigationProvider/constants.mjs.map +0 -1
- package/dist/admin/components/ListRow.js +0 -164
- package/dist/admin/components/ListRow.js.map +0 -1
- package/dist/admin/components/ListRow.mjs +0 -161
- package/dist/admin/components/ListRow.mjs.map +0 -1
- package/dist/admin/components/NestedFooter.js.map +0 -1
- package/dist/admin/components/NestedFooter.mjs.map +0 -1
- package/dist/admin/components/Tr.js.map +0 -1
- package/dist/admin/components/Tr.mjs.map +0 -1
- package/dist/admin/components/UpperFirst.js +0 -11
- package/dist/admin/components/UpperFirst.js.map +0 -1
- package/dist/admin/components/UpperFirst.mjs +0 -9
- package/dist/admin/components/UpperFirst.mjs.map +0 -1
- package/dist/admin/contexts/DataManagerContext.js.map +0 -1
- package/dist/admin/contexts/DataManagerContext.mjs.map +0 -1
- package/dist/admin/contexts/FormModalNavigationContext.js.map +0 -1
- package/dist/admin/contexts/FormModalNavigationContext.mjs.map +0 -1
- package/dist/admin/hooks/useDataManager.js.map +0 -1
- package/dist/admin/hooks/useDataManager.mjs.map +0 -1
- package/dist/admin/hooks/useFormModalNavigation.js.map +0 -1
- package/dist/admin/hooks/useFormModalNavigation.mjs.map +0 -1
- package/dist/admin/src/components/DataManagerProvider/DataManagerProvider.d.ts +0 -6
- package/dist/admin/src/components/DataManagerProvider/reducer.d.ts +0 -103
- package/dist/admin/src/components/DataManagerProvider/selectors.d.ts +0 -17
- package/dist/admin/src/components/DataManagerProvider/utils/cleanData.d.ts +0 -23
- package/dist/admin/src/components/DataManagerProvider/utils/createDataObject.d.ts +0 -2
- package/dist/admin/src/components/DataManagerProvider/utils/createModifiedDataSchema.d.ts +0 -6
- package/dist/admin/src/components/DataManagerProvider/utils/formatSchemas.d.ts +0 -6
- package/dist/admin/src/components/DataManagerProvider/utils/retrieveComponentsFromSchema.d.ts +0 -4
- package/dist/admin/src/components/DataManagerProvider/utils/serverRestartWatcher.d.ts +0 -6
- package/dist/admin/src/components/DataManagerProvider/utils/validateSchema.d.ts +0 -1
- package/dist/admin/src/components/FormModal/category/createCategorySchema.d.ts +0 -5
- package/dist/admin/src/components/FormModal/category/form.d.ts +0 -20
- package/dist/admin/src/components/FormModal/category/regex.d.ts +0 -1
- package/dist/admin/src/components/FormModal/selectors.d.ts +0 -16
- package/dist/admin/src/components/FormModalNavigationProvider/FormModalNavigationProvider.d.ts +0 -22
- package/dist/admin/src/components/FormModalNavigationProvider/constants.d.ts +0 -17
- package/dist/admin/src/components/ListRow.d.ts +0 -27
- package/dist/admin/src/components/Tr.d.ts +0 -5
- package/dist/admin/src/components/UpperFirst.d.ts +0 -3
- package/dist/admin/src/contexts/DataManagerContext.d.ts +0 -41
- package/dist/admin/src/contexts/FormModalNavigationContext.d.ts +0 -40
- package/dist/admin/src/hooks/useDataManager.d.ts +0 -1
- package/dist/admin/src/hooks/useFormModalNavigation.d.ts +0 -1
- /package/dist/admin/{contexts → components/DataManager}/DataManagerContext.js +0 -0
- /package/dist/admin/{contexts → components/DataManager}/DataManagerContext.mjs +0 -0
- /package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveSpecificInfoFromComponents.js +0 -0
- /package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveSpecificInfoFromComponents.mjs +0 -0
- /package/dist/admin/{contexts → components/FormModalNavigation}/FormModalNavigationContext.js +0 -0
- /package/dist/admin/{contexts → components/FormModalNavigation}/FormModalNavigationContext.mjs +0 -0
- /package/dist/admin/src/components/{DataManagerProvider → DataManager}/utils/retrieveSpecificInfoFromComponents.d.ts +0 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var toolkit = require('@reduxjs/toolkit');
|
|
4
|
+
|
|
5
|
+
const isCallable = (obj)=>{
|
|
6
|
+
return typeof obj === 'function';
|
|
7
|
+
};
|
|
8
|
+
const createUndoRedoSlice = (sliceOpts, opts)=>{
|
|
9
|
+
const initialState = {
|
|
10
|
+
past: [],
|
|
11
|
+
future: [],
|
|
12
|
+
current: isCallable(sliceOpts.initialState) ? sliceOpts.initialState() : sliceOpts.initialState
|
|
13
|
+
};
|
|
14
|
+
const { limit = 10 } = opts ?? {};
|
|
15
|
+
const selector = opts.stateSelector || ((state)=>state);
|
|
16
|
+
const wrappedReducers = Object.keys(sliceOpts.reducers).reduce((acc, actionName)=>{
|
|
17
|
+
const reducer = sliceOpts.reducers[actionName];
|
|
18
|
+
if (!isCallable(reducer)) {
|
|
19
|
+
throw new Error('Reducer must be a function. prepapre not support in UndoRedo wrapper');
|
|
20
|
+
}
|
|
21
|
+
acc[actionName] = (state, action)=>{
|
|
22
|
+
const newCurrent = reducer(state.current, action);
|
|
23
|
+
if (opts.excludeActionsFromHistory?.includes(actionName)) {
|
|
24
|
+
if (newCurrent !== undefined) {
|
|
25
|
+
state.current = newCurrent;
|
|
26
|
+
}
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const originalCurrent = toolkit.original(state.current);
|
|
30
|
+
state.past.push(selector(originalCurrent));
|
|
31
|
+
if (state.past.length > limit) {
|
|
32
|
+
state.past.shift();
|
|
33
|
+
}
|
|
34
|
+
state.future = [];
|
|
35
|
+
if (newCurrent !== undefined) {
|
|
36
|
+
state.current = newCurrent;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
return acc;
|
|
40
|
+
}, {});
|
|
41
|
+
return toolkit.createSlice({
|
|
42
|
+
name: sliceOpts.name,
|
|
43
|
+
initialState,
|
|
44
|
+
// @ts-expect-error - TS doesn't like the fact that we're adding extra reducers
|
|
45
|
+
reducers: {
|
|
46
|
+
...wrappedReducers,
|
|
47
|
+
undo: (state)=>{
|
|
48
|
+
if (state.past.length === 0) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const previous = state.past.pop();
|
|
52
|
+
if (previous !== undefined) {
|
|
53
|
+
state.future = [
|
|
54
|
+
state.current,
|
|
55
|
+
...state.future
|
|
56
|
+
];
|
|
57
|
+
// reapply the previous state partially
|
|
58
|
+
// @ts-expect-error - TS doesn't like the fact that we're mutating the state
|
|
59
|
+
state.current = {
|
|
60
|
+
...state.current,
|
|
61
|
+
...previous
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
redo: (state)=>{
|
|
66
|
+
if (state.future.length === 0) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const next = state.future.shift();
|
|
70
|
+
if (next != undefined) {
|
|
71
|
+
state.past = [
|
|
72
|
+
...state.past,
|
|
73
|
+
state.current
|
|
74
|
+
];
|
|
75
|
+
// reapply the previous state partially
|
|
76
|
+
// @ts-expect-error - TS doesn't like the fact that we're mutating the state
|
|
77
|
+
state.current = {
|
|
78
|
+
...state.current,
|
|
79
|
+
...next
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
discardAll: (state)=>{
|
|
84
|
+
if (opts.discard) {
|
|
85
|
+
opts.discard(state.current);
|
|
86
|
+
} else {
|
|
87
|
+
// @ts-expect-error - TS doesn't like the fact that we're mutating the state
|
|
88
|
+
state.current = initialState.current;
|
|
89
|
+
}
|
|
90
|
+
state.past = [];
|
|
91
|
+
state.future = [];
|
|
92
|
+
},
|
|
93
|
+
clearHistory: (state)=>{
|
|
94
|
+
state.past = [];
|
|
95
|
+
state.future = [];
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
exports.createUndoRedoSlice = createUndoRedoSlice;
|
|
102
|
+
//# sourceMappingURL=undoRedo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"undoRedo.js","sources":["../../../../admin/src/components/DataManager/undoRedo.ts"],"sourcesContent":["import {\n CaseReducer,\n createSlice,\n CreateSliceOptions,\n Draft,\n original,\n PayloadAction,\n SliceCaseReducers,\n} from '@reduxjs/toolkit';\n\nexport type UndoRedoState<T> = {\n past: Array<Partial<T>>;\n future: Array<Partial<T>>;\n current: T;\n};\n\ntype WrappedUndoRedoReducer<TState, TReducers extends SliceCaseReducers<TState>> = {\n [K in keyof TReducers]: TReducers[K] extends CaseReducer<TState, infer A>\n ? CaseReducer<UndoRedoState<TState>, A>\n : never;\n};\n\ntype UndoRedoReducer<TState, TReducers extends SliceCaseReducers<TState>> = WrappedUndoRedoReducer<\n TState,\n TReducers\n> & {\n undo: CaseReducer<UndoRedoState<TState>>;\n redo: CaseReducer<UndoRedoState<TState>>;\n discardAll: CaseReducer<UndoRedoState<TState>>;\n clearHistory: CaseReducer<UndoRedoState<TState>>;\n};\n\ntype Opts<TState> = {\n limit?: number;\n excludeActionsFromHistory?: string[];\n stateSelector?: (state: Draft<TState> | undefined) => Draft<Partial<TState>>;\n discard?: (state: Draft<TState>) => void;\n};\n\nconst isCallable = (obj: unknown): obj is (...args: unknown[]) => unknown => {\n return typeof obj === 'function';\n};\n\nexport const createUndoRedoSlice = <State, CaseReducers extends SliceCaseReducers<State>>(\n sliceOpts: CreateSliceOptions<State, CaseReducers, string>,\n opts: Opts<State>\n) => {\n const initialState: UndoRedoState<State> = {\n past: [],\n future: [],\n current: isCallable(sliceOpts.initialState) ? sliceOpts.initialState() : sliceOpts.initialState,\n };\n\n const { limit = 10 } = opts ?? {};\n\n const selector = opts.stateSelector || (<T>(state: Draft<T>): Draft<T> => state);\n\n const wrappedReducers = Object.keys(sliceOpts.reducers).reduce(\n (acc, actionName: string) => {\n const reducer = sliceOpts.reducers[actionName];\n\n if (!isCallable(reducer)) {\n throw new Error('Reducer must be a function. prepapre not support in UndoRedo wrapper');\n }\n\n acc[actionName] = (state, action) => {\n const newCurrent = reducer(state.current as Draft<State>, action);\n\n if (opts.excludeActionsFromHistory?.includes(actionName)) {\n if (newCurrent !== undefined) {\n state.current = newCurrent as Draft<State>;\n }\n\n return;\n }\n\n const originalCurrent = original(state.current);\n\n state.past.push(selector(originalCurrent)!);\n if (state.past.length > limit) {\n state.past.shift();\n }\n state.future = [];\n\n if (newCurrent !== undefined) {\n state.current = newCurrent as Draft<State>;\n }\n };\n\n return acc;\n },\n {} as Record<string, CaseReducer<UndoRedoState<State>, PayloadAction<unknown>>>\n ) as WrappedUndoRedoReducer<State, CaseReducers>;\n\n return createSlice<UndoRedoState<State>, UndoRedoReducer<State, CaseReducers>>({\n name: sliceOpts.name,\n initialState,\n // @ts-expect-error - TS doesn't like the fact that we're adding extra reducers\n reducers: {\n ...wrappedReducers,\n undo: (state) => {\n if (state.past.length === 0) {\n return;\n }\n\n const previous = state.past.pop();\n\n if (previous !== undefined) {\n state.future = [state.current, ...state.future];\n // reapply the previous state partially\n // @ts-expect-error - TS doesn't like the fact that we're mutating the state\n state.current = { ...state.current, ...previous };\n }\n },\n\n redo: (state) => {\n if (state.future.length === 0) {\n return;\n }\n\n const next = state.future.shift();\n if (next != undefined) {\n state.past = [...state.past, state.current];\n // reapply the previous state partially\n // @ts-expect-error - TS doesn't like the fact that we're mutating the state\n state.current = { ...state.current, ...next };\n }\n },\n\n discardAll: (state) => {\n if (opts.discard) {\n opts.discard(state.current);\n } else {\n // @ts-expect-error - TS doesn't like the fact that we're mutating the state\n state.current = initialState.current;\n }\n state.past = [];\n state.future = [];\n },\n\n clearHistory: (state) => {\n state.past = [];\n state.future = [];\n },\n },\n });\n};\n"],"names":["isCallable","obj","createUndoRedoSlice","sliceOpts","opts","initialState","past","future","current","limit","selector","stateSelector","state","wrappedReducers","Object","keys","reducers","reduce","acc","actionName","reducer","Error","action","newCurrent","excludeActionsFromHistory","includes","undefined","originalCurrent","original","push","length","shift","createSlice","name","undo","previous","pop","redo","next","discardAll","discard","clearHistory"],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { original, createSlice } from '@reduxjs/toolkit';
|
|
2
|
+
|
|
3
|
+
const isCallable = (obj)=>{
|
|
4
|
+
return typeof obj === 'function';
|
|
5
|
+
};
|
|
6
|
+
const createUndoRedoSlice = (sliceOpts, opts)=>{
|
|
7
|
+
const initialState = {
|
|
8
|
+
past: [],
|
|
9
|
+
future: [],
|
|
10
|
+
current: isCallable(sliceOpts.initialState) ? sliceOpts.initialState() : sliceOpts.initialState
|
|
11
|
+
};
|
|
12
|
+
const { limit = 10 } = opts ?? {};
|
|
13
|
+
const selector = opts.stateSelector || ((state)=>state);
|
|
14
|
+
const wrappedReducers = Object.keys(sliceOpts.reducers).reduce((acc, actionName)=>{
|
|
15
|
+
const reducer = sliceOpts.reducers[actionName];
|
|
16
|
+
if (!isCallable(reducer)) {
|
|
17
|
+
throw new Error('Reducer must be a function. prepapre not support in UndoRedo wrapper');
|
|
18
|
+
}
|
|
19
|
+
acc[actionName] = (state, action)=>{
|
|
20
|
+
const newCurrent = reducer(state.current, action);
|
|
21
|
+
if (opts.excludeActionsFromHistory?.includes(actionName)) {
|
|
22
|
+
if (newCurrent !== undefined) {
|
|
23
|
+
state.current = newCurrent;
|
|
24
|
+
}
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const originalCurrent = original(state.current);
|
|
28
|
+
state.past.push(selector(originalCurrent));
|
|
29
|
+
if (state.past.length > limit) {
|
|
30
|
+
state.past.shift();
|
|
31
|
+
}
|
|
32
|
+
state.future = [];
|
|
33
|
+
if (newCurrent !== undefined) {
|
|
34
|
+
state.current = newCurrent;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
return acc;
|
|
38
|
+
}, {});
|
|
39
|
+
return createSlice({
|
|
40
|
+
name: sliceOpts.name,
|
|
41
|
+
initialState,
|
|
42
|
+
// @ts-expect-error - TS doesn't like the fact that we're adding extra reducers
|
|
43
|
+
reducers: {
|
|
44
|
+
...wrappedReducers,
|
|
45
|
+
undo: (state)=>{
|
|
46
|
+
if (state.past.length === 0) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const previous = state.past.pop();
|
|
50
|
+
if (previous !== undefined) {
|
|
51
|
+
state.future = [
|
|
52
|
+
state.current,
|
|
53
|
+
...state.future
|
|
54
|
+
];
|
|
55
|
+
// reapply the previous state partially
|
|
56
|
+
// @ts-expect-error - TS doesn't like the fact that we're mutating the state
|
|
57
|
+
state.current = {
|
|
58
|
+
...state.current,
|
|
59
|
+
...previous
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
redo: (state)=>{
|
|
64
|
+
if (state.future.length === 0) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const next = state.future.shift();
|
|
68
|
+
if (next != undefined) {
|
|
69
|
+
state.past = [
|
|
70
|
+
...state.past,
|
|
71
|
+
state.current
|
|
72
|
+
];
|
|
73
|
+
// reapply the previous state partially
|
|
74
|
+
// @ts-expect-error - TS doesn't like the fact that we're mutating the state
|
|
75
|
+
state.current = {
|
|
76
|
+
...state.current,
|
|
77
|
+
...next
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
discardAll: (state)=>{
|
|
82
|
+
if (opts.discard) {
|
|
83
|
+
opts.discard(state.current);
|
|
84
|
+
} else {
|
|
85
|
+
// @ts-expect-error - TS doesn't like the fact that we're mutating the state
|
|
86
|
+
state.current = initialState.current;
|
|
87
|
+
}
|
|
88
|
+
state.past = [];
|
|
89
|
+
state.future = [];
|
|
90
|
+
},
|
|
91
|
+
clearHistory: (state)=>{
|
|
92
|
+
state.past = [];
|
|
93
|
+
state.future = [];
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
export { createUndoRedoSlice };
|
|
100
|
+
//# sourceMappingURL=undoRedo.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"undoRedo.mjs","sources":["../../../../admin/src/components/DataManager/undoRedo.ts"],"sourcesContent":["import {\n CaseReducer,\n createSlice,\n CreateSliceOptions,\n Draft,\n original,\n PayloadAction,\n SliceCaseReducers,\n} from '@reduxjs/toolkit';\n\nexport type UndoRedoState<T> = {\n past: Array<Partial<T>>;\n future: Array<Partial<T>>;\n current: T;\n};\n\ntype WrappedUndoRedoReducer<TState, TReducers extends SliceCaseReducers<TState>> = {\n [K in keyof TReducers]: TReducers[K] extends CaseReducer<TState, infer A>\n ? CaseReducer<UndoRedoState<TState>, A>\n : never;\n};\n\ntype UndoRedoReducer<TState, TReducers extends SliceCaseReducers<TState>> = WrappedUndoRedoReducer<\n TState,\n TReducers\n> & {\n undo: CaseReducer<UndoRedoState<TState>>;\n redo: CaseReducer<UndoRedoState<TState>>;\n discardAll: CaseReducer<UndoRedoState<TState>>;\n clearHistory: CaseReducer<UndoRedoState<TState>>;\n};\n\ntype Opts<TState> = {\n limit?: number;\n excludeActionsFromHistory?: string[];\n stateSelector?: (state: Draft<TState> | undefined) => Draft<Partial<TState>>;\n discard?: (state: Draft<TState>) => void;\n};\n\nconst isCallable = (obj: unknown): obj is (...args: unknown[]) => unknown => {\n return typeof obj === 'function';\n};\n\nexport const createUndoRedoSlice = <State, CaseReducers extends SliceCaseReducers<State>>(\n sliceOpts: CreateSliceOptions<State, CaseReducers, string>,\n opts: Opts<State>\n) => {\n const initialState: UndoRedoState<State> = {\n past: [],\n future: [],\n current: isCallable(sliceOpts.initialState) ? sliceOpts.initialState() : sliceOpts.initialState,\n };\n\n const { limit = 10 } = opts ?? {};\n\n const selector = opts.stateSelector || (<T>(state: Draft<T>): Draft<T> => state);\n\n const wrappedReducers = Object.keys(sliceOpts.reducers).reduce(\n (acc, actionName: string) => {\n const reducer = sliceOpts.reducers[actionName];\n\n if (!isCallable(reducer)) {\n throw new Error('Reducer must be a function. prepapre not support in UndoRedo wrapper');\n }\n\n acc[actionName] = (state, action) => {\n const newCurrent = reducer(state.current as Draft<State>, action);\n\n if (opts.excludeActionsFromHistory?.includes(actionName)) {\n if (newCurrent !== undefined) {\n state.current = newCurrent as Draft<State>;\n }\n\n return;\n }\n\n const originalCurrent = original(state.current);\n\n state.past.push(selector(originalCurrent)!);\n if (state.past.length > limit) {\n state.past.shift();\n }\n state.future = [];\n\n if (newCurrent !== undefined) {\n state.current = newCurrent as Draft<State>;\n }\n };\n\n return acc;\n },\n {} as Record<string, CaseReducer<UndoRedoState<State>, PayloadAction<unknown>>>\n ) as WrappedUndoRedoReducer<State, CaseReducers>;\n\n return createSlice<UndoRedoState<State>, UndoRedoReducer<State, CaseReducers>>({\n name: sliceOpts.name,\n initialState,\n // @ts-expect-error - TS doesn't like the fact that we're adding extra reducers\n reducers: {\n ...wrappedReducers,\n undo: (state) => {\n if (state.past.length === 0) {\n return;\n }\n\n const previous = state.past.pop();\n\n if (previous !== undefined) {\n state.future = [state.current, ...state.future];\n // reapply the previous state partially\n // @ts-expect-error - TS doesn't like the fact that we're mutating the state\n state.current = { ...state.current, ...previous };\n }\n },\n\n redo: (state) => {\n if (state.future.length === 0) {\n return;\n }\n\n const next = state.future.shift();\n if (next != undefined) {\n state.past = [...state.past, state.current];\n // reapply the previous state partially\n // @ts-expect-error - TS doesn't like the fact that we're mutating the state\n state.current = { ...state.current, ...next };\n }\n },\n\n discardAll: (state) => {\n if (opts.discard) {\n opts.discard(state.current);\n } else {\n // @ts-expect-error - TS doesn't like the fact that we're mutating the state\n state.current = initialState.current;\n }\n state.past = [];\n state.future = [];\n },\n\n clearHistory: (state) => {\n state.past = [];\n state.future = [];\n },\n },\n });\n};\n"],"names":["isCallable","obj","createUndoRedoSlice","sliceOpts","opts","initialState","past","future","current","limit","selector","stateSelector","state","wrappedReducers","Object","keys","reducers","reduce","acc","actionName","reducer","Error","action","newCurrent","excludeActionsFromHistory","includes","undefined","originalCurrent","original","push","length","shift","createSlice","name","undo","previous","pop","redo","next","discardAll","discard","clearHistory"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
|
-
var DataManagerContext = require('
|
|
4
|
+
var DataManagerContext = require('./DataManagerContext.js');
|
|
5
5
|
|
|
6
6
|
const useDataManager = ()=>React.useContext(DataManagerContext.DataManagerContext);
|
|
7
7
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataManager.js","sources":["../../../../admin/src/components/DataManager/useDataManager.ts"],"sourcesContent":["import { useContext } from 'react';\n\nimport { DataManagerContext } from './DataManagerContext';\n\nexport const useDataManager = () => useContext(DataManagerContext);\n"],"names":["useDataManager","useContext","DataManagerContext"],"mappings":";;;;;AAIaA,MAAAA,cAAAA,GAAiB,IAAMC,gBAAAA,CAAWC,qCAAoB;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataManager.mjs","sources":["../../../../admin/src/components/DataManager/useDataManager.ts"],"sourcesContent":["import { useContext } from 'react';\n\nimport { DataManagerContext } from './DataManagerContext';\n\nexport const useDataManager = () => useContext(DataManagerContext);\n"],"names":["useDataManager","useContext","DataManagerContext"],"mappings":";;;AAIaA,MAAAA,cAAAA,GAAiB,IAAMC,UAAAA,CAAWC,kBAAoB;;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var strapiAdmin = require('@strapi/admin/strapi-admin');
|
|
4
|
+
|
|
5
|
+
const TIMEOUT = 'timeout';
|
|
6
|
+
const timeout = 30 * 1000;
|
|
7
|
+
const useServerRestartWatcher = ()=>{
|
|
8
|
+
const { get } = strapiAdmin.useFetchClient();
|
|
9
|
+
const serverRestartWatcher = async (initTime)=>{
|
|
10
|
+
const startTime = initTime ?? Date.now();
|
|
11
|
+
if (Date.now() - startTime > timeout) {
|
|
12
|
+
throw new Error(TIMEOUT);
|
|
13
|
+
}
|
|
14
|
+
try {
|
|
15
|
+
const res = await get(`/content-type-builder/update-schema-status`);
|
|
16
|
+
if (res?.data?.data?.isUpdating === true) {
|
|
17
|
+
return new Promise((resolve)=>{
|
|
18
|
+
setTimeout(()=>{
|
|
19
|
+
return serverRestartWatcher(startTime).then(resolve);
|
|
20
|
+
}, 200);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
} catch (err) {
|
|
24
|
+
return new Promise((resolve)=>{
|
|
25
|
+
setTimeout(()=>{
|
|
26
|
+
return serverRestartWatcher(startTime).then(resolve);
|
|
27
|
+
}, 200);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
return serverRestartWatcher;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
exports.useServerRestartWatcher = useServerRestartWatcher;
|
|
35
|
+
//# sourceMappingURL=useServerRestartWatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useServerRestartWatcher.js","sources":["../../../../admin/src/components/DataManager/useServerRestartWatcher.ts"],"sourcesContent":["import { useFetchClient } from '@strapi/admin/strapi-admin';\n\nconst TIMEOUT = 'timeout';\n\nconst timeout = 30 * 1000;\n\nexport const useServerRestartWatcher = () => {\n const { get } = useFetchClient();\n\n const serverRestartWatcher = async (initTime?: number) => {\n const startTime = initTime ?? Date.now();\n\n if (Date.now() - startTime > timeout) {\n throw new Error(TIMEOUT);\n }\n\n try {\n const res = await get(`/content-type-builder/update-schema-status`);\n\n if (res?.data?.data?.isUpdating === true) {\n return new Promise((resolve) => {\n setTimeout(() => {\n return serverRestartWatcher(startTime).then(resolve);\n }, 200);\n });\n }\n } catch (err) {\n return new Promise((resolve) => {\n setTimeout(() => {\n return serverRestartWatcher(startTime).then(resolve);\n }, 200);\n });\n }\n };\n\n return serverRestartWatcher;\n};\n"],"names":["TIMEOUT","timeout","useServerRestartWatcher","get","useFetchClient","serverRestartWatcher","initTime","startTime","Date","now","Error","res","data","isUpdating","Promise","resolve","setTimeout","then","err"],"mappings":";;;;AAEA,MAAMA,OAAU,GAAA,SAAA;AAEhB,MAAMC,UAAU,EAAK,GAAA,IAAA;MAERC,uBAA0B,GAAA,IAAA;IACrC,MAAM,EAAEC,GAAG,EAAE,GAAGC,0BAAAA,EAAAA;AAEhB,IAAA,MAAMC,uBAAuB,OAAOC,QAAAA,GAAAA;QAClC,MAAMC,SAAAA,GAAYD,QAAYE,IAAAA,IAAAA,CAAKC,GAAG,EAAA;AAEtC,QAAA,IAAID,IAAKC,CAAAA,GAAG,EAAKF,GAAAA,SAAAA,GAAYN,OAAS,EAAA;AACpC,YAAA,MAAM,IAAIS,KAAMV,CAAAA,OAAAA,CAAAA;AAClB;QAEA,IAAI;AACF,YAAA,MAAMW,GAAM,GAAA,MAAMR,GAAI,CAAA,CAAC,0CAA0C,CAAC,CAAA;AAElE,YAAA,IAAIQ,GAAKC,EAAAA,IAAAA,EAAMA,IAAMC,EAAAA,UAAAA,KAAe,IAAM,EAAA;gBACxC,OAAO,IAAIC,QAAQ,CAACC,OAAAA,GAAAA;oBAClBC,UAAW,CAAA,IAAA;wBACT,OAAOX,oBAAAA,CAAqBE,SAAWU,CAAAA,CAAAA,IAAI,CAACF,OAAAA,CAAAA;qBAC3C,EAAA,GAAA,CAAA;AACL,iBAAA,CAAA;AACF;AACF,SAAA,CAAE,OAAOG,GAAK,EAAA;YACZ,OAAO,IAAIJ,QAAQ,CAACC,OAAAA,GAAAA;gBAClBC,UAAW,CAAA,IAAA;oBACT,OAAOX,oBAAAA,CAAqBE,SAAWU,CAAAA,CAAAA,IAAI,CAACF,OAAAA,CAAAA;iBAC3C,EAAA,GAAA,CAAA;AACL,aAAA,CAAA;AACF;AACF,KAAA;IAEA,OAAOV,oBAAAA;AACT;;;;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { useFetchClient } from '@strapi/admin/strapi-admin';
|
|
2
|
+
|
|
3
|
+
const TIMEOUT = 'timeout';
|
|
4
|
+
const timeout = 30 * 1000;
|
|
5
|
+
const useServerRestartWatcher = ()=>{
|
|
6
|
+
const { get } = useFetchClient();
|
|
7
|
+
const serverRestartWatcher = async (initTime)=>{
|
|
8
|
+
const startTime = initTime ?? Date.now();
|
|
9
|
+
if (Date.now() - startTime > timeout) {
|
|
10
|
+
throw new Error(TIMEOUT);
|
|
11
|
+
}
|
|
12
|
+
try {
|
|
13
|
+
const res = await get(`/content-type-builder/update-schema-status`);
|
|
14
|
+
if (res?.data?.data?.isUpdating === true) {
|
|
15
|
+
return new Promise((resolve)=>{
|
|
16
|
+
setTimeout(()=>{
|
|
17
|
+
return serverRestartWatcher(startTime).then(resolve);
|
|
18
|
+
}, 200);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
} catch (err) {
|
|
22
|
+
return new Promise((resolve)=>{
|
|
23
|
+
setTimeout(()=>{
|
|
24
|
+
return serverRestartWatcher(startTime).then(resolve);
|
|
25
|
+
}, 200);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
return serverRestartWatcher;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export { useServerRestartWatcher };
|
|
33
|
+
//# sourceMappingURL=useServerRestartWatcher.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useServerRestartWatcher.mjs","sources":["../../../../admin/src/components/DataManager/useServerRestartWatcher.ts"],"sourcesContent":["import { useFetchClient } from '@strapi/admin/strapi-admin';\n\nconst TIMEOUT = 'timeout';\n\nconst timeout = 30 * 1000;\n\nexport const useServerRestartWatcher = () => {\n const { get } = useFetchClient();\n\n const serverRestartWatcher = async (initTime?: number) => {\n const startTime = initTime ?? Date.now();\n\n if (Date.now() - startTime > timeout) {\n throw new Error(TIMEOUT);\n }\n\n try {\n const res = await get(`/content-type-builder/update-schema-status`);\n\n if (res?.data?.data?.isUpdating === true) {\n return new Promise((resolve) => {\n setTimeout(() => {\n return serverRestartWatcher(startTime).then(resolve);\n }, 200);\n });\n }\n } catch (err) {\n return new Promise((resolve) => {\n setTimeout(() => {\n return serverRestartWatcher(startTime).then(resolve);\n }, 200);\n });\n }\n };\n\n return serverRestartWatcher;\n};\n"],"names":["TIMEOUT","timeout","useServerRestartWatcher","get","useFetchClient","serverRestartWatcher","initTime","startTime","Date","now","Error","res","data","isUpdating","Promise","resolve","setTimeout","then","err"],"mappings":";;AAEA,MAAMA,OAAU,GAAA,SAAA;AAEhB,MAAMC,UAAU,EAAK,GAAA,IAAA;MAERC,uBAA0B,GAAA,IAAA;IACrC,MAAM,EAAEC,GAAG,EAAE,GAAGC,cAAAA,EAAAA;AAEhB,IAAA,MAAMC,uBAAuB,OAAOC,QAAAA,GAAAA;QAClC,MAAMC,SAAAA,GAAYD,QAAYE,IAAAA,IAAAA,CAAKC,GAAG,EAAA;AAEtC,QAAA,IAAID,IAAKC,CAAAA,GAAG,EAAKF,GAAAA,SAAAA,GAAYN,OAAS,EAAA;AACpC,YAAA,MAAM,IAAIS,KAAMV,CAAAA,OAAAA,CAAAA;AAClB;QAEA,IAAI;AACF,YAAA,MAAMW,GAAM,GAAA,MAAMR,GAAI,CAAA,CAAC,0CAA0C,CAAC,CAAA;AAElE,YAAA,IAAIQ,GAAKC,EAAAA,IAAAA,EAAMA,IAAMC,EAAAA,UAAAA,KAAe,IAAM,EAAA;gBACxC,OAAO,IAAIC,QAAQ,CAACC,OAAAA,GAAAA;oBAClBC,UAAW,CAAA,IAAA;wBACT,OAAOX,oBAAAA,CAAqBE,SAAWU,CAAAA,CAAAA,IAAI,CAACF,OAAAA,CAAAA;qBAC3C,EAAA,GAAA,CAAA;AACL,iBAAA,CAAA;AACF;AACF,SAAA,CAAE,OAAOG,GAAK,EAAA;YACZ,OAAO,IAAIJ,QAAQ,CAACC,OAAAA,GAAAA;gBAClBC,UAAW,CAAA,IAAA;oBACT,OAAOX,oBAAAA,CAAqBE,SAAWU,CAAAA,CAAAA,IAAI,CAACF,OAAAA,CAAAA;iBAC3C,EAAA,GAAA,CAAA;AACL,aAAA,CAAA;AACF;AACF,KAAA;IAEA,OAAOV,oBAAAA;AACT;;;;"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var camelCase = require('lodash/camelCase');
|
|
4
|
+
var omit = require('lodash/omit');
|
|
5
|
+
var sortBy = require('lodash/sortBy');
|
|
6
|
+
var pluginId = require('../../../pluginId.js');
|
|
7
|
+
|
|
8
|
+
const sortContentType = (types)=>{
|
|
9
|
+
return sortBy(Object.keys(types).map((uid)=>({
|
|
10
|
+
visible: types[uid].visible,
|
|
11
|
+
name: uid,
|
|
12
|
+
title: types[uid].info.displayName,
|
|
13
|
+
plugin: types[uid].plugin,
|
|
14
|
+
uid: uid,
|
|
15
|
+
to: `/plugins/${pluginId.pluginId}/content-types/${uid}`,
|
|
16
|
+
kind: types[uid].kind,
|
|
17
|
+
restrictRelationsTo: types[uid].restrictRelationsTo,
|
|
18
|
+
status: types[uid].status
|
|
19
|
+
})).filter((obj)=>obj !== null), (obj)=>camelCase(obj.title));
|
|
20
|
+
};
|
|
21
|
+
const stateToRequestData = (state)=>{
|
|
22
|
+
const { components, contentTypes } = state;
|
|
23
|
+
return {
|
|
24
|
+
components: Object.values(components).filter((compo)=>{
|
|
25
|
+
return [
|
|
26
|
+
'NEW',
|
|
27
|
+
'CHANGED',
|
|
28
|
+
'REMOVED'
|
|
29
|
+
].includes(compo.status);
|
|
30
|
+
}).map(formatTypeForRequest),
|
|
31
|
+
contentTypes: Object.values(contentTypes).filter((ct)=>{
|
|
32
|
+
return [
|
|
33
|
+
'NEW',
|
|
34
|
+
'CHANGED',
|
|
35
|
+
'REMOVED'
|
|
36
|
+
].includes(ct.status);
|
|
37
|
+
}).map(formatTypeForRequest)
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
const removeNullKeys = (obj)=>{
|
|
41
|
+
return Object.fromEntries(Object.entries(obj).filter(([_, value])=>{
|
|
42
|
+
if (Array.isArray(value)) {
|
|
43
|
+
return value.length > 0;
|
|
44
|
+
}
|
|
45
|
+
if (typeof value === 'object' && value !== null) {
|
|
46
|
+
return Object.keys(value).length > 0;
|
|
47
|
+
}
|
|
48
|
+
return value !== null && value !== undefined;
|
|
49
|
+
}));
|
|
50
|
+
};
|
|
51
|
+
const formatAttribute = (attr)=>{
|
|
52
|
+
if ('customField' in attr) {
|
|
53
|
+
return {
|
|
54
|
+
...attr,
|
|
55
|
+
type: 'customField'
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
if ('targetAttribute' in attr) {
|
|
59
|
+
return {
|
|
60
|
+
...attr,
|
|
61
|
+
targetAttribute: attr.targetAttribute === '-' ? null : attr.targetAttribute
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
return attr;
|
|
65
|
+
};
|
|
66
|
+
const formatTypeForRequest = (type)=>{
|
|
67
|
+
let action;
|
|
68
|
+
// should we do a diff with the initial data instead of trusting the state status ??
|
|
69
|
+
switch(type.status){
|
|
70
|
+
case 'NEW':
|
|
71
|
+
action = 'create';
|
|
72
|
+
break;
|
|
73
|
+
case 'CHANGED':
|
|
74
|
+
action = 'update';
|
|
75
|
+
break;
|
|
76
|
+
case 'REMOVED':
|
|
77
|
+
return {
|
|
78
|
+
action: 'delete',
|
|
79
|
+
uid: type.uid
|
|
80
|
+
};
|
|
81
|
+
default:
|
|
82
|
+
throw new Error('Invalid status');
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
action,
|
|
86
|
+
uid: type.uid,
|
|
87
|
+
category: 'category' in type ? type.category : undefined,
|
|
88
|
+
...omit(type, [
|
|
89
|
+
'info',
|
|
90
|
+
'options',
|
|
91
|
+
'visible',
|
|
92
|
+
'uid',
|
|
93
|
+
'restrictRelationsTo'
|
|
94
|
+
]),
|
|
95
|
+
...type.options,
|
|
96
|
+
...type.info,
|
|
97
|
+
attributes: type.attributes.map((attr)=>{
|
|
98
|
+
let action;
|
|
99
|
+
switch(attr.status){
|
|
100
|
+
// NOTE: we want to always send the full data to preserve the order
|
|
101
|
+
case 'NEW':
|
|
102
|
+
action = 'create';
|
|
103
|
+
break;
|
|
104
|
+
case 'REMOVED':
|
|
105
|
+
return {
|
|
106
|
+
action: 'delete',
|
|
107
|
+
name: attr.name
|
|
108
|
+
};
|
|
109
|
+
case 'UNCHANGED':
|
|
110
|
+
case 'CHANGED':
|
|
111
|
+
default:
|
|
112
|
+
action = 'update';
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
action,
|
|
116
|
+
name: attr.name,
|
|
117
|
+
properties: removeNullKeys(omit(formatAttribute(attr), [
|
|
118
|
+
'status',
|
|
119
|
+
'name'
|
|
120
|
+
]))
|
|
121
|
+
};
|
|
122
|
+
})
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
exports.sortContentType = sortContentType;
|
|
127
|
+
exports.stateToRequestData = stateToRequestData;
|
|
128
|
+
//# sourceMappingURL=cleanData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanData.js","sources":["../../../../../admin/src/components/DataManager/utils/cleanData.ts"],"sourcesContent":["import camelCase from 'lodash/camelCase';\nimport omit from 'lodash/omit';\nimport sortBy from 'lodash/sortBy';\n\nimport { pluginId } from '../../../pluginId';\n\nimport type {\n Component,\n Components,\n ContentTypes,\n ContentType,\n AnyAttribute,\n} from '../../../types';\nimport type { UID } from '@strapi/types';\n\nconst sortContentType = (types: ContentTypes) => {\n return sortBy(\n Object.keys(types)\n .map((uid) => ({\n visible: types[uid].visible,\n name: uid as UID.ContentType,\n title: types[uid].info.displayName,\n plugin: types[uid].plugin,\n uid: uid as UID.ContentType,\n to: `/plugins/${pluginId}/content-types/${uid}`,\n kind: types[uid].kind,\n restrictRelationsTo: types[uid].restrictRelationsTo,\n status: types[uid].status,\n }))\n .filter((obj) => obj !== null),\n (obj) => camelCase(obj.title)\n );\n};\n\nconst stateToRequestData = (state: { components: Components; contentTypes: ContentTypes }) => {\n const { components, contentTypes } = state;\n\n return {\n components: Object.values(components)\n .filter((compo) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(compo.status);\n })\n .map(formatTypeForRequest),\n contentTypes: Object.values(contentTypes)\n .filter((ct) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(ct.status);\n })\n .map(formatTypeForRequest),\n };\n};\n\nconst removeNullKeys = (obj: Record<string, unknown>) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n if (typeof value === 'object' && value !== null) {\n return Object.keys(value).length > 0;\n }\n return value !== null && value !== undefined;\n })\n );\n};\n\nconst formatAttribute = (attr: AnyAttribute) => {\n if ('customField' in attr) {\n return { ...attr, type: 'customField' };\n }\n\n if ('targetAttribute' in attr) {\n return { ...attr, targetAttribute: attr.targetAttribute === '-' ? null : attr.targetAttribute };\n }\n\n return attr;\n};\n\nconst formatTypeForRequest = (type: ContentType | Component) => {\n let action;\n // should we do a diff with the initial data instead of trusting the state status ??\n switch (type.status) {\n case 'NEW':\n action = 'create';\n break;\n case 'CHANGED':\n action = 'update';\n break;\n case 'REMOVED':\n return { action: 'delete', uid: type.uid };\n default:\n throw new Error('Invalid status');\n }\n\n return {\n action,\n uid: type.uid,\n category: 'category' in type ? type.category : undefined,\n ...omit(type, ['info', 'options', 'visible', 'uid', 'restrictRelationsTo']),\n ...type.options,\n ...type.info,\n attributes: type.attributes.map((attr) => {\n let action;\n\n switch (attr.status) {\n // NOTE: we want to always send the full data to preserve the order\n\n case 'NEW':\n action = 'create';\n break;\n case 'REMOVED':\n return { action: 'delete', name: attr.name };\n case 'UNCHANGED':\n case 'CHANGED':\n default:\n action = 'update';\n }\n\n return {\n action,\n name: attr.name,\n properties: removeNullKeys(omit(formatAttribute(attr), ['status', 'name'])),\n };\n }),\n };\n};\n\nexport { stateToRequestData, sortContentType };\n"],"names":["sortContentType","types","sortBy","Object","keys","map","uid","visible","name","title","info","displayName","plugin","to","pluginId","kind","restrictRelationsTo","status","filter","obj","camelCase","stateToRequestData","state","components","contentTypes","values","compo","includes","formatTypeForRequest","ct","removeNullKeys","fromEntries","entries","_","value","Array","isArray","length","undefined","formatAttribute","attr","type","targetAttribute","action","Error","category","omit","options","attributes","properties"],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import camelCase from 'lodash/camelCase';
|
|
2
|
+
import omit from 'lodash/omit';
|
|
3
|
+
import sortBy from 'lodash/sortBy';
|
|
4
|
+
import { pluginId } from '../../../pluginId.mjs';
|
|
5
|
+
|
|
6
|
+
const sortContentType = (types)=>{
|
|
7
|
+
return sortBy(Object.keys(types).map((uid)=>({
|
|
8
|
+
visible: types[uid].visible,
|
|
9
|
+
name: uid,
|
|
10
|
+
title: types[uid].info.displayName,
|
|
11
|
+
plugin: types[uid].plugin,
|
|
12
|
+
uid: uid,
|
|
13
|
+
to: `/plugins/${pluginId}/content-types/${uid}`,
|
|
14
|
+
kind: types[uid].kind,
|
|
15
|
+
restrictRelationsTo: types[uid].restrictRelationsTo,
|
|
16
|
+
status: types[uid].status
|
|
17
|
+
})).filter((obj)=>obj !== null), (obj)=>camelCase(obj.title));
|
|
18
|
+
};
|
|
19
|
+
const stateToRequestData = (state)=>{
|
|
20
|
+
const { components, contentTypes } = state;
|
|
21
|
+
return {
|
|
22
|
+
components: Object.values(components).filter((compo)=>{
|
|
23
|
+
return [
|
|
24
|
+
'NEW',
|
|
25
|
+
'CHANGED',
|
|
26
|
+
'REMOVED'
|
|
27
|
+
].includes(compo.status);
|
|
28
|
+
}).map(formatTypeForRequest),
|
|
29
|
+
contentTypes: Object.values(contentTypes).filter((ct)=>{
|
|
30
|
+
return [
|
|
31
|
+
'NEW',
|
|
32
|
+
'CHANGED',
|
|
33
|
+
'REMOVED'
|
|
34
|
+
].includes(ct.status);
|
|
35
|
+
}).map(formatTypeForRequest)
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
const removeNullKeys = (obj)=>{
|
|
39
|
+
return Object.fromEntries(Object.entries(obj).filter(([_, value])=>{
|
|
40
|
+
if (Array.isArray(value)) {
|
|
41
|
+
return value.length > 0;
|
|
42
|
+
}
|
|
43
|
+
if (typeof value === 'object' && value !== null) {
|
|
44
|
+
return Object.keys(value).length > 0;
|
|
45
|
+
}
|
|
46
|
+
return value !== null && value !== undefined;
|
|
47
|
+
}));
|
|
48
|
+
};
|
|
49
|
+
const formatAttribute = (attr)=>{
|
|
50
|
+
if ('customField' in attr) {
|
|
51
|
+
return {
|
|
52
|
+
...attr,
|
|
53
|
+
type: 'customField'
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
if ('targetAttribute' in attr) {
|
|
57
|
+
return {
|
|
58
|
+
...attr,
|
|
59
|
+
targetAttribute: attr.targetAttribute === '-' ? null : attr.targetAttribute
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return attr;
|
|
63
|
+
};
|
|
64
|
+
const formatTypeForRequest = (type)=>{
|
|
65
|
+
let action;
|
|
66
|
+
// should we do a diff with the initial data instead of trusting the state status ??
|
|
67
|
+
switch(type.status){
|
|
68
|
+
case 'NEW':
|
|
69
|
+
action = 'create';
|
|
70
|
+
break;
|
|
71
|
+
case 'CHANGED':
|
|
72
|
+
action = 'update';
|
|
73
|
+
break;
|
|
74
|
+
case 'REMOVED':
|
|
75
|
+
return {
|
|
76
|
+
action: 'delete',
|
|
77
|
+
uid: type.uid
|
|
78
|
+
};
|
|
79
|
+
default:
|
|
80
|
+
throw new Error('Invalid status');
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
action,
|
|
84
|
+
uid: type.uid,
|
|
85
|
+
category: 'category' in type ? type.category : undefined,
|
|
86
|
+
...omit(type, [
|
|
87
|
+
'info',
|
|
88
|
+
'options',
|
|
89
|
+
'visible',
|
|
90
|
+
'uid',
|
|
91
|
+
'restrictRelationsTo'
|
|
92
|
+
]),
|
|
93
|
+
...type.options,
|
|
94
|
+
...type.info,
|
|
95
|
+
attributes: type.attributes.map((attr)=>{
|
|
96
|
+
let action;
|
|
97
|
+
switch(attr.status){
|
|
98
|
+
// NOTE: we want to always send the full data to preserve the order
|
|
99
|
+
case 'NEW':
|
|
100
|
+
action = 'create';
|
|
101
|
+
break;
|
|
102
|
+
case 'REMOVED':
|
|
103
|
+
return {
|
|
104
|
+
action: 'delete',
|
|
105
|
+
name: attr.name
|
|
106
|
+
};
|
|
107
|
+
case 'UNCHANGED':
|
|
108
|
+
case 'CHANGED':
|
|
109
|
+
default:
|
|
110
|
+
action = 'update';
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
action,
|
|
114
|
+
name: attr.name,
|
|
115
|
+
properties: removeNullKeys(omit(formatAttribute(attr), [
|
|
116
|
+
'status',
|
|
117
|
+
'name'
|
|
118
|
+
]))
|
|
119
|
+
};
|
|
120
|
+
})
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
export { sortContentType, stateToRequestData };
|
|
125
|
+
//# sourceMappingURL=cleanData.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanData.mjs","sources":["../../../../../admin/src/components/DataManager/utils/cleanData.ts"],"sourcesContent":["import camelCase from 'lodash/camelCase';\nimport omit from 'lodash/omit';\nimport sortBy from 'lodash/sortBy';\n\nimport { pluginId } from '../../../pluginId';\n\nimport type {\n Component,\n Components,\n ContentTypes,\n ContentType,\n AnyAttribute,\n} from '../../../types';\nimport type { UID } from '@strapi/types';\n\nconst sortContentType = (types: ContentTypes) => {\n return sortBy(\n Object.keys(types)\n .map((uid) => ({\n visible: types[uid].visible,\n name: uid as UID.ContentType,\n title: types[uid].info.displayName,\n plugin: types[uid].plugin,\n uid: uid as UID.ContentType,\n to: `/plugins/${pluginId}/content-types/${uid}`,\n kind: types[uid].kind,\n restrictRelationsTo: types[uid].restrictRelationsTo,\n status: types[uid].status,\n }))\n .filter((obj) => obj !== null),\n (obj) => camelCase(obj.title)\n );\n};\n\nconst stateToRequestData = (state: { components: Components; contentTypes: ContentTypes }) => {\n const { components, contentTypes } = state;\n\n return {\n components: Object.values(components)\n .filter((compo) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(compo.status);\n })\n .map(formatTypeForRequest),\n contentTypes: Object.values(contentTypes)\n .filter((ct) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(ct.status);\n })\n .map(formatTypeForRequest),\n };\n};\n\nconst removeNullKeys = (obj: Record<string, unknown>) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n if (typeof value === 'object' && value !== null) {\n return Object.keys(value).length > 0;\n }\n return value !== null && value !== undefined;\n })\n );\n};\n\nconst formatAttribute = (attr: AnyAttribute) => {\n if ('customField' in attr) {\n return { ...attr, type: 'customField' };\n }\n\n if ('targetAttribute' in attr) {\n return { ...attr, targetAttribute: attr.targetAttribute === '-' ? null : attr.targetAttribute };\n }\n\n return attr;\n};\n\nconst formatTypeForRequest = (type: ContentType | Component) => {\n let action;\n // should we do a diff with the initial data instead of trusting the state status ??\n switch (type.status) {\n case 'NEW':\n action = 'create';\n break;\n case 'CHANGED':\n action = 'update';\n break;\n case 'REMOVED':\n return { action: 'delete', uid: type.uid };\n default:\n throw new Error('Invalid status');\n }\n\n return {\n action,\n uid: type.uid,\n category: 'category' in type ? type.category : undefined,\n ...omit(type, ['info', 'options', 'visible', 'uid', 'restrictRelationsTo']),\n ...type.options,\n ...type.info,\n attributes: type.attributes.map((attr) => {\n let action;\n\n switch (attr.status) {\n // NOTE: we want to always send the full data to preserve the order\n\n case 'NEW':\n action = 'create';\n break;\n case 'REMOVED':\n return { action: 'delete', name: attr.name };\n case 'UNCHANGED':\n case 'CHANGED':\n default:\n action = 'update';\n }\n\n return {\n action,\n name: attr.name,\n properties: removeNullKeys(omit(formatAttribute(attr), ['status', 'name'])),\n };\n }),\n };\n};\n\nexport { stateToRequestData, sortContentType };\n"],"names":["sortContentType","types","sortBy","Object","keys","map","uid","visible","name","title","info","displayName","plugin","to","pluginId","kind","restrictRelationsTo","status","filter","obj","camelCase","stateToRequestData","state","components","contentTypes","values","compo","includes","formatTypeForRequest","ct","removeNullKeys","fromEntries","entries","_","value","Array","isArray","length","undefined","formatAttribute","attr","type","targetAttribute","action","Error","category","omit","options","attributes","properties"],"mappings":"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"}
|