@rebasepro/admin 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +20 -20
  3. package/dist/{CollectionEditorDialog-iGgS4rLX.js → CollectionEditorDialog-B-7uW3iJ.js} +15 -15
  4. package/dist/CollectionEditorDialog-B-7uW3iJ.js.map +1 -0
  5. package/dist/{PropertyEditView-C9yhLyja.js → PropertyEditView-7KMTcrqi.js} +140 -106
  6. package/dist/PropertyEditView-7KMTcrqi.js.map +1 -0
  7. package/dist/{RouterCollectionsStudioView-Dqx27GD8.js → RouterCollectionsStudioView-epqIbZrJ.js} +4 -4
  8. package/dist/{RouterCollectionsStudioView-Dqx27GD8.js.map → RouterCollectionsStudioView-epqIbZrJ.js.map} +1 -1
  9. package/dist/collection_editor/_cms_internals.d.ts +4 -4
  10. package/dist/collection_editor/api/generateCollectionApi.d.ts +7 -6
  11. package/dist/collection_editor/extensibility_types.d.ts +3 -3
  12. package/dist/collection_editor/index.d.ts +2 -2
  13. package/dist/collection_editor/pgColumnToProperty.d.ts +3 -3
  14. package/dist/collection_editor/serializable_types.d.ts +12 -16
  15. package/dist/collection_editor/serializable_utils.d.ts +8 -8
  16. package/dist/collection_editor/types/collection_editor_controller.d.ts +5 -5
  17. package/dist/collection_editor/types/collection_inference.d.ts +2 -2
  18. package/dist/collection_editor/types/config_controller.d.ts +7 -7
  19. package/dist/collection_editor/ui/AddKanbanColumnAction.d.ts +2 -2
  20. package/dist/collection_editor/ui/CollectionViewHeaderAction.d.ts +2 -2
  21. package/dist/collection_editor/ui/KanbanSetupAction.d.ts +2 -2
  22. package/dist/collection_editor/ui/PropertyAddColumnComponent.d.ts +2 -2
  23. package/dist/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.d.ts +3 -3
  24. package/dist/collection_editor/ui/collection_editor/CollectionDetailsForm.d.ts +2 -2
  25. package/dist/collection_editor/ui/collection_editor/CollectionEditorDialog.d.ts +4 -5
  26. package/dist/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.d.ts +2 -2
  27. package/dist/collection_editor/ui/collection_editor/CollectionJsonImportDialog.d.ts +2 -2
  28. package/dist/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +4 -4
  29. package/dist/collection_editor/ui/collection_editor/CollectionStudioView.d.ts +2 -2
  30. package/dist/collection_editor/ui/collection_editor/CollectionsStudioView.d.ts +2 -2
  31. package/dist/collection_editor/ui/collection_editor/EntityActionsEditTab.d.ts +2 -2
  32. package/dist/collection_editor/ui/collection_editor/GeneralSettingsForm.d.ts +2 -2
  33. package/dist/collection_editor/ui/collection_editor/GetCodeDialog.d.ts +2 -2
  34. package/dist/collection_editor/ui/collection_editor/PropertyEditView.d.ts +4 -4
  35. package/dist/collection_editor/ui/collection_editor/SubcollectionsEditTab.d.ts +3 -3
  36. package/dist/collection_editor/ui/collection_editor/templates/blog_template.d.ts +2 -2
  37. package/dist/collection_editor/ui/collection_editor/templates/pages_template.d.ts +2 -2
  38. package/dist/collection_editor/ui/collection_editor/templates/products_template.d.ts +2 -2
  39. package/dist/collection_editor/ui/collection_editor/templates/users_template.d.ts +2 -2
  40. package/dist/collection_editor/useLocalCollectionsConfigController.d.ts +2 -2
  41. package/dist/collection_editor/validateCollectionJson.d.ts +2 -2
  42. package/dist/collection_editor_ui.js +4 -4
  43. package/dist/components/CollectionPanel.d.ts +4 -4
  44. package/dist/components/{EntityCollectionTable/EntityCollectionRowActions.d.ts → CollectionTableBinding/CollectionRowActions.d.ts} +3 -3
  45. package/dist/components/CollectionTableBinding/CollectionTableBinding.d.ts +28 -0
  46. package/dist/components/{EntityCollectionTable/EntityCollectionTableProps.d.ts → CollectionTableBinding/CollectionTableBindingProps.d.ts} +1 -1
  47. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableMultipleRelationField.d.ts +2 -2
  48. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableReferenceField.d.ts +2 -2
  49. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationField.d.ts +2 -2
  50. package/dist/components/CollectionTableBinding/index.d.ts +6 -0
  51. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/common.d.ts +2 -2
  52. package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/PopupFormField.d.ts +2 -2
  53. package/dist/components/{EntityCollectionView/EntityBoardCard.d.ts → CollectionViewBinding/BoardCardBinding.d.ts} +8 -8
  54. package/dist/components/{EntityCollectionView/EntityCollectionBoardView.d.ts → CollectionViewBinding/CollectionBoardViewBinding.d.ts} +4 -4
  55. package/dist/components/{EntityCollectionView/EntityCollectionCardView.d.ts → CollectionViewBinding/CollectionCardViewBinding.d.ts} +5 -5
  56. package/dist/components/{EntityCollectionView/EntityCollectionListView.d.ts → CollectionViewBinding/CollectionListViewBinding.d.ts} +4 -4
  57. package/dist/components/{EntityCollectionView/EntityCollectionViewActions.d.ts → CollectionViewBinding/CollectionViewActions.d.ts} +4 -4
  58. package/dist/components/{EntityCollectionView/EntityCollectionView.d.ts → CollectionViewBinding/CollectionViewBinding.d.ts} +4 -4
  59. package/dist/components/{EntityCollectionView/EntityCollectionViewStartActions.d.ts → CollectionViewBinding/CollectionViewStartActions.d.ts} +4 -4
  60. package/dist/components/CollectionViewBinding/EntityCardBinding.d.ts +21 -0
  61. package/dist/components/{EntityCollectionView → CollectionViewBinding}/SplitListView.d.ts +3 -3
  62. package/dist/components/{EntityCollectionView → CollectionViewBinding}/hooks/useCollectionInlineEditor.d.ts +2 -2
  63. package/dist/components/{EntityCollectionView → CollectionViewBinding}/hooks/useKanbanDragAndDrop.d.ts +2 -2
  64. package/dist/components/{EntityCollectionView → CollectionViewBinding}/useBoardDataController.d.ts +2 -2
  65. package/dist/components/{EntityCollectionView/useEntityPreviewSlots.d.ts → CollectionViewBinding/usePreviewSlots.d.ts} +5 -5
  66. package/dist/components/DeleteEntityDialog.d.ts +4 -4
  67. package/dist/components/{EntityDetailView.d.ts → DetailViewBinding.d.ts} +5 -5
  68. package/dist/components/EditFormActions.d.ts +3 -0
  69. package/dist/components/{EntityEditView.d.ts → EditViewBinding.d.ts} +9 -9
  70. package/dist/components/{EntityPreview.d.ts → EntityPreviewBinding.d.ts} +13 -13
  71. package/dist/components/EntityViewBinding.d.ts +13 -0
  72. package/dist/components/{EntityJsonPreview.d.ts → JsonPreviewBinding.d.ts} +1 -1
  73. package/dist/components/RebaseCMS.d.ts +1 -1
  74. package/dist/components/RebaseNavigation.d.ts +1 -1
  75. package/dist/components/ReferenceTable/{EntitySelectionTable.d.ts → SelectionTableBinding.d.ts} +5 -5
  76. package/dist/components/SelectableTable/SelectableTable.d.ts +5 -5
  77. package/dist/components/SelectableTable/SelectableTableContext.d.ts +3 -3
  78. package/dist/components/SelectableTable/SelectionStore.d.ts +13 -22
  79. package/dist/components/SelectableTable/filters/BooleanFilterField.d.ts +6 -1
  80. package/dist/components/SelectableTable/filters/DateTimeFilterField.d.ts +7 -1
  81. package/dist/components/SelectableTable/filters/FilterFieldBinding.d.ts +40 -0
  82. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +7 -1
  83. package/dist/components/SelectableTable/filters/RelationFilterField.d.ts +7 -1
  84. package/dist/components/SelectableTable/filters/StringNumberFilterField.d.ts +7 -1
  85. package/dist/components/SideDialogs.d.ts +1 -1
  86. package/dist/components/SidePanelBinding.d.ts +11 -0
  87. package/dist/components/{SideEntityProvider.d.ts → SidePanelProvider.d.ts} +7 -7
  88. package/dist/components/field_configs.d.ts +1 -1
  89. package/dist/components/history/EntityHistoryEntry.d.ts +2 -2
  90. package/dist/components/history/LastEditedByIndicator.d.ts +2 -2
  91. package/dist/components/index.d.ts +14 -13
  92. package/dist/contexts/SidePanelControllerContext.d.ts +3 -0
  93. package/dist/data_export/export/ExportCollectionAction.d.ts +3 -3
  94. package/dist/data_import/components/ImportSaveInProgress.d.ts +2 -2
  95. package/dist/editor/editor.d.ts +0 -6
  96. package/dist/editor.js +1 -3
  97. package/dist/editor.js.map +1 -1
  98. package/dist/form/EntityForm.d.ts +1 -1
  99. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  100. package/dist/form/components/StorageUploadProgress.d.ts +6 -1
  101. package/dist/form/form_utils.d.ts +2 -2
  102. package/dist/form/index.d.ts +0 -1
  103. package/dist/{history-ChHgyyvM.js → history-7X5bON_n.js} +4 -4
  104. package/dist/history-7X5bON_n.js.map +1 -0
  105. package/dist/hooks/index.d.ts +4 -4
  106. package/dist/hooks/navigation/contexts/CollectionRegistryContext.d.ts +2 -2
  107. package/dist/hooks/navigation/useBuildNavigationStateController.d.ts +5 -5
  108. package/dist/hooks/navigation/useNavigationResolution.d.ts +4 -4
  109. package/dist/hooks/navigation/useResolvedCollections.d.ts +7 -7
  110. package/dist/hooks/navigation/useTopLevelNavigation.d.ts +2 -2
  111. package/dist/hooks/navigation/utils.d.ts +5 -5
  112. package/dist/hooks/useBuildSidePanel.d.ts +6 -0
  113. package/dist/hooks/useCMSContext.d.ts +2 -2
  114. package/dist/hooks/{useEntityHistory.d.ts → useHistory.d.ts} +1 -1
  115. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  116. package/dist/hooks/{useEntitySelectionDialog.d.ts → useSelectionDialog.d.ts} +2 -2
  117. package/dist/hooks/useSideDialogsController.d.ts +1 -1
  118. package/dist/hooks/useSidePanel.d.ts +11 -0
  119. package/dist/index.d.ts +3 -3
  120. package/dist/index.js +2 -2
  121. package/dist/preview/components/StorageThumbnail.d.ts +3 -1
  122. package/dist/{src-DOX2nOyh.js → src-sUZfe29F.js} +904 -1096
  123. package/dist/src-sUZfe29F.js.map +1 -0
  124. package/dist/types/components/EntityFormActionsProps.d.ts +2 -2
  125. package/dist/types/components/EntityFormProps.d.ts +3 -3
  126. package/dist/types/components/PropertyPreviewProps.d.ts +2 -1
  127. package/dist/types/fields.d.ts +6 -8
  128. package/dist/util/dataControllerAdapter.d.ts +2 -5
  129. package/dist/util/navigation_utils.d.ts +6 -6
  130. package/dist/util/previews.d.ts +3 -3
  131. package/dist/util/property_utils.d.ts +2 -2
  132. package/dist/util/{entity_view_constants.d.ts → view_constants.d.ts} +1 -1
  133. package/package.json +18 -18
  134. package/src/collection_editor/ConfigControllerProvider.tsx +10 -10
  135. package/src/collection_editor/_cms_internals.ts +4 -4
  136. package/src/collection_editor/api/generateCollectionApi.ts +7 -6
  137. package/src/collection_editor/extensibility_types.ts +3 -3
  138. package/src/collection_editor/index.ts +3 -3
  139. package/src/collection_editor/pgColumnToProperty.ts +4 -4
  140. package/src/collection_editor/serializable_types.ts +22 -35
  141. package/src/collection_editor/serializable_utils.ts +40 -52
  142. package/src/collection_editor/types/collection_editor_controller.tsx +5 -5
  143. package/src/collection_editor/types/collection_inference.ts +2 -2
  144. package/src/collection_editor/types/config_controller.tsx +7 -7
  145. package/src/collection_editor/ui/AddKanbanColumnAction.tsx +2 -2
  146. package/src/collection_editor/ui/CollectionViewHeaderAction.tsx +2 -2
  147. package/src/collection_editor/ui/EditorCollectionAction.tsx +2 -2
  148. package/src/collection_editor/ui/EditorCollectionActionStart.tsx +2 -2
  149. package/src/collection_editor/ui/EditorEntityAction.tsx +2 -2
  150. package/src/collection_editor/ui/KanbanSetupAction.tsx +2 -2
  151. package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +2 -2
  152. package/src/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.tsx +5 -5
  153. package/src/collection_editor/ui/collection_editor/CollectionDetailsForm.tsx +3 -3
  154. package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +63 -46
  155. package/src/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.tsx +3 -3
  156. package/src/collection_editor/ui/collection_editor/CollectionJsonImportDialog.tsx +2 -2
  157. package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +8 -8
  158. package/src/collection_editor/ui/collection_editor/CollectionRLSTab.tsx +2 -2
  159. package/src/collection_editor/ui/collection_editor/CollectionRelationsTab.tsx +2 -2
  160. package/src/collection_editor/ui/collection_editor/CollectionStudioView.tsx +2 -2
  161. package/src/collection_editor/ui/collection_editor/CollectionsStudioView.tsx +2 -2
  162. package/src/collection_editor/ui/collection_editor/DisplaySettingsForm.tsx +2 -2
  163. package/src/collection_editor/ui/collection_editor/EntityActionsEditTab.tsx +3 -3
  164. package/src/collection_editor/ui/collection_editor/GeneralSettingsForm.tsx +5 -5
  165. package/src/collection_editor/ui/collection_editor/GetCodeDialog.tsx +4 -4
  166. package/src/collection_editor/ui/collection_editor/KanbanConfigSection.tsx +2 -2
  167. package/src/collection_editor/ui/collection_editor/PropertyEditView.tsx +7 -16
  168. package/src/collection_editor/ui/collection_editor/PropertyFieldPreview.tsx +45 -36
  169. package/src/collection_editor/ui/collection_editor/PropertyTree.tsx +1 -1
  170. package/src/collection_editor/ui/collection_editor/SubcollectionsEditTab.tsx +5 -5
  171. package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +3 -3
  172. package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.tsx +2 -2
  173. package/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.tsx +2 -2
  174. package/src/collection_editor/ui/collection_editor/properties/StoragePropertyField.tsx +35 -1
  175. package/src/collection_editor/ui/collection_editor/templates/blog_template.ts +3 -3
  176. package/src/collection_editor/ui/collection_editor/templates/pages_template.ts +2 -2
  177. package/src/collection_editor/ui/collection_editor/templates/products_template.ts +2 -2
  178. package/src/collection_editor/ui/collection_editor/templates/users_template.ts +2 -2
  179. package/src/collection_editor/ui/collection_editor/utils/supported_fields.tsx +0 -1
  180. package/src/collection_editor/ui/collection_editor/utils/update_property_for_widget.ts +7 -29
  181. package/src/collection_editor/useJsonCollectionsConfigController.tsx +14 -14
  182. package/src/collection_editor/useLocalCollectionsConfigController.tsx +4 -4
  183. package/src/collection_editor/validateCollectionJson.ts +3 -3
  184. package/src/components/CollectionPanel.tsx +14 -17
  185. package/src/components/{EntityCollectionTable/EntityCollectionRowActions.tsx → CollectionTableBinding/CollectionRowActions.tsx} +6 -6
  186. package/src/components/{EntityCollectionTable/EntityCollectionTable.tsx → CollectionTableBinding/CollectionTableBinding.tsx} +19 -17
  187. package/src/components/{EntityCollectionTable/EntityCollectionTableProps.tsx → CollectionTableBinding/CollectionTableBindingProps.tsx} +1 -1
  188. package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableMultipleRelationField.tsx +7 -6
  189. package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableReferenceField.tsx +10 -10
  190. package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationField.tsx +7 -6
  191. package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableStorageUpload.tsx +23 -20
  192. package/src/components/CollectionTableBinding/index.tsx +14 -0
  193. package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/common.tsx +2 -2
  194. package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/PopupFormField.tsx +2 -2
  195. package/src/components/{EntityCollectionTable → CollectionTableBinding}/table_bindings.tsx +24 -44
  196. package/src/components/{EntityCollectionView/EntityBoardCard.tsx → CollectionViewBinding/BoardCardBinding.tsx} +15 -15
  197. package/src/components/{EntityCollectionView/EntityCollectionBoardView.tsx → CollectionViewBinding/CollectionBoardViewBinding.tsx} +15 -14
  198. package/src/components/{EntityCollectionView/EntityCollectionCardView.tsx → CollectionViewBinding/CollectionCardViewBinding.tsx} +8 -8
  199. package/src/components/{EntityCollectionView/EntityCollectionListView.tsx → CollectionViewBinding/CollectionListViewBinding.tsx} +24 -13
  200. package/src/components/{EntityCollectionView/EntityCollectionViewActions.tsx → CollectionViewBinding/CollectionViewActions.tsx} +5 -5
  201. package/src/components/{EntityCollectionView/EntityCollectionView.tsx → CollectionViewBinding/CollectionViewBinding.tsx} +112 -114
  202. package/src/components/{EntityCollectionView/EntityCollectionViewStartActions.tsx → CollectionViewBinding/CollectionViewStartActions.tsx} +5 -5
  203. package/src/components/{EntityCollectionView/EntityCard.tsx → CollectionViewBinding/EntityCardBinding.tsx} +9 -9
  204. package/src/components/{EntityCollectionView → CollectionViewBinding}/FiltersDialog.tsx +31 -72
  205. package/src/components/{EntityCollectionView → CollectionViewBinding}/SplitListView.tsx +9 -9
  206. package/src/components/{EntityCollectionView → CollectionViewBinding}/hooks/useCollectionInlineEditor.ts +6 -6
  207. package/src/components/{EntityCollectionView → CollectionViewBinding}/hooks/useKanbanDragAndDrop.ts +4 -4
  208. package/src/components/{EntityCollectionView → CollectionViewBinding}/useBoardDataController.tsx +28 -50
  209. package/src/components/{EntityCollectionView/useEntityPreviewSlots.ts → CollectionViewBinding/usePreviewSlots.ts} +11 -11
  210. package/src/components/DefaultDrawer.tsx +1 -1
  211. package/src/components/DeleteEntityDialog.tsx +6 -6
  212. package/src/components/{EntityDetailView.tsx → DetailViewBinding.tsx} +28 -31
  213. package/src/components/{EntityEditViewFormActions.tsx → EditFormActions.tsx} +15 -15
  214. package/src/components/{EntityEditView.tsx → EditViewBinding.tsx} +31 -34
  215. package/src/components/{EntityPreview.tsx → EntityPreviewBinding.tsx} +27 -27
  216. package/src/components/{EntityView.tsx → EntityViewBinding.tsx} +5 -5
  217. package/src/components/HomePage/ContentHomePage.tsx +1 -1
  218. package/src/components/HomePage/NavigationCardBinding.tsx +1 -1
  219. package/src/components/{EntityJsonPreview.tsx → JsonPreviewBinding.tsx} +1 -1
  220. package/src/components/RebaseCMS.tsx +4 -4
  221. package/src/components/RebaseNavigation.tsx +20 -10
  222. package/src/components/ReferenceTable/{EntitySelectionTable.tsx → SelectionTableBinding.tsx} +22 -19
  223. package/src/components/ReferenceWidget.tsx +4 -4
  224. package/src/components/RelationSelector.tsx +16 -14
  225. package/src/components/SelectableTable/SelectableTable.tsx +44 -89
  226. package/src/components/SelectableTable/SelectableTableContext.tsx +3 -3
  227. package/src/components/SelectableTable/SelectionStore.ts +22 -52
  228. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +9 -1
  229. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +33 -12
  230. package/src/components/SelectableTable/filters/FilterFieldBinding.tsx +187 -0
  231. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +21 -7
  232. package/src/components/SelectableTable/filters/RelationFilterField.tsx +17 -3
  233. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +66 -12
  234. package/src/components/SideDialogs.tsx +3 -3
  235. package/src/components/{EntitySidePanel.tsx → SidePanelBinding.tsx} +19 -19
  236. package/src/components/{SideEntityProvider.tsx → SidePanelProvider.tsx} +16 -16
  237. package/src/components/common/default_entity_actions.tsx +24 -13
  238. package/src/components/field_configs.tsx +0 -14
  239. package/src/components/history/EntityHistoryEntry.tsx +2 -2
  240. package/src/components/history/EntityHistoryView.tsx +3 -3
  241. package/src/components/history/LastEditedByIndicator.tsx +2 -2
  242. package/src/components/index.ts +15 -14
  243. package/src/contexts/SidePanelControllerContext.tsx +5 -0
  244. package/src/data_export/export/ExportCollectionAction.tsx +4 -4
  245. package/src/data_import/components/ImportSaveInProgress.tsx +3 -3
  246. package/src/data_import/import/ImportCollectionAction.tsx +4 -4
  247. package/src/data_import/utils/data.ts +2 -2
  248. package/src/editor/editor.tsx +4 -7
  249. package/src/form/EntityForm.tsx +2 -2
  250. package/src/form/EntityFormActions.tsx +4 -4
  251. package/src/form/EntityFormBinding.tsx +7 -7
  252. package/src/form/PropertyFieldBinding.tsx +4 -4
  253. package/src/form/components/StorageUploadProgress.tsx +9 -2
  254. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +4 -4
  255. package/src/form/field_bindings/KeyValueFieldBinding.tsx +19 -19
  256. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +12 -1
  257. package/src/form/field_bindings/MultipleRelationFieldBinding.tsx +6 -6
  258. package/src/form/field_bindings/ReferenceFieldBinding.tsx +5 -5
  259. package/src/form/field_bindings/RelationFieldBinding.tsx +8 -10
  260. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +19 -15
  261. package/src/form/form_utils.ts +2 -2
  262. package/src/form/index.tsx +0 -1
  263. package/src/hooks/index.ts +4 -4
  264. package/src/hooks/navigation/contexts/CollectionRegistryContext.tsx +2 -2
  265. package/src/hooks/navigation/useBuildCollectionRegistryController.tsx +11 -11
  266. package/src/hooks/navigation/useBuildNavigationStateController.tsx +5 -5
  267. package/src/hooks/navigation/useNavigationResolution.ts +10 -10
  268. package/src/hooks/navigation/useResolvedCollections.ts +8 -8
  269. package/src/hooks/navigation/useTopLevelNavigation.ts +2 -2
  270. package/src/hooks/navigation/utils.ts +5 -5
  271. package/src/hooks/{useBuildSideEntityController.tsx → useBuildSidePanel.tsx} +28 -28
  272. package/src/hooks/useCMSContext.tsx +6 -6
  273. package/src/hooks/{useEntityHistory.ts → useHistory.ts} +1 -1
  274. package/src/hooks/useResolvedNavigationFrom.tsx +8 -5
  275. package/src/hooks/{useEntitySelectionDialog.tsx → useSelectionDialog.tsx} +7 -7
  276. package/src/hooks/useSideDialogsController.tsx +1 -1
  277. package/src/hooks/useSidePanel.tsx +13 -0
  278. package/src/index.ts +13 -13
  279. package/src/preview/PropertyPreview.tsx +1 -16
  280. package/src/preview/components/ReferencePreview.tsx +10 -10
  281. package/src/preview/components/RelationPreview.tsx +13 -12
  282. package/src/preview/components/StorageThumbnail.tsx +24 -7
  283. package/src/routes/RebaseRoute.tsx +10 -10
  284. package/src/types/components/EntityFormActionsProps.tsx +2 -2
  285. package/src/types/components/EntityFormProps.tsx +3 -3
  286. package/src/types/components/PropertyPreviewProps.tsx +1 -1
  287. package/src/types/fields.tsx +4 -9
  288. package/src/util/dataControllerAdapter.ts +9 -15
  289. package/src/util/navigation_utils.ts +7 -7
  290. package/src/util/previews.ts +23 -3
  291. package/src/util/propertyConfigMapper.ts +3 -3
  292. package/src/util/property_utils.tsx +2 -3
  293. package/src/util/{entity_view_constants.ts → view_constants.ts} +1 -1
  294. package/dist/CollectionEditorDialog-iGgS4rLX.js.map +0 -1
  295. package/dist/PropertyEditView-C9yhLyja.js.map +0 -1
  296. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +0 -28
  297. package/dist/components/EntityCollectionTable/fields/VirtualTableDateField.d.ts +0 -12
  298. package/dist/components/EntityCollectionTable/fields/VirtualTableInput.d.ts +0 -10
  299. package/dist/components/EntityCollectionTable/fields/VirtualTableNumberInput.d.ts +0 -9
  300. package/dist/components/EntityCollectionTable/fields/VirtualTableSwitch.d.ts +0 -8
  301. package/dist/components/EntityCollectionTable/index.d.ts +0 -6
  302. package/dist/components/EntityCollectionView/EntityCard.d.ts +0 -21
  303. package/dist/components/EntityEditViewFormActions.d.ts +0 -3
  304. package/dist/components/EntitySidePanel.d.ts +0 -11
  305. package/dist/components/EntityView.d.ts +0 -13
  306. package/dist/contexts/SideEntityControllerContext.d.ts +0 -3
  307. package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +0 -11
  308. package/dist/history-ChHgyyvM.js.map +0 -1
  309. package/dist/hooks/useBuildSideEntityController.d.ts +0 -6
  310. package/dist/hooks/useSideEntityController.d.ts +0 -11
  311. package/dist/src-DOX2nOyh.js.map +0 -1
  312. package/src/components/EntityCollectionTable/fields/VirtualTableDateField.tsx +0 -39
  313. package/src/components/EntityCollectionTable/fields/VirtualTableInput.tsx +0 -90
  314. package/src/components/EntityCollectionTable/fields/VirtualTableNumberInput.tsx +0 -83
  315. package/src/components/EntityCollectionTable/fields/VirtualTableSwitch.tsx +0 -32
  316. package/src/components/EntityCollectionTable/index.tsx +0 -14
  317. package/src/contexts/SideEntityControllerContext.tsx +0 -5
  318. package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +0 -141
  319. package/src/hooks/useSideEntityController.tsx +0 -13
  320. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/PropertyTableCell.d.ts +0 -0
  321. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/column_utils.d.ts +0 -0
  322. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationSelectorField.d.ts +0 -0
  323. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableStorageUpload.d.ts +0 -0
  324. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableSelect.d.ts +0 -0
  325. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableUserSelect.d.ts +0 -0
  326. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/CollectionTableToolbar.d.ts +0 -0
  327. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCell.d.ts +0 -0
  328. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCellActions.d.ts +0 -0
  329. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useDraggable.d.ts +0 -0
  330. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useWindowSize.d.ts +0 -0
  331. /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/table_bindings.d.ts +0 -0
  332. /package/dist/components/{EntityCollectionView → CollectionViewBinding}/FilterPresetsButton.d.ts +0 -0
  333. /package/dist/components/{EntityCollectionView → CollectionViewBinding}/FiltersDialog.d.ts +0 -0
  334. /package/dist/components/{EntityCollectionView → CollectionViewBinding}/ViewModeToggle.d.ts +0 -0
  335. /package/dist/components/{EntityCollectionView → CollectionViewBinding}/useSelectionController.d.ts +0 -0
  336. /package/dist/components/{EntityCollectionView → CollectionViewBinding}/utils.d.ts +0 -0
  337. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/PropertyTableCell.tsx +0 -0
  338. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/column_utils.tsx +0 -0
  339. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationSelectorField.tsx +0 -0
  340. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableSelect.tsx +0 -0
  341. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableUserSelect.tsx +0 -0
  342. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/CollectionTableToolbar.tsx +0 -0
  343. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCell.tsx +0 -0
  344. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCellActions.tsx +0 -0
  345. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useDraggable.tsx +0 -0
  346. /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useWindowSize.tsx +0 -0
  347. /package/src/components/{EntityCollectionView → CollectionViewBinding}/FilterPresetsButton.tsx +0 -0
  348. /package/src/components/{EntityCollectionView → CollectionViewBinding}/ViewModeToggle.tsx +0 -0
  349. /package/src/components/{EntityCollectionView → CollectionViewBinding}/useSelectionController.tsx +0 -0
  350. /package/src/components/{EntityCollectionView → CollectionViewBinding}/utils.ts +0 -0
