@rebasepro/admin 0.16.0 → 0.16.1-canary.g0d7af95

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.
Files changed (180) hide show
  1. package/dist/{CollectionEditorDialog-D2Vf4C3-.js → CollectionEditorDialog-Dt_Wv20U.js} +7 -3
  2. package/dist/{CollectionEditorDialog-D2Vf4C3-.js.map → CollectionEditorDialog-Dt_Wv20U.js.map} +1 -1
  3. package/dist/{PropertyEditView-D3NBsK9_.js → PropertyEditView-C4IltWX5.js} +2 -2
  4. package/dist/{PropertyEditView-D3NBsK9_.js.map → PropertyEditView-C4IltWX5.js.map} +1 -1
  5. package/dist/{RouterCollectionsStudioView-hPB54l3Q.js → RouterCollectionsStudioView-C-BHWJ0J.js} +4 -4
  6. package/dist/{RouterCollectionsStudioView-hPB54l3Q.js.map → RouterCollectionsStudioView-C-BHWJ0J.js.map} +1 -1
  7. package/dist/SchemaChangeDialog-DceT8QFX.js +394 -0
  8. package/dist/SchemaChangeDialog-DceT8QFX.js.map +1 -0
  9. package/dist/collection_editor/ConfigControllerProvider.d.ts +4 -4
  10. package/dist/collection_editor/_cms_internals.d.ts +23 -23
  11. package/dist/collection_editor/api/index.d.ts +1 -1
  12. package/dist/collection_editor/extensibility_types.d.ts +1 -1
  13. package/dist/collection_editor/index.d.ts +21 -21
  14. package/dist/collection_editor/liveSchemaClient.d.ts +182 -0
  15. package/dist/collection_editor/serializable_types.d.ts +0 -1
  16. package/dist/collection_editor/serializable_utils.d.ts +1 -1
  17. package/dist/collection_editor/types/collection_editor_controller.d.ts +1 -1
  18. package/dist/collection_editor/types/config_controller.d.ts +11 -0
  19. package/dist/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.d.ts +1 -1
  20. package/dist/collection_editor/ui/collection_editor/AIModifiedPathsContext.d.ts +1 -1
  21. package/dist/collection_editor/ui/collection_editor/CollectionEditorDialog.d.ts +4 -4
  22. package/dist/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.d.ts +1 -1
  23. package/dist/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +2 -2
  24. package/dist/collection_editor/ui/collection_editor/CollectionStudioView.d.ts +1 -1
  25. package/dist/collection_editor/ui/collection_editor/CollectionsStudioView.d.ts +2 -2
  26. package/dist/collection_editor/ui/collection_editor/GeneralSettingsForm.d.ts +1 -1
  27. package/dist/collection_editor/ui/collection_editor/PropertyEditView.d.ts +2 -2
  28. package/dist/collection_editor/ui/collection_editor/RouterCollectionStudioView.d.ts +1 -1
  29. package/dist/collection_editor/ui/collection_editor/RouterCollectionsStudioView.d.ts +1 -1
  30. package/dist/collection_editor/ui/collection_editor/SchemaChangeDialog.d.ts +85 -0
  31. package/dist/collection_editor/ui/collection_editor/SubcollectionsEditTab.d.ts +2 -2
  32. package/dist/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.d.ts +1 -1
  33. package/dist/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.d.ts +1 -1
  34. package/dist/collection_editor/ui/collection_editor/import/clean_import_data.d.ts +1 -1
  35. package/dist/collection_editor/ui/collection_editor/properties/conditions/index.d.ts +6 -6
  36. package/dist/collection_editor/useCollectionEditorController.d.ts +1 -1
  37. package/dist/collection_editor/useCollectionsConfigController.d.ts +1 -1
  38. package/dist/collection_editor/useJsonCollectionsConfigController.d.ts +2 -2
  39. package/dist/collection_editor/useLiveSchemaEditing.d.ts +71 -0
  40. package/dist/collection_editor/useLocalCollectionsConfigController.d.ts +1 -1
  41. package/dist/collection_editor_ui.d.ts +12 -12
  42. package/dist/collection_editor_ui.js +4 -4
  43. package/dist/components/CollectionTableBinding/CollectionTableBinding.d.ts +1 -1
  44. package/dist/components/CollectionTableBinding/PropertyTableCell.d.ts +1 -1
  45. package/dist/components/CollectionTableBinding/fields/TableStorageUpload.d.ts +1 -1
  46. package/dist/components/CollectionTableBinding/index.d.ts +5 -5
  47. package/dist/components/CollectionTableBinding/internal/popup_field/PopupFormField.d.ts +1 -1
  48. package/dist/components/CollectionViewBinding/SlotValue.d.ts +2 -2
  49. package/dist/components/CollectionViewBinding/hooks/useKanbanDragAndDrop.d.ts +1 -1
  50. package/dist/components/DrawerNavigationGroup.d.ts +0 -9
  51. package/dist/components/DrawerNavigationItem.d.ts +0 -4
  52. package/dist/components/EditFormActions.d.ts +1 -1
  53. package/dist/components/EditViewBinding.d.ts +3 -3
  54. package/dist/components/EntityInspector.d.ts +1 -1
  55. package/dist/components/EntityPreviewBinding.d.ts +1 -1
  56. package/dist/components/EntityViewBinding.d.ts +1 -1
  57. package/dist/components/HomePage/index.d.ts +4 -4
  58. package/dist/components/PropertyCollectionView.d.ts +1 -1
  59. package/dist/components/ReferenceWidget.d.ts +1 -1
  60. package/dist/components/RelationSelector.d.ts +0 -2
  61. package/dist/components/admin/index.d.ts +1 -1
  62. package/dist/components/app/AppBar.d.ts +1 -1
  63. package/dist/components/app/index.d.ts +4 -4
  64. package/dist/components/common/index.d.ts +1 -1
  65. package/dist/components/field_configs.d.ts +1 -1
  66. package/dist/components/history/EntityHistoryEntry.d.ts +2 -2
  67. package/dist/components/history/index.d.ts +5 -5
  68. package/dist/components/index.d.ts +45 -45
  69. package/dist/data_export/export/index.d.ts +4 -4
  70. package/dist/data_export/index.d.ts +1 -1
  71. package/dist/data_import/components/DataNewPropertiesMapping.d.ts +1 -1
  72. package/dist/data_import/components/ImportSaveInProgress.d.ts +1 -1
  73. package/dist/data_import/components/index.d.ts +4 -4
  74. package/dist/data_import/hooks/index.d.ts +1 -1
  75. package/dist/data_import/hooks/useImportConfig.d.ts +1 -1
  76. package/dist/data_import/import/ImportCollectionAction.d.ts +1 -1
  77. package/dist/data_import/import/index.d.ts +1 -1
  78. package/dist/data_import/index.d.ts +5 -5
  79. package/dist/data_import/types/index.d.ts +1 -1
  80. package/dist/data_import/utils/file_to_json.d.ts +1 -1
  81. package/dist/data_import/utils/index.d.ts +5 -5
  82. package/dist/editor/components/SlashCommandMenu.d.ts +2 -2
  83. package/dist/editor/components/index.d.ts +5 -5
  84. package/dist/editor/editor.d.ts +2 -2
  85. package/dist/editor/index.d.ts +2 -2
  86. package/dist/editor/nodeViews/ImageComponent.d.ts +1 -1
  87. package/dist/editor/nodeViews/TaskItemComponent.d.ts +1 -1
  88. package/dist/editor/types.d.ts +1 -1
  89. package/dist/{export-oauWlxuu.js → export-CF1-p5nY.js} +2 -2
  90. package/dist/{export-oauWlxuu.js.map → export-CF1-p5nY.js.map} +1 -1
  91. package/dist/form/EntityForm.d.ts +1 -1
  92. package/dist/form/EntityFormActions.d.ts +1 -1
  93. package/dist/form/EntityFormBinding.d.ts +1 -1
  94. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  95. package/dist/form/components/StorageItemPreview.d.ts +1 -1
  96. package/dist/form/components/index.d.ts +6 -6
  97. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  98. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  99. package/dist/form/field_bindings/BinaryFieldBinding.d.ts +1 -1
  100. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  101. package/dist/form/field_bindings/DateTimeFieldBinding.d.ts +1 -1
  102. package/dist/form/field_bindings/GeopointFieldBinding.d.ts +1 -1
  103. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  104. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  105. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +2 -2
  106. package/dist/form/field_bindings/MultiSelectFieldBinding.d.ts +1 -1
  107. package/dist/form/field_bindings/MultipleRelationFieldBinding.d.ts +1 -1
  108. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  109. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +1 -1
  110. package/dist/form/field_bindings/RelationFieldBinding.d.ts +1 -1
  111. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  112. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  113. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +1 -1
  114. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -1
  115. package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
  116. package/dist/form/field_bindings/UserSelectFieldBinding.d.ts +1 -1
  117. package/dist/form/field_bindings/VectorFieldBinding.d.ts +1 -1
  118. package/dist/form/index.d.ts +24 -24
  119. package/dist/{history-C2cqc0bw.js → history-BoT8GhO1.js} +2 -2
  120. package/dist/{history-C2cqc0bw.js.map → history-BoT8GhO1.js.map} +1 -1
  121. package/dist/hooks/index.d.ts +16 -16
  122. package/dist/hooks/navigation/contexts/index.d.ts +3 -3
  123. package/dist/hooks/useBuildSideDialogsController.d.ts +1 -1
  124. package/dist/hooks/useSelectionDialog.d.ts +1 -1
  125. package/dist/{import-Bxv5JPm-.js → import-Dg4X01sA.js} +2 -2
  126. package/dist/{import-Bxv5JPm-.js.map → import-Dg4X01sA.js.map} +1 -1
  127. package/dist/index.d.ts +17 -15
  128. package/dist/index.js +262 -21
  129. package/dist/index.js.map +1 -1
  130. package/dist/preview/PropertyPreview.d.ts +1 -1
  131. package/dist/preview/components/ArrayEnumPreview.d.ts +1 -1
  132. package/dist/preview/components/BooleanPreview.d.ts +1 -1
  133. package/dist/preview/components/ImagePreview.d.ts +1 -1
  134. package/dist/preview/components/ReferencePreview.d.ts +1 -1
  135. package/dist/preview/components/RelationPreview.d.ts +1 -1
  136. package/dist/preview/components/StorageThumbnail.d.ts +1 -1
  137. package/dist/preview/components/UrlComponentPreview.d.ts +2 -2
  138. package/dist/preview/components/UserPreview.d.ts +1 -1
  139. package/dist/preview/index.d.ts +24 -24
  140. package/dist/preview/property_previews/ArrayOfMapsPreview.d.ts +1 -1
  141. package/dist/preview/property_previews/ArrayOfReferencesPreview.d.ts +1 -1
  142. package/dist/preview/property_previews/ArrayOfRelationsPreview.d.ts +1 -1
  143. package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +1 -1
  144. package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +1 -1
  145. package/dist/preview/property_previews/ArrayOneOfPreview.d.ts +1 -1
  146. package/dist/preview/property_previews/ArrayPropertyEnumPreview.d.ts +1 -1
  147. package/dist/preview/property_previews/ArrayPropertyPreview.d.ts +1 -1
  148. package/dist/preview/property_previews/MapPropertyPreview.d.ts +1 -1
  149. package/dist/preview/property_previews/NumberPropertyPreview.d.ts +1 -1
  150. package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +1 -1
  151. package/dist/preview/property_previews/StringPropertyPreview.d.ts +1 -1
  152. package/dist/preview/util.d.ts +1 -1
  153. package/dist/routes/index.d.ts +2 -2
  154. package/dist/types/components/EntityFormActionsProps.d.ts +2 -2
  155. package/dist/types/components/EntityFormProps.d.ts +3 -3
  156. package/dist/types/components/index.d.ts +3 -3
  157. package/dist/types/fields.d.ts +1 -1
  158. package/dist/types/index.d.ts +2 -2
  159. package/dist/util/index.d.ts +5 -5
  160. package/dist/util/previews.d.ts +2 -2
  161. package/dist/{util-C4qsI1QV.js → util-DUIsQ2zh.js} +132 -9
  162. package/dist/util-DUIsQ2zh.js.map +1 -0
  163. package/package.json +11 -11
  164. package/src/collection_editor/ConfigControllerProvider.tsx +5 -0
  165. package/src/collection_editor/liveSchemaClient.ts +285 -0
  166. package/src/collection_editor/serializable_types.ts +0 -1
  167. package/src/collection_editor/serializable_utils.ts +0 -1
  168. package/src/collection_editor/types/config_controller.tsx +11 -0
  169. package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +10 -0
  170. package/src/collection_editor/ui/collection_editor/SchemaChangeDialog.tsx +470 -0
  171. package/src/collection_editor/useLiveSchemaEditing.tsx +315 -0
  172. package/src/collection_editor/useLocalCollectionsConfigController.tsx +109 -10
  173. package/src/components/DrawerNavigationGroup.tsx +0 -9
  174. package/src/components/DrawerNavigationItem.tsx +0 -4
  175. package/src/components/RelationSelector.tsx +0 -2
  176. package/src/data_import/utils/data.ts +1 -1
  177. package/src/data_import/utils/file_to_json.ts +0 -3
  178. package/src/index.ts +6 -0
  179. package/src/util/previews.ts +4 -2
  180. package/dist/util-C4qsI1QV.js.map +0 -1
