@rebasepro/admin 0.4.0 → 0.6.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 (353) hide show
  1. package/README.md +135 -0
  2. package/dist/CollectionEditorDialog-jA-PLh6N.js +3549 -0
  3. package/dist/CollectionEditorDialog-jA-PLh6N.js.map +1 -0
  4. package/dist/CollectionsStudioView-UKouBPOm.js +170 -0
  5. package/dist/CollectionsStudioView-UKouBPOm.js.map +1 -0
  6. package/dist/PropertyEditView-DEUddmg_.js +3660 -0
  7. package/dist/PropertyEditView-DEUddmg_.js.map +1 -0
  8. package/dist/collection_editor/ConfigControllerProvider.d.ts +2 -2
  9. package/dist/collection_editor/ui/AddKanbanColumnAction.d.ts +2 -1
  10. package/dist/collection_editor/ui/CollectionViewHeaderAction.d.ts +2 -1
  11. package/dist/collection_editor/ui/EditorCollectionAction.d.ts +1 -1
  12. package/dist/collection_editor/ui/EditorCollectionActionStart.d.ts +1 -1
  13. package/dist/collection_editor/ui/EditorEntityAction.d.ts +1 -1
  14. package/dist/collection_editor/ui/HomePageEditorCollectionAction.d.ts +1 -1
  15. package/dist/collection_editor/ui/KanbanSetupAction.d.ts +2 -1
  16. package/dist/collection_editor/ui/MissingReferenceWidget.d.ts +1 -1
  17. package/dist/collection_editor/ui/NewCollectionButton.d.ts +1 -1
  18. package/dist/collection_editor/ui/NewCollectionCard.d.ts +1 -1
  19. package/dist/collection_editor/ui/PropertyAddColumnComponent.d.ts +1 -1
  20. package/dist/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.d.ts +1 -1
  21. package/dist/collection_editor/ui/collection_editor/AIModifiedPathsContext.d.ts +1 -1
  22. package/dist/collection_editor/ui/collection_editor/CollectionDetailsForm.d.ts +2 -1
  23. package/dist/collection_editor/ui/collection_editor/CollectionEditorDialog.d.ts +2 -2
  24. package/dist/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.d.ts +2 -2
  25. package/dist/collection_editor/ui/collection_editor/CollectionJsonImportDialog.d.ts +2 -1
  26. package/dist/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +1 -1
  27. package/dist/collection_editor/ui/collection_editor/CollectionRLSTab.d.ts +2 -1
  28. package/dist/collection_editor/ui/collection_editor/CollectionRelationsTab.d.ts +2 -1
  29. package/dist/collection_editor/ui/collection_editor/CollectionStudioView.d.ts +2 -1
  30. package/dist/collection_editor/ui/collection_editor/CollectionYupValidation.d.ts +1 -9
  31. package/dist/collection_editor/ui/collection_editor/CollectionsStudioView.d.ts +2 -1
  32. package/dist/collection_editor/ui/collection_editor/DisplaySettingsForm.d.ts +2 -1
  33. package/dist/collection_editor/ui/collection_editor/EntityActionsEditTab.d.ts +2 -1
  34. package/dist/collection_editor/ui/collection_editor/EntityActionsSelectDialog.d.ts +2 -1
  35. package/dist/collection_editor/ui/collection_editor/EntityCustomViewsSelectDialog.d.ts +2 -1
  36. package/dist/collection_editor/ui/collection_editor/EnumForm.d.ts +2 -1
  37. package/dist/collection_editor/ui/collection_editor/GeneralSettingsForm.d.ts +2 -1
  38. package/dist/collection_editor/ui/collection_editor/GetCodeDialog.d.ts +2 -1
  39. package/dist/collection_editor/ui/collection_editor/KanbanConfigSection.d.ts +2 -1
  40. package/dist/collection_editor/ui/collection_editor/LayoutModeSwitch.d.ts +1 -1
  41. package/dist/collection_editor/ui/collection_editor/PropertyEditView.d.ts +4 -3
  42. package/dist/collection_editor/ui/collection_editor/PropertyFieldPreview.d.ts +2 -2
  43. package/dist/collection_editor/ui/collection_editor/PropertyTree.d.ts +2 -2
  44. package/dist/collection_editor/ui/collection_editor/SubcollectionsEditTab.d.ts +2 -1
  45. package/dist/collection_editor/ui/collection_editor/SwitchControl.d.ts +2 -1
  46. package/dist/collection_editor/ui/collection_editor/ViewModeSwitch.d.ts +1 -1
  47. package/dist/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.d.ts +1 -1
  48. package/dist/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.d.ts +3 -2
  49. package/dist/collection_editor/ui/collection_editor/properties/BlockPropertyField.d.ts +2 -1
  50. package/dist/collection_editor/ui/collection_editor/properties/BooleanPropertyField.d.ts +2 -1
  51. package/dist/collection_editor/ui/collection_editor/properties/DateTimePropertyField.d.ts +2 -1
  52. package/dist/collection_editor/ui/collection_editor/properties/EnumPropertyField.d.ts +2 -1
  53. package/dist/collection_editor/ui/collection_editor/properties/KeyValuePropertyField.d.ts +2 -1
  54. package/dist/collection_editor/ui/collection_editor/properties/MapPropertyField.d.ts +2 -1
  55. package/dist/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.d.ts +2 -1
  56. package/dist/collection_editor/ui/collection_editor/properties/NumberPropertyField.d.ts +2 -1
  57. package/dist/collection_editor/ui/collection_editor/properties/ReferencePropertyField.d.ts +3 -2
  58. package/dist/collection_editor/ui/collection_editor/properties/RelationPropertyField.d.ts +2 -1
  59. package/dist/collection_editor/ui/collection_editor/properties/RepeatPropertyField.d.ts +2 -1
  60. package/dist/collection_editor/ui/collection_editor/properties/StoragePropertyField.d.ts +2 -1
  61. package/dist/collection_editor/ui/collection_editor/properties/StringPropertyField.d.ts +2 -1
  62. package/dist/collection_editor/ui/collection_editor/properties/UrlPropertyField.d.ts +2 -1
  63. package/dist/collection_editor/ui/collection_editor/properties/VectorPropertyField.d.ts +2 -1
  64. package/dist/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.d.ts +2 -1
  65. package/dist/collection_editor/ui/collection_editor/properties/conditions/ConditionsEditor.d.ts +2 -1
  66. package/dist/collection_editor/ui/collection_editor/properties/conditions/ConditionsPanel.d.ts +1 -1
  67. package/dist/collection_editor/ui/collection_editor/properties/conditions/EnumConditionsEditor.d.ts +2 -1
  68. package/dist/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.d.ts +2 -1
  69. package/dist/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.d.ts +2 -1
  70. package/dist/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.d.ts +2 -1
  71. package/dist/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.d.ts +2 -1
  72. package/dist/collection_editor/ui/collection_editor/properties/validation/ValidationPanel.d.ts +1 -1
  73. package/dist/collection_editor/ui/collection_editor/templates/blog_template.d.ts +1 -1
  74. package/dist/collection_editor/ui/collection_editor/templates/pages_template.d.ts +1 -1
  75. package/dist/collection_editor/ui/collection_editor/templates/products_template.d.ts +1 -1
  76. package/dist/collection_editor/ui/collection_editor/templates/users_template.d.ts +1 -1
  77. package/dist/collection_editor_ui.js +4 -11
  78. package/dist/components/ArrayContainer.d.ts +3 -3
  79. package/dist/components/ClearFilterSortButton.d.ts +1 -1
  80. package/dist/components/CollectionEditorDialogs.d.ts +2 -1
  81. package/dist/components/CollectionPanel.d.ts +2 -27
  82. package/dist/components/DefaultAppBar.d.ts +1 -1
  83. package/dist/components/DefaultDrawer.d.ts +4 -4
  84. package/dist/components/DeleteEntityDialog.d.ts +2 -1
  85. package/dist/components/DrawerNavigationGroup.d.ts +1 -1
  86. package/dist/components/DrawerNavigationItem.d.ts +1 -1
  87. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +1 -1
  88. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -1
  89. package/dist/components/EntityCollectionTable/fields/TableMultipleRelationField.d.ts +3 -3
  90. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -3
  91. package/dist/components/EntityCollectionTable/fields/TableRelationField.d.ts +3 -3
  92. package/dist/components/EntityCollectionTable/fields/TableRelationSelectorField.d.ts +2 -1
  93. package/dist/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +2 -2
  94. package/dist/components/EntityCollectionTable/fields/VirtualTableDateField.d.ts +1 -1
  95. package/dist/components/EntityCollectionTable/fields/VirtualTableInput.d.ts +2 -1
  96. package/dist/components/EntityCollectionTable/fields/VirtualTableNumberInput.d.ts +2 -1
  97. package/dist/components/EntityCollectionTable/fields/VirtualTableSelect.d.ts +1 -1
  98. package/dist/components/EntityCollectionTable/fields/VirtualTableSwitch.d.ts +2 -1
  99. package/dist/components/EntityCollectionTable/fields/VirtualTableUserSelect.d.ts +1 -1
  100. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -1
  101. package/dist/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +1 -1
  102. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +4 -3
  103. package/dist/components/EntityCollectionView/Board.d.ts +2 -1
  104. package/dist/components/EntityCollectionView/BoardColumnTitle.d.ts +1 -1
  105. package/dist/components/EntityCollectionView/BoardSortableList.d.ts +1 -1
  106. package/dist/components/EntityCollectionView/EntityBoardCard.d.ts +1 -1
  107. package/dist/components/EntityCollectionView/EntityCard.d.ts +2 -1
  108. package/dist/components/EntityCollectionView/EntityCollectionBoardView.d.ts +1 -1
  109. package/dist/components/EntityCollectionView/EntityCollectionCardView.d.ts +1 -1
  110. package/dist/components/EntityCollectionView/EntityCollectionListView.d.ts +1 -1
  111. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +0 -24
  112. package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +1 -1
  113. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +2 -1
  114. package/dist/components/EntityCollectionView/FilterPresetsButton.d.ts +2 -1
  115. package/dist/components/EntityCollectionView/FiltersDialog.d.ts +2 -1
  116. package/dist/components/EntityCollectionView/SplitListView.d.ts +1 -1
  117. package/dist/components/EntityCollectionView/ViewModeToggle.d.ts +2 -1
  118. package/dist/components/EntityDetailView.d.ts +1 -1
  119. package/dist/components/EntityEditView.d.ts +2 -2
  120. package/dist/components/EntityEditViewFormActions.d.ts +2 -1
  121. package/dist/components/EntityJsonPreview.d.ts +2 -1
  122. package/dist/components/EntityPreview.d.ts +3 -3
  123. package/dist/components/EntitySidePanel.d.ts +2 -1
  124. package/dist/components/EntityView.d.ts +2 -1
  125. package/dist/components/FieldCaption.d.ts +1 -1
  126. package/dist/components/HomePage/ContentHomePage.d.ts +1 -1
  127. package/dist/components/HomePage/FavouritesView.d.ts +1 -1
  128. package/dist/components/HomePage/HomePageDnD.d.ts +4 -4
  129. package/dist/components/HomePage/NavigationCard.d.ts +1 -1
  130. package/dist/components/HomePage/NavigationCardBinding.d.ts +2 -1
  131. package/dist/components/HomePage/NavigationGroup.d.ts +2 -2
  132. package/dist/components/HomePage/RenameGroupDialog.d.ts +2 -1
  133. package/dist/components/HomePage/SmallNavigationCard.d.ts +1 -1
  134. package/dist/components/PropertyCollectionView.d.ts +2 -1
  135. package/dist/components/PropertyIdCopyTooltip.d.ts +2 -2
  136. package/dist/components/RebaseAuthGate.d.ts +1 -1
  137. package/dist/components/RebaseLayout.d.ts +1 -1
  138. package/dist/components/RebaseNavigation.d.ts +1 -1
  139. package/dist/components/RebaseRouteDefs.d.ts +1 -1
  140. package/dist/components/RebaseShell.d.ts +1 -1
  141. package/dist/components/ReferenceTable/EntitySelectionTable.d.ts +1 -1
  142. package/dist/components/ReferenceWidget.d.ts +2 -1
  143. package/dist/components/SearchIconsView.d.ts +2 -1
  144. package/dist/components/SelectableTable/SelectableTable.d.ts +2 -2
  145. package/dist/components/SelectableTable/filters/BooleanFilterField.d.ts +2 -1
  146. package/dist/components/SelectableTable/filters/DateTimeFilterField.d.ts +2 -1
  147. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  148. package/dist/components/SelectableTable/filters/RelationFilterField.d.ts +2 -1
  149. package/dist/components/SelectableTable/filters/StringNumberFilterField.d.ts +2 -1
  150. package/dist/components/SideDialogs.d.ts +1 -1
  151. package/dist/components/SideEntityProvider.d.ts +1 -1
  152. package/dist/components/admin/CreationResultDialog.d.ts +2 -1
  153. package/dist/components/app/AppBar.d.ts +1 -1
  154. package/dist/components/app/Drawer.d.ts +1 -1
  155. package/dist/components/common/default_entity_actions.d.ts +2 -1
  156. package/dist/components/history/EntityHistoryEntry.d.ts +1 -1
  157. package/dist/components/history/EntityHistoryView.d.ts +1 -1
  158. package/dist/components/history/LastEditedByFormAction.d.ts +2 -1
  159. package/dist/components/history/LastEditedByIndicator.d.ts +2 -1
  160. package/dist/components/history/UserChip.d.ts +1 -1
  161. package/dist/data_export/export/BasicExportAction.d.ts +2 -1
  162. package/dist/data_export/export/ExportCollectionAction.d.ts +1 -1
  163. package/dist/data_import/components/DataNewPropertiesMapping.d.ts +1 -1
  164. package/dist/data_import/components/ImportFileUpload.d.ts +1 -1
  165. package/dist/data_import/components/ImportNewPropertyFieldPreview.d.ts +2 -1
  166. package/dist/data_import/components/ImportSaveInProgress.d.ts +1 -1
  167. package/dist/data_import/import/ImportCollectionAction.d.ts +4 -3
  168. package/dist/editor/components/SlashCommandMenu.d.ts +2 -1
  169. package/dist/editor/editor.d.ts +1 -1
  170. package/dist/editor/selectors/color-selector.d.ts +1 -1
  171. package/dist/editor/selectors/link-selector.d.ts +1 -1
  172. package/dist/editor/selectors/node-selector.d.ts +1 -1
  173. package/dist/editor/selectors/text-buttons.d.ts +1 -1
  174. package/dist/editor.js +2621 -3574
  175. package/dist/editor.js.map +1 -1
  176. package/dist/form/EntityForm.d.ts +2 -1
  177. package/dist/form/EntityFormActions.d.ts +2 -1
  178. package/dist/form/components/FieldHelperText.d.ts +1 -1
  179. package/dist/form/components/FormEntry.d.ts +1 -1
  180. package/dist/form/components/FormLayout.d.ts +1 -1
  181. package/dist/form/components/LabelWithIconAndTooltip.d.ts +1 -1
  182. package/dist/form/components/LocalChangesMenu.d.ts +2 -1
  183. package/dist/form/components/StorageItemPreview.d.ts +2 -1
  184. package/dist/form/components/StorageUploadProgress.d.ts +2 -1
  185. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +2 -1
  186. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +2 -1
  187. package/dist/form/field_bindings/BlockFieldBinding.d.ts +2 -1
  188. package/dist/form/field_bindings/DateTimeFieldBinding.d.ts +2 -1
  189. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +2 -1
  190. package/dist/form/field_bindings/MapFieldBinding.d.ts +2 -1
  191. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +2 -1
  192. package/dist/form/field_bindings/MultiSelectFieldBinding.d.ts +2 -1
  193. package/dist/form/field_bindings/MultipleRelationFieldBinding.d.ts +2 -1
  194. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +2 -1
  195. package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +2 -1
  196. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -1
  197. package/dist/form/field_bindings/RelationFieldBinding.d.ts +2 -1
  198. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +2 -1
  199. package/dist/form/field_bindings/SelectFieldBinding.d.ts +2 -1
  200. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -2
  201. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +2 -1
  202. package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -1
  203. package/dist/form/field_bindings/UserSelectFieldBinding.d.ts +2 -1
  204. package/dist/form/field_bindings/VectorFieldBinding.d.ts +2 -1
  205. package/dist/history-BL49TIDb.js +311 -0
  206. package/dist/history-BL49TIDb.js.map +1 -0
  207. package/dist/hooks/navigation/useBuildNavigationStateController.d.ts +0 -2
  208. package/dist/hooks/navigation/useNavigationResolution.d.ts +5 -6
  209. package/dist/hooks/navigation/useResolvedCollections.d.ts +0 -2
  210. package/dist/hooks/useBreadcrumbsController.d.ts +2 -32
  211. package/dist/index.js +2 -3393
  212. package/dist/markdown-CklalUUk.js +526 -0
  213. package/dist/markdown-CklalUUk.js.map +1 -0
  214. package/dist/preview/components/ArrayEnumPreview.d.ts +2 -1
  215. package/dist/preview/components/EmptyValue.d.ts +2 -1
  216. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  217. package/dist/preview/components/ImagePreview.d.ts +2 -1
  218. package/dist/preview/components/ReferencePreview.d.ts +2 -1
  219. package/dist/preview/components/RelationPreview.d.ts +2 -1
  220. package/dist/preview/components/StorageThumbnail.d.ts +1 -1
  221. package/dist/preview/components/UserPreview.d.ts +6 -3
  222. package/dist/preview/property_previews/ArrayOfMapsPreview.d.ts +2 -1
  223. package/dist/preview/property_previews/ArrayOfReferencesPreview.d.ts +1 -1
  224. package/dist/preview/property_previews/ArrayOfRelationsPreview.d.ts +1 -1
  225. package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +2 -1
  226. package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +2 -1
  227. package/dist/preview/property_previews/ArrayOneOfPreview.d.ts +2 -1
  228. package/dist/preview/property_previews/ArrayPropertyEnumPreview.d.ts +1 -1
  229. package/dist/preview/property_previews/ArrayPropertyPreview.d.ts +2 -1
  230. package/dist/preview/property_previews/MapPropertyPreview.d.ts +3 -2
  231. package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +5 -4
  232. package/dist/rolldown-runtime-D7D4PA-g.js +13 -0
  233. package/dist/routes/RebaseRoute.d.ts +1 -1
  234. package/dist/src-BJ8fkM8y.js +24010 -0
  235. package/dist/src-BJ8fkM8y.js.map +1 -0
  236. package/dist/types/components/PropertyPreviewProps.d.ts +4 -0
  237. package/dist/types/components/formex.d.ts +1 -40
  238. package/dist/types/fields.d.ts +9 -1
  239. package/dist/util/navigation_utils.d.ts +2 -1
  240. package/dist/util/previews.d.ts +5 -0
  241. package/dist/util/property_utils.d.ts +1 -1
  242. package/package.json +29 -27
  243. package/src/collection_editor/ConfigControllerProvider.tsx +10 -7
  244. package/src/collection_editor/ui/CollectionViewHeaderAction.tsx +2 -1
  245. package/src/collection_editor/ui/EditorCollectionAction.tsx +2 -1
  246. package/src/collection_editor/ui/EditorCollectionActionStart.tsx +2 -1
  247. package/src/collection_editor/ui/EditorEntityAction.tsx +2 -1
  248. package/src/collection_editor/ui/KanbanSetupAction.tsx +2 -1
  249. package/src/collection_editor/ui/MissingReferenceWidget.tsx +2 -1
  250. package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +2 -1
  251. package/src/collection_editor/ui/collection_editor/CollectionDetailsForm.tsx +2 -3
  252. package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +0 -1
  253. package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +8 -4
  254. package/src/collection_editor/ui/collection_editor/CollectionRelationsTab.tsx +2 -2
  255. package/src/collection_editor/ui/collection_editor/DisplaySettingsForm.tsx +2 -1
  256. package/src/collection_editor/ui/collection_editor/PropertyEditView.tsx +2 -1
  257. package/src/collection_editor/ui/collection_editor/PropertyFieldPreview.tsx +2 -2
  258. package/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.tsx +5 -2
  259. package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsEditor.tsx +2 -1
  260. package/src/collection_editor/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx +1 -1
  261. package/src/collection_editor/ui/collection_editor/templates/blog_template.ts +1 -1
  262. package/src/collection_editor/ui/collection_editor/templates/pages_template.ts +1 -1
  263. package/src/collection_editor/ui/collection_editor/templates/products_template.ts +1 -1
  264. package/src/collection_editor/ui/collection_editor/templates/users_template.ts +1 -1
  265. package/src/collection_editor/useLocalCollectionsConfigController.tsx +7 -2
  266. package/src/collection_editor/validateCollectionJson.ts +2 -2
  267. package/src/components/CollectionPanel.tsx +51 -25
  268. package/src/components/DefaultAppBar.tsx +1 -2
  269. package/src/components/DefaultDrawer.tsx +3 -2
  270. package/src/components/DrawerNavigationGroup.tsx +3 -2
  271. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +30 -9
  272. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +1 -1
  273. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +1 -0
  274. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +5 -2
  275. package/src/components/EntityCollectionView/Board.tsx +10 -8
  276. package/src/components/EntityCollectionView/BoardSortableList.tsx +2 -2
  277. package/src/components/EntityCollectionView/EntityCollectionBoardView.tsx +4 -2
  278. package/src/components/EntityCollectionView/EntityCollectionCardView.tsx +14 -4
  279. package/src/components/EntityCollectionView/EntityCollectionListView.tsx +48 -26
  280. package/src/components/EntityCollectionView/EntityCollectionView.tsx +146 -73
  281. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +2 -1
  282. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +3 -2
  283. package/src/components/EntityCollectionView/FilterPresetsButton.tsx +4 -2
  284. package/src/components/EntityCollectionView/ViewModeToggle.tsx +0 -1
  285. package/src/components/EntityCollectionView/useBoardDataController.tsx +17 -15
  286. package/src/components/EntityCollectionView/useEntityPreviewSlots.ts +32 -23
  287. package/src/components/EntityDetailView.tsx +72 -39
  288. package/src/components/EntityEditView.tsx +79 -47
  289. package/src/components/EntitySidePanel.tsx +9 -3
  290. package/src/components/HomePage/ContentHomePage.tsx +3 -3
  291. package/src/components/HomePage/NavigationCard.tsx +5 -5
  292. package/src/components/HomePage/NavigationCardBinding.tsx +1 -1
  293. package/src/components/RebaseLayout.tsx +5 -2
  294. package/src/components/RebaseNavigation.tsx +1 -4
  295. package/src/components/RebaseRouteDefs.tsx +5 -3
  296. package/src/components/SearchIconsView.tsx +1 -1
  297. package/src/components/SelectableTable/SelectableTable.tsx +2 -3
  298. package/src/components/SelectableTable/SelectionStore.ts +9 -3
  299. package/src/components/UserSelector.tsx +92 -2
  300. package/src/components/common/default_entity_actions.tsx +23 -6
  301. package/src/components/field_configs.tsx +6 -3
  302. package/src/editor/editor.tsx +1 -1
  303. package/src/editor/extensions/Image/index.ts +2 -2
  304. package/src/editor/extensions/Image.ts +2 -2
  305. package/src/editor/extensions/clipboard.ts +2 -2
  306. package/src/editor/markdown-it-plugins.d.ts +24 -0
  307. package/src/editor/markdown.ts +2 -3
  308. package/src/form/EntityForm.tsx +21 -15
  309. package/src/form/PropertyFieldBinding.tsx +1 -1
  310. package/src/form/field_bindings/KeyValueFieldBinding.tsx +1 -1
  311. package/src/form/field_bindings/MapFieldBinding.tsx +5 -47
  312. package/src/form/field_bindings/VectorFieldBinding.tsx +3 -3
  313. package/src/form/validation.ts +17 -15
  314. package/src/hooks/navigation/useBuildNavigationStateController.tsx +3 -6
  315. package/src/hooks/navigation/useNavigationResolution.ts +143 -19
  316. package/src/hooks/navigation/useResolvedCollections.ts +4 -6
  317. package/src/hooks/useBreadcrumbsController.tsx +2 -34
  318. package/src/hooks/useBuildSideEntityController.tsx +25 -3
  319. package/src/preview/PropertyPreview.tsx +6 -2
  320. package/src/preview/components/ReferencePreview.tsx +64 -13
  321. package/src/preview/components/RelationPreview.tsx +101 -13
  322. package/src/preview/components/UserPreview.tsx +5 -14
  323. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +1 -1
  324. package/src/routes/RebaseRoute.tsx +5 -4
  325. package/src/types/components/PropertyPreviewProps.tsx +5 -0
  326. package/src/types/components/formex.tsx +1 -45
  327. package/src/types/fields.tsx +10 -1
  328. package/src/util/navigation_utils.ts +14 -4
  329. package/src/util/previews.ts +101 -4
  330. package/dist/CollectionEditorDialog-Bo86h-d-.js +0 -4574
  331. package/dist/CollectionEditorDialog-Bo86h-d-.js.map +0 -1
  332. package/dist/CollectionsStudioView-bsg4AT_Z.js +0 -217
  333. package/dist/CollectionsStudioView-bsg4AT_Z.js.map +0 -1
  334. package/dist/ExportCollectionAction-Cf-Id5uO.js +0 -446
  335. package/dist/ExportCollectionAction-Cf-Id5uO.js.map +0 -1
  336. package/dist/ImportCollectionAction-LN5sreK9.js +0 -685
  337. package/dist/ImportCollectionAction-LN5sreK9.js.map +0 -1
  338. package/dist/PropertyEditView-jCWCxmCz.js +0 -8197
  339. package/dist/PropertyEditView-jCWCxmCz.js.map +0 -1
  340. package/dist/collection_editor_ui.js.map +0 -1
  341. package/dist/index-BrqSvMG0.js +0 -8
  342. package/dist/index-BrqSvMG0.js.map +0 -1
  343. package/dist/index-Cb0bPnzZ.js +0 -12
  344. package/dist/index-Cb0bPnzZ.js.map +0 -1
  345. package/dist/index-z3H8iqsj.js +0 -462
  346. package/dist/index-z3H8iqsj.js.map +0 -1
  347. package/dist/index.js.map +0 -1
  348. package/dist/markdown-DD2JDU1X.js +0 -618
  349. package/dist/markdown-DD2JDU1X.js.map +0 -1
  350. package/dist/useEntityHistory-UVsSclfZ.js +0 -123
  351. package/dist/useEntityHistory-UVsSclfZ.js.map +0 -1
  352. package/dist/util-CvNp6A-r.js +0 -30505
  353. package/dist/util-CvNp6A-r.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"collection_editor_ui.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -1,8 +0,0 @@