@@ -1,4 +1,4 @@
1
- import type { EntityCollection, EntityCustomViewParams, AdditionalFieldDelegateProps } from "@rebasepro/types";
1
+ import type { CollectionConfig, EntityCustomViewParams, AdditionalFieldDelegateProps } from "@rebasepro/types";
2
2
  import type { FormContext, PropertyFieldBindingProps } from "../types/fields";
3
3
  import type { PropertyConfig } from "@rebasepro/types";
4
4
  import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
@@ -33,7 +33,7 @@ import {
33
33
  /**
34
34
  * Headless entity form component.
35
35
  *
36
- * Renders a form for an entity collection without any CMS or backend dependencies.
36
+ * Renders a form for a entity collection without any CMS or backend dependencies.
37
37
  * All backend concerns (save, caching, analytics, plugin slots) are provided via
38
38
  * callback props. For CMS-connected usage, use {@link EntityFormBinding} instead.
39
39
  *
@@ -1,5 +1,5 @@
1
1
 
2
- import type { EntityCollection } from "@rebasepro/types";
2
+ import { type CollectionConfig, getCollectionDataPath } from "@rebasepro/types";
3
3
  import type { FormContext } from "../types/fields";
4
4
  import type { EntityAction } from "@rebasepro/types";
5
5
  import React from "react";
@@ -81,7 +81,7 @@ type ActionsViewProps<M extends Record<string, unknown>> = {
81
81
  savingError: Error | undefined,
82
82
  entity: Entity<M> | undefined,
83
83
  formActions?: EntityAction[],
84
- collection: EntityCollection,
84
+ collection: CollectionConfig,
85
85
  disabled: boolean,
86
86
  status: "new" | "existing" | "copy",
87
87
  pluginActions?: React.ReactNode[],
@@ -127,10 +127,10 @@ function buildBottomActions<M extends Record<string, unknown>>({
127
127
  action.onClick({
128
128
  view: "form",
129
129
  entity,
130
- path: path ?? collection.slug,
130
+ path: path ?? getCollectionDataPath(collection),
131
131
  collection: collection,
132
132
  context: undefined,
133
- sideEntityController: undefined,
133
+ sidePanelController: undefined,
134
134
  openEntityMode: openEntityMode,
135
135
  navigateBack,
136
136
  formContext
@@ -1,4 +1,4 @@
1
- import type { EntityCollection, PluginFormActionProps } from "@rebasepro/types";
1
+ import type { CollectionConfig, PluginFormActionProps } from "@rebasepro/types";
2
2
  import type { FormContext } from "../types/fields";
3
3
  import React, { useCallback, useMemo, useState } from "react";
4
4
  import { AnalyticsEvent, Entity, EntityStatus, EntityValues } from "@rebasepro/types";
@@ -26,7 +26,7 @@ import {
26
26
  saveEntityToCache
27
27
  } from "@rebasepro/core";
28
28
 
29
- import { useCollectionRegistryController, useSideEntityController, useCMSContext } from "../index";
29
+ import { useCollectionRegistryController, useSidePanel, useCMSContext } from "../index";
30
30
  import { EntityForm } from "./EntityForm";
31
31
  import {
32
32
  extractTouchedValues,
@@ -92,7 +92,7 @@ export function EntityFormBinding<M extends Record<string, unknown>>({
92
92
  }: EntityFormBindingProps<M>) {
93
93
 
94
94
  const { t } = useTranslation();
95
- const sideEntityController = useSideEntityController();
95
+ const sidePanelController = useSidePanel();
96
96
  const collectionRegistryController = useCollectionRegistryController();
97
97
  const authController = useAuthController();
98
98
  const dataClient = useData();
@@ -153,11 +153,11 @@ export function EntityFormBinding<M extends Record<string, unknown>>({
153
153
  return;
154
154
  }
155
155
  if (openEntityMode === "side_panel" || openEntityMode === "dialog") {
156
- sideEntityController.close();
156
+ sidePanelController.close();
157
157
  } else {
158
158
  window.history.back();
159
159
  }
160
- }, [navigateBackProp, openEntityMode, sideEntityController]);
160
+ }, [navigateBackProp, openEntityMode, sidePanelController]);
161
161
 
162
162
  // --- Cache operations ---
163
163
  const clearDirtyCache = useCallback(() => {
@@ -254,7 +254,7 @@ export function EntityFormBinding<M extends Record<string, unknown>>({
254
254
  try {
255
255
  const accessor = dataClient.collection(path);
256
256
  const { data } = await accessor.find({
257
- where: { [name]: `eq.${value}` },
257
+ where: { [name]: ["==", value] },
258
258
  limit: 2
259
259
  });
260
260
  const otherEntities = entityId ? data.filter(e => e.id !== entityId) : data;
@@ -276,7 +276,7 @@ export function EntityFormBinding<M extends Record<string, unknown>>({
276
276
  parentEntityIds,
277
277
  path,
278
278
  status,
279
- collection: collection as EntityCollection,
279
+ collection: collection as CollectionConfig,
280
280
  context,
281
281
  formContext: undefined as unknown as FormContext<Record<string, unknown>>,
282
282
  openEntityMode,
@@ -1,4 +1,4 @@
1
- import type { EntityCollection, FieldProps as CoreFieldProps } from "@rebasepro/types";
1
+ import type { CollectionConfig, FieldProps as CoreFieldProps } from "@rebasepro/types";
2
2
  import type { FieldProps, PropertyFieldBindingProps } from "../types/fields";
3
3
  import type { RebasePlugin, PluginFieldBuilderParams, Property } from "@rebasepro/types";
4
4
  import React, { ComponentType, ReactElement, Suspense, useCallback, useRef } from "react";
@@ -29,7 +29,7 @@ import { ErrorBoundary } from "@rebasepro/ui";
29
29
  *
30
30
  * Please note that if you build a custom field in a component, the
31
31
  * **validation** passed in the property will have no effect. You need to set
32
- * the validation in the `EntityCollection` definition.
32
+ * the validation in the `CollectionConfig` definition.
33
33
  *
34
34
  * @param propertyKey You can use nested names such as `address.street` or `friends[2]`
35
35
  * @param property
@@ -292,7 +292,7 @@ const shouldPropertyReRender = (property: Property, plugins?: RebasePlugin[]): b
292
292
 
293
293
  interface UseWrappedComponentParams<M extends Record<string, unknown> = Record<string, unknown>> {
294
294
  path?: string,
295
- collection?: EntityCollection<M>,
295
+ collection?: CollectionConfig<M>,
296
296
  propertyKey: string,
297
297
  property: Property,
298
298
  Component: ComponentType<FieldProps<Property, unknown, M>>,
@@ -323,7 +323,7 @@ function useWrappedComponent<T, M extends Record<string, unknown> = Record<strin
323
323
  Field: Component as unknown as ComponentType<CoreFieldProps<Property, unknown, Record<string, unknown>>>,
324
324
  plugin,
325
325
  path,
326
- collection: collection as EntityCollection | undefined
326
+ collection: collection as CollectionConfig | undefined
327
327
  };
328
328
  const enabled = plugin.fieldBuilder.enabled?.(params);
329
329
  if (enabled === undefined || enabled)
@@ -3,6 +3,7 @@ import React, { useCallback } from "react";
3
3
  import { useSnackbarController, useStorageSource } from "@rebasepro/core";
4
4
  import { StorageFieldItem } from "@rebasepro/core";
5
5
  import { ErrorView } from "@rebasepro/core";
6
+ import type { StorageSource } from "@rebasepro/types";
6
7
  import { cls, paperMixin, Skeleton } from "@rebasepro/ui";
7
8
 
8
9
  export interface StorageUploadItemProps {
@@ -15,6 +16,10 @@ export interface StorageUploadItemProps {
15
16
  uploadedUrl?: string) => Promise<void>;
16
17
  imageSize: number;
17
18
  simple: boolean;
19
+ /** Override the storage source for this upload. When provided, this source
20
+ * is used instead of the default from context — enabling per-property
21
+ * multi-backend uploads. */
22
+ storageSource?: StorageSource;
18
23
  }