@@ -3,27 +3,27 @@
3
3
  * This avoids circular imports by pointing directly at source files
4
4
  * rather than going through the admin barrel (index.ts).
5
5
  */
6
- export { useCollectionRegistryController } from "../hooks/navigation/contexts/CollectionRegistryContext";
7
- export { useNavigationStateController } from "../hooks/navigation/contexts/NavigationStateContext";
8
- export { useUrlController } from "../hooks/navigation/contexts/UrlContext";
9
- export { useSidePanel } from "../hooks/useSidePanel";
10
- export { useBreadcrumbsController } from "../hooks/useBreadcrumbsController";
11
- export { FieldCaption } from "../components/FieldCaption";
12
- export { SearchIconsView } from "../components/SearchIconsView";
13
- export { PropertyConfigBadge } from "../components/PropertyConfigBadge";
14
- export { CollectionTableBinding } from "../components/CollectionTableBinding";
6
+ export { useCollectionRegistryController } from "../hooks/navigation/contexts/CollectionRegistryContext.js";
7
+ export { useNavigationStateController } from "../hooks/navigation/contexts/NavigationStateContext.js";
8
+ export { useUrlController } from "../hooks/navigation/contexts/UrlContext.js";
9
+ export { useSidePanel } from "../hooks/useSidePanel.js";
10
+ export { useBreadcrumbsController } from "../hooks/useBreadcrumbsController.js";
11
+ export { FieldCaption } from "../components/FieldCaption.js";
12
+ export { SearchIconsView } from "../components/SearchIconsView.js";
13
+ export { PropertyConfigBadge } from "../components/PropertyConfigBadge.js";
14
+ export { CollectionTableBinding } from "../components/CollectionTableBinding/index.js";
15
15
  export { VirtualTableInput } from "@rebasepro/ui";