1
- import { I as ImportCollectionAction } from "./ImportCollectionAction-LN5sreK9.js";
2
- import { a, P } from "./ImportCollectionAction-LN5sreK9.js";
3
- export {
4
- ImportCollectionAction,
5
- a as ImportDataPreview,
6
- P as PropertySelectEntry
7
- };
8
- //# sourceMappingURL=index-BrqSvMG0.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-BrqSvMG0.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -1,12 +0,0 @@
1
- import { E as ExportCollectionAction } from "./ExportCollectionAction-Cf-Id5uO.js";
2
- import { B, d, a, b, g, c } from "./ExportCollectionAction-Cf-Id5uO.js";
3
- export {
4
- B as BasicExportAction,
5
- ExportCollectionAction,
6
- d as downloadBlob,
7
- a as downloadDataAsCsv,
8
- b as downloadEntitiesExport,
9
- g as getEntityCSVExportableData,
10
- c as getEntityJsonExportableData
11
- };
12
- //# sourceMappingURL=index-Cb0bPnzZ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-Cb0bPnzZ.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -1,462 +0,0 @@
1
- import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
- import { useState, useRef, useEffect } from "react";
3
- import { Chip, Tooltip, cls, defaultBorderMixin, Typography, ArrowLeftIcon, iconSize, Label, IconButton, HistoryIcon, ErrorBoundary } from "@rebasepro/ui";
4
- import { c } from "react-compiler-runtime";
5
- import { aW as getPropertyInPath, a7 as PropertyPreview } from "./util-CvNp6A-r.js";
6
- import { useAuthController, useSnackbarController, ConfirmationDialog } from "@rebasepro/core";
7
- import { getValueInPath } from "@rebasepro/utils";
8
- import "fast-equals";
9
- import "@rebasepro/common";
10
- import "@rebasepro/formex";
11
- import "zod";
12
- import "date-fns";
13
- import "date-fns/locale";
14
- import "@rebasepro/types";
15
- import "@dnd-kit/core";
16
- import "@dnd-kit/modifiers";
17
- import "@dnd-kit/sortable";
18
- import "@dnd-kit/utilities";
19
- import "react-dropzone";
20
- import "react-router-dom";
21
- import "fuse.js";
22
- import { u as useEntityHistory } from "./useEntityHistory-UVsSclfZ.js";
23
- import "exceljs";
24
- import "@rebasepro/schema-inference";
25
- function UserChip(t0) {
26
- const $ = c(11);
27
- const {
28
- user
29
- } = t0;
30
- const t1 = user.email ?? user.uid;
31
- let t2;
32
- if ($[0] !== user.displayName || $[1] !== user.photoURL) {
33
- t2 = user.photoURL && /* @__PURE__ */ jsx("img", { className: "rounded-full w-6 h-6 mr-2", src: user.photoURL, alt: user.displayName ?? "User picture" });
34
- $[0] = user.displayName;
35
- $[1] = user.photoURL;
36
- $[2] = t2;
37
- } else {
38
- t2 = $[2];
39
- }
40
- const t3 = user.displayName ?? user.email ?? user.uid;
41
- let t4;
42
- if ($[3] !== t3) {
43
- t4 = /* @__PURE__ */ jsx("span", { children: t3 });
44
- $[3] = t3;
45
- $[4] = t4;
46
- } else {
47
- t4 = $[4];
48
- }
49
- let t5;
50
- if ($[5] !== t2 || $[6] !== t4) {
51
- t5 = /* @__PURE__ */ jsxs(Chip, { size: "small", className: "flex items-center", children: [
52
- t2,
53
- t4
54
- ] });
55
- $[5] = t2;
56
- $[6] = t4;
57
- $[7] = t5;
58
- } else {
59
- t5 = $[7];
60
- }
61
- let t6;
62
- if ($[8] !== t1 || $[9] !== t5) {
63
- t6 = /* @__PURE__ */ jsx(Tooltip, { title: t1, children: t5 });
64
- $[8] = t1;
65
- $[9] = t5;
66
- $[10] = t6;
67
- } else {
68
- t6 = $[10];
69
- }
70
- return t6;
71
- }
72
- function deepEqual(a, b) {
73
- if (a === b) return true;
74
- if (a == null || b == null) return a === b;
75
- if (typeof a !== typeof b) return false;
76
- if (typeof a !== "object") return false;
77
- if (Array.isArray(a)) {
78
- if (!Array.isArray(b) || a.length !== b.length) return false;
79
- return a.every((item, i) => deepEqual(item, b[i]));
80
- }
81
- if (Array.isArray(b)) return false;
82
- const aObj = a;
83
- const bObj = b;
84
- const aKeys = Object.keys(aObj);
85
- const bKeys = Object.keys(bObj);
86
- if (aKeys.length !== bKeys.length) return false;
87
- return aKeys.every((key) => key in bObj && deepEqual(aObj[key], bObj[key]));
88
- }
89
- function PreviousValueView(t0) {
90
- const $ = c(12);
91
- const {
92
- previousValueInPath,
93
- childProperty,
94
- propertyKey
95
- } = t0;
96
- if (typeof previousValueInPath === "string" || typeof previousValueInPath === "number") {
97
- let t1;
98
- if ($[0] !== previousValueInPath) {
99
- t1 = /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", className: "line-through", children: previousValueInPath });
100
- $[0] = previousValueInPath;
101
- $[1] = t1;
102
- } else {
103
- t1 = $[1];
104
- }
105
- return t1;
106
- } else {
107
- if (typeof previousValueInPath === "boolean") {
108
- const t1 = previousValueInPath ? "true" : "false";
109
- let t2;
110
- if ($[2] !== t1) {
111
- t2 = /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", className: "line-through", children: t1 });
112
- $[2] = t1;
113
- $[3] = t2;
114
- } else {
115
- t2 = $[3];
116
- }
117
- return t2;
118
- } else {
119
- let t1;
120
- if ($[4] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
121
- t1 = /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", children: "Previous value" });
122
- $[4] = t1;
123
- } else {
124
- t1 = $[4];
125
- }
126
- const t2 = propertyKey;
127
- const t3 = previousValueInPath;
128
- const t4 = childProperty;
129
- let t5;
130
- if ($[5] !== t2 || $[6] !== t3 || $[7] !== t4) {
131
- t5 = /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
132
- t1,
133
- /* @__PURE__ */ jsx(PropertyPreview, { propertyKey: t2, value: t3, property: t4, size: "small" })
134
- ] });
135
- $[5] = t2;
136
- $[6] = t3;
137
- $[7] = t4;
138
- $[8] = t5;
139
- } else {
140
- t5 = $[8];
141
- }
142
- let t6;
143
- if ($[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
144
- t6 = /* @__PURE__ */ jsx(ArrowLeftIcon, { size: iconSize.smallest, color: "disabled", className: "mb-1" });
145
- $[9] = t6;
146
- } else {
147
- t6 = $[9];
148
- }
149
- let t7;
150
- if ($[10] !== t5) {
151
- t7 = /* @__PURE__ */ jsx(Tooltip, { side: "left", title: t5, children: t6 });
152
- $[10] = t5;
153
- $[11] = t7;
154
- } else {
155
- t7 = $[11];
156
- }
157
- return t7;
158
- }
159
- }
160
- }
161
- function EntityHistoryEntry(t0) {
162
- const $ = c(51);
163
- const {
164
- actions,
165
- hover,
166
- collection,
167
- size,
168
- entry
169
- } = t0;
170
- const authController = useAuthController();
171
- const changedFields = entry.changed_fields;
172
- const previousValues = entry.previous_values;
173
- let T0;
174
- let t1;
175
- let t2;
176
- let t3;
177
- let t4;
178
- let t5;
179
- let updatedBy;
180
- let userDisplay;
181
- if ($[0] !== authController.user || $[1] !== entry.updated_at || $[2] !== entry.updated_by) {
182
- const updatedOn = new Date(entry.updated_at);
183
- updatedBy = entry.updated_by;
184
- const currentUser = authController.user;
185
- userDisplay = updatedBy === currentUser?.uid ? currentUser : void 0;
186
- t5 = "w-full flex flex-col gap-2 mt-4";
187
- t4 = "ml-4 flex items-center gap-4";
188
- T0 = Typography;
189
- t1 = "body2";
190
- t2 = "secondary";
191
- t3 = updatedOn.toLocaleString();
192
- $[0] = authController.user;
193
- $[1] = entry.updated_at;
194
- $[2] = entry.updated_by;
195
- $[3] = T0;
196
- $[4] = t1;
197
- $[5] = t2;
198
- $[6] = t3;
199
- $[7] = t4;
200
- $[8] = t5;
201
- $[9] = updatedBy;
202
- $[10] = userDisplay;
203
- } else {
204
- T0 = $[3];
205
- t1 = $[4];
206
- t2 = $[5];
207
- t3 = $[6];
208
- t4 = $[7];
209
- t5 = $[8];
210
- updatedBy = $[9];
211
- userDisplay = $[10];
212
- }
213
- let t6;
214
- if ($[11] !== T0 || $[12] !== t1 || $[13] !== t2 || $[14] !== t3) {
215
- t6 = /* @__PURE__ */ jsx(T0, { variant: t1, color: t2, children: t3 });
216
- $[11] = T0;
217
- $[12] = t1;
218
- $[13] = t2;
219
- $[14] = t3;
220
- $[15] = t6;
221
- } else {
222
- t6 = $[15];
223
- }
224
- let t7;
225
- if ($[16] !== entry.action) {
226
- t7 = /* @__PURE__ */ jsx(Chip, { size: "small", children: entry.action });
227
- $[16] = entry.action;
228
- $[17] = t7;
229
- } else {
230
- t7 = $[17];
231
- }
232
- let t8;
233
- if ($[18] !== updatedBy || $[19] !== userDisplay) {
234
- t8 = !userDisplay && updatedBy && /* @__PURE__ */ jsx(Chip, { size: "small", children: updatedBy });
235
- $[18] = updatedBy;
236
- $[19] = userDisplay;
237
- $[20] = t8;
238
- } else {
239
- t8 = $[20];
240
- }
241
- let t9;
242
- if ($[21] !== userDisplay) {
243
- t9 = userDisplay && /* @__PURE__ */ jsx(UserChip, { user: userDisplay });
244
- $[21] = userDisplay;
245
- $[22] = t9;
246
- } else {
247
- t9 = $[22];
248
- }
249
- let t10;
250
- if ($[23] !== t4 || $[24] !== t6 || $[25] !== t7 || $[26] !== t8 || $[27] !== t9) {
251
- t10 = /* @__PURE__ */ jsxs("div", { className: t4, children: [
252
- t6,
253
- t7,
254
- t8,
255
- t9
256
- ] });
257
- $[23] = t4;
258
- $[24] = t6;
259
- $[25] = t7;
260
- $[26] = t8;
261
- $[27] = t9;
262
- $[28] = t10;
263
- } else {
264
- t10 = $[28];
265
- }
266
- const t11 = hover ? "hover:bg-surface-accent-50 dark:hover:bg-surface-800" : "";
267
- const t12 = size === "small" ? "p-1" : "px-2 py-1";
268
- let t13;
269
- if ($[29] !== t11 || $[30] !== t12) {
270
- t13 = cls("bg-white dark:bg-surface-900", "min-h-[44px]", "w-full", "items-center", t11, t12, "flex border rounded-lg", defaultBorderMixin);
271
- $[29] = t11;
272
- $[30] = t12;
273
- $[31] = t13;
274
- } else {
275
- t13 = $[31];
276
- }
277
- let t14;
278
- if ($[32] !== changedFields || $[33] !== collection || $[34] !== entry.values || $[35] !== previousValues) {
279
- t14 = changedFields && collection && changedFields.map((key) => {
280
- const childProperty = getPropertyInPath(collection.properties, key);
281
- const valueInPath = entry.values ? getValueInPath(entry.values, key) : void 0;
282
- const previousValueInPath = previousValues ? getValueInPath(previousValues, key) : void 0;
283
- const element = childProperty ? /* @__PURE__ */ jsx(PropertyPreview, { propertyKey: key, value: valueInPath, property: childProperty, size: "small" }) : /* @__PURE__ */ jsx(Typography, { variant: "body2", children: typeof valueInPath === "string" ? valueInPath : JSON.stringify(valueInPath) });
284
- return /* @__PURE__ */ jsxs("div", { className: "flex w-full my-1 items-center", children: [
285
- /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", className: "min-w-[140px] md:min-w-[200px] w-1/5 pr-8 overflow-hidden text-ellipsis text-right", children: key }),
286
- /* @__PURE__ */ jsxs("div", { className: "w-4/5", children: [
287
- previousValueInPath !== void 0 && !deepEqual(previousValueInPath, valueInPath) && /* @__PURE__ */ jsx(PreviousValueView, { previousValueInPath, childProperty, propertyKey: key }),
288
- element
289
- ] })
290
- ] }, "ref_prev_" + key);
291
- });
292
- $[32] = changedFields;
293
- $[33] = collection;
294
- $[34] = entry.values;
295
- $[35] = previousValues;
296
- $[36] = t14;
297
- } else {
298
- t14 = $[36];
299
- }
300
- let t15;
301
- if ($[37] !== changedFields || $[38] !== entry.action) {
302
- t15 = (!changedFields || changedFields.length === 0) && /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", className: "ml-4", children: entry.action === "create" ? "Entity created" : entry.action === "delete" ? "Entity deleted" : "No field changes recorded" });
303
- $[37] = changedFields;
304
- $[38] = entry.action;
305
- $[39] = t15;
306
- } else {
307
- t15 = $[39];
308
- }
309
- let t16;
310
- if ($[40] !== t14 || $[41] !== t15) {
311
- t16 = /* @__PURE__ */ jsxs("div", { className: "flex flex-col grow w-full m-1 shrink min-w-0", children: [
312
- t14,
313
- t15
314
- ] });
315
- $[40] = t14;
316
- $[41] = t15;
317
- $[42] = t16;
318
- } else {
319
- t16 = $[42];
320
- }
321
- let t17;
322
- if ($[43] !== actions || $[44] !== t13 || $[45] !== t16) {
323
- t17 = /* @__PURE__ */ jsxs("div", { className: t13, children: [
324
- actions,
325
- t16
326
- ] });
327
- $[43] = actions;
328
- $[44] = t13;
329
- $[45] = t16;
330
- $[46] = t17;
331
- } else {
332
- t17 = $[46];
333
- }
334
- let t18;
335
- if ($[47] !== t10 || $[48] !== t17 || $[49] !== t5) {
336
- t18 = /* @__PURE__ */ jsxs("div", { className: t5, children: [
337
- t10,
338
- t17
339
- ] });
340
- $[47] = t10;
341
- $[48] = t17;
342
- $[49] = t5;
343
- $[50] = t18;
344
- } else {
345
- t18 = $[50];
346
- }
347
- return t18;
348
- }
349
- function EntityHistoryView({
350
- entity,
351
- collection,
352
- formContext
353
- }) {
354
- const snackbarController = useSnackbarController();
355
- useAuthController();
356
- const dirty = formContext?.formex.dirty;
357
- const slug = collection.slug;
358
- const entityId = entity?.id;
359
- const {
360
- entries,
361
- isLoading,
362
- hasMore,
363
- loadMore,
364
- revert
365
- } = useEntityHistory({
366
- slug,
367
- entityId,
368
- enabled: !!entityId,
369
- pageSize: 10
370
- });
371
- const [revertHistoryId, setRevertHistoryId] = useState();
372
- const [isReverting, setIsReverting] = useState(false);
373
- const containerRef = useRef(null);
374
- const loadMoreRef = useRef(null);
375
- useEffect(() => {
376
- const currentContainer = containerRef.current;
377
- const currentLoadMore = loadMoreRef.current;
378
- if (!currentContainer || !currentLoadMore || !hasMore || isLoading) return;
379
- const observer = new IntersectionObserver((observerEntries) => {
380
- if (observerEntries[0].isIntersecting && hasMore && !isLoading) {
381
- loadMore();
382
- }
383
- }, {
384
- root: currentContainer,
385
- rootMargin: "0px 0px 200px 0px",
386
- threshold: 0.01
387
- });
388
- observer.observe(currentLoadMore);
389
- return () => observer.disconnect();
390
- }, [hasMore, isLoading, entries.length, loadMore]);
391
- if (!entity) {
392
- return /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center h-full", children: /* @__PURE__ */ jsx(Label, { children: "HistoryIcon is only available for existing entities" }) });
393
- }
394
- async function doRevert(historyId) {
395
- setIsReverting(true);
396
- try {
397
- const revertedValues = await revert(historyId);
398
- setRevertHistoryId(void 0);
399
- if (formContext?.formex?.resetForm && revertedValues) {
400
- formContext.formex.resetForm({
401
- values: revertedValues,
402
- submitCount: 0,
403
- touched: {}
404
- });
405
- }
406
- snackbarController.open({
407
- message: "Reverted to selected version",
408
- type: "info"
409
- });
410
- } catch (error) {
411
- console.error("Error reverting entity:", error);
412
- snackbarController.open({
413
- message: "Error reverting entity",
414
- type: "error"
415
- });
416
- } finally {
417
- setIsReverting(false);
418
- }
419
- }
420
- const revertEntry = revertHistoryId ? entries.find((e) => e.id === revertHistoryId) : void 0;
421
- return /* @__PURE__ */ jsxs("div", { ref: containerRef, className: cls("relative flex-1 h-full overflow-auto w-full flex flex-col gap-4 p-8"), children: [
422
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 max-w-6xl mx-auto w-full", children: [
423
- /* @__PURE__ */ jsx(Typography, { variant: "h5", className: "mt-24 ml-4", children: "HistoryIcon" }),
424
- isLoading && entries.length === 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4 mt-8 ml-4", children: [1, 2, 3].map((i) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 animate-pulse", children: [
425
- /* @__PURE__ */ jsx("div", { className: "h-4 w-48 bg-surface-200 dark:bg-surface-700 rounded" }),
426
- /* @__PURE__ */ jsx("div", { className: "h-12 w-full bg-surface-100 dark:bg-surface-900 rounded-lg border border-surface-200 dark:border-surface-700" })
427
- ] }, i)) }),
428
- !isLoading && entries.length === 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
429
- /* @__PURE__ */ jsx(Label, { className: "ml-4 mt-8", children: "No history available" }),
430
- /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "ml-4", children: "When you save an entity, a new version is created and stored in the history." })
431
- ] }),
432
- entries.map((entry) => /* @__PURE__ */ jsx("div", { className: "flex flex-cols gap-2 w-full", children: /* @__PURE__ */ jsx(EntityHistoryEntry, { entry, collection, size: "medium", actions: /* @__PURE__ */ jsx(Tooltip, { title: "Revert to this version", className: "m-2 grow-0 self-start", children: /* @__PURE__ */ jsx(IconButton, { onClick: () => {
433
- if (dirty) {
434
- snackbarController.open({
435
- message: "Please save or discard your changes before reverting",
436
- type: "warning"
437
- });
438
- } else {
439
- setRevertHistoryId(entry.id);
440
- }
441
- }, children: /* @__PURE__ */ jsx(HistoryIcon, {}) }) }) }) }, entry.id)),
442
- entries.length > 0 && /* @__PURE__ */ jsxs("div", { ref: loadMoreRef, className: "py-4 text-center", children: [
443
- isLoading && /* @__PURE__ */ jsx(Label, { children: "Loading more..." }),
444
- !hasMore && entries.length > 10 && /* @__PURE__ */ jsx(Label, { children: "No more history available" })
445
- ] })
446
- ] }),
447
- /* @__PURE__ */ jsx(ErrorBoundary, { children: /* @__PURE__ */ jsx(ConfirmationDialog, { open: Boolean(revertHistoryId), onAccept: () => {
448
- if (revertHistoryId) doRevert(revertHistoryId);
449
- }, onCancel: () => setRevertHistoryId(void 0), title: /* @__PURE__ */ jsx(Typography, { variant: "subtitle2", children: "Revert data to this version?" }), body: revertEntry ? /* @__PURE__ */ jsx("div", { className: "p-4", children: /* @__PURE__ */ jsxs(Typography, { variant: "caption", color: "secondary", children: [
450
- "This will save the entity with the values from",
451
- " ",
452
- new Date(revertEntry.updated_at).toLocaleString(),
453
- ". A new history entry will be created for the revert."
454
- ] }) }) : null }) })
455
- ] });
456
- }
457
- export {
458
- EntityHistoryEntry,
459
- EntityHistoryView,
460
- UserChip
461
- };
462
- //# sourceMappingURL=index-z3H8iqsj.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-z3H8iqsj.js","sources":["../src/components/history/UserChip.tsx","../src/components/history/EntityHistoryEntry.tsx","../src/components/history/EntityHistoryView.tsx"],"sourcesContent":["import { User } from \"@rebasepro/types\";\nimport { Chip, Tooltip } from \"@rebasepro/ui\";\n\nexport function UserChip({ user }: { user: User }) {\n return (\n <Tooltip title={user.email ?? user.uid}>\n <Chip size={\"small\"} className={\"flex items-center\"}>\n {user.photoURL && <img\n className={\"rounded-full w-6 h-6 mr-2\"}\n src={user.photoURL} alt={user.displayName ?? \"User picture\"}/>}\n <span>{user.displayName ?? user.email ?? user.uid}</span>\n </Chip>\n </Tooltip>\n );\n}\n","import type { EntityCollection } from \"@rebasepro/types\";\nimport type { Property } from \"@rebasepro/types\";\nimport * as React from \"react\";\n\nimport { ArrowLeftIcon, Chip, cls, defaultBorderMixin, iconSize, Tooltip, Typography } from \"@rebasepro/ui\";\nimport { PreviewSize } from \"../../types/components/PropertyPreviewProps\";\nimport { getPropertyInPath } from \"../../util/property_utils\";\nimport { PropertyPreview } from \"../../preview/PropertyPreview\";\nimport { SkeletonPropertyComponent } from \"../../preview/property_previews/SkeletonPropertyComponent\";\nimport { useAuthController } from \"@rebasepro/core\";\nimport { UserChip } from \"./UserChip\";\nimport { HistoryEntryData } from \"../../hooks\";\nimport { getValueInPath } from \"@rebasepro/utils\";\n\n/**\n * Recursive deep equality for primitives, arrays and plain objects.\n */\nfunction deepEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (a == null || b == null) return a === b;\n if (typeof a !== typeof b) return false;\n if (typeof a !== \"object\") return false;\n\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== (b as unknown[]).length) return false;\n return a.every((item, i) => deepEqual(item, (b as unknown[])[i]));\n }\n\n if (Array.isArray(b)) return false;\n\n const aObj = a as Record<string, unknown>;\n const bObj = b as Record<string, unknown>;\n const aKeys = Object.keys(aObj);\n const bKeys = Object.keys(bObj);\n if (aKeys.length !== bKeys.length) return false;\n return aKeys.every(key => key in bObj && deepEqual(aObj[key], bObj[key]));\n}\n\nexport type EntityHistoryEntryProps = {\n size: PreviewSize;\n actions?: React.ReactNode;\n collection?: EntityCollection;\n hover?: boolean;\n entry: HistoryEntryData;\n onClick?: (e: React.SyntheticEvent) => void;\n};\n\nfunction PreviousValueView({\n previousValueInPath,\n childProperty,\n propertyKey\n}: {\n previousValueInPath: unknown;\n childProperty: Property;\n propertyKey: string;\n}) {\n if (typeof previousValueInPath === \"string\" || typeof previousValueInPath === \"number\") {\n return <Typography variant={\"caption\"} color={\"secondary\"} className=\"line-through\">\n {previousValueInPath}\n </Typography>;\n } else if (typeof previousValueInPath === \"boolean\") {\n return <Typography variant={\"caption\"} color={\"secondary\"} className=\"line-through\">\n {previousValueInPath ? \"true\" : \"false\"}\n </Typography>;\n } else {\n return <Tooltip\n side={\"left\"}\n title={<div className={\"flex flex-col gap-2\"}>\n <Typography variant={\"caption\"} color={\"secondary\"}>\n Previous value\n </Typography>\n <PropertyPreview\n propertyKey={propertyKey as string}\n value={previousValueInPath as never}\n property={childProperty as Property}\n size={\"small\"}/>\n </div>}>\n <ArrowLeftIcon size={iconSize.smallest} color={\"disabled\"} className={\"mb-1\"}/>\n </Tooltip>\n }\n}\n\n/**\n * Displays a single entity history revision entry.\n * Adapted from the entity_history plugin — now reads from backend API data.\n */\nexport function EntityHistoryEntry({\n actions,\n hover,\n collection,\n size,\n entry\n}: EntityHistoryEntryProps) {\n\n const authController = useAuthController();\n\n const changedFields = entry.changed_fields;\n const previousValues = entry.previous_values;\n const updatedOn = new Date(entry.updated_at);\n const updatedBy = entry.updated_by;\n\n // Resolve user display\n const currentUser = authController.user;\n const userDisplay = updatedBy === currentUser?.uid\n ? currentUser\n : undefined;\n\n return <div className={\"w-full flex flex-col gap-2 mt-4\"}>\n <div className={\"ml-4 flex items-center gap-4\"}>\n <Typography variant={\"body2\"} color={\"secondary\"}>\n {updatedOn.toLocaleString()}\n </Typography>\n <Chip size={\"small\"}>\n {entry.action}\n </Chip>\n {!userDisplay && updatedBy && <Chip size={\"small\"}>{updatedBy}</Chip>}\n {userDisplay && <UserChip user={userDisplay}/>}\n </div>\n <div\n className={cls(\n \"bg-white dark:bg-surface-900\",\n \"min-h-[44px]\",\n \"w-full\",\n \"items-center\",\n hover ? \"hover:bg-surface-accent-50 dark:hover:bg-surface-800\" : \"\",\n size === \"small\" ? \"p-1\" : \"px-2 py-1\",\n \"flex border rounded-lg\",\n defaultBorderMixin\n )}>\n\n {actions}\n\n <div className={\"flex flex-col grow w-full m-1 shrink min-w-0\"}>\n\n {changedFields && collection && changedFields.map((key: string) => {\n const childProperty = getPropertyInPath(collection.properties, key);\n const valueInPath = entry.values ? getValueInPath(entry.values, key) : undefined;\n const previousValueInPath = previousValues ? getValueInPath(previousValues, key) : undefined;\n\n const element = childProperty\n ? <PropertyPreview\n propertyKey={key}\n value={valueInPath as never}\n property={childProperty as Property}\n size={\"small\"}/>\n : <Typography variant={\"body2\"}>\n {typeof valueInPath === \"string\" ? valueInPath : JSON.stringify(valueInPath)}\n </Typography>;\n\n return (\n <div key={\"ref_prev_\" + key}\n className=\"flex w-full my-1 items-center\">\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className=\"min-w-[140px] md:min-w-[200px] w-1/5 pr-8 overflow-hidden text-ellipsis text-right\">\n {key}\n </Typography>\n <div className=\"w-4/5\">\n {previousValueInPath !== undefined && !deepEqual(previousValueInPath, valueInPath) &&\n <PreviousValueView previousValueInPath={previousValueInPath}\n childProperty={childProperty as Property}\n propertyKey={key}/>\n }\n {element}\n </div>\n </div>\n );\n })}\n\n {(!changedFields || changedFields.length === 0) && (\n <Typography variant={\"caption\"} color={\"secondary\"} className=\"ml-4\">\n {entry.action === \"create\" ? \"Entity created\" :\n entry.action === \"delete\" ? \"Entity deleted\" : \"No field changes recorded\"}\n </Typography>\n )}\n\n </div>\n\n </div>\n </div>;\n}\n","\nimport type { EntityCustomViewParams } from \"@rebasepro/types\";\nimport { useRef, useEffect } from \"react\";\nimport { cls, IconButton, Label, Tooltip, Typography } from \"@rebasepro/ui\";\nimport { ErrorBoundary, HistoryIcon } from \"@rebasepro/ui\";\nimport { EntityHistoryEntry } from \"./EntityHistoryEntry\";\nimport { useSnackbarController, useAuthController } from \"@rebasepro/core\";\nimport { ConfirmationDialog } from \"@rebasepro/core\";\nimport { useState } from \"react\";\nimport { useEntityHistory } from \"../../index\";\n\n/**\n * Entity history tab view. Shows a paginated list of entity revisions\n * fetched from the backend API. Supports infinite scroll and revert.\n */\nexport function EntityHistoryView<M extends Record<string, unknown>>({\n entity,\n collection,\n formContext\n}: EntityCustomViewParams<M>) {\n\n const snackbarController = useSnackbarController();\n const authController = useAuthController();\n const dirty = formContext?.formex.dirty;\n\n const slug = collection.slug;\n const entityId = entity?.id;\n\n const {\n entries,\n isLoading,\n hasMore,\n loadMore,\n revert\n } = useEntityHistory({\n slug,\n entityId,\n enabled: !!entityId,\n pageSize: 10\n });\n\n const [revertHistoryId, setRevertHistoryId] = useState<string | undefined>();\n const [isReverting, setIsReverting] = useState(false);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const loadMoreRef = useRef<HTMLDivElement>(null);\n\n // Intersection observer for infinite scroll\n useEffect(() => {\n const currentContainer = containerRef.current;\n const currentLoadMore = loadMoreRef.current;\n\n if (!currentContainer || !currentLoadMore || !hasMore || isLoading) return;\n\n const observer = new IntersectionObserver(\n (observerEntries) => {\n if (observerEntries[0].isIntersecting && hasMore && !isLoading) {\n loadMore();\n }\n },\n {\n root: currentContainer,\n rootMargin: \"0px 0px 200px 0px\",\n threshold: 0.01\n }\n );\n\n observer.observe(currentLoadMore);\n\n return () => observer.disconnect();\n }, [hasMore, isLoading, entries.length, loadMore]);\n\n if (!entity) {\n return <div className=\"flex items-center justify-center h-full\">\n <Label>HistoryIcon is only available for existing entities</Label>\n </div>;\n }\n\n async function doRevert(historyId: string) {\n setIsReverting(true);\n try {\n const revertedValues = await revert(historyId);\n setRevertHistoryId(undefined);\n\n // Reset the form with the reverted values so the UI updates\n // immediately without requiring a page refresh.\n if (formContext?.formex?.resetForm && revertedValues) {\n formContext.formex.resetForm({\n values: revertedValues as M,\n submitCount: 0,\n touched: {}\n });\n }\n\n snackbarController.open({\n message: \"Reverted to selected version\",\n type: \"info\"\n });\n } catch (error) {\n console.error(\"Error reverting entity:\", error);\n snackbarController.open({\n message: \"Error reverting entity\",\n type: \"error\"\n });\n } finally {\n setIsReverting(false);\n }\n }\n\n const revertEntry = revertHistoryId\n ? entries.find(e => e.id === revertHistoryId)\n : undefined;\n\n return <div\n ref={containerRef}\n className={cls(\"relative flex-1 h-full overflow-auto w-full flex flex-col gap-4 p-8\")}>\n <div className=\"flex flex-col gap-2 max-w-6xl mx-auto w-full\">\n\n <Typography variant={\"h5\"} className={\"mt-24 ml-4\"}>\n HistoryIcon\n </Typography>\n\n {isLoading && entries.length === 0 && (\n <div className=\"flex flex-col gap-4 mt-8 ml-4\">\n {[1, 2, 3].map(i => (\n <div key={i} className=\"flex flex-col gap-2 animate-pulse\">\n <div className=\"h-4 w-48 bg-surface-200 dark:bg-surface-700 rounded\"/>\n <div className=\"h-12 w-full bg-surface-100 dark:bg-surface-900 rounded-lg border border-surface-200 dark:border-surface-700\"/>\n </div>\n ))}\n </div>\n )}\n\n {!isLoading && entries.length === 0 && <>\n <Label className={\"ml-4 mt-8\"}>\n No history available\n </Label>\n <Typography variant={\"caption\"} className={\"ml-4\"}>\n When you save an entity, a new version is created and stored in the history.\n </Typography>\n </>}\n\n {entries.map((entry) => (\n <div key={entry.id} className=\"flex flex-cols gap-2 w-full\">\n <EntityHistoryEntry\n entry={entry}\n collection={collection}\n size={\"medium\"}\n actions={\n <Tooltip title={\"Revert to this version\"}\n className={\"m-2 grow-0 self-start\"}>\n <IconButton\n onClick={() => {\n if (dirty) {\n snackbarController.open({\n message: \"Please save or discard your changes before reverting\",\n type: \"warning\"\n });\n } else {\n setRevertHistoryId(entry.id);\n }\n }}>\n <HistoryIcon/>\n </IconButton>\n </Tooltip>\n }\n />\n </div>\n ))}\n\n {/* Load more sentinel */}\n {entries.length > 0 && (\n <div ref={loadMoreRef} className=\"py-4 text-center\">\n {isLoading && <Label>Loading more...</Label>}\n {!hasMore && entries.length > 10 && <Label>No more history available</Label>}\n </div>\n )}\n </div>\n\n <ErrorBoundary>\n <ConfirmationDialog\n open={Boolean(revertHistoryId)}\n onAccept={() => {\n if (revertHistoryId) doRevert(revertHistoryId);\n }}\n onCancel={() => setRevertHistoryId(undefined)}\n title={<Typography variant={\"subtitle2\"}>Revert data to this version?</Typography>}\n body={revertEntry\n ? <div className=\"p-4\">\n <Typography variant={\"caption\"} color={\"secondary\"}>\n This will save the entity with the values from{\" \"}\n {new Date(revertEntry.updated_at).toLocaleString()}.\n A new history entry will be created for the revert.\n </Typography>\n </div>\n : null\n }\n />\n </ErrorBoundary>\n </div>;\n}\n"],"names":["UserChip","t0","$","_c","user","t1","email","uid","t2","displayName","photoURL","t3","t4","t5","t6","deepEqual","a","b","Array","isArray","length","every","item","i","aObj","bObj","aKeys","Object","keys","bKeys","key","PreviousValueView","previousValueInPath","childProperty","propertyKey","Symbol","for","iconSize","smallest","t7","EntityHistoryEntry","actions","hover","collection","size","entry","authController","useAuthController","changedFields","changed_fields","previousValues","previous_values","T0","updatedBy","userDisplay","updated_at","updated_by","updatedOn","Date","currentUser","undefined","Typography","toLocaleString","action","t8","t9","t10","t11","t12","t13","cls","defaultBorderMixin","t14","values","map","getPropertyInPath","properties","valueInPath","getValueInPath","element","JSON","stringify","t15","t16","t17","t18","EntityHistoryView","entity","formContext","snackbarController","useSnackbarController","dirty","formex","slug","entityId","id","entries","isLoading","hasMore","loadMore","revert","useEntityHistory","enabled","pageSize","revertHistoryId","setRevertHistoryId","useState","isReverting","setIsReverting","containerRef","useRef","loadMoreRef","useEffect","currentContainer","current","currentLoadMore","observer","IntersectionObserver","observerEntries","isIntersecting","root","rootMargin","threshold","observe","disconnect","doRevert","historyId","revertedValues","resetForm","submitCount","touched","open","message","type","error","console","revertEntry","find","e","Boolean"],"mappings":"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"}