19
24
 
20
25
  export function StorageUploadProgress({
@@ -23,10 +28,12 @@ export function StorageUploadProgress({
23
28
  metadata,
24
29
  onFileUploadComplete,
25
30
  imageSize,
26
- simple
31
+ simple,
32
+ storageSource: storageSourceProp
27
33
  }: StorageUploadItemProps) {
28
34
 
29
- const storageSource = useStorageSource();
35
+ const defaultStorageSource = useStorageSource();
36
+ const storageSource = storageSourceProp ?? defaultStorageSource;
30
37
 
31
38
  const snackbarController = useSnackbarController();
32
39
 
@@ -1,5 +1,5 @@
1
- import { useEntitySelectionDialog } from "../../hooks/useEntitySelectionDialog";
2
- import type { EntityCollection } from "@rebasepro/types";
1
+ import { useSelectionDialog } from "../../hooks/useSelectionDialog";
2
+ import type { CollectionConfig } from "@rebasepro/types";
3
3
  import type { FieldProps } from "../../types/fields";
4
4
  import type { ArrayProperty, Property } from "@rebasepro/types";
5
5
  import React, { useCallback, useMemo } from "react";
@@ -56,7 +56,7 @@ export function ArrayOfReferencesFieldBinding({
56
56
  });
57
57
 
58
58
  const collectionRegistryController = useCollectionRegistryController();
59
- const collection: EntityCollection | undefined = useMemo(() => {
59
+ const collection: CollectionConfig | undefined = useMemo(() => {
60
60
  return ofProperty.path ? collectionRegistryController.getCollection(ofProperty.path) : undefined;
61
61
  }, [ofProperty.path]);
62
62
 
@@ -69,7 +69,7 @@ export function ArrayOfReferencesFieldBinding({
69
69
  setValue(refs);
70
70
  }, [setValue]);
71
71
 
72
- const referenceDialogController = useEntitySelectionDialog({
72
+ const referenceDialogController = useSelectionDialog({
73
73
  multiselect: true,
74
74
  path: ofProperty.path,
75
75
  collection,
@@ -134,13 +134,13 @@ function MapEditView<T extends Record<string, unknown>>({
134
134
  setInternalState(newRowIds);
135
135
  }, [value]);
136
136
 
137
- const updatetype = (rowId: number, type: DataType) => {
138
- if (!rowId) {
137
+ const updatetype = (id: number, type: DataType) => {
138
+ if (!id) {
139
139
  console.warn("No key selected for data type update");
140
140
  return;
141
141
  }
142
142
  setInternalState(internalState.map((row) => {
143
- if (row[0] === rowId) {
143
+ if (row[0] === id) {
144
144
  return [row[0], {
145
145
  key: row[1].key,
146
146
  type
@@ -150,27 +150,27 @@ function MapEditView<T extends Record<string, unknown>>({
150
150
  }));
151
151
  setValue({
152
152
  ...(value ?? {} as T),
153
- [internalState.find((row) => row[0] === rowId)?.[1].key ?? ""]: getDefaultValueFortype(type)
153
+ [internalState.find((row) => row[0] === id)?.[1].key ?? ""]: getDefaultValueFortype(type)
154
154
  })
155
155
  };
156
156
 
157
157
  return <div className="py-1 flex flex-col gap-1">
158
158
  {internalState
159
- .map(([rowId, {
159
+ .map(([id, {
160
160
  key: fieldKey,
161
161
  type
162
162
  }], index) => {
163
163
  const entryValue = fieldKey ? value?.[fieldKey] : "";
164
164
  const onFieldKeyChange = (newKey: string) => {
165
165
 
166
- setInternalState(internalState.map((currentRowId) => {
167
- if (currentRowId[0] === rowId) {
168
- return [rowId, {
166
+ setInternalState(internalState.map((currentId) => {
167
+ if (currentId[0] === id) {
168
+ return [id, {
169
169
  key: newKey ?? "",
170
- type: currentRowId[1].type
170
+ type: currentId[1].type
171
171
  }];
172
172
  }
173
- return currentRowId;
173
+ return currentId;
174
174
  }));
175
175
 
176
176
  if (typeof value === "object" && newKey in value) {
@@ -189,8 +189,8 @@ function MapEditView<T extends Record<string, unknown>>({
189
189
  [newKey ?? ""]: entryValue
190
190
  });
191
191
  };
192
- return <MapKeyValueRow rowId={rowId}
193
- key={rowId}
192
+ return <MapKeyValueRow id={id}
193
+ key={id}
194
194
  fieldKey={fieldKey}
195
195
  value={value ?? {} as T}
196
196
  onDeleteClick={() => {
@@ -200,7 +200,7 @@ function MapEditView<T extends Record<string, unknown>>({
200
200
  } else {
201
201
  delete (newValue as Record<string, unknown>)[fieldKey];
202
202
  }
203
- setInternalState(internalState.filter((currentRowId) => currentRowId[0] !== rowId));
203
+ setInternalState(internalState.filter((currentId) => currentId[0] !== id));
204
204
  setValue({
205
205
  ...newValue
206
206
  });
@@ -238,7 +238,7 @@ function MapEditView<T extends Record<string, unknown>>({
238
238
  }
239
239
 
240
240
  function MapKeyValueRow<T extends Record<string, unknown>>({
241
- rowId,
241
+ id,
242
242
  fieldKey,
243
243
  value,
244
244
  onFieldKeyChange,
@@ -249,7 +249,7 @@ function MapKeyValueRow<T extends Record<string, unknown>>({
249
249
  updatetype,
250
250
  disabled
251
251
  }: {
252
- rowId: number,
252
+ id: number,
253
253
  fieldKey: string,
254
254
  value: T,
255
255
  onFieldKeyChange: (newKey: string) => void,
@@ -258,7 +258,7 @@ function MapKeyValueRow<T extends Record<string, unknown>>({
258
258
  entryValue: unknown,
259
259
  type: DataType,
260
260
  disabled?: boolean,
261
- updatetype: (rowId: number, type: DataType) => void
261
+ updatetype: (id: number, type: DataType) => void
262
262
  }) {
263
263
 
264
264
  const { locale } = useCustomizationController();
@@ -327,7 +327,7 @@ function MapKeyValueRow<T extends Record<string, unknown>>({
327
327
  className={cls(defaultBorderMixin, "ml-2 pl-2 border-l border-solid")}>
328
328
  <ArrayContainer value={arrayValue}
329
329
  newDefaultEntry={""}
330
- droppableId={rowId.toString()}
330
+ droppableId={id.toString()}
331
331
  addLabel={fieldKey ? t("add_to_field", { fieldName: fieldKey }) : t("add")}
332
332
  size={"small"}
333
333
  disabled={disabled || !fieldKey}
@@ -379,11 +379,11 @@ function MapKeyValueRow<T extends Record<string, unknown>>({
379
379
  }
380
380
 
381
381
  function doUpdatetype(type: DataType) {
382
- updatetype(rowId, type);
382
+ updatetype(id, type);
383
383
  }
384
384
 
385
385
  return (<>
386
- <Typography key={rowId.toString()}
386
+ <Typography key={id.toString()}
387
387
  component={"div"}
388
388
  className="font-mono flex flex-row gap-1">
389
389
  <div className="w-[300px] max-w-[30%]">
@@ -1,6 +1,8 @@
1
1
  import React, { lazy, Suspense, useCallback, useEffect, useMemo, useRef, useState } from "react";
2
2
  import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
3
3
  import { useAuthController, useStorageSource } from "@rebasepro/core";
4
+ import { useStorageSources } from "@rebasepro/core";
5
+ import { resolveStorageSource } from "@rebasepro/common";
4
6
  import { getIconForProperty } from "../../util/property_utils";
5
7
  import type { FieldProps } from "../../types/fields";
6
8
  import type { ArrayProperty, StringProperty } from "@rebasepro/types";
@@ -84,8 +86,17 @@ export function MarkdownEditorFieldBinding({
84
86
  const disabled = disabledProp || isSubmitting;
85
87
  const highlight = customProps?.highlight;
86
88
  const editorProps = customProps?.editorProps;
87
- const storageSource = useStorageSource();
89
+ const defaultStorageSource = useStorageSource();
88
90
  const storage = property.storage;
91
+ const storageSources = useStorageSources();
92
+
93
+ // Resolve the correct storage source for this property.
94
+ // Mirrors the resolution in useStorageUploadController.
95
+ const storageSource = useMemo(() => resolveStorageSource({
96
+ sourceKey: storage?.storageSource,
97
+ sources: storageSources.sources,
98
+ defaultSource: defaultStorageSource
99
+ }), [storage?.storageSource, storageSources.sources, defaultStorageSource]);
89
100
 
90
101
  const entityValues = context.values;
91
102
  const entityId = context.entityId;
@@ -1,14 +1,14 @@
1
- import { useEntitySelectionDialog } from "../../hooks/useEntitySelectionDialog";
1
+ import { useSelectionDialog } from "../../hooks/useSelectionDialog";
2
2
  import type { FieldProps } from "../../types/fields";
3
3
  import type { RelationProperty } from "@rebasepro/types";
4
+ import { Entity, getCollectionDataPath, getDataSourceCapabilities } from "@rebasepro/types";
4
5
  import React, { useCallback } from "react";
5
- import { Entity, getDataSourceCapabilities } from "@rebasepro/types";
6
6
  import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
7
7
  import { ArrayContainer, ArrayEntryParams } from "../../components/ArrayContainer";
8
8
  import { getIconForProperty } from "../../util/property_utils";
9
9
  import { getRelationFrom, resolveRelationProperty } from "@rebasepro/common";
10
10
 
11
- import { useTranslation, ErrorView } from "@rebasepro/core";
11
+ import { ErrorView, useTranslation } from "@rebasepro/core";
12
12
  import { Button, cls, ExpandablePanel, fieldBackgroundMixin, PencilIcon, Typography } from "@rebasepro/ui";
13
13
  import { RelationPreview } from "../../preview";
14
14
 
@@ -41,7 +41,7 @@ export function MultipleRelationFieldBinding({
41
41
  }
42
42
 
43
43
  const parentCollection = context.collection;
44
- const capabilities = parentCollection ? getDataSourceCapabilities(parentCollection.driver) : undefined;
44
+ const capabilities = parentCollection ? getDataSourceCapabilities(parentCollection.engine) : undefined;
45
45
  if (!parentCollection || !capabilities?.supportsRelations || !("relations" in parentCollection) || !parentCollection.relations) {
46
46
  throw Error("RelationFieldBinding expected a collection with relations support");
47
47
  }
@@ -59,9 +59,9 @@ export function MultipleRelationFieldBinding({
59
59
  setValue(entities.map(e => getRelationFrom(e)));
60
60
  }, [setValue]);
61
61
 
62
- const referenceDialogController = useEntitySelectionDialog({
62
+ const referenceDialogController = useSelectionDialog({
63
63
  multiselect: true,
64
- path: collection.slug,
64
+ path: getCollectionDataPath(collection),
65
65
  collection,
66
66
  onMultipleEntitiesSelected,
67
67
  selectedEntityIds,
@@ -1,5 +1,5 @@
1
- import { useEntitySelectionDialog } from "../../hooks/useEntitySelectionDialog";
2
- import type { EntityCollection } from "@rebasepro/types";
1
+ import { useSelectionDialog } from "../../hooks/useSelectionDialog";
2
+ import type { CollectionConfig } from "@rebasepro/types";
3
3
  import type { FieldProps } from "../../types/fields";
4
4
  import type { Property, ReferenceProperty } from "@rebasepro/types";
5
5
  import React, { useCallback, useMemo } from "react";
@@ -8,7 +8,7 @@ import { Entity, EntityReference } from "@rebasepro/types";
8
8
  import { ErrorView } from "@rebasepro/core";
9
9
  import { ReadOnlyFieldBinding } from "./ReadOnlyFieldBinding";
10
10
  import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
11
- import { EntityPreviewContainer } from "../../components/EntityPreview";
11
+ import { EntityPreviewContainer } from "../../components/EntityPreviewBinding";
12
12
  import { ReferencePreview } from "../../preview";
13
13
  import { IconForView } from "@rebasepro/core";
14
14
  import { getIconForProperty } from "../../util/property_utils";
@@ -64,7 +64,7 @@ function ReferenceFieldBindingInternal({
64
64
  const validValue = refValue && typeof refValue === "object" && "isEntityReference" in refValue && refValue.isEntityReference();
65
65
 
66
66
  const collectionRegistryController = useCollectionRegistryController();
67
- const collection: EntityCollection | undefined = useMemo(() => {
67
+ const collection: CollectionConfig | undefined = useMemo(() => {
68
68
  return property.path ? collectionRegistryController.getCollection(property.path) : undefined;
69
69
  }, [property.path]);
70
70
 
@@ -77,7 +77,7 @@ function ReferenceFieldBindingInternal({
77
77
  setValue(ref);
78
78
  }, [setValue, propertyKey]);
79
79
 
80
- const referenceDialogController = useEntitySelectionDialog({
80
+ const referenceDialogController = useSelectionDialog({
81
81
  multiselect: false,
82
82
  path: property.path,
83
83
  collection,
@@ -1,15 +1,13 @@
1
- import { useEntitySelectionDialog } from "../../hooks/useEntitySelectionDialog";
1
+ import { useSelectionDialog } from "../../hooks/useSelectionDialog";
2
2
  import type { FieldProps } from "../../types/fields";
3
3
  import type { RelationProperty } from "@rebasepro/types";
4
+ import { Entity, getCollectionDataPath, getDataSourceCapabilities, Relation } from "@rebasepro/types";
4
5
  import React, { useCallback } from "react";
5
- import { Entity, EntityRelation, getDataSourceCapabilities, Relation } from "@rebasepro/types";
6
6
  import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
7
- import { EntityPreviewContainer } from "../../components/EntityPreview";
8
- import { IconForView } from "@rebasepro/core";
7
+ import { EntityPreviewContainer } from "../../components/EntityPreviewBinding";
8
+ import { ErrorView, IconForView } from "@rebasepro/core";
9
9
  import { getIconForProperty } from "../../util/property_utils";
10
- import { getRelationFrom, resolveRelationProperty, normalizeToEntityRelation } from "@rebasepro/common";
11
-
12
- import { ErrorView } from "@rebasepro/core";
10
+ import { getRelationFrom, normalizeToEntityRelation, resolveRelationProperty } from "@rebasepro/common";
13
11
  import { cls } from "@rebasepro/ui";
14
12
  import { RelationPreview } from "../../preview";
15
13
  import { RelationSelector } from "../../components/RelationSelector";
@@ -22,7 +20,7 @@ export function RelationFieldBinding(props: FieldProps<RelationProperty>) {
22
20
  throw Error("RelationFieldBinding expected a property containing a relation");
23
21
  }
24
22
  const collection = context.collection;
25
- const capabilities = collection ? getDataSourceCapabilities(collection.driver) : undefined;
23
+ const capabilities = collection ? getDataSourceCapabilities(collection.engine) : undefined;
26
24
  if (!collection || !capabilities?.supportsRelations || !("relations" in collection) || !collection.relations) {
27
25
  throw Error("RelationFieldBinding expected a collection with relations support");
28
26
  }
@@ -122,9 +120,9 @@ function SingleRelationFieldBinding({
122
120
  setValue(e ? getRelationFrom(e) : null);
123
121
  }, [setValue]);
124
122
 
125
- const referenceDialogController = useEntitySelectionDialog({
123
+ const referenceDialogController = useSelectionDialog({
126
124
  multiselect: false,
127
- path: collection.slug,
125
+ path: getCollectionDataPath(collection),
128
126
  collection,
129
127
  onSingleEntitySelected,
130
128
  selectedEntityIds: validValue && normalizedValue ? [normalizedValue.id] : undefined,
@@ -10,6 +10,7 @@ import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
10
10
  import { isReadOnly } from "@rebasepro/common";
11
11
  import { getIconForProperty } from "../../util/property_utils";
12
12
  import { useAuthController, useSnackbarController, useStorageSource, useTranslation } from "@rebasepro/core";
13
+ import { StorageSourceContext } from "@rebasepro/core";
13
14
  import {
14
15
  closestCenter,
15
16
  DndContext,
@@ -62,7 +63,7 @@ export function StorageUploadFieldBinding({
62
63
 
63
64
  const authController = useAuthController();
64
65
 
65
- const storageSource = useStorageSource(context.collection);
66
+ const storageSource = useStorageSource();
66
67
  const disabled = isReadOnly(property) || !!property.ui?.disabled || isSubmitting || context.disabled;
67
68
 
68
69
  const {
@@ -72,7 +73,8 @@ export function StorageUploadFieldBinding({
72
73
  storage,
73
74
  onFileUploadComplete,
74
75
  storagePathBuilder,
75
- multipleFilesSupported
76
+ multipleFilesSupported,
77
+ resolvedStorageSource
76
78
  } = useStorageUploadController({
77
79
  entityValues: context.values,
78
80
  entityId: context.entityId,
@@ -103,19 +105,21 @@ export function StorageUploadFieldBinding({
103
105
  title={property.name ?? propertyKey}
104
106
  className={"h-8 text-text-secondary dark:text-text-secondary-dark ml-3.5"}/>}
105
107
 
106
- <StorageUpload
107
- value={internalValue}
108
- name={propertyKey}
109
- disabled={disabled ?? false}
110
- autoFocus={autoFocus ?? false}
111
- property={property}
112
- onChange={setValue}
113
- setInternalValue={setInternalValue}
114
- onFilesAdded={onFilesAdded}
115
- onFileUploadComplete={onFileUploadComplete}
116
- storagePathBuilder={storagePathBuilder}
117
- storage={storage}
118
- multipleFilesSupported={multipleFilesSupported}/>
108
+ <StorageSourceContext.Provider value={resolvedStorageSource}>
109
+ <StorageUpload
110
+ value={internalValue}
111
+ name={propertyKey}
112
+ disabled={disabled ?? false}
113
+ autoFocus={autoFocus ?? false}
114
+ property={property}
115
+ onChange={setValue}
116
+ setInternalValue={setInternalValue}
117
+ onFilesAdded={onFilesAdded}
118
+ onFileUploadComplete={onFileUploadComplete}
119
+ storagePathBuilder={storagePathBuilder}
120
+ storage={storage}
121
+ multipleFilesSupported={multipleFilesSupported}/>
122
+ </StorageSourceContext.Provider>
119
123
 
120
124
  <FieldHelperText includeDescription={includeDescription}
121
125
  showError={showError}
@@ -1,4 +1,4 @@
1
- import type { EntityCollection, PropertyConfig } from "@rebasepro/types";
1
+ import type { CollectionConfig, PropertyConfig } from "@rebasepro/types";
2
2
  import type { AuthController, Entity, EntityStatus, EntityValues } from "@rebasepro/types";
3
3
  import { deepEqual as equal } from "fast-equals";
4
4
  import { getIn, setIn } from "@rebasepro/formex";
@@ -114,7 +114,7 @@ export function getChanges<T extends object>(source: Partial<T>, comparison: Par
114
114
 
115
115
  export function getInitialEntityValues<M extends Record<string, unknown>>(
116
116
  authController: AuthController,
117
- collection: EntityCollection,
117
+ collection: CollectionConfig,
118
118
  path: string,
119
119
  status: "new" | "existing" | "copy",
120
120
  entity: Entity<M> | undefined,
@@ -12,7 +12,6 @@ export { TextFieldBinding } from "./field_bindings/TextFieldBinding";
12
12
  export { SwitchFieldBinding } from "./field_bindings/SwitchFieldBinding";
13
13
  export { DateTimeFieldBinding } from "./field_bindings/DateTimeFieldBinding";
14
14
  export { ReferenceFieldBinding } from "./field_bindings/ReferenceFieldBinding";
15
- export { ReferenceAsStringFieldBinding } from "./field_bindings/ReferenceAsStringFieldBinding";
16
15
  export { MapFieldBinding } from "./field_bindings/MapFieldBinding";
17
16
  export { KeyValueFieldBinding } from "./field_bindings/KeyValueFieldBinding";
18
17
  export { RepeatFieldBinding } from "./field_bindings/RepeatFieldBinding";
@@ -1,8 +1,8 @@
1
- export * from "./useSideEntityController";
2
- export * from "./useEntitySelectionDialog";
3
- export * from "./useBuildSideEntityController";
1
+ export * from "./useSidePanel";
2
+ export * from "./useSelectionDialog";
3
+ export * from "./useBuildSidePanel";
4
4
  export * from "./useResolvedNavigationFrom";
5
- export * from "./useEntityHistory";
5
+ export * from "./useHistory";
6
6
  export * from "./navigation/contexts";
7
7
  export * from "./navigation/useBuildCollectionRegistryController";
8
8
  export * from "./navigation/useBuildNavigationStateController";
@@ -1,4 +1,4 @@
1
- import type { EntityCollection } from "@rebasepro/types";
1
+ import type { CollectionConfig } from "@rebasepro/types";
2
2
  import React, { createContext } from "react";
3
3
  import { CollectionRegistryController } from "@rebasepro/types";
4
4
 
@@ -12,7 +12,7 @@ export const CollectionRegistryContext = createContext<CollectionRegistryControl
12
12
  initialised: false
13
13
  });
14
14
 
15
- export function useCollectionRegistryController<DB = Record<string, unknown>, EC extends EntityCollection = EntityCollection>(): CollectionRegistryController<DB, EC> {
15
+ export function useCollectionRegistryController<DB = Record<string, unknown>, EC extends CollectionConfig = CollectionConfig>(): CollectionRegistryController<DB, EC> {
16
16
  const context = React.useContext(CollectionRegistryContext);
17
17
  if (context === undefined) {
18
18
  throw new Error("useCollectionRegistryController must be used within a CollectionRegistryContext.Provider");