16
- export { ArrayContainer } from "../components/ArrayContainer";
17
- export type { ArrayEntryParams } from "../components/ArrayContainer";
18
- export { useSelectionController } from "../components/CollectionViewBinding/useSelectionController";
19
- export { ImportFileUpload } from "../data_import/components/ImportFileUpload";
20
- export { ImportSaveInProgress } from "../data_import/components/ImportSaveInProgress";
21
- export { useImportConfig } from "../data_import/hooks/useImportConfig";
22
- export { getInferenceType } from "../data_import/utils/get_import_inference_type";
23
- export { convertDataToEntity } from "../data_import/utils/data";
24
- export type { ImportConfig } from "../data_import/types";
25
- export { DataNewPropertiesMapping } from "../data_import/components/DataNewPropertiesMapping";
26
- export { ImportNewPropertyFieldPreview } from "../data_import/components/ImportNewPropertyFieldPreview";
27
- export { getFieldConfig, getFieldId, getDefaultFieldConfig, getDefaultFieldId, DEFAULT_FIELD_CONFIGS } from "../components/field_configs";
28
- export { getPropertyInPath, getResolvedPropertyInPath, getDefaultPropertiesOrder, getPropertiesWithPropertiesOrder } from "../util/property_utils";
29
- export { resolveEntityAction, resolveEntityView } from "../util/resolutions";
16
+ export { ArrayContainer } from "../components/ArrayContainer.js";
17
+ export type { ArrayEntryParams } from "../components/ArrayContainer.js";
18
+ export { useSelectionController } from "../components/CollectionViewBinding/useSelectionController.js";
19
+ export { ImportFileUpload } from "../data_import/components/ImportFileUpload.js";
20
+ export { ImportSaveInProgress } from "../data_import/components/ImportSaveInProgress.js";
21
+ export { useImportConfig } from "../data_import/hooks/useImportConfig.js";
22
+ export { getInferenceType } from "../data_import/utils/get_import_inference_type.js";
23
+ export { convertDataToEntity } from "../data_import/utils/data.js";
24
+ export type { ImportConfig } from "../data_import/types/index.js";
25
+ export { DataNewPropertiesMapping } from "../data_import/components/DataNewPropertiesMapping.js";
26
+ export { ImportNewPropertyFieldPreview } from "../data_import/components/ImportNewPropertyFieldPreview.js";
27
+ export { getFieldConfig, getFieldId, getDefaultFieldConfig, getDefaultFieldId, DEFAULT_FIELD_CONFIGS } from "../components/field_configs.js";
28
+ export { getPropertyInPath, getResolvedPropertyInPath, getDefaultPropertiesOrder, getPropertiesWithPropertiesOrder } from "../util/property_utils.js";
29
+ export { resolveEntityAction, resolveEntityView } from "../util/resolutions.js";
@@ -1 +1 @@
1
- export * from "./generateCollectionApi";
1
+ export * from "./generateCollectionApi.js";
@@ -11,7 +11,7 @@
11
11
  * @module
12
12
  */
13
13
  import type React from "react";
