@rebasepro/admin 0.8.0 → 0.9.1-canary.09aaf62
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/README.md +26 -26
- package/dist/{CollectionEditorDialog-BO_aQ-Z4.js → CollectionEditorDialog-DbPpDDwb.js} +40 -18
- package/dist/CollectionEditorDialog-DbPpDDwb.js.map +1 -0
- package/dist/{PropertyEditView-DKzOpMjR.js → PropertyEditView-DfJbZ67t.js} +81 -73
- package/dist/PropertyEditView-DfJbZ67t.js.map +1 -0
- package/dist/{RouterCollectionsStudioView-BQTIExjA.js → RouterCollectionsStudioView-C6XQ7Il5.js} +5 -5
- package/dist/RouterCollectionsStudioView-C6XQ7Il5.js.map +1 -0
- package/dist/collection_editor/_cms_internals.d.ts +3 -3
- package/dist/collection_editor/api/generateCollectionApi.d.ts +8 -8
- package/dist/collection_editor/extensibility_types.d.ts +3 -3
- package/dist/collection_editor/index.d.ts +2 -2
- package/dist/collection_editor/pgColumnToProperty.d.ts +3 -3
- package/dist/collection_editor/serializable_types.d.ts +7 -7
- package/dist/collection_editor/serializable_utils.d.ts +8 -8
- package/dist/collection_editor/types/collection_editor_controller.d.ts +5 -5
- package/dist/collection_editor/types/collection_inference.d.ts +2 -2
- package/dist/collection_editor/types/config_controller.d.ts +7 -7
- package/dist/collection_editor/ui/AddKanbanColumnAction.d.ts +2 -2
- package/dist/collection_editor/ui/CollectionViewHeaderAction.d.ts +2 -2
- package/dist/collection_editor/ui/KanbanSetupAction.d.ts +2 -2
- package/dist/collection_editor/ui/PropertyAddColumnComponent.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.d.ts +3 -3
- package/dist/collection_editor/ui/collection_editor/CollectionDetailsForm.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/CollectionEditorDialog.d.ts +4 -4
- package/dist/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/CollectionJsonImportDialog.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +4 -4
- package/dist/collection_editor/ui/collection_editor/CollectionStudioView.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/CollectionsStudioView.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/EntityActionsEditTab.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/GeneralSettingsForm.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/GetCodeDialog.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/PropertyEditView.d.ts +5 -5
- package/dist/collection_editor/ui/collection_editor/SubcollectionsEditTab.d.ts +3 -3
- package/dist/collection_editor/ui/collection_editor/SwitchControl.d.ts +1 -1
- package/dist/collection_editor/ui/collection_editor/templates/blog_template.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/templates/pages_template.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/templates/products_template.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/templates/users_template.d.ts +2 -2
- package/dist/collection_editor/useLocalCollectionsConfigController.d.ts +2 -2
- package/dist/collection_editor/useSafeSnackbarController.d.ts +1 -1
- package/dist/collection_editor/validateCollectionJson.d.ts +2 -2
- package/dist/collection_editor_ui.js +5 -5
- package/dist/collection_editor_ui.js.map +1 -1
- package/dist/components/CollectionPanel.d.ts +4 -4
- package/dist/components/{EntityCollectionTable/EntityCollectionRowActions.d.ts → CollectionTableBinding/CollectionRowActions.d.ts} +3 -3
- package/dist/components/CollectionTableBinding/CollectionTableBinding.d.ts +28 -0
- package/dist/components/{EntityCollectionTable/EntityCollectionTableProps.d.ts → CollectionTableBinding/CollectionTableBindingProps.d.ts} +2 -2
- package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableMultipleRelationField.d.ts +2 -2
- package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableReferenceField.d.ts +2 -2
- package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationField.d.ts +2 -2
- package/dist/components/CollectionTableBinding/index.d.ts +6 -0
- package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCell.d.ts +1 -1
- package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/common.d.ts +2 -2
- package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/PopupFormField.d.ts +3 -3
- package/dist/components/{EntityCollectionTable → CollectionTableBinding}/table_bindings.d.ts +1 -1
- package/dist/components/{EntityCollectionView/EntityBoardCard.d.ts → CollectionViewBinding/BoardCardBinding.d.ts} +8 -8
- package/dist/components/{EntityCollectionView/EntityCollectionBoardView.d.ts → CollectionViewBinding/CollectionBoardViewBinding.d.ts} +4 -4
- package/dist/components/{EntityCollectionView/EntityCollectionCardView.d.ts → CollectionViewBinding/CollectionCardViewBinding.d.ts} +5 -5
- package/dist/components/{EntityCollectionView/EntityCollectionListView.d.ts → CollectionViewBinding/CollectionListViewBinding.d.ts} +4 -4
- package/dist/components/{EntityCollectionView/EntityCollectionViewActions.d.ts → CollectionViewBinding/CollectionViewActions.d.ts} +4 -4
- package/dist/components/{EntityCollectionView/EntityCollectionView.d.ts → CollectionViewBinding/CollectionViewBinding.d.ts} +4 -4
- package/dist/components/{EntityCollectionView/EntityCollectionViewStartActions.d.ts → CollectionViewBinding/CollectionViewStartActions.d.ts} +4 -4
- package/dist/components/CollectionViewBinding/EntityCardBinding.d.ts +21 -0
- package/dist/components/{EntityCollectionView → CollectionViewBinding}/SplitListView.d.ts +3 -3
- package/dist/components/{EntityCollectionView → CollectionViewBinding}/hooks/useCollectionInlineEditor.d.ts +3 -3
- package/dist/components/{EntityCollectionView → CollectionViewBinding}/hooks/useKanbanDragAndDrop.d.ts +2 -2
- package/dist/components/{EntityCollectionView → CollectionViewBinding}/useBoardDataController.d.ts +2 -2
- package/dist/components/{EntityCollectionView/useEntityPreviewSlots.d.ts → CollectionViewBinding/usePreviewSlots.d.ts} +5 -5
- package/dist/components/DeleteEntityDialog.d.ts +4 -4
- package/dist/components/{EntityDetailView.d.ts → DetailViewBinding.d.ts} +5 -5
- package/dist/components/EditFormActions.d.ts +3 -0
- package/dist/components/{EntityEditView.d.ts → EditViewBinding.d.ts} +9 -9
- package/dist/components/{EntityPreview.d.ts → EntityPreviewBinding.d.ts} +13 -13
- package/dist/components/EntityViewBinding.d.ts +13 -0
- package/dist/components/{EntityJsonPreview.d.ts → JsonPreviewBinding.d.ts} +1 -1
- package/dist/components/{RebaseCMS.d.ts → RebaseAdmin.d.ts} +2 -2
- package/dist/components/RebaseLayout.d.ts +5 -4
- package/dist/components/RebaseNavigation.d.ts +1 -1
- package/dist/components/RebaseShell.d.ts +1 -0
- package/dist/components/ReferenceTable/{EntitySelectionTable.d.ts → SelectionTableBinding.d.ts} +5 -5
- package/dist/components/SelectableTable/SelectableTable.d.ts +6 -6
- package/dist/components/SelectableTable/SelectableTableContext.d.ts +3 -3
- package/dist/components/SelectableTable/SelectionStore.d.ts +2 -2
- package/dist/components/SelectableTable/filters/BooleanFilterField.d.ts +6 -1
- package/dist/components/SelectableTable/filters/DateTimeFilterField.d.ts +7 -1
- package/dist/components/SelectableTable/filters/FilterFieldBinding.d.ts +40 -0
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +7 -1
- package/dist/components/SelectableTable/filters/RelationFilterField.d.ts +7 -1
- package/dist/components/SelectableTable/filters/StringNumberFilterField.d.ts +7 -1
- package/dist/components/SideDialogs.d.ts +1 -1
- package/dist/components/SidePanelBinding.d.ts +11 -0
- package/dist/components/{SideEntityProvider.d.ts → SidePanelProvider.d.ts} +7 -7
- package/dist/components/history/EntityHistoryEntry.d.ts +2 -2
- package/dist/components/history/LastEditedByIndicator.d.ts +2 -2
- package/dist/components/index.d.ts +15 -14
- package/dist/contexts/SidePanelControllerContext.d.ts +3 -0
- package/dist/data_export/export/ExportCollectionAction.d.ts +3 -3
- package/dist/data_import/components/ImportSaveInProgress.d.ts +2 -2
- package/dist/editor.js +1 -1
- package/dist/editor.js.map +1 -1
- package/dist/form/EntityForm.d.ts +1 -1
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- package/dist/form/components/LocalChangesMenu.d.ts +1 -1
- package/dist/form/components/StorageUploadProgress.d.ts +1 -1
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +1 -1
- package/dist/form/form_utils.d.ts +2 -2
- package/dist/{history-B3cqBzEV.js → history-GSa4BgDt.js} +7 -7
- package/dist/history-GSa4BgDt.js.map +1 -0
- package/dist/hooks/index.d.ts +4 -4
- package/dist/hooks/navigation/contexts/CollectionRegistryContext.d.ts +2 -2
- package/dist/hooks/navigation/useBuildNavigationStateController.d.ts +5 -5
- package/dist/hooks/navigation/useNavigationResolution.d.ts +4 -4
- package/dist/hooks/navigation/useResolvedCollections.d.ts +7 -7
- package/dist/hooks/navigation/useTopLevelNavigation.d.ts +2 -2
- package/dist/hooks/navigation/utils.d.ts +5 -5
- package/dist/hooks/useBuildSidePanel.d.ts +6 -0
- package/dist/hooks/useCMSContext.d.ts +2 -2
- package/dist/hooks/{useEntityHistory.d.ts → useHistory.d.ts} +1 -1
- package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
- package/dist/hooks/{useEntitySelectionDialog.d.ts → useSelectionDialog.d.ts} +2 -2
- package/dist/hooks/useSideDialogsController.d.ts +1 -1
- package/dist/hooks/useSidePanel.d.ts +11 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/{src-cxV1ODRG.js → src-B8WuGSPZ.js} +886 -692
- package/dist/src-B8WuGSPZ.js.map +1 -0
- package/dist/types/components/EntityFormActionsProps.d.ts +2 -2
- package/dist/types/components/EntityFormProps.d.ts +3 -3
- package/dist/types/components/formex.d.ts +1 -1
- package/dist/types/fields.d.ts +2 -2
- package/dist/util/dataControllerAdapter.d.ts +2 -5
- package/dist/util/navigation_utils.d.ts +6 -6
- package/dist/util/previews.d.ts +3 -3
- package/dist/util/property_utils.d.ts +2 -2
- package/dist/util/{entity_view_constants.d.ts → view_constants.d.ts} +1 -1
- package/package.json +12 -17
- package/src/collection_editor/ConfigControllerProvider.tsx +11 -11
- package/src/collection_editor/_cms_internals.ts +3 -3
- package/src/collection_editor/api/generateCollectionApi.ts +8 -8
- package/src/collection_editor/extensibility_types.ts +3 -3
- package/src/collection_editor/index.ts +3 -3
- package/src/collection_editor/pgColumnToProperty.ts +3 -3
- package/src/collection_editor/serializable_types.ts +8 -8
- package/src/collection_editor/serializable_utils.ts +17 -17
- package/src/collection_editor/types/collection_editor_controller.tsx +5 -5
- package/src/collection_editor/types/collection_inference.ts +2 -2
- package/src/collection_editor/types/config_controller.tsx +7 -7
- package/src/collection_editor/ui/AddKanbanColumnAction.tsx +3 -3
- package/src/collection_editor/ui/CollectionViewHeaderAction.tsx +3 -3
- package/src/collection_editor/ui/EditorCollectionAction.tsx +3 -3
- package/src/collection_editor/ui/EditorCollectionActionStart.tsx +3 -3
- package/src/collection_editor/ui/EditorEntityAction.tsx +3 -3
- package/src/collection_editor/ui/HomePageEditorCollectionAction.tsx +1 -1
- package/src/collection_editor/ui/KanbanSetupAction.tsx +3 -3
- package/src/collection_editor/ui/MissingReferenceWidget.tsx +1 -1
- package/src/collection_editor/ui/NewCollectionButton.tsx +1 -1
- package/src/collection_editor/ui/NewCollectionCard.tsx +1 -1
- package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +3 -3
- package/src/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.tsx +6 -6
- package/src/collection_editor/ui/collection_editor/CollectionDetailsForm.tsx +6 -6
- package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +29 -29
- package/src/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.tsx +5 -5
- package/src/collection_editor/ui/collection_editor/CollectionJsonImportDialog.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +10 -10
- package/src/collection_editor/ui/collection_editor/CollectionRLSTab.tsx +38 -7
- package/src/collection_editor/ui/collection_editor/CollectionRelationsTab.tsx +3 -3
- package/src/collection_editor/ui/collection_editor/CollectionStudioView.tsx +3 -3
- package/src/collection_editor/ui/collection_editor/CollectionsStudioView.tsx +3 -3
- package/src/collection_editor/ui/collection_editor/DisplaySettingsForm.tsx +4 -4
- package/src/collection_editor/ui/collection_editor/EntityActionsEditTab.tsx +5 -5
- package/src/collection_editor/ui/collection_editor/EntityActionsSelectDialog.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/EntityCustomViewsSelectDialog.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/EnumForm.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/GeneralSettingsForm.tsx +7 -7
- package/src/collection_editor/ui/collection_editor/GetCodeDialog.tsx +5 -5
- package/src/collection_editor/ui/collection_editor/KanbanConfigSection.tsx +4 -4
- package/src/collection_editor/ui/collection_editor/PropertyEditView.tsx +9 -9
- package/src/collection_editor/ui/collection_editor/PropertyFieldPreview.tsx +46 -37
- package/src/collection_editor/ui/collection_editor/PropertyTree.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/RouterCollectionStudioView.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/SubcollectionsEditTab.tsx +7 -7
- package/src/collection_editor/ui/collection_editor/SwitchControl.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +4 -4
- package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.tsx +4 -4
- package/src/collection_editor/ui/collection_editor/properties/BlockPropertyField.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/properties/BooleanPropertyField.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/properties/CommonPropertyFields.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/DateTimePropertyField.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/EnumPropertyField.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/MapPropertyField.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/NumberPropertyField.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/ReferencePropertyField.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.tsx +3 -3
- package/src/collection_editor/ui/collection_editor/properties/RepeatPropertyField.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/properties/StoragePropertyField.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/StringPropertyField.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/UrlPropertyField.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/properties/VectorPropertyField.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsEditor.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/templates/blog_template.ts +2 -2
- package/src/collection_editor/ui/collection_editor/templates/pages_template.ts +2 -2
- package/src/collection_editor/ui/collection_editor/templates/products_template.ts +2 -2
- package/src/collection_editor/ui/collection_editor/templates/users_template.ts +2 -2
- package/src/collection_editor/useJsonCollectionsConfigController.tsx +13 -13
- package/src/collection_editor/useLocalCollectionsConfigController.tsx +4 -4
- package/src/collection_editor/useSafeSnackbarController.ts +1 -1
- package/src/collection_editor/validateCollectionJson.ts +3 -3
- package/src/components/AdminModeSyncer.tsx +1 -1
- package/src/components/ArrayContainer.tsx +1 -1
- package/src/components/ClearFilterSortButton.tsx +1 -1
- package/src/components/CollectionPanel.tsx +14 -17
- package/src/components/{EntityCollectionTable/EntityCollectionRowActions.tsx → CollectionTableBinding/CollectionRowActions.tsx} +8 -8
- package/src/components/{EntityCollectionTable/EntityCollectionTable.tsx → CollectionTableBinding/CollectionTableBinding.tsx} +13 -13
- package/src/components/{EntityCollectionTable/EntityCollectionTableProps.tsx → CollectionTableBinding/CollectionTableBindingProps.tsx} +2 -2
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/PropertyTableCell.tsx +1 -1
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/column_utils.tsx +1 -1
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableMultipleRelationField.tsx +7 -7
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableReferenceField.tsx +10 -10
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationField.tsx +7 -7
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableStorageUpload.tsx +1 -1
- package/src/components/CollectionTableBinding/index.tsx +14 -0
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/CollectionTableToolbar.tsx +1 -1
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCell.tsx +2 -2
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCellActions.tsx +1 -1
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/common.tsx +2 -2
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/PopupFormField.tsx +6 -6
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/table_bindings.tsx +1 -1
- package/src/components/{EntityCollectionView/EntityBoardCard.tsx → CollectionViewBinding/BoardCardBinding.tsx} +17 -17
- package/src/components/{EntityCollectionView/EntityCollectionBoardView.tsx → CollectionViewBinding/CollectionBoardViewBinding.tsx} +17 -16
- package/src/components/{EntityCollectionView/EntityCollectionCardView.tsx → CollectionViewBinding/CollectionCardViewBinding.tsx} +9 -9
- package/src/components/{EntityCollectionView/EntityCollectionListView.tsx → CollectionViewBinding/CollectionListViewBinding.tsx} +15 -15
- package/src/components/{EntityCollectionView/EntityCollectionViewActions.tsx → CollectionViewBinding/CollectionViewActions.tsx} +7 -7
- package/src/components/{EntityCollectionView/EntityCollectionView.tsx → CollectionViewBinding/CollectionViewBinding.tsx} +107 -92
- package/src/components/{EntityCollectionView/EntityCollectionViewStartActions.tsx → CollectionViewBinding/CollectionViewStartActions.tsx} +6 -6
- package/src/components/{EntityCollectionView/EntityCard.tsx → CollectionViewBinding/EntityCardBinding.tsx} +12 -12
- package/src/components/{EntityCollectionView → CollectionViewBinding}/FiltersDialog.tsx +49 -72
- package/src/components/{EntityCollectionView → CollectionViewBinding}/SplitListView.tsx +10 -10
- package/src/components/{EntityCollectionView → CollectionViewBinding}/ViewModeToggle.tsx +1 -1
- package/src/components/{EntityCollectionView → CollectionViewBinding}/hooks/useCollectionInlineEditor.ts +6 -6
- package/src/components/{EntityCollectionView → CollectionViewBinding}/hooks/useKanbanDragAndDrop.ts +5 -5
- package/src/components/{EntityCollectionView → CollectionViewBinding}/useBoardDataController.tsx +25 -13
- package/src/components/{EntityCollectionView/useEntityPreviewSlots.ts → CollectionViewBinding/usePreviewSlots.ts} +9 -9
- package/src/components/DefaultAppBar.tsx +3 -3
- package/src/components/DefaultDrawer.tsx +3 -3
- package/src/components/DeleteEntityDialog.tsx +7 -7
- package/src/components/{EntityDetailView.tsx → DetailViewBinding.tsx} +28 -31
- package/src/components/DrawerNavigationGroup.tsx +2 -2
- package/src/components/{EntityEditViewFormActions.tsx → EditFormActions.tsx} +16 -16
- package/src/components/{EntityEditView.tsx → EditViewBinding.tsx} +34 -37
- package/src/components/{EntityPreview.tsx → EntityPreviewBinding.tsx} +30 -30
- package/src/components/{EntityView.tsx → EntityViewBinding.tsx} +7 -7
- package/src/components/HomePage/ContentHomePage.tsx +4 -4
- package/src/components/HomePage/FavouritesView.tsx +1 -1
- package/src/components/HomePage/NavigationCardBinding.tsx +4 -4
- package/src/components/HomePage/NavigationGroup.tsx +1 -1
- package/src/components/HomePage/RenameGroupDialog.tsx +1 -1
- package/src/components/{EntityJsonPreview.tsx → JsonPreviewBinding.tsx} +2 -2
- package/src/components/{RebaseCMS.tsx → RebaseAdmin.tsx} +6 -5
- package/src/components/RebaseAuthGate.tsx +2 -2
- package/src/components/RebaseLayout.tsx +7 -13
- package/src/components/RebaseNavigation.tsx +35 -11
- package/src/components/RebaseRouteDefs.tsx +2 -2
- package/src/components/RebaseShell.tsx +2 -1
- package/src/components/ReferenceTable/{EntitySelectionTable.tsx → SelectionTableBinding.tsx} +27 -24
- package/src/components/ReferenceWidget.tsx +4 -4
- package/src/components/RelationSelector.tsx +15 -13
- package/src/components/SearchIconsView.tsx +2 -2
- package/src/components/SelectableTable/SelectableTable.tsx +35 -88
- package/src/components/SelectableTable/SelectableTableContext.tsx +3 -3
- package/src/components/SelectableTable/SelectionStore.ts +4 -4
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +10 -2
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +34 -13
- package/src/components/SelectableTable/filters/FilterFieldBinding.tsx +187 -0
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +22 -8
- package/src/components/SelectableTable/filters/RelationFilterField.tsx +17 -3
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +67 -13
- package/src/components/SideDialogs.tsx +4 -4
- package/src/components/{EntitySidePanel.tsx → SidePanelBinding.tsx} +20 -20
- package/src/components/{SideEntityProvider.tsx → SidePanelProvider.tsx} +17 -17
- package/src/components/UserSelector.tsx +1 -1
- package/src/components/admin/CreationResultDialog.tsx +6 -3
- package/src/components/app/Scaffold.tsx +6 -2
- package/src/components/common/default_entity_actions.tsx +132 -34
- package/src/components/field_configs.tsx +1 -1
- package/src/components/history/EntityHistoryEntry.tsx +3 -3
- package/src/components/history/EntityHistoryView.tsx +7 -7
- package/src/components/history/LastEditedByIndicator.tsx +4 -4
- package/src/components/index.ts +16 -15
- package/src/contexts/SidePanelControllerContext.tsx +5 -0
- package/src/data_export/export/BasicExportAction.tsx +1 -1
- package/src/data_export/export/ExportCollectionAction.tsx +5 -5
- package/src/data_import/components/DataNewPropertiesMapping.tsx +1 -1
- package/src/data_import/components/ImportFileUpload.tsx +1 -1
- package/src/data_import/components/ImportNewPropertyFieldPreview.tsx +1 -1
- package/src/data_import/components/ImportSaveInProgress.tsx +4 -4
- package/src/data_import/import/ImportCollectionAction.tsx +6 -6
- package/src/data_import/utils/data.ts +4 -4
- package/src/data_import/utils/get_properties_mapping.ts +1 -1
- package/src/editor/components/image-bubble.tsx +1 -1
- package/src/editor/components/table-bubble.tsx +1 -1
- package/src/editor/editor.tsx +1 -1
- package/src/editor/selectors/link-selector.tsx +1 -1
- package/src/editor/selectors/node-selector.tsx +1 -1
- package/src/form/EntityForm.tsx +6 -6
- package/src/form/EntityFormActions.tsx +4 -4
- package/src/form/EntityFormBinding.tsx +10 -10
- package/src/form/PropertyFieldBinding.tsx +7 -7
- package/src/form/components/ErrorFocus.tsx +1 -1
- package/src/form/components/LocalChangesMenu.tsx +3 -3
- package/src/form/components/StorageItemPreview.tsx +1 -1
- package/src/form/components/StorageUploadProgress.tsx +3 -3
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +1 -1
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +5 -5
- package/src/form/field_bindings/BlockFieldBinding.tsx +2 -2
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +1 -1
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +21 -21
- package/src/form/field_bindings/MapFieldBinding.tsx +1 -1
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +2 -2
- package/src/form/field_bindings/MultipleRelationFieldBinding.tsx +3 -3
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +7 -7
- package/src/form/field_bindings/RelationFieldBinding.tsx +4 -4
- package/src/form/field_bindings/RepeatFieldBinding.tsx +1 -1
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +3 -3
- package/src/form/form_utils.ts +3 -3
- package/src/hooks/index.ts +4 -4
- package/src/hooks/navigation/contexts/CollectionRegistryContext.tsx +2 -2
- package/src/hooks/navigation/useBuildCollectionRegistryController.tsx +11 -11
- package/src/hooks/navigation/useBuildNavigationStateController.tsx +5 -5
- package/src/hooks/navigation/useNavigationResolution.ts +28 -13
- package/src/hooks/navigation/useResolvedCollections.ts +8 -8
- package/src/hooks/navigation/useTopLevelNavigation.ts +2 -2
- package/src/hooks/navigation/utils.ts +5 -5
- package/src/hooks/{useBuildSideEntityController.tsx → useBuildSidePanel.tsx} +29 -29
- package/src/hooks/useCMSContext.tsx +7 -7
- package/src/hooks/{useEntityHistory.ts → useHistory.ts} +2 -2
- package/src/hooks/useResolvedNavigationFrom.tsx +10 -5
- package/src/hooks/{useEntitySelectionDialog.tsx → useSelectionDialog.tsx} +7 -7
- package/src/hooks/useSideDialogsController.tsx +1 -1
- package/src/hooks/useSidePanel.tsx +13 -0
- package/src/index.ts +15 -15
- package/src/preview/PropertyPreview.tsx +2 -2
- package/src/preview/components/DatePreview.tsx +1 -1
- package/src/preview/components/EnumValuesChip.tsx +1 -1
- package/src/preview/components/ImagePreview.tsx +1 -1
- package/src/preview/components/ReferencePreview.tsx +11 -11
- package/src/preview/components/RelationPreview.tsx +13 -12
- package/src/preview/components/StorageThumbnail.tsx +1 -1
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +1 -1
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +1 -1
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +1 -1
- package/src/routes/RebaseRoute.tsx +12 -12
- package/src/types/components/EntityFormActionsProps.tsx +2 -2
- package/src/types/components/EntityFormProps.tsx +3 -3
- package/src/types/components/formex.tsx +1 -1
- package/src/types/fields.tsx +2 -2
- package/src/util/dataControllerAdapter.ts +9 -15
- package/src/util/navigation_utils.ts +7 -7
- package/src/util/previews.ts +7 -5
- package/src/util/property_utils.tsx +2 -2
- package/src/util/{entity_view_constants.ts → view_constants.ts} +1 -1
- package/dist/CollectionEditorDialog-BO_aQ-Z4.js.map +0 -1
- package/dist/PropertyEditView-DKzOpMjR.js.map +0 -1
- package/dist/RouterCollectionsStudioView-BQTIExjA.js.map +0 -1
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +0 -28
- package/dist/components/EntityCollectionTable/index.d.ts +0 -6
- package/dist/components/EntityCollectionView/EntityCard.d.ts +0 -21
- package/dist/components/EntityEditViewFormActions.d.ts +0 -3
- package/dist/components/EntitySidePanel.d.ts +0 -11
- package/dist/components/EntityView.d.ts +0 -13
- package/dist/contexts/SideEntityControllerContext.d.ts +0 -3
- package/dist/history-B3cqBzEV.js.map +0 -1
- package/dist/hooks/useBuildSideEntityController.d.ts +0 -6
- package/dist/hooks/useSideEntityController.d.ts +0 -11
- package/dist/src-cxV1ODRG.js.map +0 -1
- package/src/components/EntityCollectionTable/index.tsx +0 -14
- package/src/contexts/SideEntityControllerContext.tsx +0 -5
- package/src/hooks/useSideEntityController.tsx +0 -13
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/PropertyTableCell.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/column_utils.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationSelectorField.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableStorageUpload.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableSelect.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableUserSelect.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/CollectionTableToolbar.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCellActions.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useDraggable.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useWindowSize.d.ts +0 -0
- /package/dist/components/{EntityCollectionView → CollectionViewBinding}/FilterPresetsButton.d.ts +0 -0
- /package/dist/components/{EntityCollectionView → CollectionViewBinding}/FiltersDialog.d.ts +0 -0
- /package/dist/components/{EntityCollectionView → CollectionViewBinding}/ViewModeToggle.d.ts +0 -0
- /package/dist/components/{EntityCollectionView → CollectionViewBinding}/useSelectionController.d.ts +0 -0
- /package/dist/components/{EntityCollectionView → CollectionViewBinding}/utils.d.ts +0 -0
- /package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationSelectorField.tsx +0 -0
- /package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableSelect.tsx +0 -0
- /package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableUserSelect.tsx +0 -0
- /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useDraggable.tsx +0 -0
- /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useWindowSize.tsx +0 -0
- /package/src/components/{EntityCollectionView → CollectionViewBinding}/FilterPresetsButton.tsx +0 -0
- /package/src/components/{EntityCollectionView → CollectionViewBinding}/useSelectionController.tsx +0 -0
- /package/src/components/{EntityCollectionView → CollectionViewBinding}/utils.ts +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Entity } from "@rebasepro/types";
|
|
2
|
-
import {
|
|
2
|
+
import { CollectionConfig } from "@rebasepro/types";
|
|
3
3
|
import { FormContext } from "../fields";
|
|
4
4
|
import { FormexController } from "./formex";
|
|
5
5
|
export interface EntityFormActionsProps {
|
|
6
6
|
path: string;
|
|
7
|
-
collection:
|
|
7
|
+
collection: CollectionConfig;
|
|
8
8
|
entity?: Entity;
|
|
9
9
|
layout: "bottom" | "side" | "responsive";
|
|
10
10
|
savingError?: Error;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Entity, EntityStatus } from "@rebasepro/types";
|
|
2
|
-
import {
|
|
2
|
+
import { CollectionConfig, EntityCustomViewParams } from "@rebasepro/types";
|
|
3
3
|
import { FormContext } from "../fields";
|
|
4
4
|
import { FormexController } from "./formex";
|
|
5
5
|
import { EntityFormActionsProps } from "./EntityFormActionsProps";
|
|
@@ -11,7 +11,7 @@ import { EntityFormActionsProps } from "./EntityFormActionsProps";
|
|
|
11
11
|
export type EntityFormProps<M extends Record<string, unknown>> = {
|
|
12
12
|
path: string;
|
|
13
13
|
fullIdPath?: string;
|
|
14
|
-
collection:
|
|
14
|
+
collection: CollectionConfig<M>;
|
|
15
15
|
entityId?: string | number;
|
|
16
16
|
entity?: Entity<M>;
|
|
17
17
|
databaseId?: string;
|
|
@@ -104,5 +104,5 @@ export type OnUpdateParams = {
|
|
|
104
104
|
path: string;
|
|
105
105
|
entityId?: string | number;
|
|
106
106
|
selectedTab?: string;
|
|
107
|
-
collection:
|
|
107
|
+
collection: CollectionConfig<Record<string, unknown>>;
|
|
108
108
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export type { FormexController, FormexResetProps } from "@rebasepro/
|
|
1
|
+
export type { FormexController, FormexResetProps } from "@rebasepro/forms";
|
package/dist/types/fields.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { InferPropertyType } from "@rebasepro/types";
|
|
2
2
|
import { Entity } from "@rebasepro/types";
|
|
3
3
|
import { FormexController } from "./components/formex";
|
|
4
|
-
import {
|
|
4
|
+
import { CollectionConfig } from "@rebasepro/types";
|
|
5
5
|
import { Property } from "@rebasepro/types";
|
|
6
6
|
export type DefaultFieldConfig = "text_field" | "multiline" | "markdown" | "url" | "email" | "switch" | "select" | "multi_select" | "user_select" | "number_input" | "number_select" | "multi_number_select" | "file_upload" | "multi_file_upload" | "reference" | "multi_references" | "relation" | "date_time" | "group" | "key_value" | "repeat" | "custom_array" | "block" | "vector_input";
|
|
7
7
|
/**
|
|
@@ -135,7 +135,7 @@ export interface FormContext<M extends Record<string, unknown> = Record<string,
|
|
|
135
135
|
/**
|
|
136
136
|
* Collection of the entity being modified
|
|
137
137
|
*/
|
|
138
|
-
collection?:
|
|
138
|
+
collection?: CollectionConfig<M>;
|
|
139
139
|
/**
|
|
140
140
|
* Entity id, it can be undefined if it's a new entity
|
|
141
141
|
*/
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import type { EntityTableController } from "@rebasepro/types";
|
|
7
7
|
import type { CollectionDataController } from "@rebasepro/ui";
|
|
8
8
|
/**
|
|
9
|
-
* React hook that adapts
|
|
9
|
+
* React hook that adapts a EntityTableController to a CollectionDataController.
|
|
10
10
|
*
|
|
11
11
|
* Usage:
|
|
12
12
|
* ```tsx
|
|
@@ -16,10 +16,7 @@ import type { CollectionDataController } from "@rebasepro/ui";
|
|
|
16
16
|
* <CollectionView dataController={dataController} ... />
|
|
17
17
|
* ```
|
|
18
18
|
*/
|
|
19
|
-
export declare function useCollectionDataController<M extends Record<string, unknown>>(tableController: EntityTableController<M>): CollectionDataController<M
|
|
20
|
-
id: string | number;
|
|
21
|
-
path: string;
|
|
22
|
-
}>;
|
|
19
|
+
export declare function useCollectionDataController<M extends Record<string, unknown>>(tableController: EntityTableController<M>): CollectionDataController<M>;
|
|
23
20
|
/**
|
|
24
21
|
* Non-hook version for cases where you already have the data
|
|
25
22
|
* and just need to build a static controller.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CollectionConfig, UrlController, SidePanelController } from "@rebasepro/types";
|
|
2
2
|
export { removeInitialAndTrailingSlashes, removeInitialSlash, removeTrailingSlash, addInitialSlash, getLastSegment, resolveCollectionPathIds, getCollectionBySlugWithin, getCollectionPathsCombinations } from "@rebasepro/common";
|
|
3
3
|
/**
|
|
4
|
-
* Navigate to
|
|
4
|
+
* Navigate to a entity using either a side panel or full-screen mode.
|
|
5
5
|
* This is an admin-specific UI concern and lives here (not in common).
|
|
6
6
|
*/
|
|
7
|
-
export declare function navigateToEntity({ openEntityMode, collection, entityId, copy, path, selectedTab, defaultValues,
|
|
7
|
+
export declare function navigateToEntity({ openEntityMode, collection, entityId, copy, path, selectedTab, defaultValues, sidePanelController, onClose, navigation, replace }: {
|
|
8
8
|
openEntityMode?: "side_panel" | "full_screen" | "split" | "dialog";
|
|
9
|
-
collection?:
|
|
9
|
+
collection?: CollectionConfig;
|
|
10
10
|
entityId?: string | number;
|
|
11
11
|
selectedTab?: string;
|
|
12
12
|
copy?: boolean;
|
|
@@ -14,13 +14,13 @@ export declare function navigateToEntity({ openEntityMode, collection, entityId,
|
|
|
14
14
|
* Pre-populate the new entity form with these values.
|
|
15
15
|
* Only applied when entityId is not set (i.e. "new" mode).
|
|
16
16
|
*
|
|
17
|
-
* Side panel: passed through
|
|
17
|
+
* Side panel: passed through SidePanelBindingProps → EditViewBinding.
|
|
18
18
|
* Full screen: carried via React Router location.state so the route
|
|
19
19
|
* component can read it on mount without polluting the URL.
|
|
20
20
|
*/
|
|
21
21
|
defaultValues?: Record<string, unknown>;
|
|
22
22
|
path: string;
|
|
23
|
-
|
|
23
|
+
sidePanelController: SidePanelController;
|
|
24
24
|
onClose?: () => void;
|
|
25
25
|
navigation: UrlController;
|
|
26
26
|
replace?: boolean;
|
package/dist/util/previews.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CollectionConfig, PropertyConfig } from "@rebasepro/types";
|
|
2
2
|
import { AuthController } from "@rebasepro/types";
|
|
3
|
-
export declare function getEntityPreviewKeys(authController: AuthController, targetCollection:
|
|
4
|
-
export declare function getEntityTitlePropertyKey<M extends Record<string, unknown>>(collection:
|
|
3
|
+
export declare function getEntityPreviewKeys(authController: AuthController, targetCollection: CollectionConfig<any>, fields: Record<string, PropertyConfig>, previewProperties?: string[], limit?: number): string[];
|
|
4
|
+
export declare function getEntityTitlePropertyKey<M extends Record<string, unknown>>(collection: CollectionConfig<M>, propertyConfigs: Record<string, PropertyConfig>): string | undefined;
|
|
5
5
|
/**
|
|
6
6
|
* Attempt to turn a title value (which might be a relation, reference, date, array, or other complex object)
|
|
7
7
|
* into a renderable, human-readable string.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Properties } from "@rebasepro/types";
|
|
2
|
-
import type {
|
|
2
|
+
import type { CollectionConfig, Property, PropertyConfig } from "@rebasepro/types";
|
|
3
3
|
import React from "react";
|
|
4
4
|
import type { IconSize } from "@rebasepro/ui";
|
|
5
5
|
export declare function isReferenceProperty(property: Property): boolean | null;
|
|
@@ -22,4 +22,4 @@ export declare function getBracketNotation(path: string): string;
|
|
|
22
22
|
* @param propertiesOrder
|
|
23
23
|
*/
|
|
24
24
|
export declare function getPropertiesWithPropertiesOrder(properties: Properties, propertiesOrder?: string[]): Properties;
|
|
25
|
-
export declare function getDefaultPropertiesOrder(collection:
|
|
25
|
+
export declare function getDefaultPropertiesOrder(collection: CollectionConfig): string[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared tab value constants used by
|
|
2
|
+
* Shared tab value constants used by EditViewBinding and DetailViewBinding.
|
|
3
3
|
*/
|
|
4
4
|
export declare const MAIN_TAB_VALUE = "__main_##Q$SC^#S6";
|
|
5
5
|
export declare const JSON_TAB_VALUE = "__json";
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rebasepro/admin",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.9.1-canary.09aaf62",
|
|
5
5
|
"description": "Rebase CMS — content management views, forms, and routing",
|
|
6
6
|
"funding": {
|
|
7
7
|
"url": "https://github.com/sponsors/rebaseco"
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"types": "./dist/index.d.ts",
|
|
19
19
|
"source": "src/index.ts",
|
|
20
20
|
"engines": {
|
|
21
|
-
"node": ">=
|
|
21
|
+
"node": ">=20"
|
|
22
22
|
},
|
|
23
23
|
"keywords": [
|
|
24
24
|
"rebase",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"import": "./dist/index.js"
|
|
39
39
|
},
|
|
40
40
|
"./editor": {
|
|
41
|
-
"types": "./dist/editor.d.ts",
|
|
41
|
+
"types": "./dist/editor/index.d.ts",
|
|
42
42
|
"development": "./dist/editor.js",
|
|
43
43
|
"import": "./dist/editor.js"
|
|
44
44
|
},
|
|
@@ -83,13 +83,13 @@
|
|
|
83
83
|
"react-dropzone": "^15.0.0",
|
|
84
84
|
"react-use-measure": "^2.1.7",
|
|
85
85
|
"zod": "^4.4.3",
|
|
86
|
-
"@rebasepro/common": "0.
|
|
87
|
-
"@rebasepro/
|
|
88
|
-
"@rebasepro/
|
|
89
|
-
"@rebasepro/
|
|
90
|
-
"@rebasepro/types": "0.
|
|
91
|
-
"@rebasepro/
|
|
92
|
-
"@rebasepro/
|
|
86
|
+
"@rebasepro/common": "0.9.1-canary.09aaf62",
|
|
87
|
+
"@rebasepro/app": "0.9.1-canary.09aaf62",
|
|
88
|
+
"@rebasepro/inference": "0.9.1-canary.09aaf62",
|
|
89
|
+
"@rebasepro/forms": "0.9.1-canary.09aaf62",
|
|
90
|
+
"@rebasepro/types": "0.9.1-canary.09aaf62",
|
|
91
|
+
"@rebasepro/utils": "0.9.1-canary.09aaf62",
|
|
92
|
+
"@rebasepro/ui": "0.9.1-canary.09aaf62"
|
|
93
93
|
},
|
|
94
94
|
"peerDependencies": {
|
|
95
95
|
"react": ">=19.0.0",
|
|
@@ -153,17 +153,12 @@
|
|
|
153
153
|
],
|
|
154
154
|
"moduleNameMapper": {
|
|
155
155
|
"\\.(css|less)$": "<rootDir>/test/__mocks__/styleMock.js",
|
|
156
|
-
"^@rebasepro/
|
|
157
|
-
"^@rebasepro/core$": "<rootDir>/../core/src/index.ts",
|
|
158
|
-
"^@rebasepro/common$": "<rootDir>/../common/src/index.ts",
|
|
159
|
-
"^@rebasepro/types$": "<rootDir>/../types/src/index.ts",
|
|
160
|
-
"^@rebasepro/formex$": "<rootDir>/../formex/src/index.ts",
|
|
161
|
-
"^@rebasepro/utils$": "<rootDir>/../utils/src/index.ts"
|
|
156
|
+
"^@rebasepro/([a-z0-9-]+)$": "<rootDir>/../$1/src/index.ts"
|
|
162
157
|
}
|
|
163
158
|
},
|
|
164
159
|
"scripts": {
|
|
165
160
|
"watch": "vite build --watch",
|
|
166
|
-
"build": "vite build && tsc --emitDeclarationOnly -p tsconfig.prod.json",
|
|
161
|
+
"build": "vite build && tsc --emitDeclarationOnly -p tsconfig.prod.json && node ../../scripts/assert-build-output.mjs",
|
|
167
162
|
"test:lint": "eslint \"src/**\" --quiet",
|
|
168
163
|
"test": "jest --passWithNoTests",
|
|
169
164
|
"clean": "rm -rf dist && find ./src -name '*.js' -type f | xargs rm -f",
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { useUrlController } from "./_cms_internals";
|
|
2
2
|
import React, { useCallback, useEffect, useMemo, useState } from "react";
|
|
3
|
-
import { Entity,
|
|
3
|
+
import { Entity, CollectionConfig, Property, TableMetadata, User } from "@rebasepro/types";
|
|
4
4
|
import { deepEqual as equal } from "fast-equals";
|
|
5
5
|
|
|
6
6
|
import { CollectionsConfigController } from "./types/config_controller";
|
|
7
|
-
import { useCustomizationController, useRebaseContext, useAuthController, useSnackbarController } from "@rebasepro/
|
|
7
|
+
import { useCustomizationController, useRebaseContext, useAuthController, useSnackbarController } from "@rebasepro/app";
|
|
8
8
|
import { getTableName } from "@rebasepro/common";
|
|
9
9
|
import { useNavigate } from "react-router-dom";
|
|
10
10
|
import { CollectionEditorController } from "./types/collection_editor_controller";
|
|
@@ -87,7 +87,7 @@ export const ConfigControllerProvider = React.memo(
|
|
|
87
87
|
|
|
88
88
|
const [currentDialog, setCurrentDialog] = React.useState<{
|
|
89
89
|
isNewCollection: boolean,
|
|
90
|
-
parentCollection?:
|
|
90
|
+
parentCollection?: CollectionConfig,
|
|
91
91
|
editedCollectionId?: string,
|
|
92
92
|
path?: string,
|
|
93
93
|
parentCollectionSlugs: string[], parentEntityIds: string[],
|
|
@@ -95,7 +95,7 @@ export const ConfigControllerProvider = React.memo(
|
|
|
95
95
|
path?: string,
|
|
96
96
|
name?: string
|
|
97
97
|
},
|
|
98
|
-
copyFrom?:
|
|
98
|
+
copyFrom?: CollectionConfig,
|
|
99
99
|
redirect: boolean,
|
|
100
100
|
existingEntities?: Entity[],
|
|
101
101
|
pathSuggestions?: string[];
|
|
@@ -107,14 +107,14 @@ export const ConfigControllerProvider = React.memo(
|
|
|
107
107
|
propertyKey?: string,
|
|
108
108
|
property?: Property,
|
|
109
109
|
namespace?: string,
|
|
110
|
-
parentCollection?:
|
|
110
|
+
parentCollection?: CollectionConfig,
|
|
111
111
|
currentPropertiesOrder?: string[],
|
|
112
112
|
editedCollectionId: string,
|
|
113
113
|
path?: string,
|
|
114
114
|
parentCollectionSlugs: string[], parentEntityIds: string[],
|
|
115
115
|
|
|
116
116
|
existingEntities?: Entity[];
|
|
117
|
-
collection?:
|
|
117
|
+
collection?: CollectionConfig;
|
|
118
118
|
}>();
|
|
119
119
|
|
|
120
120
|
|
|
@@ -130,7 +130,7 @@ export const ConfigControllerProvider = React.memo(
|
|
|
130
130
|
id?: string,
|
|
131
131
|
path?: string,
|
|
132
132
|
parentCollectionSlugs: string[], parentEntityIds: string[],
|
|
133
|
-
parentCollection?:
|
|
133
|
+
parentCollection?: CollectionConfig,
|
|
134
134
|
existingEntities?: Entity[],
|
|
135
135
|
initialView?: "general" | "display" | "properties",
|
|
136
136
|
expandKanban?: boolean
|
|
@@ -169,7 +169,7 @@ parentEntityIds,
|
|
|
169
169
|
currentPropertiesOrder?: string[],
|
|
170
170
|
editedCollectionId: string,
|
|
171
171
|
parentCollectionSlugs: string[], parentEntityIds: string[],
|
|
172
|
-
collection:
|
|
172
|
+
collection: CollectionConfig,
|
|
173
173
|
existingEntities?: Entity[]
|
|
174
174
|
}) => {
|
|
175
175
|
console.debug("Edit property", propertyKey, property, editedCollectionId, currentPropertiesOrder, parentCollectionSlugs, parentEntityIds, collection);
|
|
@@ -207,12 +207,12 @@ parentEntityIds,
|
|
|
207
207
|
sourceClick
|
|
208
208
|
}: {
|
|
209
209
|
parentCollectionSlugs: string[], parentEntityIds: string[],
|
|
210
|
-
parentCollection?:
|
|
210
|
+
parentCollection?: CollectionConfig
|
|
211
211
|
initialValues?: {
|
|
212
212
|
path?: string,
|
|
213
213
|
name?: string
|
|
214
214
|
},
|
|
215
|
-
copyFrom?:
|
|
215
|
+
copyFrom?: CollectionConfig,
|
|
216
216
|
redirect: boolean,
|
|
217
217
|
sourceClick?: string
|
|
218
218
|
}) => {
|
|
@@ -262,7 +262,7 @@ parentEntityIds,
|
|
|
262
262
|
onAnalyticsEvent,
|
|
263
263
|
unmappedTables,
|
|
264
264
|
onFetchTableMetadata,
|
|
265
|
-
handleClose: (collection?:
|
|
265
|
+
handleClose: (collection?: CollectionConfig) => {
|
|
266
266
|
if (currentDialog?.redirect) {
|
|
267
267
|
if (collection && currentDialog?.isNewCollection && !currentDialog.parentCollectionSlugs.length) {
|
|
268
268
|
const url = urlController.buildUrlCollectionPath(collection.slug);
|
|
@@ -8,18 +8,18 @@
|
|
|
8
8
|
export { useCollectionRegistryController } from "../hooks/navigation/contexts/CollectionRegistryContext";
|
|
9
9
|
export { useNavigationStateController } from "../hooks/navigation/contexts/NavigationStateContext";
|
|
10
10
|
export { useUrlController } from "../hooks/navigation/contexts/UrlContext";
|
|
11
|
-
export {
|
|
11
|
+
export { useSidePanel } from "../hooks/useSidePanel";
|
|
12
12
|
export { useBreadcrumbsController } from "../hooks/useBreadcrumbsController";
|
|
13
13
|
|
|
14
14
|
// Components
|
|
15
15
|
export { FieldCaption } from "../components/FieldCaption";
|
|
16
16
|
export { SearchIconsView } from "../components/SearchIconsView";
|
|
17
17
|
export { PropertyConfigBadge } from "../components/PropertyConfigBadge";
|
|
18
|
-
export {
|
|
18
|
+
export { CollectionTableBinding } from "../components/CollectionTableBinding";
|
|
19
19
|
export { VirtualTableInput } from "@rebasepro/ui";
|
|
20
20
|
export { ArrayContainer } from "../components/ArrayContainer";
|
|
21
21
|
export type { ArrayEntryParams } from "../components/ArrayContainer";
|
|
22
|
-
export { useSelectionController } from "../components/
|
|
22
|
+
export { useSelectionController } from "../components/CollectionViewBinding/useSelectionController";
|
|
23
23
|
|
|
24
24
|
// Data import
|
|
25
25
|
export { ImportFileUpload } from "../data_import/components/ImportFileUpload";
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CollectionConfig } from "@rebasepro/types";
|
|
2
2
|
|
|
3
3
|
export interface GenerateCollectionRequest {
|
|
4
4
|
/** User's natural language description of what they want */
|
|
5
5
|
prompt: string;
|
|
6
6
|
|
|
7
7
|
/** Other collections in the project (for context/relationships). Limit to 30. */
|
|
8
|
-
existingCollections: Partial<
|
|
8
|
+
existingCollections: Partial<CollectionConfig>[];
|
|
9
9
|
|
|
10
10
|
/** Optional for generate, required for modifications. If provided, modifies this collection */
|
|
11
|
-
existingCollection?: Partial<
|
|
11
|
+
existingCollection?: Partial<CollectionConfig>;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
/** Operation types for modifying a collection */
|
|
@@ -23,7 +23,7 @@ export interface CollectionOperation {
|
|
|
23
23
|
|
|
24
24
|
/** Result from collection generation, including optional delta operations */
|
|
25
25
|
export interface GenerateCollectionResult {
|
|
26
|
-
collection:
|
|
26
|
+
collection: CollectionConfig;
|
|
27
27
|
operations?: CollectionOperation[];
|
|
28
28
|
}
|
|
29
29
|
|
|
@@ -57,7 +57,7 @@ export interface BuildCollectionGenerationCallbackProps {
|
|
|
57
57
|
/**
|
|
58
58
|
* Function to get the auth token.
|
|
59
59
|
* This is typically `authController.getAuthToken` from `@rebasepro/client`
|
|
60
|
-
* (or `@rebasepro/
|
|
60
|
+
* (or `@rebasepro/firebase` if using Firebase).
|
|
61
61
|
*/
|
|
62
62
|
getAuthToken: () => Promise<string>;
|
|
63
63
|
|
|
@@ -75,15 +75,15 @@ export interface BuildCollectionGenerationCallbackProps {
|
|
|
75
75
|
*
|
|
76
76
|
* @example
|
|
77
77
|
* ```tsx
|
|
78
|
-
* import {
|
|
78
|
+
* import { RebaseAdmin } from "@rebasepro/admin";
|
|
79
79
|
* import { buildCollectionGenerationCallback } from "@rebasepro/admin/collection_editor";
|
|
80
|
-
* import { useFirebaseAuthController } from "@rebasepro/
|
|
80
|
+
* import { useFirebaseAuthController } from "@rebasepro/firebase";
|
|
81
81
|
*
|
|
82
82
|
* const authController = useFirebaseAuthController({ firebaseApp });
|
|
83
83
|
*
|
|
84
84
|
* export function App() {
|
|
85
85
|
* return (
|
|
86
|
-
* <
|
|
86
|
+
* <RebaseAdmin
|
|
87
87
|
* collectionEditor={{
|
|
88
88
|
* generateCollection: buildCollectionGenerationCallback({
|
|
89
89
|
* getAuthToken: authController.getAuthToken
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import type React from "react";
|
|
15
|
-
import type { SerializableProperty,
|
|
15
|
+
import type { SerializableProperty, SerializableCollectionConfig } from "./serializable_types";
|
|
16
16
|
|
|
17
17
|
// ═══════════════════════════════════════════════════════════════════════
|
|
18
18
|
// PROPERTY TYPE PRESETS
|
|
@@ -90,7 +90,7 @@ export interface ExtraPropertyFieldsParams {
|
|
|
90
90
|
/** The full current property being edited (serializable form). */
|
|
91
91
|
property: SerializableProperty;
|
|
92
92
|
/** The collection this property belongs to (serializable form). */
|
|
93
|
-
collection:
|
|
93
|
+
collection: SerializableCollectionConfig;
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
/**
|
|
@@ -102,7 +102,7 @@ export interface ExtraCollectionFieldsParams {
|
|
|
102
102
|
/** Callback to update a single metadata key. Triggers dirty-state tracking. */
|
|
103
103
|
onMetadataChange: (key: string, value: unknown) => void;
|
|
104
104
|
/** The full current collection being edited (serializable form). */
|
|
105
|
-
collection:
|
|
105
|
+
collection: SerializableCollectionConfig;
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
// ═══════════════════════════════════════════════════════════════════════
|
|
@@ -23,16 +23,16 @@ export {
|
|
|
23
23
|
} from "./useJsonCollectionsConfigController";
|
|
24
24
|
|
|
25
25
|
export {
|
|
26
|
-
|
|
26
|
+
toSerializableCollectionConfig,
|
|
27
27
|
toSerializableProperty,
|
|
28
28
|
toSerializableProperties,
|
|
29
|
-
|
|
29
|
+
fromSerializableCollectionConfig,
|
|
30
30
|
fromSerializableProperty,
|
|
31
31
|
fromSerializableProperties,
|
|
32
32
|
} from "./serializable_utils";
|
|
33
33
|
|
|
34
34
|
export type {
|
|
35
|
-
|
|
35
|
+
SerializableCollectionConfig,
|
|
36
36
|
SerializableProperty,
|
|
37
37
|
SerializableProperties,
|
|
38
38
|
SerializableBaseProperty,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CollectionConfig, Property, StringProperty, NumberProperty, ArrayProperty, TableColumnInfo, TableMetadata, PostgresProperties } from "@rebasepro/types";
|
|
2
2
|
import { prettifyIdentifier } from "@rebasepro/utils";
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -193,13 +193,13 @@ label: prettifyIdentifier(v) })),
|
|
|
193
193
|
}
|
|
194
194
|
|
|
195
195
|
/**
|
|
196
|
-
* Builds a partial
|
|
196
|
+
* Builds a partial CollectionConfig from PostgreSQL table metadata.
|
|
197
197
|
* This is used when creating a new collection from an existing database table.
|
|
198
198
|
*/
|
|
199
199
|
export function buildCollectionFromTableMetadata(
|
|
200
200
|
tableName: string,
|
|
201
201
|
metadata: TableMetadata
|
|
202
|
-
): Partial<
|
|
202
|
+
): Partial<CollectionConfig> {
|
|
203
203
|
const properties: Record<string, Property> = {};
|
|
204
204
|
const propertiesOrder: string[] = [];
|
|
205
205
|
const relations: any[] = []; // In the builder/editor, target can be a string path before hydration
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* class instances) from the original types in `@rebasepro/types`, making
|
|
6
6
|
* them safe for `JSON.stringify()` / database storage.
|
|
7
7
|
*
|
|
8
|
-
* Use `
|
|
8
|
+
* Use `toSerializableCollectionConfig` / `fromSerializableCollectionConfig` from
|
|
9
9
|
* `./serializable_utils` to convert between the original and serializable forms.
|
|
10
10
|
*
|
|
11
11
|
* @module
|
|
@@ -263,7 +263,7 @@ export interface SerializableReferenceProperty extends SerializableBaseProperty
|
|
|
263
263
|
/**
|
|
264
264
|
* JSON-serializable `RelationProperty`.
|
|
265
265
|
* `target` is string-only (collection slug). The function variant
|
|
266
|
-
* `() =>
|
|
266
|
+
* `() => CollectionConfig` is not serializable.
|
|
267
267
|
*/
|
|
268
268
|
export interface SerializableRelationProperty extends SerializableBaseProperty {
|
|
269
269
|
ui?: SerializableRelationUIConfig;
|
|
@@ -289,7 +289,7 @@ export interface SerializableRelationProperty extends SerializableBaseProperty {
|
|
|
289
289
|
includeId?: boolean;
|
|
290
290
|
includeEntityLink?: boolean;
|
|
291
291
|
widget?: "select" | "dialog";
|
|
292
|
-
// overrides are dropped (can contain non-serializable
|
|
292
|
+
// overrides are dropped (can contain non-serializable CollectionConfig fields)
|
|
293
293
|
// relation (resolved Relation object) is dropped (runtime-only, contains function target)
|
|
294
294
|
}
|
|
295
295
|
|
|
@@ -352,7 +352,7 @@ export type SerializableProperties = {
|
|
|
352
352
|
// ═══════════════════════════════════════════════════════════════════════
|
|
353
353
|
|
|
354
354
|
/**
|
|
355
|
-
* JSON-serializable version of `
|
|
355
|
+
* JSON-serializable version of `CollectionConfig` / `BaseCollectionConfig`.
|
|
356
356
|
*
|
|
357
357
|
* Strips all non-serializable fields:
|
|
358
358
|
* - Functions: `callbacks`, `childCollections`, `additionalFields`, `defaultSelectedView` (fn)
|
|
@@ -364,7 +364,7 @@ export type SerializableProperties = {
|
|
|
364
364
|
*
|
|
365
365
|
* Keeps all data-describing fields that the collection editor works with.
|
|
366
366
|
*/
|
|
367
|
-
export interface
|
|
367
|
+
export interface SerializableCollectionConfig {
|
|
368
368
|
slug: string;
|
|
369
369
|
name: string;
|
|
370
370
|
singularName?: string;
|
|
@@ -430,7 +430,7 @@ export interface SerializableCollection {
|
|
|
430
430
|
// ── SQL / Postgres-specific ───────────────────────────────────────
|
|
431
431
|
table?: string;
|
|
432
432
|
schema?: string;
|
|
433
|
-
securityRules?: SecurityRule[];
|
|
433
|
+
securityRules?: readonly SecurityRule[];
|
|
434
434
|
|
|
435
435
|
// ── Owner ─────────────────────────────────────────────────────────
|
|
436
436
|
ownerId?: string;
|
|
@@ -452,10 +452,10 @@ export interface SerializableCollection {
|
|
|
452
452
|
*/
|
|
453
453
|
export interface JsonCollectionStore {
|
|
454
454
|
/** Load all persisted collections. */
|
|
455
|
-
load(): Promise<
|
|
455
|
+
load(): Promise<SerializableCollectionConfig[]>;
|
|
456
456
|
|
|
457
457
|
/** Save (create or update) a single collection by its slug. */
|
|
458
|
-
save(slug: string, data:
|
|
458
|
+
save(slug: string, data: SerializableCollectionConfig): Promise<void>;
|
|
459
459
|
|
|
460
460
|
/** Delete a collection by its slug. */
|
|
461
461
|
delete(slug: string): Promise<void>;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Conversion utilities between the full Rebase types and their
|
|
3
3
|
* JSON-serializable counterparts.
|
|
4
4
|
*
|
|
5
|
-
* - `
|
|
6
|
-
* - `
|
|
5
|
+
* - `toSerializableCollectionConfig` / `toSerializableProperty` — strip non-serializable fields
|
|
6
|
+
* - `fromSerializableCollectionConfig` / `fromSerializableProperty` — reconstruct original types
|
|
7
7
|
*
|
|
8
8
|
* @module
|
|
9
9
|
*/
|
|
@@ -14,7 +14,7 @@ import type {
|
|
|
14
14
|
BinaryProperty,
|
|
15
15
|
BooleanProperty,
|
|
16
16
|
DateProperty,
|
|
17
|
-
|
|
17
|
+
CollectionConfig,
|
|
18
18
|
GeopointProperty,
|
|
19
19
|
MapProperty,
|
|
20
20
|
NumberProperty,
|
|
@@ -33,7 +33,7 @@ import type {
|
|
|
33
33
|
SerializableBaseUIConfig,
|
|
34
34
|
SerializableBinaryProperty,
|
|
35
35
|
SerializableBooleanProperty,
|
|
36
|
-
|
|
36
|
+
SerializableCollectionConfig,
|
|
37
37
|
SerializableDateProperty,
|
|
38
38
|
SerializableDateValidation,
|
|
39
39
|
SerializableGeopointProperty,
|
|
@@ -107,7 +107,7 @@ function serializeMatches(matches: string | RegExp | undefined): string | undefi
|
|
|
107
107
|
|
|
108
108
|
/**
|
|
109
109
|
* Resolve a relation target to a string slug.
|
|
110
|
-
* Functions are called to extract the target;
|
|
110
|
+
* Functions are called to extract the target; CollectionConfig objects
|
|
111
111
|
* use their slug.
|
|
112
112
|
*/
|
|
113
113
|
function resolveRelationTarget(target: RelationProperty["target"]): string | undefined {
|
|
@@ -118,7 +118,7 @@ function resolveRelationTarget(target: RelationProperty["target"]): string | und
|
|
|
118
118
|
const resolved = target();
|
|
119
119
|
if (typeof resolved === "string") return resolved;
|
|
120
120
|
if (resolved && typeof resolved === "object" && "slug" in resolved) {
|
|
121
|
-
return (resolved as
|
|
121
|
+
return (resolved as CollectionConfig).slug;
|
|
122
122
|
}
|
|
123
123
|
} catch {
|
|
124
124
|
// If the lazy resolver throws (e.g., circular dependency not yet ready), return undefined
|
|
@@ -389,15 +389,15 @@ export function toSerializableProperties(properties: Properties): SerializablePr
|
|
|
389
389
|
// ═══════════════════════════════════════════════════════════════════════
|
|
390
390
|
|
|
391
391
|
/**
|
|
392
|
-
* Convert an `
|
|
392
|
+
* Convert an `CollectionConfig` to its JSON-serializable form.
|
|
393
393
|
*
|
|
394
394
|
* Strips all non-serializable fields (functions, React nodes, class instances)
|
|
395
395
|
* while preserving the structural schema that the collection editor works with.
|
|
396
396
|
*
|
|
397
397
|
* The result is safe for `JSON.stringify()` and database storage.
|
|
398
398
|
*/
|
|
399
|
-
export function
|
|
400
|
-
const result:
|
|
399
|
+
export function toSerializableCollectionConfig(collection: CollectionConfig): SerializableCollectionConfig {
|
|
400
|
+
const result: SerializableCollectionConfig = {
|
|
401
401
|
slug: collection.slug,
|
|
402
402
|
name: collection.name,
|
|
403
403
|
properties: toSerializableProperties(collection.properties),
|
|
@@ -436,13 +436,13 @@ export function toSerializableCollection(collection: EntityCollection): Serializ
|
|
|
436
436
|
if (collection.localChangesBackup !== undefined) result.localChangesBackup = collection.localChangesBackup;
|
|
437
437
|
|
|
438
438
|
// Kanban
|
|
439
|
-
if (collection.kanban) result.kanban = collection.kanban as
|
|
439
|
+
if (collection.kanban) result.kanban = collection.kanban as SerializableCollectionConfig["kanban"];
|
|
440
440
|
|
|
441
441
|
// Filters and sorting
|
|
442
|
-
if (collection.fixedFilter) result.fixedFilter = collection.fixedFilter as
|
|
443
|
-
if (collection.defaultFilter) result.defaultFilter = collection.defaultFilter as
|
|
444
|
-
if (collection.filterPresets) result.filterPresets = collection.filterPresets as
|
|
445
|
-
if (collection.sort) result.sort = collection.sort as
|
|
442
|
+
if (collection.fixedFilter) result.fixedFilter = collection.fixedFilter as SerializableCollectionConfig["fixedFilter"];
|
|
443
|
+
if (collection.defaultFilter) result.defaultFilter = collection.defaultFilter as SerializableCollectionConfig["defaultFilter"];
|
|
444
|
+
if (collection.filterPresets) result.filterPresets = collection.filterPresets as SerializableCollectionConfig["filterPresets"];
|
|
445
|
+
if (collection.sort) result.sort = collection.sort as SerializableCollectionConfig["sort"];
|
|
446
446
|
|
|
447
447
|
// Numeric / boolean flags
|
|
448
448
|
if (collection.pagination !== undefined) result.pagination = collection.pagination;
|
|
@@ -560,17 +560,17 @@ export function fromSerializableProperties(serialized: SerializableProperties):
|
|
|
560
560
|
// ═══════════════════════════════════════════════════════════════════════
|
|
561
561
|
|
|
562
562
|
/**
|
|
563
|
-
* Convert a `
|
|
563
|
+
* Convert a `SerializableCollectionConfig` back to an `CollectionConfig`.
|
|
564
564
|
*
|
|
565
565
|
* The result will NOT contain any of the non-serializable fields
|
|
566
566
|
* (callbacks, entityActions, etc.) — those must be re-attached by the
|
|
567
567
|
* consumer if needed.
|
|
568
568
|
*/
|
|
569
|
-
export function
|
|
569
|
+
export function fromSerializableCollectionConfig(serialized: SerializableCollectionConfig): CollectionConfig {
|
|
570
570
|
const { properties, ...rest } = serialized;
|
|
571
571
|
|
|
572
572
|
return {
|
|
573
573
|
...rest,
|
|
574
574
|
properties: fromSerializableProperties(properties),
|
|
575
|
-
} as
|
|
575
|
+
} as CollectionConfig;
|
|
576
576
|
}
|