@rebasepro/cms 0.17.3 → 0.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/{CollectionEditorDialog-B-akreOU.js → CollectionEditorDialog-BeX4b92r.js} +13 -7
- package/dist/{CollectionEditorDialog-B-akreOU.js.map → CollectionEditorDialog-BeX4b92r.js.map} +1 -1
- package/dist/{PropertyEditView-CiY84wkR.js → PropertyEditView-C7thfj4L.js} +3 -3
- package/dist/{PropertyEditView-CiY84wkR.js.map → PropertyEditView-C7thfj4L.js.map} +1 -1
- package/dist/{RouterCollectionsStudioView-DkAWda4N.js → RouterCollectionsStudioView-BtjzvB6E.js} +4 -4
- package/dist/{RouterCollectionsStudioView-DkAWda4N.js.map → RouterCollectionsStudioView-BtjzvB6E.js.map} +1 -1
- package/dist/{SchemaChangeDialog-DceT8QFX.js → SchemaChangeDialog-CkqK6KOC.js} +4 -2
- package/dist/{SchemaChangeDialog-DceT8QFX.js.map → SchemaChangeDialog-CkqK6KOC.js.map} +1 -1
- package/dist/collection_editor/api/generateCollectionApi.d.ts +1 -2
- package/dist/collection_editor_ui.d.ts +2 -0
- package/dist/collection_editor_ui.js +6 -5
- package/dist/collection_editor_ui.js.map +1 -1
- package/dist/components/DeleteEntityDialog.d.ts +2 -3
- package/dist/components/RebaseLayout.d.ts +11 -4
- package/dist/components/field_configs.d.ts +1 -1
- package/dist/editor/sanitize-html.d.ts +15 -0
- package/dist/editor.js +195 -10
- package/dist/editor.js.map +1 -1
- package/dist/{export-Ben8E355.js → export--arni_VY.js} +2 -2
- package/dist/{export-Ben8E355.js.map → export--arni_VY.js.map} +1 -1
- package/dist/form/components/LabelWithIcon.d.ts +10 -0
- package/dist/{history-DIEVd26f.js → history-C2TpoQwi.js} +2 -2
- package/dist/{history-DIEVd26f.js.map → history-C2TpoQwi.js.map} +1 -1
- package/dist/hooks/navigation/useBuildNavigationStateController.d.ts +1 -1
- package/dist/hooks/navigation/useResolvedViews.d.ts +1 -1
- package/dist/hooks/navigation/useTopLevelNavigation.d.ts +1 -1
- package/dist/{import-D25x7ko-.js → import-DTkXNoBg.js} +2 -2
- package/dist/{import-D25x7ko-.js.map → import-DTkXNoBg.js.map} +1 -1
- package/dist/index.js +78 -33
- package/dist/index.js.map +1 -1
- package/dist/util/propertyConfigMapper.d.ts +1 -1
- package/dist/util-CfLFggP7.js +57 -0
- package/dist/util-CfLFggP7.js.map +1 -0
- package/dist/{util-DVqnqlLn.js → util-DE1WQW6h.js} +134 -112
- package/dist/util-DE1WQW6h.js.map +1 -0
- package/package.json +42 -34
- package/dist/util-DVqnqlLn.js.map +0 -1
- package/src/collection_editor/CollectionEditorDialogsContext.tsx +0 -25
- package/src/collection_editor/ConfigControllerProvider.tsx +0 -395
- package/src/collection_editor/_cms_internals.ts +0 -41
- package/src/collection_editor/api/generateCollectionApi.ts +0 -126
- package/src/collection_editor/api/index.ts +0 -1
- package/src/collection_editor/extensibility_types.ts +0 -168
- package/src/collection_editor/index.ts +0 -108
- package/src/collection_editor/liveSchemaClient.ts +0 -285
- package/src/collection_editor/relation_kinds.ts +0 -44
- package/src/collection_editor/serializable_types.ts +0 -535
- package/src/collection_editor/serializable_utils.ts +0 -729
- package/src/collection_editor/types/collection_editor_controller.tsx +0 -62
- package/src/collection_editor/types/collection_inference.ts +0 -18
- package/src/collection_editor/types/config_controller.tsx +0 -121
- package/src/collection_editor/ui/AddKanbanColumnAction.tsx +0 -199
- package/src/collection_editor/ui/CollectionViewHeaderAction.tsx +0 -51
- package/src/collection_editor/ui/EditorCollectionAction.tsx +0 -54
- package/src/collection_editor/ui/EditorCollectionActionStart.tsx +0 -90
- package/src/collection_editor/ui/EditorEntityAction.tsx +0 -50
- package/src/collection_editor/ui/HomePageEditorCollectionAction.tsx +0 -114
- package/src/collection_editor/ui/KanbanSetupAction.tsx +0 -43
- package/src/collection_editor/ui/MissingReferenceWidget.tsx +0 -35
- package/src/collection_editor/ui/NewCollectionButton.tsx +0 -27
- package/src/collection_editor/ui/NewCollectionCard.tsx +0 -48
- package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +0 -49
- package/src/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.tsx +0 -260
- package/src/collection_editor/ui/collection_editor/AIModifiedPathsContext.tsx +0 -90
- package/src/collection_editor/ui/collection_editor/CollectionDetailsForm.tsx +0 -388
- package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +0 -1098
- package/src/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.tsx +0 -301
- package/src/collection_editor/ui/collection_editor/CollectionJsonImportDialog.tsx +0 -172
- package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +0 -620
- package/src/collection_editor/ui/collection_editor/CollectionRLSTab.tsx +0 -530
- package/src/collection_editor/ui/collection_editor/CollectionRelationsTab.tsx +0 -462
- package/src/collection_editor/ui/collection_editor/CollectionStudioView.tsx +0 -104
- package/src/collection_editor/ui/collection_editor/CollectionYupValidation.tsx +0 -9
- package/src/collection_editor/ui/collection_editor/CollectionsStudioView.tsx +0 -199
- package/src/collection_editor/ui/collection_editor/DisplaySettingsForm.tsx +0 -315
- package/src/collection_editor/ui/collection_editor/EntityActionsEditTab.tsx +0 -164
- package/src/collection_editor/ui/collection_editor/EntityActionsSelectDialog.tsx +0 -40
- package/src/collection_editor/ui/collection_editor/EntityCustomViewsSelectDialog.tsx +0 -39
- package/src/collection_editor/ui/collection_editor/EnumForm.tsx +0 -373
- package/src/collection_editor/ui/collection_editor/GeneralSettingsForm.tsx +0 -288
- package/src/collection_editor/ui/collection_editor/GetCodeDialog.tsx +0 -141
- package/src/collection_editor/ui/collection_editor/KanbanConfigSection.tsx +0 -194
- package/src/collection_editor/ui/collection_editor/LayoutModeSwitch.tsx +0 -53
- package/src/collection_editor/ui/collection_editor/PropertyEditView.tsx +0 -980
- package/src/collection_editor/ui/collection_editor/PropertyFieldPreview.tsx +0 -164
- package/src/collection_editor/ui/collection_editor/PropertyTree.tsx +0 -364
- package/src/collection_editor/ui/collection_editor/RouterCollectionStudioView.tsx +0 -44
- package/src/collection_editor/ui/collection_editor/RouterCollectionsStudioView.tsx +0 -41
- package/src/collection_editor/ui/collection_editor/SchemaChangeDialog.tsx +0 -470
- package/src/collection_editor/ui/collection_editor/SubcollectionsEditTab.tsx +0 -256
- package/src/collection_editor/ui/collection_editor/SwitchControl.tsx +0 -39
- package/src/collection_editor/ui/collection_editor/ViewModeSwitch.tsx +0 -68
- package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +0 -67
- package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.tsx +0 -296
- package/src/collection_editor/ui/collection_editor/import/clean_import_data.ts +0 -57
- package/src/collection_editor/ui/collection_editor/properties/BlockPropertyField.tsx +0 -147
- package/src/collection_editor/ui/collection_editor/properties/BooleanPropertyField.tsx +0 -41
- package/src/collection_editor/ui/collection_editor/properties/CommonPropertyFields.tsx +0 -113
- package/src/collection_editor/ui/collection_editor/properties/DateTimePropertyField.tsx +0 -250
- package/src/collection_editor/ui/collection_editor/properties/EnumPropertyField.tsx +0 -126
- package/src/collection_editor/ui/collection_editor/properties/KeyValuePropertyField.tsx +0 -20
- package/src/collection_editor/ui/collection_editor/properties/MapPropertyField.tsx +0 -153
- package/src/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.tsx +0 -217
- package/src/collection_editor/ui/collection_editor/properties/NumberPropertyField.tsx +0 -117
- package/src/collection_editor/ui/collection_editor/properties/ReferencePropertyField.tsx +0 -129
- package/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.tsx +0 -335
- package/src/collection_editor/ui/collection_editor/properties/RepeatPropertyField.tsx +0 -107
- package/src/collection_editor/ui/collection_editor/properties/StoragePropertyField.tsx +0 -403
- package/src/collection_editor/ui/collection_editor/properties/StringPropertyField.tsx +0 -148
- package/src/collection_editor/ui/collection_editor/properties/UrlPropertyField.tsx +0 -91
- package/src/collection_editor/ui/collection_editor/properties/VectorPropertyField.tsx +0 -34
- package/src/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx +0 -49
- package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsEditor.tsx +0 -925
- package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsPanel.tsx +0 -28
- package/src/collection_editor/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx +0 -626
- package/src/collection_editor/ui/collection_editor/properties/conditions/index.ts +0 -6
- package/src/collection_editor/ui/collection_editor/properties/conditions/property_paths.ts +0 -93
- package/src/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx +0 -52
- package/src/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx +0 -63
- package/src/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx +0 -114
- package/src/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.tsx +0 -154
- package/src/collection_editor/ui/collection_editor/properties/validation/ValidationPanel.tsx +0 -28
- package/src/collection_editor/ui/collection_editor/templates/blog_template.ts +0 -112
- package/src/collection_editor/ui/collection_editor/templates/pages_template.ts +0 -183
- package/src/collection_editor/ui/collection_editor/templates/products_template.ts +0 -88
- package/src/collection_editor/ui/collection_editor/templates/users_template.ts +0 -42
- package/src/collection_editor/ui/collection_editor/util.ts +0 -28
- package/src/collection_editor/ui/collection_editor/utils/strings.ts +0 -1
- package/src/collection_editor/ui/collection_editor/utils/supported_fields.tsx +0 -39
- package/src/collection_editor/ui/collection_editor/utils/update_property_for_widget.ts +0 -276
- package/src/collection_editor/useCollectionEditorController.tsx +0 -9
- package/src/collection_editor/useCollectionsConfigController.tsx +0 -9
- package/src/collection_editor/useJsonCollectionsConfigController.tsx +0 -297
- package/src/collection_editor/useLiveSchemaEditing.tsx +0 -315
- package/src/collection_editor/useLocalCollectionsConfigController.tsx +0 -341
- package/src/collection_editor/useSafeSnackbarController.ts +0 -9
- package/src/collection_editor/validateCollectionJson.ts +0 -440
- package/src/collection_editor_ui.ts +0 -21
- package/src/components/AdditionalFieldValue.tsx +0 -68
- package/src/components/AdminModeSyncer.tsx +0 -56
- package/src/components/ArrayContainer.tsx +0 -542
- package/src/components/ClearFilterSortButton.tsx +0 -56
- package/src/components/CollectionEditorDialogs.tsx +0 -69
- package/src/components/CollectionPanel.tsx +0 -179
- package/src/components/CollectionTableBinding/CollectionRowActions.tsx +0 -244
- package/src/components/CollectionTableBinding/CollectionTableBinding.tsx +0 -394
- package/src/components/CollectionTableBinding/CollectionTableBindingProps.tsx +0 -172
- package/src/components/CollectionTableBinding/PropertyTableCell.tsx +0 -350
- package/src/components/CollectionTableBinding/column_utils.tsx +0 -155
- package/src/components/CollectionTableBinding/fields/TableMultipleRelationField.tsx +0 -131
- package/src/components/CollectionTableBinding/fields/TableReferenceField.tsx +0 -193
- package/src/components/CollectionTableBinding/fields/TableRelationField.tsx +0 -192
- package/src/components/CollectionTableBinding/fields/TableRelationSelectorField.tsx +0 -42
- package/src/components/CollectionTableBinding/fields/TableStorageUpload.tsx +0 -324
- package/src/components/CollectionTableBinding/fields/VirtualTableSelect.tsx +0 -132
- package/src/components/CollectionTableBinding/fields/VirtualTableUserSelect.tsx +0 -41
- package/src/components/CollectionTableBinding/index.tsx +0 -14
- package/src/components/CollectionTableBinding/internal/CollectionTableToolbar.tsx +0 -96
- package/src/components/CollectionTableBinding/internal/EntityTableCell.tsx +0 -309
- package/src/components/CollectionTableBinding/internal/EntityTableCellActions.tsx +0 -80
- package/src/components/CollectionTableBinding/internal/common.tsx +0 -74
- package/src/components/CollectionTableBinding/internal/popup_field/PopupFormField.tsx +0 -422
- package/src/components/CollectionTableBinding/internal/popup_field/useDraggable.tsx +0 -99
- package/src/components/CollectionTableBinding/internal/popup_field/useWindowSize.tsx +0 -22
- package/src/components/CollectionTableBinding/table_bindings.tsx +0 -350
- package/src/components/CollectionViewBinding/BoardCardBinding.tsx +0 -263
- package/src/components/CollectionViewBinding/CollectionBoardViewBinding.tsx +0 -662
- package/src/components/CollectionViewBinding/CollectionCardViewBinding.tsx +0 -159
- package/src/components/CollectionViewBinding/CollectionListViewBinding.tsx +0 -1430
- package/src/components/CollectionViewBinding/CollectionViewActions.tsx +0 -227
- package/src/components/CollectionViewBinding/CollectionViewBinding.tsx +0 -1603
- package/src/components/CollectionViewBinding/CollectionViewStartActions.tsx +0 -240
- package/src/components/CollectionViewBinding/EntityCardBinding.tsx +0 -239
- package/src/components/CollectionViewBinding/FilterPresetsButton.tsx +0 -298
- package/src/components/CollectionViewBinding/FiltersDialog.tsx +0 -218
- package/src/components/CollectionViewBinding/SearchExplanation.tsx +0 -106
- package/src/components/CollectionViewBinding/SearchHighlight.tsx +0 -311
- package/src/components/CollectionViewBinding/SlotValue.tsx +0 -156
- package/src/components/CollectionViewBinding/SortButton.tsx +0 -354
- package/src/components/CollectionViewBinding/SplitListCloseButton.tsx +0 -49
- package/src/components/CollectionViewBinding/SplitListShowButton.tsx +0 -28
- package/src/components/CollectionViewBinding/SplitListView.tsx +0 -488
- package/src/components/CollectionViewBinding/SplitViewContext.tsx +0 -34
- package/src/components/CollectionViewBinding/ViewModeToggle.tsx +0 -250
- package/src/components/CollectionViewBinding/hooks/useCollectionInlineEditor.ts +0 -81
- package/src/components/CollectionViewBinding/hooks/useKanbanDragAndDrop.ts +0 -181
- package/src/components/CollectionViewBinding/useBoardDataController.tsx +0 -802
- package/src/components/CollectionViewBinding/usePreviewSlots.ts +0 -703
- package/src/components/CollectionViewBinding/useSelectionController.tsx +0 -40
- package/src/components/CollectionViewBinding/utils.ts +0 -22
- package/src/components/DefaultAppBar.tsx +0 -264
- package/src/components/DefaultDrawer.tsx +0 -593
- package/src/components/DeleteEntityDialog.tsx +0 -205
- package/src/components/DetailViewBinding.tsx +0 -731
- package/src/components/DrawerNavigationGroup.tsx +0 -141
- package/src/components/DrawerNavigationItem.tsx +0 -115
- package/src/components/EditFormActions.tsx +0 -303
- package/src/components/EditViewBinding.tsx +0 -1069
- package/src/components/EntityDisplayHeader.tsx +0 -170
- package/src/components/EntityIdentityBar.tsx +0 -428
- package/src/components/EntityInspector.tsx +0 -156
- package/src/components/EntityPreviewBinding.tsx +0 -432
- package/src/components/EntityPreviewNesting.tsx +0 -50
- package/src/components/EntityViewBinding.tsx +0 -374
- package/src/components/FieldCaption.tsx +0 -14
- package/src/components/HomePage/ContentHomePage.tsx +0 -586
- package/src/components/HomePage/FavouritesView.tsx +0 -60
- package/src/components/HomePage/HomePageDnD.tsx +0 -704
- package/src/components/HomePage/NavigationCard.tsx +0 -81
- package/src/components/HomePage/NavigationCardBinding.tsx +0 -107
- package/src/components/HomePage/NavigationGroup.tsx +0 -156
- package/src/components/HomePage/RenameGroupDialog.tsx +0 -123
- package/src/components/HomePage/SmallNavigationCard.tsx +0 -41
- package/src/components/HomePage/index.tsx +0 -5
- package/src/components/InlineEntityPreview.tsx +0 -149
- package/src/components/JsonPreviewBinding.tsx +0 -66
- package/src/components/PropertyCollectionView.tsx +0 -336
- package/src/components/PropertyConfigBadge.tsx +0 -28
- package/src/components/PropertyIdCopyTooltip.tsx +0 -47
- package/src/components/RebaseAuthGate.tsx +0 -44
- package/src/components/RebaseCMS.tsx +0 -30
- package/src/components/RebaseLayout.tsx +0 -80
- package/src/components/RebaseNavigation.tsx +0 -369
- package/src/components/RebaseRouteDefs.tsx +0 -127
- package/src/components/RebaseShell.tsx +0 -83
- package/src/components/ReferenceTable/SelectionTableBinding.tsx +0 -389
- package/src/components/ReferenceWidget.tsx +0 -156
- package/src/components/RelationSelector.tsx +0 -926
- package/src/components/SearchIconsView.tsx +0 -78
- package/src/components/SelectableTable/SelectableTable.tsx +0 -309
- package/src/components/SelectableTable/SelectableTableContext.tsx +0 -7
- package/src/components/SelectableTable/SelectionStore.ts +0 -43
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +0 -59
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +0 -146
- package/src/components/SelectableTable/filters/FilterFieldBinding.tsx +0 -190
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +0 -250
- package/src/components/SelectableTable/filters/RelationFilterField.tsx +0 -238
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +0 -282
- package/src/components/SelectableTable/filters/null_filter.ts +0 -63
- package/src/components/SideDialogs.tsx +0 -238
- package/src/components/SidePanelBinding.tsx +0 -361
- package/src/components/SidePanelProvider.tsx +0 -80
- package/src/components/UserSelector.tsx +0 -513
- package/src/components/admin/CreationResultDialog.tsx +0 -138
- package/src/components/admin/index.ts +0 -1
- package/src/components/app/AppBar.tsx +0 -17
- package/src/components/app/Drawer.tsx +0 -38
- package/src/components/app/Scaffold.tsx +0 -366
- package/src/components/app/index.ts +0 -4
- package/src/components/app/useApp.tsx +0 -36
- package/src/components/common/default_entity_actions.tsx +0 -440
- package/src/components/common/index.ts +0 -1
- package/src/components/field_configs.tsx +0 -506
- package/src/components/history/EntityHistoryEntry.tsx +0 -203
- package/src/components/history/EntityHistoryView.tsx +0 -206
- package/src/components/history/LastEditedByFormAction.tsx +0 -24
- package/src/components/history/LastEditedByIndicator.tsx +0 -95
- package/src/components/history/UserChip.tsx +0 -15
- package/src/components/history/index.tsx +0 -5
- package/src/components/index.ts +0 -63
- package/src/contexts/BreacrumbsContext.tsx +0 -45
- package/src/contexts/SideDialogsControllerContext.tsx +0 -5
- package/src/contexts/SidePanelControllerContext.tsx +0 -5
- package/src/data_export/export/BasicExportAction.tsx +0 -142
- package/src/data_export/export/ExportCollectionAction.tsx +0 -321
- package/src/data_export/export/export.ts +0 -295
- package/src/data_export/export/fetch_export_data.ts +0 -90
- package/src/data_export/export/index.ts +0 -4
- package/src/data_export/index.ts +0 -1
- package/src/data_import/components/DataNewPropertiesMapping.tsx +0 -261
- package/src/data_import/components/ImportFileUpload.tsx +0 -42
- package/src/data_import/components/ImportNewPropertyFieldPreview.tsx +0 -58
- package/src/data_import/components/ImportSaveInProgress.tsx +0 -121
- package/src/data_import/components/index.ts +0 -4
- package/src/data_import/hooks/index.ts +0 -1
- package/src/data_import/hooks/useImportConfig.tsx +0 -34
- package/src/data_import/import/ImportCollectionAction.tsx +0 -461
- package/src/data_import/import/index.ts +0 -1
- package/src/data_import/index.ts +0 -5
- package/src/data_import/types/column_mapping.ts +0 -32
- package/src/data_import/types/index.ts +0 -1
- package/src/data_import/utils/csv.ts +0 -153
- package/src/data_import/utils/data.ts +0 -181
- package/src/data_import/utils/file_headers.ts +0 -14
- package/src/data_import/utils/file_to_json.ts +0 -149
- package/src/data_import/utils/get_import_inference_type.ts +0 -33
- package/src/data_import/utils/get_properties_mapping.ts +0 -67
- package/src/data_import/utils/index.ts +0 -5
- package/src/data_import/utils/save_entities.ts +0 -138
- package/src/data_import/utils/transforms.ts +0 -70
- package/src/editor/components/SlashCommandMenu.tsx +0 -532
- package/src/editor/components/editor-bubble-item.tsx +0 -32
- package/src/editor/components/editor-bubble.tsx +0 -143
- package/src/editor/components/image-bubble.tsx +0 -183
- package/src/editor/components/index.ts +0 -14
- package/src/editor/components/table-bubble.tsx +0 -233
- package/src/editor/editor.tsx +0 -529
- package/src/editor/extensions/HighlightDecorationExtension.ts +0 -115
- package/src/editor/extensions/Image.ts +0 -159
- package/src/editor/extensions/TextLoadingDecorationExtension.tsx +0 -107
- package/src/editor/extensions/clipboard.ts +0 -72
- package/src/editor/extensions/custom-keymap.ts +0 -25
- package/src/editor/extensions/drag-and-drop.tsx +0 -508
- package/src/editor/hooks/useProseMirror.ts +0 -126
- package/src/editor/hooks/useProseMirrorContext.ts +0 -15
- package/src/editor/index.ts +0 -2
- package/src/editor/markdown-it-plugins.d.ts +0 -24
- package/src/editor/markdown.ts +0 -204
- package/src/editor/nodeViews/ImageComponent.tsx +0 -20
- package/src/editor/nodeViews/ReactNodeView.tsx +0 -89
- package/src/editor/nodeViews/TaskItemComponent.tsx +0 -30
- package/src/editor/nodeViews/index.ts +0 -35
- package/src/editor/plugins/index.ts +0 -58
- package/src/editor/plugins/inputrules.ts +0 -82
- package/src/editor/plugins/placeholderPlugin.ts +0 -55
- package/src/editor/plugins/slashCommandPlugin.ts +0 -65
- package/src/editor/schema.ts +0 -339
- package/src/editor/selectors/ai-selector.tsx +0 -110
- package/src/editor/selectors/color-selector.tsx +0 -199
- package/src/editor/selectors/link-selector.tsx +0 -122
- package/src/editor/selectors/node-selector.tsx +0 -159
- package/src/editor/selectors/text-buttons.tsx +0 -79
- package/src/editor/types.ts +0 -6
- package/src/editor/useProseMirror.ts +0 -125
- package/src/editor/utils/prosemirror-utils.ts +0 -113
- package/src/editor/utils/remove_classes.ts +0 -18
- package/src/editor/utils/useDebouncedCallback.ts +0 -25
- package/src/form/EntityForm.tsx +0 -761
- package/src/form/EntityFormActions.tsx +0 -160
- package/src/form/EntityFormBinding.tsx +0 -342
- package/src/form/PropertyFieldBinding.tsx +0 -348
- package/src/form/components/ErrorFocus.tsx +0 -44
- package/src/form/components/FieldBlock.tsx +0 -189
- package/src/form/components/FieldHelperText.tsx +0 -84
- package/src/form/components/FormRail.tsx +0 -153
- package/src/form/components/FormSections.tsx +0 -145
- package/src/form/components/LabelWithIcon.tsx +0 -43
- package/src/form/components/LabelWithIconAndTooltip.tsx +0 -28
- package/src/form/components/LocalChangesMenu.tsx +0 -147
- package/src/form/components/StorageItemPreview.tsx +0 -81
- package/src/form/components/StorageUploadProgress.tsx +0 -118
- package/src/form/components/index.tsx +0 -6
- package/src/form/components/useRailVisible.tsx +0 -47
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +0 -109
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +0 -172
- package/src/form/field_bindings/BinaryFieldBinding.tsx +0 -177
- package/src/form/field_bindings/BlockFieldBinding.tsx +0 -282
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +0 -78
- package/src/form/field_bindings/GeopointFieldBinding.tsx +0 -200
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +0 -574
- package/src/form/field_bindings/MapFieldBinding.tsx +0 -120
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +0 -259
- package/src/form/field_bindings/MultiSelectFieldBinding.tsx +0 -130
- package/src/form/field_bindings/MultipleRelationFieldBinding.tsx +0 -168
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +0 -94
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +0 -146
- package/src/form/field_bindings/RelationFieldBinding.tsx +0 -202
- package/src/form/field_bindings/RepeatFieldBinding.tsx +0 -143
- package/src/form/field_bindings/SelectFieldBinding.tsx +0 -111
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +0 -521
- package/src/form/field_bindings/SwitchFieldBinding.tsx +0 -70
- package/src/form/field_bindings/TextFieldBinding.tsx +0 -189
- package/src/form/field_bindings/UserSelectFieldBinding.tsx +0 -71
- package/src/form/field_bindings/VectorFieldBinding.tsx +0 -209
- package/src/form/form_utils.ts +0 -243
- package/src/form/index.tsx +0 -36
- package/src/form/useClearRestoreValue.tsx +0 -36
- package/src/form/useUndoableDiscard.ts +0 -39
- package/src/form/validation.ts +0 -583
- package/src/hooks/index.ts +0 -16
- package/src/hooks/navigation/contexts/CollectionRegistryContext.tsx +0 -22
- package/src/hooks/navigation/contexts/NavigationStateContext.tsx +0 -16
- package/src/hooks/navigation/contexts/UrlContext.tsx +0 -24
- package/src/hooks/navigation/contexts/index.ts +0 -14
- package/src/hooks/navigation/useAsyncResolver.ts +0 -100
- package/src/hooks/navigation/useBuildCollectionRegistryController.tsx +0 -218
- package/src/hooks/navigation/useBuildNavigationStateController.tsx +0 -134
- package/src/hooks/navigation/useBuildUrlController.tsx +0 -66
- package/src/hooks/navigation/useNavigationResolution.ts +0 -271
- package/src/hooks/navigation/useResolvedCollections.ts +0 -102
- package/src/hooks/navigation/useResolvedViews.tsx +0 -139
- package/src/hooks/navigation/useTopLevelNavigation.ts +0 -273
- package/src/hooks/navigation/utils.ts +0 -200
- package/src/hooks/useAdminContext.tsx +0 -83
- package/src/hooks/useBreadcrumbsController.tsx +0 -17
- package/src/hooks/useBuildSideDialogsController.tsx +0 -145
- package/src/hooks/useBuildSidePanel.tsx +0 -315
- package/src/hooks/useChildViewSource.ts +0 -46
- package/src/hooks/useEntityDisplay.tsx +0 -262
- package/src/hooks/useEntityDisplayTitle.tsx +0 -49
- package/src/hooks/useHistory.ts +0 -178
- package/src/hooks/useRecordActions.tsx +0 -69
- package/src/hooks/useResolvedNavigationFrom.tsx +0 -167
- package/src/hooks/useResolvedUsers.ts +0 -148
- package/src/hooks/useSelectionDialog.tsx +0 -58
- package/src/hooks/useSideDialogsController.tsx +0 -25
- package/src/hooks/useSidePanel.tsx +0 -13
- package/src/index.ts +0 -124
- package/src/preview/PropertyPreview.tsx +0 -331
- package/src/preview/compact_text.ts +0 -68
- package/src/preview/components/ArrayEnumPreview.tsx +0 -39
- package/src/preview/components/BooleanPreview.tsx +0 -28
- package/src/preview/components/DatePreview.tsx +0 -106
- package/src/preview/components/EmptyValue.tsx +0 -10
- package/src/preview/components/EnumValuesChip.tsx +0 -39
- package/src/preview/components/ImagePreview.tsx +0 -144
- package/src/preview/components/InlineEntityListPreview.tsx +0 -42
- package/src/preview/components/ReferencePreview.tsx +0 -235
- package/src/preview/components/RelationPreview.tsx +0 -271
- package/src/preview/components/StorageThumbnail.tsx +0 -147
- package/src/preview/components/UrlComponentPreview.tsx +0 -116
- package/src/preview/components/UserPreview.tsx +0 -30
- package/src/preview/components/date_fns_locales.ts +0 -125
- package/src/preview/index.ts +0 -26
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +0 -73
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +0 -67
- package/src/preview/property_previews/ArrayOfRelationsPreview.tsx +0 -77
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +0 -49
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +0 -70
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +0 -79
- package/src/preview/property_previews/ArrayPropertyEnumPreview.tsx +0 -35
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +0 -79
- package/src/preview/property_previews/MapPropertyPreview.tsx +0 -198
- package/src/preview/property_previews/NumberPropertyPreview.tsx +0 -39
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +0 -276
- package/src/preview/property_previews/StringPropertyPreview.tsx +0 -70
- package/src/preview/util.ts +0 -39
- package/src/routes/CustomViewRoute.tsx +0 -33
- package/src/routes/RebaseRoute.tsx +0 -467
- package/src/routes/index.ts +0 -2
- package/src/types/components/EntityFormActionsProps.tsx +0 -20
- package/src/types/components/EntityFormProps.tsx +0 -119
- package/src/types/components/PropertyPreviewProps.tsx +0 -85
- package/src/types/components/formex.tsx +0 -2
- package/src/types/components/index.ts +0 -3
- package/src/types/fields.tsx +0 -340
- package/src/types/index.ts +0 -4
- package/src/util/dataControllerAdapter.ts +0 -88
- package/src/util/entity_actions.ts +0 -28
- package/src/util/index.ts +0 -5
- package/src/util/navigation_utils.ts +0 -89
- package/src/util/number_format.ts +0 -46
- package/src/util/previews.ts +0 -131
- package/src/util/propertyConfigMapper.ts +0 -134
- package/src/util/property_utils.tsx +0 -236
- package/src/util/resolutions.ts +0 -96
- package/src/util/view_constants.ts +0 -33
- package/src/util/view_mode.ts +0 -176
|
@@ -1,341 +0,0 @@
|
|
|
1
|
-
import { CollectionsConfigController, SaveCollectionParams, UpdateCollectionParams, DeleteCollectionParams, SavePropertyParams, DeletePropertyParams, UpdatePropertiesOrderParams } from "./types/config_controller";
|
|
2
|
-
import { Properties } from "@rebasepro/types";
|
|
3
|
-
import { getSubcollections } from "@rebasepro/common";
|
|
4
|
-
|
|
5
|
-
import React, { useEffect, useMemo, useRef, useState } from "react";
|
|
6
|
-
import type { AdminCollection } from "@rebasepro/cms-types";
|
|
7
|
-
import { DEFAULT_API_PATH } from "@rebasepro/app";
|
|
8
|
-
import { useLiveSchemaEditing } from "./useLiveSchemaEditing";
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* What the backend said about its schema editor, and how sure we are.
|
|
12
|
-
*
|
|
13
|
-
* `unknown` covers both "still asking" and "could not ask" — a backend too old
|
|
14
|
-
* to have the endpoint, or one that is unreachable. Those fall back to the
|
|
15
|
-
* build-mode guess below rather than locking the editor for someone whose
|
|
16
|
-
* editor used to work.
|
|
17
|
-
*/
|
|
18
|
-
type SchemaEditorAvailability =
|
|
19
|
-
| { state: "unknown" }
|
|
20
|
-
| { state: "known", enabled: boolean, reason?: string };
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* The guess this hook used to make on its own.
|
|
24
|
-
*
|
|
25
|
-
* `process.env.NODE_ENV` here is the *frontend bundle's* build mode. Whether
|
|
26
|
-
* the schema editor exists is decided by a different process entirely — the
|
|
27
|
-
* server's own `NODE_ENV`, its `collectionsDir`, whether its collections were
|
|
28
|
-
* introspected, whether `ts-morph` is installed. The two disagree in every
|
|
29
|
-
* ordinary setup: a dev frontend against a deployed API, a `baas` project, a
|
|
30
|
-
* hosted console. When they did, the editor offered itself and every save came
|
|
31
|
-
* back `404 Not Found`. It is kept only as the answer for a backend too old to
|
|
32
|
-
* be asked.
|
|
33
|
-
*/
|
|
34
|
-
const buildModeGuess = (): boolean => process.env.NODE_ENV === "production";
|
|
35
|
-
|
|
36
|
-
export function useLocalCollectionsConfigController(
|
|
37
|
-
clientOrUrl: any,
|
|
38
|
-
baseCollections: AdminCollection[] = [],
|
|
39
|
-
options?: {
|
|
40
|
-
readOnly?: boolean;
|
|
41
|
-
getAuthToken?: () => Promise<string | null>;
|
|
42
|
-
/**
|
|
43
|
-
* Identity of the signed-in user, if any.
|
|
44
|
-
*
|
|
45
|
-
* Only used to re-ask the backend when it changes: whether the editor
|
|
46
|
-
* will accept a write depends on who is asking, and the answer to an
|
|
47
|
-
* anonymous probe does not survive a sign-in.
|
|
48
|
-
*/
|
|
49
|
-
authKey?: string | null;
|
|
50
|
-
}
|
|
51
|
-
): CollectionsConfigController {
|
|
52
|
-
|
|
53
|
-
const parsedCollections = baseCollections;
|
|
54
|
-
|
|
55
|
-
// Store latest options in a ref to prevent stale closures in the `request` function
|
|
56
|
-
// due to useMemo caching the saveCollection function.
|
|
57
|
-
const optionsRef = useRef(options);
|
|
58
|
-
optionsRef.current = options;
|
|
59
|
-
|
|
60
|
-
// `/api` only by default — a backend configured with another `basePath`
|
|
61
|
-
// mounts the schema editor under that instead.
|
|
62
|
-
const clientBaseUrl = typeof clientOrUrl === "string"
|
|
63
|
-
? clientOrUrl
|
|
64
|
-
: (clientOrUrl?.baseUrl ?? "");
|
|
65
|
-
const clientApiPath = (typeof clientOrUrl === "object" && clientOrUrl !== null && clientOrUrl.apiPath)
|
|
66
|
-
|| DEFAULT_API_PATH;
|
|
67
|
-
const editorUrl = `${String(clientBaseUrl).replace(/\/$/, "")}${clientApiPath}/schema-editor`;
|
|
68
|
-
|
|
69
|
-
const resolveToken = async (): Promise<string | null> => {
|
|
70
|
-
let token = optionsRef.current?.getAuthToken ? await optionsRef.current.getAuthToken() : null;
|
|
71
|
-
if (!token && typeof clientOrUrl === "object" && clientOrUrl !== null && clientOrUrl.resolveToken) {
|
|
72
|
-
token = await clientOrUrl.resolveToken();
|
|
73
|
-
}
|
|
74
|
-
return token ?? null;
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
const request = async (endpoint: string, payload: Record<string, unknown>) => {
|
|
78
|
-
try {
|
|
79
|
-
const token = await resolveToken();
|
|
80
|
-
|
|
81
|
-
const headers: Record<string, string> = { "Content-Type": "application/json" };
|
|
82
|
-
if (token) {
|
|
83
|
-
headers["Authorization"] = `Bearer ${token}`;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
const response = await fetch(`${editorUrl}${endpoint}`, {
|
|
87
|
-
method: "POST",
|
|
88
|
-
headers,
|
|
89
|
-
body: JSON.stringify(payload)
|
|
90
|
-
});
|
|
91
|
-
if (!response.ok) {
|
|
92
|
-
const text = await response.text();
|
|
93
|
-
let err: Record<string, unknown> = {};
|
|
94
|
-
try {
|
|
95
|
-
err = JSON.parse(text);
|
|
96
|
-
} catch (e) {
|
|
97
|
-
// ignore json parse error
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
if (Object.keys(err).length === 0) {
|
|
101
|
-
err = { message: text };
|
|
102
|
-
}
|
|
103
|
-
console.error("dev server error payload:", err);
|
|
104
|
-
const errObj = err.error as Record<string, unknown> | string | undefined;
|
|
105
|
-
const errMessage = typeof errObj === "object" && errObj !== null
|
|
106
|
-
? (errObj.message as string)
|
|
107
|
-
: (typeof errObj === "string" ? errObj : (err.message as string | undefined));
|
|
108
|
-
throw new Error(errMessage || "Error communicating with local dev server");
|
|
109
|
-
}
|
|
110
|
-
} catch (e) {
|
|
111
|
-
console.error("fetch request failed", e);
|
|
112
|
-
throw e;
|
|
113
|
-
}
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
// ── Ask the backend whether it will accept an edit ────────────────
|
|
117
|
-
const forcedReadOnly = options?.readOnly;
|
|
118
|
-
const authKey = options?.authKey ?? null;
|
|
119
|
-
const [availability, setAvailability] = useState<SchemaEditorAvailability>({ state: "unknown" });
|
|
120
|
-
|
|
121
|
-
useEffect(() => {
|
|
122
|
-
// Nothing to ask about: the caller has already decided.
|
|
123
|
-
if (forcedReadOnly === true) return;
|
|
124
|
-
|
|
125
|
-
let cancelled = false;
|
|
126
|
-
(async () => {
|
|
127
|
-
try {
|
|
128
|
-
const token = await resolveToken();
|
|
129
|
-
const response = await fetch(`${editorUrl}/status`, {
|
|
130
|
-
headers: token ? { Authorization: `Bearer ${token}` } : {}
|
|
131
|
-
});
|
|
132
|
-
if (cancelled) return;
|
|
133
|
-
|
|
134
|
-
// A backend from before the endpoint existed. Guessing from the
|
|
135
|
-
// bundle's build mode is wrong, but it is what that backend's
|
|
136
|
-
// admin panel has always done, and locking the editor for
|
|
137
|
-
// someone whose editor works would be worse.
|
|
138
|
-
if (response.status === 404) {
|
|
139
|
-
setAvailability({ state: "unknown" });
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
const body = await response.json().catch(() => ({})) as {
|
|
144
|
-
enabled?: boolean,
|
|
145
|
-
reason?: string,
|
|
146
|
-
error?: { message?: string }
|
|
147
|
-
};
|
|
148
|
-
if (cancelled) return;
|
|
149
|
-
|
|
150
|
-
if (response.ok) {
|
|
151
|
-
setAvailability({
|
|
152
|
-
state: "known",
|
|
153
|
-
enabled: body.enabled === true,
|
|
154
|
-
reason: body.reason
|
|
155
|
-
});
|
|
156
|
-
} else {
|
|
157
|
-
// 401/403 (not an admin) or 501 (no auth configured at all)
|
|
158
|
-
// — all of them mean this session cannot edit collections,
|
|
159
|
-
// and the body says why better than we could.
|
|
160
|
-
setAvailability({
|
|
161
|
-
state: "known",
|
|
162
|
-
enabled: false,
|
|
163
|
-
reason: body.error?.message
|
|
164
|
-
?? `The backend refused to say whether collections are editable (HTTP ${response.status}).`
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
} catch {
|
|
168
|
-
if (!cancelled) setAvailability({ state: "unknown" });
|
|
169
|
-
}
|
|
170
|
-
})();
|
|
171
|
-
|
|
172
|
-
return () => { cancelled = true; };
|
|
173
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
174
|
-
}, [editorUrl, forcedReadOnly, authKey]);
|
|
175
|
-
|
|
176
|
-
// ── Live schema editing ───────────────────────────────────────────
|
|
177
|
-
// The same edit, against a backend that can also change the database and
|
|
178
|
-
// commit the result. When it is available, a save is planned and shown
|
|
179
|
-
// before anything happens; when it is not, this is inert and writes go
|
|
180
|
-
// straight to the source-only editor exactly as before.
|
|
181
|
-
const liveSchema = useLiveSchemaEditing({
|
|
182
|
-
baseUrl: `${String(clientBaseUrl).replace(/\/$/, "")}${clientApiPath}/admin/schema`,
|
|
183
|
-
getAuthToken: resolveToken,
|
|
184
|
-
authKey,
|
|
185
|
-
// The fallback the dialog offers when a change cannot be applied —
|
|
186
|
-
// removing a property, most often, which the ensure path has no way to
|
|
187
|
-
// carry out. Writing the source and leaving the database alone is what
|
|
188
|
-
// the editor did before any of this existed.
|
|
189
|
-
writeSourceOnly: async ({ collectionId, collection }) => {
|
|
190
|
-
await request("/collection/save", { collectionId, collectionData: collection });
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Perform a write, through the live editor when there is one.
|
|
196
|
-
*
|
|
197
|
-
* `sourceOnly` is the write this controller has always done. It stays the
|
|
198
|
-
* whole behaviour on a backend that cannot edit its schema — a bundle
|
|
199
|
-
* deployment, a non-Postgres driver, a version too old to be asked — so
|
|
200
|
-
* nothing about the editor depends on the feature being there.
|
|
201
|
-
*/
|
|
202
|
-
const write = async (
|
|
203
|
-
collectionId: string,
|
|
204
|
-
collection: Record<string, unknown>,
|
|
205
|
-
sourceOnly: () => Promise<void>
|
|
206
|
-
): Promise<void> => {
|
|
207
|
-
// `ready()`, not `status` — the rendered status is undefined for one
|
|
208
|
-
// round trip after mount, so reading it here would send a save issued
|
|
209
|
-
// in that window down the source-only path with no confirmation, while
|
|
210
|
-
// the same save a second later would open a dialog. One round trip is
|
|
211
|
-
// cheap; behaviour that depends on how fast somebody clicked is not.
|
|
212
|
-
const available = await liveSchema.ready();
|
|
213
|
-
if (!available.enabled) return sourceOnly();
|
|
214
|
-
await liveSchema.reviewChange({ collectionId, collection });
|
|
215
|
-
};
|
|
216
|
-
|
|
217
|
-
const readOnly = forcedReadOnly
|
|
218
|
-
?? (availability.state === "known" ? !availability.enabled : buildModeGuess());
|
|
219
|
-
|
|
220
|
-
const readOnlyReason = availability.state === "known" && availability.reason
|
|
221
|
-
? availability.reason
|
|
222
|
-
: "Collections can only be edited against a backend running the schema editor, which is off in production.";
|
|
223
|
-
|
|
224
|
-
const findCollection = (id: string): AdminCollection | undefined =>
|
|
225
|
-
parsedCollections.find(c => (c as AdminCollection & { id?: string }).id === id || c.slug === id);
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* The whole collection as it should end up.
|
|
229
|
-
*
|
|
230
|
-
* Live editing computes the proposed state by replacing one collection in
|
|
231
|
-
* the set, so it needs all of it: handed a patch, it would read every
|
|
232
|
-
* property the patch does not mention as a removal and refuse the change.
|
|
233
|
-
* A collection this does not recognise is a new one, and the patch is the
|
|
234
|
-
* whole of it.
|
|
235
|
-
*/
|
|
236
|
-
const wholeCollection = (id: string, patch: Record<string, unknown>): Record<string, unknown> => {
|
|
237
|
-
const current = findCollection(id) as Record<string, unknown> | undefined;
|
|
238
|
-
return current ? { ...current, ...patch } : patch;
|
|
239
|
-
};
|
|
240
|
-
|
|
241
|
-
return useMemo(() => ({
|
|
242
|
-
loading: false,
|
|
243
|
-
readOnly,
|
|
244
|
-
readOnlyReason,
|
|
245
|
-
collections: parsedCollections,
|
|
246
|
-
dialog: liveSchema.dialog,
|
|
247
|
-
getCollection: (id: string) => {
|
|
248
|
-
const found = findCollection(id);
|
|
249
|
-
if (found) return found;
|
|
250
|
-
throw Error(`Collection ${id} not found in local mode`);
|
|
251
|
-
},
|
|
252
|
-
|
|
253
|
-
saveCollection: async ({ id, collectionData }: SaveCollectionParams) => {
|
|
254
|
-
await write(id, collectionData as unknown as Record<string, unknown>, () =>
|
|
255
|
-
request("/collection/save", { collectionId: id, collectionData }));
|
|
256
|
-
},
|
|
257
|
-
updateCollection: async ({ id, collectionData }: UpdateCollectionParams) => {
|
|
258
|
-
await write(id, wholeCollection(id, collectionData as Record<string, unknown>), () =>
|
|
259
|
-
request("/collection/save", { collectionId: id, collectionData }));
|
|
260
|
-
},
|
|
261
|
-
deleteCollection: async ({ id }: DeleteCollectionParams) => {
|
|
262
|
-
await request("/collection/delete", { collectionId: id });
|
|
263
|
-
},
|
|
264
|
-
|
|
265
|
-
// The follow-up write carries exactly one key, and `partial` is what says
|
|
266
|
-
// so. Read as a whole-collection save it deletes everything it does not
|
|
267
|
-
// mention — `securityRules` first, which then falls back to the
|
|
268
|
-
// directory default and widens who can read the collection.
|
|
269
|
-
saveProperty: async ({ path, propertyKey, property, newPropertiesOrder }: SavePropertyParams) => {
|
|
270
|
-
// Assembled into the whole collection before it is planned. This is
|
|
271
|
-
// the write that most often *is* a schema change — adding a field
|
|
272
|
-
// to a collection is adding a column — and the one whose payload
|
|
273
|
-
// says least about it on its own.
|
|
274
|
-
const current = findCollection(path) as Record<string, unknown> | undefined;
|
|
275
|
-
const properties = {
|
|
276
|
-
...(current?.properties as Record<string, unknown> | undefined ?? {}),
|
|
277
|
-
[propertyKey]: property
|
|
278
|
-
};
|
|
279
|
-
const proposed = wholeCollection(path, {
|
|
280
|
-
properties,
|
|
281
|
-
...(newPropertiesOrder ? { propertiesOrder: newPropertiesOrder } : {})
|
|
282
|
-
});
|
|
283
|
-
|
|
284
|
-
await write(path, proposed, async () => {
|
|
285
|
-
await request("/property/save", { collectionId: path,
|
|
286
|
-
propertyKey,
|
|
287
|
-
propertyConfig: property });
|
|
288
|
-
if (newPropertiesOrder) {
|
|
289
|
-
await request("/collection/save", { collectionId: path,
|
|
290
|
-
collectionData: { propertiesOrder: newPropertiesOrder },
|
|
291
|
-
partial: true });
|
|
292
|
-
}
|
|
293
|
-
});
|
|
294
|
-
},
|
|
295
|
-
deleteProperty: async ({ path, propertyKey, newPropertiesOrder }: DeletePropertyParams) => {
|
|
296
|
-
await request("/property/delete", { collectionId: path,
|
|
297
|
-
propertyKey });
|
|
298
|
-
if (newPropertiesOrder) {
|
|
299
|
-
await request("/collection/save", { collectionId: path,
|
|
300
|
-
collectionData: { propertiesOrder: newPropertiesOrder },
|
|
301
|
-
partial: true });
|
|
302
|
-
}
|
|
303
|
-
},
|
|
304
|
-
|
|
305
|
-
updatePropertiesOrder: async ({ collection, fullPath, newPropertiesOrder }: UpdatePropertiesOrderParams) => {
|
|
306
|
-
const collectionId = (collection as AdminCollection & { id?: string }).id || fullPath.split("/").pop();
|
|
307
|
-
await request("/collection/save", { collectionId,
|
|
308
|
-
collectionData: { propertiesOrder: newPropertiesOrder },
|
|
309
|
-
partial: true });
|
|
310
|
-
},
|
|
311
|
-
updateKanbanColumnsOrder: async () => {
|
|
312
|
-
// Kanban order mapping logic can be added later if needed natively.
|
|
313
|
-
},
|
|
314
|
-
|
|
315
|
-
navigationEntries: [],
|
|
316
|
-
saveNavigationEntries: async () => { }
|
|
317
|
-
// `liveSchema.dialog` and `liveSchema.status` both change as the flow
|
|
318
|
-
// runs — a plan arrives, a dialog opens — and a controller memoised
|
|
319
|
-
// without them would keep handing back a closed dialog and a stale
|
|
320
|
-
// answer about whether the backend can edit its schema at all.
|
|
321
|
-
//
|
|
322
|
-
// `write`, `request`, `findCollection` and `wholeCollection` are
|
|
323
|
-
// rebuilt on every render, so listing them would defeat the memo
|
|
324
|
-
// entirely. Each is already covered *transitively* by what is listed:
|
|
325
|
-
// `request` closes over `editorUrl` and a ref, and `editorUrl` derives
|
|
326
|
-
// from `clientOrUrl`; `findCollection` and `wholeCollection` close over
|
|
327
|
-
// `parsedCollections`; `write` closes over `liveSchema.status` and
|
|
328
|
-
// `liveSchema.reviewChange`, and the latter is a `useCallback` keyed on
|
|
329
|
-
// a client built from `clientOrUrl`. Every input that can change is in
|
|
330
|
-
// the array under the name it actually varies with.
|
|
331
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
332
|
-
}), [
|
|
333
|
-
clientOrUrl,
|
|
334
|
-
parsedCollections,
|
|
335
|
-
readOnly,
|
|
336
|
-
readOnlyReason,
|
|
337
|
-
options?.getAuthToken,
|
|
338
|
-
liveSchema.dialog,
|
|
339
|
-
liveSchema.status
|
|
340
|
-
]);
|
|
341
|
-
}
|