14
- import type { SerializableProperty, SerializableCollectionConfig } from "./serializable_types";
14
+ import type { SerializableProperty, SerializableCollectionConfig } from "./serializable_types.js";
15
15
  /**
16
16
  * The base property data types supported by Rebase.
17
17
  * Derived from the `type` discriminant on `SerializableProperty`.
@@ -1,21 +1,21 @@
1
- export { useCollectionEditorController } from "./useCollectionEditorController";
2
- export { useCollectionsConfigController } from "./useCollectionsConfigController";
3
- export { useLocalCollectionsConfigController } from "./useLocalCollectionsConfigController";
4
- export { useJsonCollectionsConfigController, type UseJsonCollectionsConfigControllerOptions, } from "./useJsonCollectionsConfigController";
5
- export { toSerializableCollectionConfig, toSerializableProperty, toSerializableProperties, fromSerializableCollectionConfig, fromSerializableCollectionConfigs, fromSerializableProperty, fromSerializableProperties, } from "./serializable_utils";
6
- export type { SerializableCollectionConfig, SerializableProperty, SerializableProperties, SerializableBaseProperty, SerializableStringProperty, SerializableNumberProperty, SerializableBooleanProperty, SerializableDateProperty, SerializableGeopointProperty, SerializableReferenceProperty, SerializableRelationProperty, SerializableArrayProperty, SerializableMapProperty, SerializableVectorProperty, SerializableBinaryProperty, SerializableStorageConfig, SerializableStringValidation, SerializableDateValidation, JsonCollectionStore, } from "./serializable_types";
7
- export type { PropertyTypePreset, PropertyType, CollectionEditorTab, CollectionEditorExtensionProps, ExtraPropertyFieldsParams, ExtraCollectionFieldsParams, } from "./extensibility_types";
8
- export { validateCollectionJson, type CollectionValidationError, type CollectionValidationResult } from "./validateCollectionJson";
9
- export type { CollectionsConfigController, DeleteCollectionParams, SaveCollectionParams, UpdateCollectionParams, CollectionsSetupInfo, UpdatePropertiesOrderParams, UpdateKanbanColumnsOrderParams } from "./types/config_controller";
10
- export type { CollectionEditorController } from "./types/collection_editor_controller";
11
- export type { CollectionInference } from "./types/collection_inference";
12
- export { buildCollectionGenerationCallback, CollectionGenerationApiError, DEFAULT_COLLECTION_GENERATION_ENDPOINT } from "./api/generateCollectionApi";
13
- export type { CollectionGenerationCallback, GenerateCollectionRequest, GenerateCollectionResult, CollectionOperation, CollectionOperationType, BuildCollectionGenerationCallbackProps } from "./api/generateCollectionApi";
14
- export { MissingReferenceWidget } from "./ui/MissingReferenceWidget";
15
- export * from "./ui/collection_editor/util";
16
- export type { CollectionEditorDialogProps } from "./ui/collection_editor/CollectionEditorDialog";
17
- export type { CollectionStudioViewProps } from "./ui/collection_editor/CollectionStudioView";
18
- export type { CollectionsStudioViewProps } from "./ui/collection_editor/CollectionsStudioView";
19
- export type { RouterCollectionStudioViewProps } from "./ui/collection_editor/RouterCollectionStudioView";
20
- export type { RouterCollectionsStudioViewProps } from "./ui/collection_editor/RouterCollectionsStudioView";
21
- export type { PropertyFormProps, OnPropertyChangedParams } from "./ui/collection_editor/PropertyEditView";
1
+ export { useCollectionEditorController } from "./useCollectionEditorController.js";
2
+ export { useCollectionsConfigController } from "./useCollectionsConfigController.js";
3
+ export { useLocalCollectionsConfigController } from "./useLocalCollectionsConfigController.js";
4
+ export { useJsonCollectionsConfigController, type UseJsonCollectionsConfigControllerOptions, } from "./useJsonCollectionsConfigController.js";
5
+ export { toSerializableCollectionConfig, toSerializableProperty, toSerializableProperties, fromSerializableCollectionConfig, fromSerializableCollectionConfigs, fromSerializableProperty, fromSerializableProperties, } from "./serializable_utils.js";
6
+ export type { SerializableCollectionConfig, SerializableProperty, SerializableProperties, SerializableBaseProperty, SerializableStringProperty, SerializableNumberProperty, SerializableBooleanProperty, SerializableDateProperty, SerializableGeopointProperty, SerializableReferenceProperty, SerializableRelationProperty, SerializableArrayProperty, SerializableMapProperty, SerializableVectorProperty, SerializableBinaryProperty, SerializableStorageConfig, SerializableStringValidation, SerializableDateValidation, JsonCollectionStore, } from "./serializable_types.js";
7
+ export type { PropertyTypePreset, PropertyType, CollectionEditorTab, CollectionEditorExtensionProps, ExtraPropertyFieldsParams, ExtraCollectionFieldsParams, } from "./extensibility_types.js";
8
+ export { validateCollectionJson, type CollectionValidationError, type CollectionValidationResult } from "./validateCollectionJson.js";
9
+ export type { CollectionsConfigController, DeleteCollectionParams, SaveCollectionParams, UpdateCollectionParams, CollectionsSetupInfo, UpdatePropertiesOrderParams, UpdateKanbanColumnsOrderParams } from "./types/config_controller.js";
10
+ export type { CollectionEditorController } from "./types/collection_editor_controller.js";
11
+ export type { CollectionInference } from "./types/collection_inference.js";
12
+ export { buildCollectionGenerationCallback, CollectionGenerationApiError, DEFAULT_COLLECTION_GENERATION_ENDPOINT } from "./api/generateCollectionApi.js";
13
+ export type { CollectionGenerationCallback, GenerateCollectionRequest, GenerateCollectionResult, CollectionOperation, CollectionOperationType, BuildCollectionGenerationCallbackProps } from "./api/generateCollectionApi.js";
14
+ export { MissingReferenceWidget } from "./ui/MissingReferenceWidget.js";
15
+ export * from "./ui/collection_editor/util.js";
16
+ export type { CollectionEditorDialogProps } from "./ui/collection_editor/CollectionEditorDialog.js";
17
+ export type { CollectionStudioViewProps } from "./ui/collection_editor/CollectionStudioView.js";
18
+ export type { CollectionsStudioViewProps } from "./ui/collection_editor/CollectionsStudioView.js";
19
+ export type { RouterCollectionStudioViewProps } from "./ui/collection_editor/RouterCollectionStudioView.js";
20
+ export type { RouterCollectionsStudioViewProps } from "./ui/collection_editor/RouterCollectionsStudioView.js";
21
+ export type { PropertyFormProps, OnPropertyChangedParams } from "./ui/collection_editor/PropertyEditView.js";
@@ -0,0 +1,182 @@
1
+ /**
2
+ * The panel's client for live schema editing.
3
+ *
4
+ * Three calls, mirroring the routes: ask whether this backend can do it, ask
5
+ * what a change would do, then do it. `plan` and `apply` are deliberately
6
+ * separate here as well as on the server, because a UI that could only
7
+ * try-and-see would be asking somebody to discover that their change is refused
8
+ * by pressing a button on a live database.
9
+ *
10
+ * ## Partial payloads are the caller's problem, not this module's
11
+ *
12
+ * Every call takes the **whole** collection. Live editing computes the proposed
13
+ * state by replacing one collection in the set, so a patch would read as a set
14
+ * of removals — every property it does not mention — and be refused.
15
+ *
16
+ * The editor's own save path posts partials (`saveProperty` follows up with a
17
+ * one-key `collection/save` carrying `partial: true`), so
18
+ * `useLocalCollectionsConfigController` assembles the whole collection before
19
+ * it gets here. Accepting a patch and merging it in this module would put that
20
+ * reconstruction one layer away from the collections it needs to read.
21
+ */
22
+ /** A constraint the change asks for that the statements will not carry. */
23
+ export interface WithheldConstraint {
24
+ target: string;
25
+ kind: "not-null";
26
+ reason: string;
27
+ remedy: string;
28
+ }
29
+ /** What the server says a change would do. Mirrors `SchemaChangePlan`. */
30
+ export interface LiveSchemaPlan {
31
+ applicable: boolean;
32
+ verdict: "safe" | "diverges" | "needs-migration";
33
+ changes: Array<{
34
+ kind: string;
35
+ verdict: "safe" | "diverges" | "needs-migration";
36
+ collection: string;
37
+ property?: string;
38
+ detail: string;
39
+ remedy?: string;
40
+ }>;
41
+ statements: string[];
42
+ files: string[];
43
+ message: string;
44
+ /**
45
+ * Applicable, and still not fully enforced.
46
+ *
47
+ * Not a refusal, so it does not belong in `changes` — but it is the one
48
+ * thing on a plan somebody might want to stop and read, so the dialog gives
49
+ * it its own place rather than another bullet in the list.
50
+ */
51
+ withheldConstraints: WithheldConstraint[];
52
+ /**
53
+ * What still has to happen after this lands.
54
+ *
55
+ * Empty almost always. The case it exists for: a project that replays
56
+ * versioned migrations, where applying here changes *this* database and
57
+ * commits `drizzle/schema.sql`, but writes no migration — so the next
58
+ * environment built from migrations would not have the change.
59
+ */
60
+ followUp?: string[];
61
+ }
62
+ export interface LiveSchemaResult {
63
+ applied: boolean;
64
+ applyError?: string;
65
+ committed: {
66
+ sha: string;
67
+ branch: string;
68
+ files: string[];
69
+ };
70
+ statements: string[];
71
+ summary: string;
72
+ withheldConstraints: WithheldConstraint[];
73
+ followUp?: string[];
74
+ }
75
+ /**
76
+ * Whether this backend can edit its schema, and what is missing when it cannot.
77
+ *
78
+ * `canPlan` is separate from `enabled` deliberately: previewing a change needs
79
+ * no repository, so a deployment running from a bundle can still show somebody
80
+ * exactly what their change would do. Greying out the preview as well would be
81
+ * a worse answer than the truth.
82
+ */
83
+ export interface LiveSchemaStatus {
84
+ enabled: boolean;
85
+ canPlan: boolean;
86
+ /**
87
+ * Whether *this caller* may apply, as opposed to whether the server can.
88
+ *
89
+ * Applying commits to the repository under an author, and a credential is
90
+ * not an author — so an API key or the service key may preview a change and
91
+ * not make one. Reported here so the panel can grey out the button and say
92
+ * why, rather than letting somebody read a plan, decide, press, and only
93
+ * then be refused.
94
+ */
95
+ canApply: boolean;
96
+ applyRefusedBecause?: string;
97
+ applyRefusedCode?: string;
98
+ repository?: string;
99
+ /** The branch a commit would land on. */
100
+ branch?: string;
101
+ code?: string;
102
+ reason?: string;
103
+ }
104
+ /**
105
+ * Why live editing is not available here.
106
+ *
107
+ * Distinguished from an ordinary failure because both are expected states with
108
+ * their own explanation, and a UI should say which rather than showing a
109
+ * stack: a Mongo backend will never support this, and a bundle deployment has
110
+ * no source to edit.
111
+ */
112
+ export type LiveSchemaUnavailable = {
113
+ reason: "unsupported";
114
+ message: string;
115
+ } | {
116
+ reason: "no-repository";
117
+ message: string;
118
+ };
119
+ export declare class LiveSchemaError extends Error {
120
+ readonly code: string | undefined;
121
+ readonly changes?: LiveSchemaPlan["changes"] | undefined;
122
+ constructor(message: string, code: string | undefined, changes?: LiveSchemaPlan["changes"] | undefined);
123
+ }
124
+ export interface LiveSchemaClientOptions {
125
+ /** Base for the routes, e.g. `https://api.example.com/api/schema`. */
126
+ baseUrl: string;
127
+ getAuthToken?: () => Promise<string | null> | string | null;
128
+ fetchImpl?: typeof fetch;
129
+ }
130
+ export interface ProposedCollectionChange {
131
+ collectionId: string;
132
+ /**
133
+ * The **whole** collection as it should end up — not a patch. See the
134
+ * module comment: a partial reads as a set of removals.
135
+ */
136
+ collection: Record<string, unknown>;
137
+ }
138
+ export declare function createLiveSchemaClient(options: LiveSchemaClientOptions): {
139
+ /**
140
+ * Whether this backend can edit its schema.
141
+ *
142
+ * Never throws. Every way of failing to get an answer — a backend too
143
+ * old to have the endpoint, an unreachable one, a session that is not
144
+ * an admin — means the same thing to a caller deciding whether to offer
145
+ * the control, and turning that into an exception each caller has to
146
+ * catch would only produce four copies of this `catch`.
147
+ */
148
+ status: () => Promise<LiveSchemaStatus>;
149
+ /** What the change would do. No side effects. */
150
+ plan: (change: ProposedCollectionChange) => Promise<LiveSchemaPlan>;
151
+ /** Commit the change, then apply it. */
152
+ apply: (change: ProposedCollectionChange) => Promise<LiveSchemaResult>;
153
+ };
154
+ /** The client's shape, for the hook and the tests that fake it. */
155
+ export type LiveSchemaClient = ReturnType<typeof createLiveSchemaClient>;
156
+ /**
157
+ * Whether an error means live editing is unavailable here, rather than that the
158
+ * change was wrong.
159
+ *
160
+ * Returns the reason so a caller can say which, and `undefined` for anything
161
+ * else — a refused change is not an unavailable feature, and conflating them
162
+ * would hide the refusal that the user needs to read.
163
+ */
164
+ export declare function asUnavailable(err: unknown): LiveSchemaUnavailable | undefined;
165
+ /** The person closed the dialog without applying. Not an error; an answer. */
166
+ export declare class SchemaChangeCancelled extends Error {
167
+ constructor();
168
+ }
169
+ /**
170
+ * Was this rejection the person saying no?
171
+ *
172
+ * A save has to *reject* when it is cancelled — resolving would leave the form
173
+ * believing it saved. But a caller that treats every rejection as a failure
174
+ * then reports the user's own choice back to them as an error, which is what
175
+ * the collection editor did: a console error and a red snackbar reading "Error
176
+ * persisting collection: The schema change was not applied."
177
+ *
178
+ * Matched by name rather than `instanceof`, which is unreliable the moment two
179
+ * copies of this module end up in one bundle — the class is then a different
180
+ * identity and every check silently answers false.
181
+ */
182
+ export declare function isSchemaChangeCancelled(err: unknown): boolean;
@@ -362,7 +362,6 @@ export interface SerializableCollectionConfig {
362
362
  propertiesOrder?: string[];
363
363
  previewProperties?: string[];
364
364
  listProperties?: string[];
365
- titleProperty?: string;
366
365
  openEntityMode?: "side_panel" | "full_screen" | "split" | "dialog";
367
366
  defaultEntityAction?: "view" | "edit";
368
367
  defaultViewMode?: ViewMode;
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import { type Properties, type Property } from "@rebasepro/types";
11
11
  import type { AdminCollection } from "@rebasepro/admin-types";
12
- import type { SerializableCollectionConfig, SerializableProperties, SerializableProperty } from "./serializable_types";
12
+ import type { SerializableCollectionConfig, SerializableProperties, SerializableProperty } from "./serializable_types.js";
13
13
  /**
14
14
  * Resolves a collection slug to the collection it names.
15
15
  *
@@ -1,4 +1,4 @@
1
- import { CollectionsConfigController } from "./config_controller";
1
+ import { CollectionsConfigController } from "./config_controller.js";
2
2
  import { Entity, Property } from "@rebasepro/types";
3
3
  import type { AdminCollection } from "@rebasepro/admin-types";
4
4
  /**
@@ -1,3 +1,4 @@
1
+ import type React from "react";
1
2
  import { Property } from "@rebasepro/types";
2
3
  import { NavigationGroupMapping, AdminCollection } from "@rebasepro/admin-types";
3
4
  export interface CollectionsSetupInfo {
@@ -45,6 +46,16 @@ export interface CollectionsConfigController {
45
46
  updateKanbanColumnsOrder: (params: UpdateKanbanColumnsOrderParams) => Promise<void>;
46
47
  navigationEntries: NavigationGroupMapping[];
47
48
  saveNavigationEntries: (entries: NavigationGroupMapping[]) => Promise<void>;
49
+ /**
50
+ * UI this controller needs on screen in order to do its job.
51
+ *
52
+ * A controller whose writes require a confirmation has to be able to ask,
53
+ * and a hook cannot render. `ConfigControllerProvider` renders this beside
54
+ * its children, so the confirmation belongs to whoever supplied the
55
+ * controller rather than to every consumer of it. Optional: most
56
+ * controllers write without asking anybody.
57
+ */
58
+ dialog?: React.ReactNode;
48
59
  }
49
60
  export type UpdateCollectionParams<M extends Record<string, unknown> = Record<string, unknown>> = {
50
61
  id: string;
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { CollectionGenerationCallback, CollectionOperation } from "../../api/generateCollectionApi";
2
+ import { CollectionGenerationCallback, CollectionOperation } from "../../api/generateCollectionApi.js";
3
3
  import type { AdminCollection } from "@rebasepro/admin-types";
4
4
  export interface AICollectionGeneratorPopoverProps {
5
5
  /**
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { CollectionOperation } from "../../api/generateCollectionApi";
2
+ import { CollectionOperation } from "../../api/generateCollectionApi.js";
3
3
  export interface AIModifiedPathsContextType {
4
4
  /** Set of paths that were modified by AI */
5
5
  modifiedPaths: Set<string>;
@@ -1,10 +1,10 @@
1
1
  import * as React from "react";
2
2
  import { Entity, TableMetadata, User } from "@rebasepro/types";
3
3
  import { AdminCollection } from "@rebasepro/admin-types";
4
- import { CollectionsConfigController } from "../../types/config_controller";
5
- import { CollectionInference } from "../../types/collection_inference";
6
- import { CollectionGenerationCallback } from "../../api/generateCollectionApi";
7
- import type { CollectionEditorExtensionProps } from "../../extensibility_types";
4
+ import { CollectionsConfigController } from "../../types/config_controller.js";
5
+ import { CollectionInference } from "../../types/collection_inference.js";
6
+ import { CollectionGenerationCallback } from "../../api/generateCollectionApi.js";
7
+ import type { CollectionEditorExtensionProps } from "../../extensibility_types.js";
8
8
  export interface CollectionEditorDialogProps extends CollectionEditorExtensionProps {
9
9
  open: boolean;
10
10
  isNewCollection: boolean;
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { CollectionGenerationCallback } from "../../api/generateCollectionApi";
2
+ import { CollectionGenerationCallback } from "../../api/generateCollectionApi.js";
3
3
  import type { AdminCollection } from "@rebasepro/admin-types";
4
4
  export declare function CollectionEditorWelcomeView({ path, parentCollection, onContinue, existingCollectionPaths, generateCollection, onAnalyticsEvent, unmappedTables, onImportFromTable }: {
5
5
  path: string;
@@ -1,8 +1,8 @@
1
1
  import React from "react";
2
2
  import { User } from "@rebasepro/types";
3
3
  import { PropertyConfig, AdminCollection } from "@rebasepro/admin-types";
4
- import type { PropertyTypePreset, PropertyType } from "../../extensibility_types";
5
- import type { SerializableProperty, SerializableCollectionConfig } from "../../serializable_types";
4
+ import type { PropertyTypePreset, PropertyType } from "../../extensibility_types.js";
5
+ import type { SerializableProperty, SerializableCollectionConfig } from "../../serializable_types.js";
6
6
  type CollectionEditorFormProps = {
7
7
  showErrors: boolean;
8
8
  isNewCollection: boolean;
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { CollectionEditorDialogProps } from "./CollectionEditorDialog";
2
+ import { CollectionEditorDialogProps } from "./CollectionEditorDialog.js";
3
3
  import type { AdminCollection } from "@rebasepro/admin-types";
4
4
  export type CollectionStudioViewProps = Omit<CollectionEditorDialogProps, "open" | "isNewCollection" | "editedCollectionId" | "handleClose" | "handleCancel"> & {
5
5
  collectionId?: string | "new";
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import { CollectionsConfigController } from "../../types/config_controller";
3
- import type { CollectionEditorExtensionProps } from "../../extensibility_types";
2
+ import { CollectionsConfigController } from "../../types/config_controller.js";
3
+ import type { CollectionEditorExtensionProps } from "../../extensibility_types.js";
4
4
  import type { AdminCollection } from "@rebasepro/admin-types";
5
5
  export interface CollectionsStudioViewProps extends CollectionEditorExtensionProps {
6
6
  configController: CollectionsConfigController;
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import type { ExtraCollectionFieldsParams } from "../../extensibility_types";
2
+ import type { ExtraCollectionFieldsParams } from "../../extensibility_types.js";
3
3
  import type { AdminCollection } from "@rebasepro/admin-types";
4
4
  export declare function GeneralSettingsForm({ isNewCollection, existingPaths, existingIds, parentCollection, renderExtraCollectionFields, standalone, }: {
5
5
  isNewCollection: boolean;
@@ -2,8 +2,8 @@ import React from "react";
2
2
  import { FormexController } from "@rebasepro/forms";
3
3
  import { Property } from "@rebasepro/types";
4
4
  import { PropertyConfig, AdminCollection } from "@rebasepro/admin-types";
5
- import type { PropertyTypePreset, PropertyType } from "../../extensibility_types";
6
- import type { SerializableProperty, SerializableCollectionConfig } from "../../serializable_types";
5
+ import type { PropertyTypePreset, PropertyType } from "../../extensibility_types.js";
6
+ import type { SerializableProperty, SerializableCollectionConfig } from "../../serializable_types.js";
7
7
  export type PropertyWithId = Property & {
8
8
  id?: string;
9
9
  conditions?: import("@rebasepro/types").PropertyConditions;
@@ -10,6 +10,6 @@
10
10
  * (which has no react-router dependency).
11
11
  */
12
12
  import React from "react";
13
- import { CollectionStudioViewProps } from "./CollectionStudioView";
13
+ import { CollectionStudioViewProps } from "./CollectionStudioView.js";
14
14
  export type RouterCollectionStudioViewProps = Omit<CollectionStudioViewProps, "onSave" | "onCancel">;
15
15
  export declare function RouterCollectionStudioView(props: RouterCollectionStudioViewProps): React.JSX.Element;
@@ -9,6 +9,6 @@
9
9
  * (which has no react-router dependency).
10
10
  */
11
11
  import React from "react";
12
- import { CollectionsStudioViewProps } from "./CollectionsStudioView";
12
+ import { CollectionsStudioViewProps } from "./CollectionsStudioView.js";
13
13
  export type RouterCollectionsStudioViewProps = Omit<CollectionsStudioViewProps, "activeCollectionId" | "onActiveCollectionChange">;
14
14
  export declare function RouterCollectionsStudioView(props: RouterCollectionsStudioViewProps): React.JSX.Element;
@@ -0,0 +1,85 @@
1
+ /**
2
+ * What a schema change would do, before it does it.
3
+ *
4
+ * The dialog exists because a schema change has three possible verdicts and two
5
+ * of them are refusals. Without a preview, the only way to discover that a
6
+ * change is refused is to press a button on a live database and read what comes
7
+ * back — which is a fine way to learn and a poor way to work.
8
+ *
9
+ * ## What it shows, in the order somebody reads it
10
+ *
11
+ * The verdict first, in a sentence, because it decides whether the rest is
12
+ * worth reading. Then the changes, each with what it does and — when it is
13
+ * refused — what to do instead. Then the things that are easy to skip past and
14
+ * expensive to have skipped: constraints the change asks for that the database
15
+ * will not end up enforcing. The SQL and the file list come last, collapsed,
16
+ * for the reader who wants them; they are the evidence, not the summary.
17
+ *
18
+ * ## Why the button says "Commit and apply"
19
+ *
20
+ * Because that is the order, and the order is the feature. The commit lands
21
+ * first, so a failed apply leaves the repository ahead of the database — the
22
+ * ordinary state of every project between an edit and a deploy, which the next
23
+ * boot reconciles. A button labelled "Save" would be describing a different,
24
+ * worse thing.
25
+ */
26
+ import React from "react";
27
+ import type { LiveSchemaPlan, LiveSchemaResult } from "../../liveSchemaClient.js";
28
+ export interface SchemaChangeDialogProps {
29
+ open: boolean;
30
+ /** The collection being changed, for the title. */
31
+ collectionId: string;
32
+ /** `undefined` while the plan is still being fetched. */
33
+ plan?: LiveSchemaPlan;
34
+ /** Set when planning itself failed — a network error, a refusal, a 500. */
35
+ planError?: string;
36
+ /** Set once the change has been applied, which turns this into a receipt. */
37
+ result?: LiveSchemaResult;
38
+ applying: boolean;
39
+ /** Set when the apply threw rather than returning a result. */
40
+ applyError?: string;
41
+ onConfirm: () => void;
42
+ /**
43
+ * Ask again, when planning failed.
44
+ *
45
+ * A dropped connection should cost a click, not the whole wizard. The form
46
+ * is already filled in, and making somebody redo it for a transient failure
47
+ * teaches them to distrust the preview rather than the network.
48
+ */
49
+ onRetry?: () => void;
50
+ /**
51
+ * Write the collection source and leave the database alone.
52
+ *
53
+ * Offered only when the change is refused, and it is what keeps the editor
54
+ * usable while it is. Removing a property is the ordinary case: the ensure
55
+ * path has no `DROP COLUMN`, so a removal can never be applied — and
56
+ * refusing the whole save over it would mean a dev could no longer delete a
57
+ * field from a collection they are still designing.
58
+ *
59
+ * This is exactly what the editor did before live editing existed, so it is
60
+ * not a new hazard; the difference is that it now says what it leaves
61
+ * behind instead of reporting success.
62
+ */
63
+ onSourceOnly?: () => void;
64
+ onClose: () => void;
65
+ /**
66
+ * Why this caller may preview but not apply, when that is the case.
67
+ *
68
+ * A person signed in with an API key, most often. Shown next to a disabled
69
+ * button so the refusal arrives while they are deciding rather than after
70
+ * they have decided.
71
+ */
72
+ applyRefusedBecause?: string;
73
+ /**
74
+ * Where a confirmation would land — `owner/repo` and a branch.
75
+ *
76
+ * On screen before the button, not in the receipt after it. A commit is
77
+ * going somewhere, and which branch it is going to is the one fact somebody
78
+ * cannot recover from being wrong about.
79
+ */
80
+ target?: {
81
+ repository?: string;
82
+ branch?: string;
83
+ };
84
+ }
85
+ export declare function SchemaChangeDialog({ open, collectionId, plan, planError, result, applying, applyError, onConfirm, onRetry, onSourceOnly, onClose, applyRefusedBecause, target }: SchemaChangeDialogProps): React.JSX.Element;
@@ -1,8 +1,8 @@
1
1
  import React from "react";
2
2
  import { User } from "@rebasepro/types";
3
3
  import { AdminCollection } from "@rebasepro/admin-types";
4
- import { CollectionsConfigController } from "../../types/config_controller";
5
- import { CollectionInference } from "../../types/collection_inference";
4
+ import { CollectionsConfigController } from "../../types/config_controller.js";
5
+ import { CollectionInference } from "../../types/collection_inference.js";
6
6
  export declare function SubcollectionsEditTab({ collection, parentCollection, configController, collectionInference, getUser, parentCollectionSlugs }: {
7
7
  collection: AdminCollection;
8
8
  parentCollection?: AdminCollection;
@@ -1,4 +1,4 @@
1
- import { ImportConfig } from "../../../_cms_internals";
1
+ import { ImportConfig } from "../../../_cms_internals.js";
2
2
  import { Properties } from "@rebasepro/types";
3
3
  export declare function CollectionEditorImportDataPreview({ importConfig, properties, propertiesOrder }: {
4
4
  importConfig: ImportConfig;
@@ -1,4 +1,4 @@
1
- import { ImportConfig } from "../../../../data_import/types";
1
+ import { ImportConfig } from "../../../../data_import/types/index.js";
2
2
  import { PropertyConfig } from "@rebasepro/admin-types";
3
3
  import React from "react";
4
4
  export declare function CollectionEditorImportMapping({ importConfig, propertyConfigs }: {
@@ -1,5 +1,5 @@
1
1
  import { Properties } from "@rebasepro/types";
2
- import { ImportConfig } from "../../../_cms_internals";
2
+ import { ImportConfig } from "../../../_cms_internals.js";
3
3
  export declare function cleanPropertiesFromImport(properties: Properties, parentSlug?: string): {
4
4
  headersMapping: ImportConfig["headersMapping"];
5
5
  properties: Properties;
@@ -1,6 +1,6 @@
1
- export { ConditionsPanel } from "./ConditionsPanel";
2
- export { ConditionsEditor } from "./ConditionsEditor";
3
- export type { ConditionsEditorProps } from "./ConditionsEditor";
4
- export { EnumConditionsEditor } from "./EnumConditionsEditor";
5
- export type { EnumConditionsEditorProps } from "./EnumConditionsEditor";
6
- export { getPropertyPaths, getGroupedPropertyPaths } from "./property_paths";
1
+ export { ConditionsPanel } from "./ConditionsPanel.js";
2
+ export { ConditionsEditor } from "./ConditionsEditor.js";
3
+ export type { ConditionsEditorProps } from "./ConditionsEditor.js";
4
+ export { EnumConditionsEditor } from "./EnumConditionsEditor.js";
5
+ export type { EnumConditionsEditorProps } from "./EnumConditionsEditor.js";
6
+ export { getPropertyPaths, getGroupedPropertyPaths } from "./property_paths.js";
@@ -1,4 +1,4 @@
1
- import { CollectionEditorController } from "./types/collection_editor_controller";
1
+ import { CollectionEditorController } from "./types/collection_editor_controller.js";
2
2
  /**
3
3
  * Hook to access the collection editor controller.
4
4
  * The methods in this controller can be used to open the collection editor dialog.
@@ -1,4 +1,4 @@
1
- import { CollectionsConfigController } from "./types/config_controller";
1
+ import { CollectionsConfigController } from "./types/config_controller.js";
2
2
  /**
3
3
  * Use this hook to access the configuration controller.
4
4
  * You can use it to get the list of collections, and to save/delete collections.
@@ -1,5 +1,5 @@
1
- import type { CollectionsConfigController } from "./types/config_controller";
2
- import type { JsonCollectionStore } from "./serializable_types";
1
+ import type { CollectionsConfigController } from "./types/config_controller.js";
2
+ import type { JsonCollectionStore } from "./serializable_types.js";
3
3
  export interface UseJsonCollectionsConfigControllerOptions {
4
4
  /**
5
5
  * The store adapter for persisting/loading collections.