@ynput/ayon-frontend-shared 0.2.21 → 0.2.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DetailsPanel.cjs.js +6 -5
- package/dist/DetailsPanel.cjs.js.map +1 -1
- package/dist/DetailsPanel.es.js +6 -5
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/_virtual/index.cjs10.js +4 -4
- package/dist/_virtual/index.cjs4.js +4 -4
- package/dist/_virtual/index.cjs5.js +4 -4
- package/dist/_virtual/index.cjs6.js +2 -2
- package/dist/_virtual/index.cjs7.js +2 -2
- package/dist/_virtual/index.cjs8.js +4 -4
- package/dist/_virtual/index.cjs9.js +4 -4
- package/dist/_virtual/index.es10.js +4 -4
- package/dist/_virtual/index.es4.js +4 -4
- package/dist/_virtual/index.es5.js +4 -4
- package/dist/_virtual/index.es6.js +2 -2
- package/dist/_virtual/index.es7.js +2 -2
- package/dist/_virtual/index.es8.js +4 -4
- package/dist/_virtual/index.es9.js +4 -4
- package/dist/api.cjs.js +22 -19
- package/dist/api.cjs.js.map +1 -1
- package/dist/api.es.js +8 -5
- package/dist/api.es.js.map +1 -1
- package/dist/index.cjs.js +6 -5
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +6 -5
- package/dist/index.es.js.map +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
- package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
- package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +2 -2
- package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
- package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
- package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
- package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/index.es.js +1 -1
- package/dist/node_modules/vfile/lib/index.cjs.js +1 -1
- package/dist/node_modules/vfile/lib/index.es.js +1 -1
- package/dist/shared/src/api/base/client.cjs.js +20 -19
- package/dist/shared/src/api/base/client.cjs.js.map +1 -1
- package/dist/shared/src/api/base/client.es.js +20 -19
- package/dist/shared/src/api/base/client.es.js.map +1 -1
- package/dist/shared/src/api/generated/access.cjs.js +8 -0
- package/dist/shared/src/api/generated/access.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/access.es.js +8 -0
- package/dist/shared/src/api/generated/access.es.js.map +1 -1
- package/dist/shared/src/api/generated/views.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/views.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +6 -5
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +6 -5
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +6 -5
- package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/updateEntity.es.js +6 -5
- package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +6 -5
- package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.es.js +6 -5
- package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
- package/dist/shared/src/api/queries/share/share.cjs.js +66 -0
- package/dist/shared/src/api/queries/share/share.cjs.js.map +1 -0
- package/dist/shared/src/api/queries/share/share.es.js +66 -0
- package/dist/shared/src/api/queries/share/share.es.js.map +1 -0
- package/dist/shared/src/api/queries/users/getUsers.cjs.js +6 -5
- package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/users/getUsers.es.js +6 -5
- package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
- package/dist/shared/src/api/queries/views/getViews.cjs.js +5 -1
- package/dist/shared/src/api/queries/views/getViews.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/views/getViews.es.js +5 -1
- package/dist/shared/src/api/queries/views/getViews.es.js.map +1 -1
- package/dist/shared/src/api/queries/views/updateViews.cjs.js +0 -2
- package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/views/updateViews.es.js +0 -2
- package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +6 -5
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +6 -5
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js +6 -5
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js +6 -5
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +6 -5
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +6 -5
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
- package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +6 -5
- package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
- package/dist/shared/src/components/Feedback/FeedbackContext.es.js +6 -5
- package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +6 -5
- package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +6 -5
- package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +6 -5
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +6 -5
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +6 -5
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +6 -5
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +6 -5
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +6 -5
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +6 -5
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +6 -5
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +6 -5
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +6 -5
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +6 -5
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +6 -5
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +6 -5
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +6 -5
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +6 -5
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +6 -5
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +6 -5
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +6 -5
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +6 -5
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +6 -5
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +6 -5
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +6 -5
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
- package/dist/shared/src/components/Watchers/Watchers.cjs.js +6 -5
- package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
- package/dist/shared/src/components/Watchers/Watchers.es.js +6 -5
- package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +6 -5
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +6 -5
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.cjs.js +6 -5
- package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.es.js +6 -5
- package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +6 -5
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +6 -5
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +6 -5
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +6 -5
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +6 -5
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +6 -5
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +6 -5
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +6 -5
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +6 -5
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +6 -5
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +6 -5
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +6 -5
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +6 -5
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +6 -5
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +6 -5
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js +6 -5
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +6 -5
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +6 -5
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +15 -9
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +15 -9
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +52 -77
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +52 -77
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js +14 -8
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js +14 -8
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +6 -5
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +6 -5
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js +17 -1
- package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js +17 -1
- package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewItem/ViewItem.styled.cjs.js +4 -2
- package/dist/shared/src/containers/Views/ViewItem/ViewItem.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewItem/ViewItem.styled.es.js +4 -2
- package/dist/shared/src/containers/Views/ViewItem/ViewItem.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +12 -7
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +12 -7
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenu/SectionHeader.cjs.js +17 -0
- package/dist/shared/src/containers/Views/ViewsMenu/SectionHeader.cjs.js.map +1 -0
- package/dist/shared/src/containers/Views/ViewsMenu/SectionHeader.es.js +17 -0
- package/dist/shared/src/containers/Views/ViewsMenu/SectionHeader.es.js.map +1 -0
- package/dist/shared/src/containers/Views/ViewsMenu/SectionHeader.styled.cjs.js +37 -0
- package/dist/shared/src/containers/Views/ViewsMenu/SectionHeader.styled.cjs.js.map +1 -0
- package/dist/shared/src/containers/Views/ViewsMenu/SectionHeader.styled.es.js +37 -0
- package/dist/shared/src/containers/Views/ViewsMenu/SectionHeader.styled.es.js.map +1 -0
- package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.cjs.js +13 -2
- package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.es.js +14 -3
- package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.styled.cjs.js +1 -2
- package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.styled.es.js +2 -3
- package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +38 -6
- package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js +39 -7
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +31 -5
- package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +31 -5
- package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +61 -23
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +61 -23
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +6 -5
- package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +6 -5
- package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +45 -6
- package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +45 -6
- package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.cjs.js +3 -40
- package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.es.js +3 -40
- package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.es.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.cjs.js +2 -1
- package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.es.js +2 -1
- package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.es.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +6 -5
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +6 -5
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
- package/dist/shared/src/context/AddonProjectContext.cjs.js +6 -5
- package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
- package/dist/shared/src/context/AddonProjectContext.es.js +6 -5
- package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js +6 -5
- package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.es.js +6 -5
- package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
- package/dist/shared/src/context/PowerpackContext.cjs.js +6 -5
- package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
- package/dist/shared/src/context/PowerpackContext.es.js +6 -5
- package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.cjs.js +6 -5
- package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.es.js +6 -5
- package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
- package/dist/shared/src/hooks/useActionTriggers.cjs.js +6 -5
- package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useActionTriggers.es.js +6 -5
- package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js +6 -5
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.es.js +6 -5
- package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
- package/dist/shared/src/hooks/useLoadModule.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useLoadModule.es.js.map +1 -1
- package/dist/shared/src/hooks/useScopedStatuses.cjs.js +6 -5
- package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useScopedStatuses.es.js +6 -5
- package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +6 -5
- package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.es.js +6 -5
- package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
- package/dist/types/api/generated/access.d.ts +15 -0
- package/dist/types/api/generated/views.d.ts +4 -4
- package/dist/types/api/queries/index.d.ts +6 -5
- package/dist/types/api/queries/share/index.d.ts +1 -0
- package/dist/types/api/queries/share/share.d.ts +150 -0
- package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +10 -15
- package/dist/types/containers/Views/ViewItem/ViewItem.d.ts +1 -0
- package/dist/types/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.d.ts +2 -1
- package/dist/types/containers/Views/ViewsMenu/SectionHeader.d.ts +6 -0
- package/dist/types/containers/Views/ViewsMenu/SectionHeader.styled.d.ts +1 -0
- package/dist/types/containers/Views/ViewsMenu/ViewsMenu.d.ts +8 -3
- package/dist/types/containers/Views/context/ViewsContext.d.ts +3 -1
- package/dist/types/containers/Views/hooks/useBuildViewMenuItems.d.ts +2 -1
- package/dist/types/containers/Views/hooks/useViewsMutations.d.ts +7 -0
- package/dist/types/containers/Views/index.d.ts +1 -1
- package/dist/types/containers/Views/utils/getCustomViewsFallback.d.ts +7 -6
- package/package.json +1 -1
- package/dist/types/api/generated/powerPack1.1.1Views.d.ts +0 -25
- package/dist/types/containers/Views/hooks/useOverviewViewSettings.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewsMenu.es.js","sources":["../../../../../../src/containers/Views/ViewsMenu/ViewsMenu.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { ViewItem } from '../ViewItem/ViewItem'\nimport * as Styled from './ViewsMenu.styled'\n\nexport const VIEW_DIVIDER = '_divider_' as const // Represents a divider\
|
|
1
|
+
{"version":3,"file":"ViewsMenu.es.js","sources":["../../../../../../src/containers/Views/ViewsMenu/ViewsMenu.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { ViewItem } from '../ViewItem/ViewItem'\nimport * as Styled from './ViewsMenu.styled'\nimport { SectionHeader } from './SectionHeader'\n\nexport const VIEW_DIVIDER = '_divider_' as const // Represents a divider\nexport type ViewSectionHeader = {\n type: 'section'\n id: string\n title: string\n collapsed?: boolean\n onToggle?: () => void\n}\nexport type ViewMenuItem = ViewItem | typeof VIEW_DIVIDER | ViewSectionHeader\n\nexport interface ViewsMenuProps extends React.HTMLAttributes<HTMLUListElement> {\n items: ViewMenuItem[] // Array of ViewMenuItem or string\n selected: string\n}\n\nconst isSectionHeader = (item: ViewMenuItem): item is ViewSectionHeader =>\n typeof item === 'object' && item !== null && 'type' in item && (item as any).type === 'section'\n\nexport const ViewsMenu = forwardRef<HTMLUListElement, ViewsMenuProps>(\n ({ items, selected, ...props }, ref) => {\n return (\n <Styled.Scrollable>\n <Styled.ViewsMenu {...props} ref={ref}>\n {items.map((item, index) => {\n if (item === '_divider_') {\n return <Styled.ViewsMenuDivider key={index} />\n } else if (isSectionHeader(item)) {\n return (\n <SectionHeader\n key={item.id}\n id={item.id}\n title={item.title}\n collapsed={item.collapsed}\n onClick={item.onToggle}\n />\n )\n } else {\n return (\n <ViewItem\n key={(item.id || '') + index.toString()}\n tabIndex={0}\n isSelected={item.id === selected}\n autoFocus={index === 0}\n {...item}\n />\n )\n }\n })}\n </Styled.ViewsMenu>\n </Styled.Scrollable>\n )\n },\n)\n"],"names":["jsx","Styled.Scrollable","Styled.ViewsMenu","Styled.ViewsMenuDivider"],"mappings":";;;;;AAKO,MAAM,eAAe;AAe5B,MAAM,kBAAkB,CAAC,SACvB,OAAO,SAAS,YAAY,SAAS,QAAQ,UAAU,QAAS,KAAa,SAAS;AAEjF,MAAM,YAAY;AAAA,EACvB,CAAC,EAAE,OAAO,UAAU,GAAG,MAAA,GAAS,QAAQ;AACtC,WACGA,kCAAAA,IAAAC,YAAA,EACC,gDAACC,aAAA,EAAkB,GAAG,OAAO,KAC1B,UAAA,MAAM,IAAI,CAAC,MAAM,UAAU;AAC1B,UAAI,SAAS,aAAa;AACxB,eAAQF,sCAAAG,kBAAA,CAAA,GAA6B,KAAO;AAAA,MAAA,WACnC,gBAAgB,IAAI,GAAG;AAE9B,eAAAH,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,IAAI,KAAK;AAAA,YACT,OAAO,KAAK;AAAA,YACZ,WAAW,KAAK;AAAA,YAChB,SAAS,KAAK;AAAA,UAAA;AAAA,UAJT,KAAK;AAAA,QAKZ;AAAA,MAAA,OAEG;AAEH,eAAAA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,UAAU;AAAA,YACV,YAAY,KAAK,OAAO;AAAA,YACxB,WAAW,UAAU;AAAA,YACpB,GAAG;AAAA,UAAA;AAAA,WAJE,KAAK,MAAM,MAAM,MAAM,SAAS;AAAA,QAKxC;AAAA,MAAA;AAAA,IAEJ,CACD,GACH,EACF,CAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -22,12 +22,11 @@ const ViewsMenuDivider = styled.li`
|
|
|
22
22
|
background-color: var(--md-sys-color-outline-variant);
|
|
23
23
|
margin: 4px 0;
|
|
24
24
|
`;
|
|
25
|
-
|
|
25
|
+
styled.li`
|
|
26
26
|
${ayonReactComponents.theme.labelSmall}
|
|
27
27
|
color: var(--md-sys-color-outline);
|
|
28
28
|
`;
|
|
29
29
|
exports.Scrollable = Scrollable;
|
|
30
30
|
exports.ViewsMenu = ViewsMenu;
|
|
31
31
|
exports.ViewsMenuDivider = ViewsMenuDivider;
|
|
32
|
-
exports.ViewsMenuTitle = ViewsMenuTitle;
|
|
33
32
|
//# sourceMappingURL=ViewsMenu.styled.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewsMenu.styled.cjs.js","sources":["../../../../../../src/containers/Views/ViewsMenu/ViewsMenu.styled.ts"],"sourcesContent":["import { theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\n\nexport const Scrollable = styled.div`\n overflow: auto;\n max-height: 40vh;\n`\n\nexport const ViewsMenu = styled.ul`\n /* reset defaults */\n margin: 0;\n padding: 0;\n list-style: none;\n\n display: flex;\n flex-direction: column;\n gap: var(--base-gap-small);\n margin-bottom: var(--padding-s);\n`\n\n// 1px line divider\nexport const ViewsMenuDivider = styled.li`\n height: 1px;\n background-color: var(--md-sys-color-outline-variant);\n margin: 4px 0;\n`\n\nexport const ViewsMenuTitle = styled.li`\n ${theme.labelSmall}\n color: var(--md-sys-color-outline);\n`\n"],"names":["theme"],"mappings":";;;;AAGO,MAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAK1B,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAazB,MAAM,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;
|
|
1
|
+
{"version":3,"file":"ViewsMenu.styled.cjs.js","sources":["../../../../../../src/containers/Views/ViewsMenu/ViewsMenu.styled.ts"],"sourcesContent":["import { theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\n\nexport const Scrollable = styled.div`\n overflow: auto;\n max-height: 40vh;\n`\n\nexport const ViewsMenu = styled.ul`\n /* reset defaults */\n margin: 0;\n padding: 0;\n list-style: none;\n\n display: flex;\n flex-direction: column;\n gap: var(--base-gap-small);\n margin-bottom: var(--padding-s);\n`\n\n// 1px line divider\nexport const ViewsMenuDivider = styled.li`\n height: 1px;\n background-color: var(--md-sys-color-outline-variant);\n margin: 4px 0;\n`\n\nexport const ViewsMenuTitle = styled.li`\n ${theme.labelSmall}\n color: var(--md-sys-color-outline);\n`\n"],"names":["theme"],"mappings":";;;;AAGO,MAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAK1B,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAazB,MAAM,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;AAMT,OAAO;AAAA,IACjCA,0BAAM,UAAU;AAAA;AAAA;;;;"}
|
|
@@ -20,14 +20,13 @@ const ViewsMenuDivider = styled.li`
|
|
|
20
20
|
background-color: var(--md-sys-color-outline-variant);
|
|
21
21
|
margin: 4px 0;
|
|
22
22
|
`;
|
|
23
|
-
|
|
23
|
+
styled.li`
|
|
24
24
|
${theme.labelSmall}
|
|
25
25
|
color: var(--md-sys-color-outline);
|
|
26
26
|
`;
|
|
27
27
|
export {
|
|
28
28
|
Scrollable,
|
|
29
29
|
ViewsMenu,
|
|
30
|
-
ViewsMenuDivider
|
|
31
|
-
ViewsMenuTitle
|
|
30
|
+
ViewsMenuDivider
|
|
32
31
|
};
|
|
33
32
|
//# sourceMappingURL=ViewsMenu.styled.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewsMenu.styled.es.js","sources":["../../../../../../src/containers/Views/ViewsMenu/ViewsMenu.styled.ts"],"sourcesContent":["import { theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\n\nexport const Scrollable = styled.div`\n overflow: auto;\n max-height: 40vh;\n`\n\nexport const ViewsMenu = styled.ul`\n /* reset defaults */\n margin: 0;\n padding: 0;\n list-style: none;\n\n display: flex;\n flex-direction: column;\n gap: var(--base-gap-small);\n margin-bottom: var(--padding-s);\n`\n\n// 1px line divider\nexport const ViewsMenuDivider = styled.li`\n height: 1px;\n background-color: var(--md-sys-color-outline-variant);\n margin: 4px 0;\n`\n\nexport const ViewsMenuTitle = styled.li`\n ${theme.labelSmall}\n color: var(--md-sys-color-outline);\n`\n"],"names":[],"mappings":";;AAGO,MAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAK1B,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAazB,MAAM,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;
|
|
1
|
+
{"version":3,"file":"ViewsMenu.styled.es.js","sources":["../../../../../../src/containers/Views/ViewsMenu/ViewsMenu.styled.ts"],"sourcesContent":["import { theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\n\nexport const Scrollable = styled.div`\n overflow: auto;\n max-height: 40vh;\n`\n\nexport const ViewsMenu = styled.ul`\n /* reset defaults */\n margin: 0;\n padding: 0;\n list-style: none;\n\n display: flex;\n flex-direction: column;\n gap: var(--base-gap-small);\n margin-bottom: var(--padding-s);\n`\n\n// 1px line divider\nexport const ViewsMenuDivider = styled.li`\n height: 1px;\n background-color: var(--md-sys-color-outline-variant);\n margin: 4px 0;\n`\n\nexport const ViewsMenuTitle = styled.li`\n ${theme.labelSmall}\n color: var(--md-sys-color-outline);\n`\n"],"names":[],"mappings":";;AAGO,MAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAK1B,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAazB,MAAM,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;AAMT,OAAO;AAAA,IACjC,MAAM,UAAU;AAAA;AAAA;"}
|
|
@@ -6,6 +6,7 @@ require("react-dom");
|
|
|
6
6
|
require("../Views.styled.cjs.js");
|
|
7
7
|
require("clsx");
|
|
8
8
|
const ViewsMenuContainer = require("../ViewsMenuContainer/ViewsMenuContainer.cjs.js");
|
|
9
|
+
const useLocalStorage = require("../../../hooks/useLocalStorage.cjs.js");
|
|
9
10
|
require("../../../context/RemoteModulesContext.cjs.js");
|
|
10
11
|
require("../../../../../_virtual/runtime.cjs.js");
|
|
11
12
|
require("../../../../../_virtual/semver.cjs.js");
|
|
@@ -56,6 +57,7 @@ require("../../../api/queries/addons/updateAddons.cjs.js");
|
|
|
56
57
|
require("../../../api/queries/attributes/getAttributes.cjs.js");
|
|
57
58
|
require("../../../api/queries/attributes/updateAttributes.cjs.js");
|
|
58
59
|
require("../../../api/queries/authentication/getAuthentication.cjs.js");
|
|
60
|
+
require("../../../api/queries/cloud/cloud.cjs.js");
|
|
59
61
|
require("../../../api/queries/entities/getEntity.cjs.js");
|
|
60
62
|
require("../../../api/queries/entities/getEntityPanel.cjs.js");
|
|
61
63
|
require("../../../api/queries/entities/updateEntity.cjs.js");
|
|
@@ -64,24 +66,24 @@ require("../../../api/queries/entityLists/updateLists.cjs.js");
|
|
|
64
66
|
require("../../../api/queries/entityLists/getListsAttributes.cjs.js");
|
|
65
67
|
require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");
|
|
66
68
|
require("../../../api/queries/folders/getFolders.cjs.js");
|
|
69
|
+
require("../../../api/queries/grouping/getGrouping.cjs.js");
|
|
67
70
|
require("../../../api/queries/overview/getOverview.cjs.js");
|
|
68
71
|
require("../../../api/queries/overview/updateOverview.cjs.js");
|
|
72
|
+
require("../../../api/queries/permissions/getPermissions.cjs.js");
|
|
73
|
+
require("../../../api/queries/products/createProduct.cjs.js");
|
|
69
74
|
require("../../../api/queries/project/getProject.cjs.js");
|
|
70
75
|
require("../../../api/queries/project/updateProject.cjs.js");
|
|
71
76
|
require("../../../api/queries/review/getReview.cjs.js");
|
|
72
77
|
require("../../../api/queries/review/updateReview.cjs.js");
|
|
78
|
+
const share = require("../../../api/queries/share/share.cjs.js");
|
|
73
79
|
require("../../../api/queries/system/getSystem.cjs.js");
|
|
74
80
|
require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");
|
|
75
81
|
const getUsers = require("../../../api/queries/users/getUsers.cjs.js");
|
|
76
82
|
require("../../../api/queries/users/updateUsers.cjs.js");
|
|
77
|
-
require("../../../api/queries/watchers/getWatchers.cjs.js");
|
|
78
|
-
require("../../../api/queries/permissions/getPermissions.cjs.js");
|
|
79
|
-
require("../../../api/queries/grouping/getGrouping.cjs.js");
|
|
80
83
|
require("../../../api/queries/versions/updateVersions.cjs.js");
|
|
81
|
-
require("../../../api/queries/products/createProduct.cjs.js");
|
|
82
|
-
require("../../../api/queries/cloud/cloud.cjs.js");
|
|
83
84
|
const getViews = require("../../../api/queries/views/getViews.cjs.js");
|
|
84
85
|
const updateViews = require("../../../api/queries/views/updateViews.cjs.js");
|
|
86
|
+
require("../../../api/queries/watchers/getWatchers.cjs.js");
|
|
85
87
|
require("lodash");
|
|
86
88
|
require("react-toastify");
|
|
87
89
|
require("../../../context/DetailsPanelContext.cjs.js");
|
|
@@ -118,9 +120,20 @@ const ViewsProvider = ({
|
|
|
118
120
|
powerLicense = debug.powerLicense;
|
|
119
121
|
}
|
|
120
122
|
const { data: currentUser } = getUsers.useGetCurrentUserQuery();
|
|
121
|
-
const { onCreateView, onDeleteView, onUpdateView } = useViewsMutations.useViewsMutations({
|
|
123
|
+
const { onCreateView, onDeleteView, onUpdateView, onResetWorkingView } = useViewsMutations.useViewsMutations({
|
|
124
|
+
viewType,
|
|
125
|
+
projectName
|
|
126
|
+
});
|
|
122
127
|
const [isMenuOpen, setIsMenuOpen] = React.useState(false);
|
|
123
128
|
const [editingView, setEditingView] = React.useState(null);
|
|
129
|
+
const [collapsedSections, setCollapsedSections] = useLocalStorage.useLocalStorage(
|
|
130
|
+
"collapsed-views",
|
|
131
|
+
{}
|
|
132
|
+
);
|
|
133
|
+
const { data: shareOptions } = share.useGetShareOptionsQuery(
|
|
134
|
+
{ projectName },
|
|
135
|
+
{ skip: !powerLicense || !editingView }
|
|
136
|
+
);
|
|
124
137
|
const [selectedView, setSelectedView, previousSelectedViewId] = useSelectedView.useSelectedView({
|
|
125
138
|
viewType,
|
|
126
139
|
projectName
|
|
@@ -154,6 +167,19 @@ const ViewsProvider = ({
|
|
|
154
167
|
sourceSettings: viewSettings,
|
|
155
168
|
onUpdateView
|
|
156
169
|
});
|
|
170
|
+
const resetWorkingView = React.useCallback(async () => {
|
|
171
|
+
try {
|
|
172
|
+
await onResetWorkingView({
|
|
173
|
+
existingWorkingViewId: workingView == null ? void 0 : workingView.id,
|
|
174
|
+
selectedViewId: selectedView == null ? void 0 : selectedView.id,
|
|
175
|
+
setSelectedView,
|
|
176
|
+
setSettingsChanged: setViewSettingsChanged,
|
|
177
|
+
notify: true
|
|
178
|
+
});
|
|
179
|
+
} catch (error) {
|
|
180
|
+
console.error("Failed to reset view:", error);
|
|
181
|
+
}
|
|
182
|
+
}, [workingView, onResetWorkingView, selectedView, setSelectedView, setViewSettingsChanged]);
|
|
157
183
|
const viewMenuItems = useBuildViewMenuItems.default({
|
|
158
184
|
viewsList,
|
|
159
185
|
workingView,
|
|
@@ -162,9 +188,11 @@ const ViewsProvider = ({
|
|
|
162
188
|
currentUser,
|
|
163
189
|
useWorkingView: !powerLicense,
|
|
164
190
|
editingViewId,
|
|
191
|
+
onResetWorkingView,
|
|
165
192
|
onSelect: (viewId) => {
|
|
166
193
|
setSelectedView(viewId);
|
|
167
194
|
setViewSettingsChanged(false);
|
|
195
|
+
setIsMenuOpen(false);
|
|
168
196
|
},
|
|
169
197
|
onEdit: (viewId) => setEditingView(viewId),
|
|
170
198
|
onSave: async (viewId) => onSaveViewFromCurrent(viewId)
|
|
@@ -185,6 +213,8 @@ const ViewsProvider = ({
|
|
|
185
213
|
viewMenuItems,
|
|
186
214
|
isLoadingViews,
|
|
187
215
|
isViewWorking,
|
|
216
|
+
// data
|
|
217
|
+
shareOptions,
|
|
188
218
|
setIsMenuOpen,
|
|
189
219
|
setEditingView,
|
|
190
220
|
setSelectedView,
|
|
@@ -193,6 +223,8 @@ const ViewsProvider = ({
|
|
|
193
223
|
onCreateView,
|
|
194
224
|
onUpdateView,
|
|
195
225
|
onDeleteView,
|
|
226
|
+
// shared actions
|
|
227
|
+
resetWorkingView,
|
|
196
228
|
// api
|
|
197
229
|
api: updateViews.viewsQueries,
|
|
198
230
|
dispatch
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewsContext.cjs.js","sources":["../../../../../../src/containers/Views/context/ViewsContext.tsx"],"sourcesContent":["import { createContext, useContext, FC, ReactNode, useState, useMemo, useCallback } from 'react'\nimport { ViewType, WORKING_VIEW_ID } from '../index'\nimport {\n GetDefaultViewApiResponse,\n useGetCurrentUserQuery,\n useGetWorkingViewQuery,\n useGetViewQuery,\n useListViewsQuery,\n UserModel,\n ViewListItemModel,\n viewsQueries,\n} from '@shared/api'\nimport useBuildViewMenuItems from '../hooks/useBuildViewMenuItems'\nimport { ViewMenuItem } from '../ViewsMenu/ViewsMenu'\nimport { usePowerpack } from '@shared/context'\nimport { useSelectedView } from '../hooks/useSelectedView'\nimport { UseViewMutations, useViewsMutations } from '../hooks/useViewsMutations'\nimport { useSaveViewFromCurrent } from '../hooks/useSaveViewFromCurrent'\nimport { useViewSettingsChanged } from '../hooks/useViewSettingsChanged'\n\nexport type ViewData = GetDefaultViewApiResponse\nexport type ViewSettings = GetDefaultViewApiResponse['settings']\nexport type SelectedViewState = ViewData | undefined // id of view otherwise null with use working\nexport type EditingViewState = string | true | null // id of view being edited otherwise null\n\nconst viewTypes = ['overview', 'taskProgress', 'lists'] as const\nexport interface ViewsContextValue {\n // State\n viewType?: ViewType\n projectName?: string\n currentUser?: UserModel\n isMenuOpen: boolean\n editingView: EditingViewState\n selectedView: SelectedViewState\n\n // Views data\n viewsList: ViewListItemModel[]\n viewSettings: ViewSettings | undefined\n workingSettings: ViewSettings | undefined\n workingView: ViewListItemModel | undefined\n editingViewId: string | undefined\n viewMenuItems: ViewMenuItem[]\n editingViewData?: ViewData\n isLoadingViews: boolean\n isViewWorking: boolean\n\n // Actions\n setIsMenuOpen: (open: boolean) => void\n setEditingView: (editing: EditingViewState) => void\n setSelectedView: (viewId: string) => void\n onSettingsChanged: (changed: boolean) => void\n\n // Mutations\n onCreateView: UseViewMutations['onCreateView']\n onDeleteView: UseViewMutations['onDeleteView']\n onUpdateView: UseViewMutations['onUpdateView']\n\n // api\n api: typeof viewsQueries\n dispatch: any\n}\n\nconst ViewsContext = createContext<ViewsContextValue | null>(null)\n\nexport interface ViewsProviderProps {\n children: ReactNode\n viewType?: string\n projectName?: string\n dispatch?: any\n debug?: {\n powerLicense?: boolean\n }\n}\n\nexport const ViewsProvider: FC<ViewsProviderProps> = ({\n children,\n viewType: viewTypeProp,\n projectName,\n dispatch,\n debug,\n}) => {\n // validate viewType\n const viewType = viewTypes.includes(viewTypeProp as ViewType)\n ? (viewTypeProp as ViewType)\n : undefined\n\n let { powerLicense } = usePowerpack()\n if (debug?.powerLicense !== undefined) {\n console.warn('Using debug power license:', debug.powerLicense)\n powerLicense = debug.powerLicense\n }\n\n const { data: currentUser } = useGetCurrentUserQuery()\n\n const { onCreateView, onDeleteView, onUpdateView } = useViewsMutations({ viewType, projectName })\n\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n const [editingView, setEditingView] = useState<EditingViewState>(null)\n\n // setting of default views\n const [selectedView, setSelectedView, previousSelectedViewId] = useSelectedView({\n viewType: viewType as string,\n projectName: projectName,\n })\n\n const [viewSettingsChanged, setViewSettingsChanged] = useViewSettingsChanged({\n viewType: viewType as ViewType,\n })\n\n // Fetch views data\n const { currentData: viewsList = [], isLoading: isLoadingViews } = useListViewsQuery(\n { projectName: projectName, viewType: viewType as string },\n { skip: !viewType },\n )\n\n // always get your working view\n const { currentData: workingView } = useGetWorkingViewQuery(\n { projectName: projectName, viewType: viewType as string },\n { skip: !viewType },\n )\n\n const workingSettings = workingView?.settings\n\n // which settings to use for the view\n const viewSettings =\n !selectedView || selectedView.id === WORKING_VIEW_ID ? workingSettings : selectedView?.settings\n\n // is the working view selected?\n const isViewWorking = selectedView?.id === workingView?.id\n // were we just on a custom view and then edited it and ended up on the working view\n const editingViewId =\n viewSettingsChanged &&\n isViewWorking &&\n !!previousSelectedViewId &&\n previousSelectedViewId !== workingView?.id\n ? previousSelectedViewId\n : undefined\n\n // get data for the view we are editing\n const { currentData: editingViewDataData } = useGetViewQuery(\n { viewId: editingView as string, projectName: projectName, viewType: viewType as string },\n { skip: !(typeof editingView === 'string') || !powerLicense },\n )\n\n const editingViewData = useMemo(\n () => (editingView === editingViewDataData?.id ? editingViewDataData : undefined),\n [editingView, editingViewDataData],\n )\n\n const { onSaveViewFromCurrent } = useSaveViewFromCurrent({\n viewType: viewType,\n projectName,\n sourceSettings: viewSettings,\n onUpdateView: onUpdateView,\n })\n\n // build the menu items for the views\n const viewMenuItems = useBuildViewMenuItems({\n viewsList,\n workingView,\n viewType,\n projectName,\n currentUser,\n useWorkingView: !powerLicense,\n editingViewId,\n onSelect: (viewId) => {\n setSelectedView(viewId)\n // reset the settings changed state when switching views\n setViewSettingsChanged(false)\n },\n onEdit: (viewId) => setEditingView(viewId),\n onSave: async (viewId) => onSaveViewFromCurrent(viewId),\n })\n\n const value: ViewsContextValue = {\n viewType,\n projectName,\n isMenuOpen,\n editingView,\n currentUser,\n selectedView,\n viewSettings,\n workingSettings,\n editingViewData,\n viewsList,\n workingView,\n editingViewId,\n viewMenuItems,\n isLoadingViews,\n isViewWorking,\n setIsMenuOpen,\n setEditingView,\n setSelectedView,\n onSettingsChanged: setViewSettingsChanged,\n // mutations\n onCreateView,\n onUpdateView,\n onDeleteView,\n // api\n api: viewsQueries,\n dispatch,\n }\n\n return <ViewsContext.Provider value={value}>{children}</ViewsContext.Provider>\n}\n\nexport const useViewsContext = (): ViewsContextValue => {\n const context = useContext(ViewsContext)\n if (!context) {\n throw new Error('useViewsContext must be used within a ViewsProvider')\n }\n return context\n}\n"],"names":["createContext","usePowerpack","useGetCurrentUserQuery","useViewsMutations","useState","useSelectedView","useViewSettingsChanged","useListViewsQuery","useGetWorkingViewQuery","WORKING_VIEW_ID","useGetViewQuery","useMemo","useSaveViewFromCurrent","useBuildViewMenuItems","viewsQueries","jsx","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ViewsContext.cjs.js","sources":["../../../../../../src/containers/Views/context/ViewsContext.tsx"],"sourcesContent":["import { createContext, useContext, FC, ReactNode, useState, useMemo, useCallback } from 'react'\nimport { ViewType, WORKING_VIEW_ID } from '../index'\nimport {\n GetDefaultViewApiResponse,\n useGetCurrentUserQuery,\n useGetWorkingViewQuery,\n useGetViewQuery,\n useListViewsQuery,\n UserModel,\n ViewListItemModel,\n viewsQueries,\n useGetShareOptionsQuery,\n ShareOption,\n} from '@shared/api'\nimport useBuildViewMenuItems from '../hooks/useBuildViewMenuItems'\nimport { ViewMenuItem } from '../ViewsMenu/ViewsMenu'\nimport { usePowerpack } from '@shared/context'\nimport { useSelectedView } from '../hooks/useSelectedView'\nimport { UseViewMutations, useViewsMutations } from '../hooks/useViewsMutations'\nimport { useSaveViewFromCurrent } from '../hooks/useSaveViewFromCurrent'\nimport { useViewSettingsChanged } from '../hooks/useViewSettingsChanged'\nimport { useLocalStorage } from '@shared/hooks'\n\nexport type ViewData = GetDefaultViewApiResponse\nexport type ViewSettings = GetDefaultViewApiResponse['settings']\nexport type SelectedViewState = ViewData | undefined // id of view otherwise null with use working\nexport type EditingViewState = string | true | null // id of view being edited otherwise null\n\nconst viewTypes = ['overview', 'taskProgress', 'lists'] as const\nexport interface ViewsContextValue {\n // State\n viewType?: ViewType\n projectName?: string\n currentUser?: UserModel\n isMenuOpen: boolean\n editingView: EditingViewState\n selectedView: SelectedViewState\n\n // Views data\n viewsList: ViewListItemModel[]\n viewSettings: ViewSettings | undefined\n workingSettings: ViewSettings | undefined\n workingView: ViewListItemModel | undefined\n editingViewId: string | undefined\n viewMenuItems: ViewMenuItem[]\n editingViewData?: ViewData\n isLoadingViews: boolean\n isViewWorking: boolean\n\n // Data\n shareOptions?: ShareOption[] // available users to share with (undefined means loading)\n\n // Actions\n setIsMenuOpen: (open: boolean) => void\n setEditingView: (editing: EditingViewState) => void\n setSelectedView: (viewId: string) => void\n onSettingsChanged: (changed: boolean) => void\n\n // Mutations\n onCreateView: UseViewMutations['onCreateView']\n onDeleteView: UseViewMutations['onDeleteView']\n onUpdateView: UseViewMutations['onUpdateView']\n\n // Actions (shared)\n resetWorkingView: () => Promise<void>\n\n // api\n api: typeof viewsQueries\n dispatch: any\n}\n\nconst ViewsContext = createContext<ViewsContextValue | null>(null)\n\nexport interface ViewsProviderProps {\n children: ReactNode\n viewType?: string\n projectName?: string\n dispatch?: any\n debug?: {\n powerLicense?: boolean\n }\n}\n\nexport const ViewsProvider: FC<ViewsProviderProps> = ({\n children,\n viewType: viewTypeProp,\n projectName,\n dispatch,\n debug,\n}) => {\n // validate viewType\n const viewType = viewTypes.includes(viewTypeProp as ViewType)\n ? (viewTypeProp as ViewType)\n : undefined\n\n let { powerLicense } = usePowerpack()\n if (debug?.powerLicense !== undefined) {\n console.warn('Using debug power license:', debug.powerLicense)\n powerLicense = debug.powerLicense\n }\n\n const { data: currentUser } = useGetCurrentUserQuery()\n\n const { onCreateView, onDeleteView, onUpdateView, onResetWorkingView } = useViewsMutations({\n viewType,\n projectName,\n })\n\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n const [editingView, setEditingView] = useState<EditingViewState>(null)\n const [collapsedSections, setCollapsedSections] = useLocalStorage<Record<string, boolean>>(\n 'collapsed-views',\n {},\n )\n\n // when editing the view, get all users that can be shared to that view\n const { data: shareOptions } = useGetShareOptionsQuery(\n { projectName },\n { skip: !powerLicense || !editingView },\n )\n\n // setting of default views\n const [selectedView, setSelectedView, previousSelectedViewId] = useSelectedView({\n viewType: viewType as string,\n projectName: projectName,\n })\n\n const [viewSettingsChanged, setViewSettingsChanged] = useViewSettingsChanged({\n viewType: viewType as ViewType,\n })\n\n // Fetch views data\n const { currentData: viewsList = [], isLoading: isLoadingViews } = useListViewsQuery(\n { projectName: projectName, viewType: viewType as string },\n { skip: !viewType },\n )\n\n // always get your working view\n const { currentData: workingView } = useGetWorkingViewQuery(\n { projectName: projectName, viewType: viewType as string },\n { skip: !viewType },\n )\n\n const workingSettings = workingView?.settings\n\n // which settings to use for the view\n const viewSettings =\n !selectedView || selectedView.id === WORKING_VIEW_ID ? workingSettings : selectedView?.settings\n\n // is the working view selected?\n const isViewWorking = selectedView?.id === workingView?.id\n // were we just on a custom view and then edited it and ended up on the working view\n const editingViewId =\n viewSettingsChanged &&\n isViewWorking &&\n !!previousSelectedViewId &&\n previousSelectedViewId !== workingView?.id\n ? previousSelectedViewId\n : undefined\n\n // get data for the view we are editing\n const { currentData: editingViewDataData } = useGetViewQuery(\n { viewId: editingView as string, projectName: projectName, viewType: viewType as string },\n { skip: !(typeof editingView === 'string') || !powerLicense },\n )\n\n const editingViewData = useMemo(\n () => (editingView === editingViewDataData?.id ? editingViewDataData : undefined),\n [editingView, editingViewDataData],\n )\n\n const { onSaveViewFromCurrent } = useSaveViewFromCurrent({\n viewType: viewType,\n projectName,\n sourceSettings: viewSettings,\n onUpdateView: onUpdateView,\n })\n\n // Reset working view to default (empty) settings\n const resetWorkingView = useCallback(async () => {\n try {\n await onResetWorkingView({\n existingWorkingViewId: workingView?.id,\n selectedViewId: selectedView?.id,\n setSelectedView,\n setSettingsChanged: setViewSettingsChanged,\n notify: true,\n })\n } catch (error) {\n console.error('Failed to reset view:', error)\n }\n }, [workingView, onResetWorkingView, selectedView, setSelectedView, setViewSettingsChanged])\n\n // build the menu items for the views\n const viewMenuItems = useBuildViewMenuItems({\n viewsList,\n workingView,\n viewType,\n projectName,\n currentUser,\n useWorkingView: !powerLicense,\n editingViewId,\n onResetWorkingView,\n onSelect: (viewId) => {\n setSelectedView(viewId)\n // reset the settings changed state when switching views\n setViewSettingsChanged(false)\n // close the menu when selecting a view\n setIsMenuOpen(false)\n },\n onEdit: (viewId) => setEditingView(viewId),\n onSave: async (viewId) => onSaveViewFromCurrent(viewId),\n })\n\n const value: ViewsContextValue = {\n viewType,\n projectName,\n isMenuOpen,\n editingView,\n currentUser,\n selectedView,\n viewSettings,\n workingSettings,\n editingViewData,\n viewsList,\n workingView,\n editingViewId,\n viewMenuItems,\n isLoadingViews,\n isViewWorking,\n // data\n shareOptions,\n setIsMenuOpen,\n setEditingView,\n setSelectedView,\n onSettingsChanged: setViewSettingsChanged,\n // mutations\n onCreateView,\n onUpdateView,\n onDeleteView,\n // shared actions\n resetWorkingView,\n // api\n api: viewsQueries,\n dispatch,\n }\n\n return <ViewsContext.Provider value={value}>{children}</ViewsContext.Provider>\n}\n\nexport const useViewsContext = (): ViewsContextValue => {\n const context = useContext(ViewsContext)\n if (!context) {\n throw new Error('useViewsContext must be used within a ViewsProvider')\n }\n return context\n}\n"],"names":["createContext","usePowerpack","useGetCurrentUserQuery","useViewsMutations","useState","useLocalStorage","useGetShareOptionsQuery","useSelectedView","useViewSettingsChanged","useListViewsQuery","useGetWorkingViewQuery","WORKING_VIEW_ID","useGetViewQuery","useMemo","useSaveViewFromCurrent","useCallback","useBuildViewMenuItems","viewsQueries","jsx","useContext"],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports } from "../../../../../_virtual/jsx-runtime.es.js";
|
|
2
|
-
import { createContext, useState, useMemo, useContext } from "react";
|
|
2
|
+
import { createContext, useState, useMemo, useCallback, useContext } from "react";
|
|
3
3
|
import "react-dom";
|
|
4
4
|
import "../Views.styled.es.js";
|
|
5
5
|
import "clsx";
|
|
6
6
|
import { WORKING_VIEW_ID } from "../ViewsMenuContainer/ViewsMenuContainer.es.js";
|
|
7
|
+
import { useLocalStorage } from "../../../hooks/useLocalStorage.es.js";
|
|
7
8
|
import "../../../context/RemoteModulesContext.es.js";
|
|
8
9
|
import "../../../../../_virtual/runtime.es.js";
|
|
9
10
|
import "../../../../../_virtual/semver.es.js";
|
|
@@ -54,6 +55,7 @@ import "../../../api/queries/addons/updateAddons.es.js";
|
|
|
54
55
|
import "../../../api/queries/attributes/getAttributes.es.js";
|
|
55
56
|
import "../../../api/queries/attributes/updateAttributes.es.js";
|
|
56
57
|
import "../../../api/queries/authentication/getAuthentication.es.js";
|
|
58
|
+
import "../../../api/queries/cloud/cloud.es.js";
|
|
57
59
|
import "../../../api/queries/entities/getEntity.es.js";
|
|
58
60
|
import "../../../api/queries/entities/getEntityPanel.es.js";
|
|
59
61
|
import "../../../api/queries/entities/updateEntity.es.js";
|
|
@@ -62,24 +64,24 @@ import "../../../api/queries/entityLists/updateLists.es.js";
|
|
|
62
64
|
import "../../../api/queries/entityLists/getListsAttributes.es.js";
|
|
63
65
|
import "../../../api/queries/entityLists/updateListsAttributes.es.js";
|
|
64
66
|
import "../../../api/queries/folders/getFolders.es.js";
|
|
67
|
+
import "../../../api/queries/grouping/getGrouping.es.js";
|
|
65
68
|
import "../../../api/queries/overview/getOverview.es.js";
|
|
66
69
|
import "../../../api/queries/overview/updateOverview.es.js";
|
|
70
|
+
import "../../../api/queries/permissions/getPermissions.es.js";
|
|
71
|
+
import "../../../api/queries/products/createProduct.es.js";
|
|
67
72
|
import "../../../api/queries/project/getProject.es.js";
|
|
68
73
|
import "../../../api/queries/project/updateProject.es.js";
|
|
69
74
|
import "../../../api/queries/review/getReview.es.js";
|
|
70
75
|
import "../../../api/queries/review/updateReview.es.js";
|
|
76
|
+
import { useGetShareOptionsQuery } from "../../../api/queries/share/share.es.js";
|
|
71
77
|
import "../../../api/queries/system/getSystem.es.js";
|
|
72
78
|
import "../../../api/queries/userDashboard/getUserDashboard.es.js";
|
|
73
79
|
import { useGetCurrentUserQuery } from "../../../api/queries/users/getUsers.es.js";
|
|
74
80
|
import "../../../api/queries/users/updateUsers.es.js";
|
|
75
|
-
import "../../../api/queries/watchers/getWatchers.es.js";
|
|
76
|
-
import "../../../api/queries/permissions/getPermissions.es.js";
|
|
77
|
-
import "../../../api/queries/grouping/getGrouping.es.js";
|
|
78
81
|
import "../../../api/queries/versions/updateVersions.es.js";
|
|
79
|
-
import "../../../api/queries/products/createProduct.es.js";
|
|
80
|
-
import "../../../api/queries/cloud/cloud.es.js";
|
|
81
82
|
import { useListViewsQuery, useGetWorkingViewQuery, useGetViewQuery } from "../../../api/queries/views/getViews.es.js";
|
|
82
83
|
import { viewsQueries as updateViewsApi } from "../../../api/queries/views/updateViews.es.js";
|
|
84
|
+
import "../../../api/queries/watchers/getWatchers.es.js";
|
|
83
85
|
import "lodash";
|
|
84
86
|
import "react-toastify";
|
|
85
87
|
import "../../../context/DetailsPanelContext.es.js";
|
|
@@ -116,9 +118,20 @@ const ViewsProvider = ({
|
|
|
116
118
|
powerLicense = debug.powerLicense;
|
|
117
119
|
}
|
|
118
120
|
const { data: currentUser } = useGetCurrentUserQuery();
|
|
119
|
-
const { onCreateView, onDeleteView, onUpdateView } = useViewsMutations({
|
|
121
|
+
const { onCreateView, onDeleteView, onUpdateView, onResetWorkingView } = useViewsMutations({
|
|
122
|
+
viewType,
|
|
123
|
+
projectName
|
|
124
|
+
});
|
|
120
125
|
const [isMenuOpen, setIsMenuOpen] = useState(false);
|
|
121
126
|
const [editingView, setEditingView] = useState(null);
|
|
127
|
+
const [collapsedSections, setCollapsedSections] = useLocalStorage(
|
|
128
|
+
"collapsed-views",
|
|
129
|
+
{}
|
|
130
|
+
);
|
|
131
|
+
const { data: shareOptions } = useGetShareOptionsQuery(
|
|
132
|
+
{ projectName },
|
|
133
|
+
{ skip: !powerLicense || !editingView }
|
|
134
|
+
);
|
|
122
135
|
const [selectedView, setSelectedView, previousSelectedViewId] = useSelectedView({
|
|
123
136
|
viewType,
|
|
124
137
|
projectName
|
|
@@ -152,6 +165,19 @@ const ViewsProvider = ({
|
|
|
152
165
|
sourceSettings: viewSettings,
|
|
153
166
|
onUpdateView
|
|
154
167
|
});
|
|
168
|
+
const resetWorkingView = useCallback(async () => {
|
|
169
|
+
try {
|
|
170
|
+
await onResetWorkingView({
|
|
171
|
+
existingWorkingViewId: workingView == null ? void 0 : workingView.id,
|
|
172
|
+
selectedViewId: selectedView == null ? void 0 : selectedView.id,
|
|
173
|
+
setSelectedView,
|
|
174
|
+
setSettingsChanged: setViewSettingsChanged,
|
|
175
|
+
notify: true
|
|
176
|
+
});
|
|
177
|
+
} catch (error) {
|
|
178
|
+
console.error("Failed to reset view:", error);
|
|
179
|
+
}
|
|
180
|
+
}, [workingView, onResetWorkingView, selectedView, setSelectedView, setViewSettingsChanged]);
|
|
155
181
|
const viewMenuItems = useBuildViewMenuItems({
|
|
156
182
|
viewsList,
|
|
157
183
|
workingView,
|
|
@@ -160,9 +186,11 @@ const ViewsProvider = ({
|
|
|
160
186
|
currentUser,
|
|
161
187
|
useWorkingView: !powerLicense,
|
|
162
188
|
editingViewId,
|
|
189
|
+
onResetWorkingView,
|
|
163
190
|
onSelect: (viewId) => {
|
|
164
191
|
setSelectedView(viewId);
|
|
165
192
|
setViewSettingsChanged(false);
|
|
193
|
+
setIsMenuOpen(false);
|
|
166
194
|
},
|
|
167
195
|
onEdit: (viewId) => setEditingView(viewId),
|
|
168
196
|
onSave: async (viewId) => onSaveViewFromCurrent(viewId)
|
|
@@ -183,6 +211,8 @@ const ViewsProvider = ({
|
|
|
183
211
|
viewMenuItems,
|
|
184
212
|
isLoadingViews,
|
|
185
213
|
isViewWorking,
|
|
214
|
+
// data
|
|
215
|
+
shareOptions,
|
|
186
216
|
setIsMenuOpen,
|
|
187
217
|
setEditingView,
|
|
188
218
|
setSelectedView,
|
|
@@ -191,6 +221,8 @@ const ViewsProvider = ({
|
|
|
191
221
|
onCreateView,
|
|
192
222
|
onUpdateView,
|
|
193
223
|
onDeleteView,
|
|
224
|
+
// shared actions
|
|
225
|
+
resetWorkingView,
|
|
194
226
|
// api
|
|
195
227
|
api: updateViewsApi,
|
|
196
228
|
dispatch
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewsContext.es.js","sources":["../../../../../../src/containers/Views/context/ViewsContext.tsx"],"sourcesContent":["import { createContext, useContext, FC, ReactNode, useState, useMemo, useCallback } from 'react'\nimport { ViewType, WORKING_VIEW_ID } from '../index'\nimport {\n GetDefaultViewApiResponse,\n useGetCurrentUserQuery,\n useGetWorkingViewQuery,\n useGetViewQuery,\n useListViewsQuery,\n UserModel,\n ViewListItemModel,\n viewsQueries,\n} from '@shared/api'\nimport useBuildViewMenuItems from '../hooks/useBuildViewMenuItems'\nimport { ViewMenuItem } from '../ViewsMenu/ViewsMenu'\nimport { usePowerpack } from '@shared/context'\nimport { useSelectedView } from '../hooks/useSelectedView'\nimport { UseViewMutations, useViewsMutations } from '../hooks/useViewsMutations'\nimport { useSaveViewFromCurrent } from '../hooks/useSaveViewFromCurrent'\nimport { useViewSettingsChanged } from '../hooks/useViewSettingsChanged'\n\nexport type ViewData = GetDefaultViewApiResponse\nexport type ViewSettings = GetDefaultViewApiResponse['settings']\nexport type SelectedViewState = ViewData | undefined // id of view otherwise null with use working\nexport type EditingViewState = string | true | null // id of view being edited otherwise null\n\nconst viewTypes = ['overview', 'taskProgress', 'lists'] as const\nexport interface ViewsContextValue {\n // State\n viewType?: ViewType\n projectName?: string\n currentUser?: UserModel\n isMenuOpen: boolean\n editingView: EditingViewState\n selectedView: SelectedViewState\n\n // Views data\n viewsList: ViewListItemModel[]\n viewSettings: ViewSettings | undefined\n workingSettings: ViewSettings | undefined\n workingView: ViewListItemModel | undefined\n editingViewId: string | undefined\n viewMenuItems: ViewMenuItem[]\n editingViewData?: ViewData\n isLoadingViews: boolean\n isViewWorking: boolean\n\n // Actions\n setIsMenuOpen: (open: boolean) => void\n setEditingView: (editing: EditingViewState) => void\n setSelectedView: (viewId: string) => void\n onSettingsChanged: (changed: boolean) => void\n\n // Mutations\n onCreateView: UseViewMutations['onCreateView']\n onDeleteView: UseViewMutations['onDeleteView']\n onUpdateView: UseViewMutations['onUpdateView']\n\n // api\n api: typeof viewsQueries\n dispatch: any\n}\n\nconst ViewsContext = createContext<ViewsContextValue | null>(null)\n\nexport interface ViewsProviderProps {\n children: ReactNode\n viewType?: string\n projectName?: string\n dispatch?: any\n debug?: {\n powerLicense?: boolean\n }\n}\n\nexport const ViewsProvider: FC<ViewsProviderProps> = ({\n children,\n viewType: viewTypeProp,\n projectName,\n dispatch,\n debug,\n}) => {\n // validate viewType\n const viewType = viewTypes.includes(viewTypeProp as ViewType)\n ? (viewTypeProp as ViewType)\n : undefined\n\n let { powerLicense } = usePowerpack()\n if (debug?.powerLicense !== undefined) {\n console.warn('Using debug power license:', debug.powerLicense)\n powerLicense = debug.powerLicense\n }\n\n const { data: currentUser } = useGetCurrentUserQuery()\n\n const { onCreateView, onDeleteView, onUpdateView } = useViewsMutations({ viewType, projectName })\n\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n const [editingView, setEditingView] = useState<EditingViewState>(null)\n\n // setting of default views\n const [selectedView, setSelectedView, previousSelectedViewId] = useSelectedView({\n viewType: viewType as string,\n projectName: projectName,\n })\n\n const [viewSettingsChanged, setViewSettingsChanged] = useViewSettingsChanged({\n viewType: viewType as ViewType,\n })\n\n // Fetch views data\n const { currentData: viewsList = [], isLoading: isLoadingViews } = useListViewsQuery(\n { projectName: projectName, viewType: viewType as string },\n { skip: !viewType },\n )\n\n // always get your working view\n const { currentData: workingView } = useGetWorkingViewQuery(\n { projectName: projectName, viewType: viewType as string },\n { skip: !viewType },\n )\n\n const workingSettings = workingView?.settings\n\n // which settings to use for the view\n const viewSettings =\n !selectedView || selectedView.id === WORKING_VIEW_ID ? workingSettings : selectedView?.settings\n\n // is the working view selected?\n const isViewWorking = selectedView?.id === workingView?.id\n // were we just on a custom view and then edited it and ended up on the working view\n const editingViewId =\n viewSettingsChanged &&\n isViewWorking &&\n !!previousSelectedViewId &&\n previousSelectedViewId !== workingView?.id\n ? previousSelectedViewId\n : undefined\n\n // get data for the view we are editing\n const { currentData: editingViewDataData } = useGetViewQuery(\n { viewId: editingView as string, projectName: projectName, viewType: viewType as string },\n { skip: !(typeof editingView === 'string') || !powerLicense },\n )\n\n const editingViewData = useMemo(\n () => (editingView === editingViewDataData?.id ? editingViewDataData : undefined),\n [editingView, editingViewDataData],\n )\n\n const { onSaveViewFromCurrent } = useSaveViewFromCurrent({\n viewType: viewType,\n projectName,\n sourceSettings: viewSettings,\n onUpdateView: onUpdateView,\n })\n\n // build the menu items for the views\n const viewMenuItems = useBuildViewMenuItems({\n viewsList,\n workingView,\n viewType,\n projectName,\n currentUser,\n useWorkingView: !powerLicense,\n editingViewId,\n onSelect: (viewId) => {\n setSelectedView(viewId)\n // reset the settings changed state when switching views\n setViewSettingsChanged(false)\n },\n onEdit: (viewId) => setEditingView(viewId),\n onSave: async (viewId) => onSaveViewFromCurrent(viewId),\n })\n\n const value: ViewsContextValue = {\n viewType,\n projectName,\n isMenuOpen,\n editingView,\n currentUser,\n selectedView,\n viewSettings,\n workingSettings,\n editingViewData,\n viewsList,\n workingView,\n editingViewId,\n viewMenuItems,\n isLoadingViews,\n isViewWorking,\n setIsMenuOpen,\n setEditingView,\n setSelectedView,\n onSettingsChanged: setViewSettingsChanged,\n // mutations\n onCreateView,\n onUpdateView,\n onDeleteView,\n // api\n api: viewsQueries,\n dispatch,\n }\n\n return <ViewsContext.Provider value={value}>{children}</ViewsContext.Provider>\n}\n\nexport const useViewsContext = (): ViewsContextValue => {\n const context = useContext(ViewsContext)\n if (!context) {\n throw new Error('useViewsContext must be used within a ViewsProvider')\n }\n return context\n}\n"],"names":["viewsQueries","jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ViewsContext.es.js","sources":["../../../../../../src/containers/Views/context/ViewsContext.tsx"],"sourcesContent":["import { createContext, useContext, FC, ReactNode, useState, useMemo, useCallback } from 'react'\nimport { ViewType, WORKING_VIEW_ID } from '../index'\nimport {\n GetDefaultViewApiResponse,\n useGetCurrentUserQuery,\n useGetWorkingViewQuery,\n useGetViewQuery,\n useListViewsQuery,\n UserModel,\n ViewListItemModel,\n viewsQueries,\n useGetShareOptionsQuery,\n ShareOption,\n} from '@shared/api'\nimport useBuildViewMenuItems from '../hooks/useBuildViewMenuItems'\nimport { ViewMenuItem } from '../ViewsMenu/ViewsMenu'\nimport { usePowerpack } from '@shared/context'\nimport { useSelectedView } from '../hooks/useSelectedView'\nimport { UseViewMutations, useViewsMutations } from '../hooks/useViewsMutations'\nimport { useSaveViewFromCurrent } from '../hooks/useSaveViewFromCurrent'\nimport { useViewSettingsChanged } from '../hooks/useViewSettingsChanged'\nimport { useLocalStorage } from '@shared/hooks'\n\nexport type ViewData = GetDefaultViewApiResponse\nexport type ViewSettings = GetDefaultViewApiResponse['settings']\nexport type SelectedViewState = ViewData | undefined // id of view otherwise null with use working\nexport type EditingViewState = string | true | null // id of view being edited otherwise null\n\nconst viewTypes = ['overview', 'taskProgress', 'lists'] as const\nexport interface ViewsContextValue {\n // State\n viewType?: ViewType\n projectName?: string\n currentUser?: UserModel\n isMenuOpen: boolean\n editingView: EditingViewState\n selectedView: SelectedViewState\n\n // Views data\n viewsList: ViewListItemModel[]\n viewSettings: ViewSettings | undefined\n workingSettings: ViewSettings | undefined\n workingView: ViewListItemModel | undefined\n editingViewId: string | undefined\n viewMenuItems: ViewMenuItem[]\n editingViewData?: ViewData\n isLoadingViews: boolean\n isViewWorking: boolean\n\n // Data\n shareOptions?: ShareOption[] // available users to share with (undefined means loading)\n\n // Actions\n setIsMenuOpen: (open: boolean) => void\n setEditingView: (editing: EditingViewState) => void\n setSelectedView: (viewId: string) => void\n onSettingsChanged: (changed: boolean) => void\n\n // Mutations\n onCreateView: UseViewMutations['onCreateView']\n onDeleteView: UseViewMutations['onDeleteView']\n onUpdateView: UseViewMutations['onUpdateView']\n\n // Actions (shared)\n resetWorkingView: () => Promise<void>\n\n // api\n api: typeof viewsQueries\n dispatch: any\n}\n\nconst ViewsContext = createContext<ViewsContextValue | null>(null)\n\nexport interface ViewsProviderProps {\n children: ReactNode\n viewType?: string\n projectName?: string\n dispatch?: any\n debug?: {\n powerLicense?: boolean\n }\n}\n\nexport const ViewsProvider: FC<ViewsProviderProps> = ({\n children,\n viewType: viewTypeProp,\n projectName,\n dispatch,\n debug,\n}) => {\n // validate viewType\n const viewType = viewTypes.includes(viewTypeProp as ViewType)\n ? (viewTypeProp as ViewType)\n : undefined\n\n let { powerLicense } = usePowerpack()\n if (debug?.powerLicense !== undefined) {\n console.warn('Using debug power license:', debug.powerLicense)\n powerLicense = debug.powerLicense\n }\n\n const { data: currentUser } = useGetCurrentUserQuery()\n\n const { onCreateView, onDeleteView, onUpdateView, onResetWorkingView } = useViewsMutations({\n viewType,\n projectName,\n })\n\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n const [editingView, setEditingView] = useState<EditingViewState>(null)\n const [collapsedSections, setCollapsedSections] = useLocalStorage<Record<string, boolean>>(\n 'collapsed-views',\n {},\n )\n\n // when editing the view, get all users that can be shared to that view\n const { data: shareOptions } = useGetShareOptionsQuery(\n { projectName },\n { skip: !powerLicense || !editingView },\n )\n\n // setting of default views\n const [selectedView, setSelectedView, previousSelectedViewId] = useSelectedView({\n viewType: viewType as string,\n projectName: projectName,\n })\n\n const [viewSettingsChanged, setViewSettingsChanged] = useViewSettingsChanged({\n viewType: viewType as ViewType,\n })\n\n // Fetch views data\n const { currentData: viewsList = [], isLoading: isLoadingViews } = useListViewsQuery(\n { projectName: projectName, viewType: viewType as string },\n { skip: !viewType },\n )\n\n // always get your working view\n const { currentData: workingView } = useGetWorkingViewQuery(\n { projectName: projectName, viewType: viewType as string },\n { skip: !viewType },\n )\n\n const workingSettings = workingView?.settings\n\n // which settings to use for the view\n const viewSettings =\n !selectedView || selectedView.id === WORKING_VIEW_ID ? workingSettings : selectedView?.settings\n\n // is the working view selected?\n const isViewWorking = selectedView?.id === workingView?.id\n // were we just on a custom view and then edited it and ended up on the working view\n const editingViewId =\n viewSettingsChanged &&\n isViewWorking &&\n !!previousSelectedViewId &&\n previousSelectedViewId !== workingView?.id\n ? previousSelectedViewId\n : undefined\n\n // get data for the view we are editing\n const { currentData: editingViewDataData } = useGetViewQuery(\n { viewId: editingView as string, projectName: projectName, viewType: viewType as string },\n { skip: !(typeof editingView === 'string') || !powerLicense },\n )\n\n const editingViewData = useMemo(\n () => (editingView === editingViewDataData?.id ? editingViewDataData : undefined),\n [editingView, editingViewDataData],\n )\n\n const { onSaveViewFromCurrent } = useSaveViewFromCurrent({\n viewType: viewType,\n projectName,\n sourceSettings: viewSettings,\n onUpdateView: onUpdateView,\n })\n\n // Reset working view to default (empty) settings\n const resetWorkingView = useCallback(async () => {\n try {\n await onResetWorkingView({\n existingWorkingViewId: workingView?.id,\n selectedViewId: selectedView?.id,\n setSelectedView,\n setSettingsChanged: setViewSettingsChanged,\n notify: true,\n })\n } catch (error) {\n console.error('Failed to reset view:', error)\n }\n }, [workingView, onResetWorkingView, selectedView, setSelectedView, setViewSettingsChanged])\n\n // build the menu items for the views\n const viewMenuItems = useBuildViewMenuItems({\n viewsList,\n workingView,\n viewType,\n projectName,\n currentUser,\n useWorkingView: !powerLicense,\n editingViewId,\n onResetWorkingView,\n onSelect: (viewId) => {\n setSelectedView(viewId)\n // reset the settings changed state when switching views\n setViewSettingsChanged(false)\n // close the menu when selecting a view\n setIsMenuOpen(false)\n },\n onEdit: (viewId) => setEditingView(viewId),\n onSave: async (viewId) => onSaveViewFromCurrent(viewId),\n })\n\n const value: ViewsContextValue = {\n viewType,\n projectName,\n isMenuOpen,\n editingView,\n currentUser,\n selectedView,\n viewSettings,\n workingSettings,\n editingViewData,\n viewsList,\n workingView,\n editingViewId,\n viewMenuItems,\n isLoadingViews,\n isViewWorking,\n // data\n shareOptions,\n setIsMenuOpen,\n setEditingView,\n setSelectedView,\n onSettingsChanged: setViewSettingsChanged,\n // mutations\n onCreateView,\n onUpdateView,\n onDeleteView,\n // shared actions\n resetWorkingView,\n // api\n api: viewsQueries,\n dispatch,\n }\n\n return <ViewsContext.Provider value={value}>{children}</ViewsContext.Provider>\n}\n\nexport const useViewsContext = (): ViewsContextValue => {\n const context = useContext(ViewsContext)\n if (!context) {\n throw new Error('useViewsContext must be used within a ViewsProvider')\n }\n return context\n}\n"],"names":["viewsQueries","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAM,YAAY,CAAC,YAAY,gBAAgB,OAAO;AA2CtD,MAAM,eAAe,cAAwC,IAAI;AAY1D,MAAM,gBAAwC,CAAC;AAAA,EACpD;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AACF,MAAM;AAEJ,QAAM,WAAW,UAAU,SAAS,YAAwB,IACvD,eACD;AAEA,MAAA,EAAE,aAAa,IAAI,aAAa;AAChC,OAAA,+BAAO,kBAAiB,QAAW;AAC7B,YAAA,KAAK,8BAA8B,MAAM,YAAY;AAC7D,mBAAe,MAAM;AAAA,EAAA;AAGvB,QAAM,EAAE,MAAM,YAAY,IAAI,uBAAuB;AAErD,QAAM,EAAE,cAAc,cAAc,cAAc,mBAAA,IAAuB,kBAAkB;AAAA,IACzF;AAAA,IACA;AAAA,EAAA,CACD;AAED,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAClD,QAAM,CAAC,aAAa,cAAc,IAAI,SAA2B,IAAI;AAC/D,QAAA,CAAC,mBAAmB,oBAAoB,IAAI;AAAA,IAChD;AAAA,IACA,CAAA;AAAA,EACF;AAGM,QAAA,EAAE,MAAM,aAAA,IAAiB;AAAA,IAC7B,EAAE,YAAY;AAAA,IACd,EAAE,MAAM,CAAC,gBAAgB,CAAC,YAAY;AAAA,EACxC;AAGA,QAAM,CAAC,cAAc,iBAAiB,sBAAsB,IAAI,gBAAgB;AAAA,IAC9E;AAAA,IACA;AAAA,EAAA,CACD;AAED,QAAM,CAAC,qBAAqB,sBAAsB,IAAI,uBAAuB;AAAA,IAC3E;AAAA,EAAA,CACD;AAGD,QAAM,EAAE,aAAa,YAAY,CAAI,GAAA,WAAW,mBAAmB;AAAA,IACjE,EAAE,aAA0B,SAA6B;AAAA,IACzD,EAAE,MAAM,CAAC,SAAS;AAAA,EACpB;AAGM,QAAA,EAAE,aAAa,YAAA,IAAgB;AAAA,IACnC,EAAE,aAA0B,SAA6B;AAAA,IACzD,EAAE,MAAM,CAAC,SAAS;AAAA,EACpB;AAEA,QAAM,kBAAkB,2CAAa;AAGrC,QAAM,eACJ,CAAC,gBAAgB,aAAa,OAAO,kBAAkB,kBAAkB,6CAAc;AAGnF,QAAA,iBAAgB,6CAAc,SAAO,2CAAa;AAElD,QAAA,gBACJ,uBACA,iBACA,CAAC,CAAC,0BACF,4BAA2B,2CAAa,MACpC,yBACA;AAGA,QAAA,EAAE,aAAa,oBAAA,IAAwB;AAAA,IAC3C,EAAE,QAAQ,aAAuB,aAA0B,SAA6B;AAAA,IACxF,EAAE,MAAM,EAAE,OAAO,gBAAgB,aAAa,CAAC,aAAa;AAAA,EAC9D;AAEA,QAAM,kBAAkB;AAAA,IACtB,MAAO,iBAAgB,2DAAqB,MAAK,sBAAsB;AAAA,IACvE,CAAC,aAAa,mBAAmB;AAAA,EACnC;AAEM,QAAA,EAAE,sBAAsB,IAAI,uBAAuB;AAAA,IACvD;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB;AAAA,EAAA,CACD;AAGK,QAAA,mBAAmB,YAAY,YAAY;AAC3C,QAAA;AACF,YAAM,mBAAmB;AAAA,QACvB,uBAAuB,2CAAa;AAAA,QACpC,gBAAgB,6CAAc;AAAA,QAC9B;AAAA,QACA,oBAAoB;AAAA,QACpB,QAAQ;AAAA,MAAA,CACT;AAAA,aACM,OAAO;AACN,cAAA,MAAM,yBAAyB,KAAK;AAAA,IAAA;AAAA,EAC9C,GACC,CAAC,aAAa,oBAAoB,cAAc,iBAAiB,sBAAsB,CAAC;AAG3F,QAAM,gBAAgB,sBAAsB;AAAA,IAC1C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB,CAAC;AAAA,IACjB;AAAA,IACA;AAAA,IACA,UAAU,CAAC,WAAW;AACpB,sBAAgB,MAAM;AAEtB,6BAAuB,KAAK;AAE5B,oBAAc,KAAK;AAAA,IACrB;AAAA,IACA,QAAQ,CAAC,WAAW,eAAe,MAAM;AAAA,IACzC,QAAQ,OAAO,WAAW,sBAAsB,MAAM;AAAA,EAAA,CACvD;AAED,QAAM,QAA2B;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA;AAAA,IAEnB;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA,KAAKA;AAAAA,IACL;AAAA,EACF;AAEA,SAAQC,kCAAAA,IAAA,aAAa,UAAb,EAAsB,OAAe,SAAS,CAAA;AACxD;AAEO,MAAM,kBAAkB,MAAyB;AAChD,QAAA,UAAU,WAAW,YAAY;AACvC,MAAI,CAAC,SAAS;AACN,UAAA,IAAI,MAAM,qDAAqD;AAAA,EAAA;AAEhE,SAAA;AACT;"}
|
|
@@ -38,6 +38,18 @@ const useOverviewViewSettings = () => {
|
|
|
38
38
|
);
|
|
39
39
|
const onUpdateHierarchy = React.useCallback(
|
|
40
40
|
async (newShowHierarchy) => {
|
|
41
|
+
if (newShowHierarchy && (columns == null ? void 0 : columns.groupBy)) {
|
|
42
|
+
const clearedColumns = { ...columns, groupBy: void 0 };
|
|
43
|
+
setLocalColumns(clearedColumns);
|
|
44
|
+
const settings = columnConfigConverter.convertTanstackStatesToColumnConfig(clearedColumns);
|
|
45
|
+
await updateViewSettings(
|
|
46
|
+
{ ...settings, showHierarchy: true },
|
|
47
|
+
setLocalHierarchy,
|
|
48
|
+
newShowHierarchy,
|
|
49
|
+
{ errorMessage: "Failed to update hierarchy setting" }
|
|
50
|
+
);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
41
53
|
await updateViewSettings(
|
|
42
54
|
{ showHierarchy: newShowHierarchy },
|
|
43
55
|
setLocalHierarchy,
|
|
@@ -45,14 +57,28 @@ const useOverviewViewSettings = () => {
|
|
|
45
57
|
{ errorMessage: "Failed to update hierarchy setting" }
|
|
46
58
|
);
|
|
47
59
|
},
|
|
48
|
-
[updateViewSettings]
|
|
60
|
+
[updateViewSettings, columns]
|
|
49
61
|
);
|
|
50
62
|
const onUpdateColumns = React.useCallback(
|
|
51
63
|
async (tableSettings, allColumnIds) => {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
64
|
+
var _a, _b;
|
|
65
|
+
const derivedAll = allColumnIds || [
|
|
66
|
+
...tableSettings.columnOrder || [],
|
|
67
|
+
...Object.keys(tableSettings.columnVisibility || {}),
|
|
68
|
+
...((_a = tableSettings.columnPinning) == null ? void 0 : _a.left) || [],
|
|
69
|
+
...((_b = tableSettings.columnPinning) == null ? void 0 : _b.right) || []
|
|
70
|
+
].filter(Boolean).filter((v, i, a) => a.indexOf(v) === i);
|
|
71
|
+
const settings = columnConfigConverter.convertTanstackStatesToColumnConfig(tableSettings, derivedAll);
|
|
72
|
+
const hasGroupBy = !!tableSettings.groupBy;
|
|
73
|
+
if (hasGroupBy) {
|
|
74
|
+
setLocalHierarchy(false);
|
|
75
|
+
}
|
|
76
|
+
await updateViewSettings(
|
|
77
|
+
hasGroupBy ? { ...settings, showHierarchy: false } : settings,
|
|
78
|
+
setLocalColumns,
|
|
79
|
+
tableSettings,
|
|
80
|
+
{ errorMessage: "Failed to update columns" }
|
|
81
|
+
);
|
|
56
82
|
},
|
|
57
83
|
[updateViewSettings]
|
|
58
84
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOverviewViewSettings.cjs.js","sources":["../../../../../../../src/containers/Views/hooks/pages/useOverviewViewSettings.ts"],"sourcesContent":["/**\n * Unified hook for managing all overview page view settings.\n *\n * The hook handles:\n * - Filter settings (QueryFilter format)\n * - Hierarchy visibility toggle\n * - Column configurations (ColumnsConfig format)\n *\n * Must be used within a ViewsProvider context.\n */\n\nimport { useViewsContext } from '../../context/ViewsContext'\nimport { OverviewSettings } from '@shared/api'\nimport { ColumnsConfig } from '@shared/containers/ProjectTreeTable'\nimport {\n convertColumnConfigToTanstackStates,\n convertTanstackStatesToColumnConfig,\n} from '@shared/util'\nimport { useViewUpdateHelper } from '../../utils/viewUpdateHelper'\nimport { useState, useEffect, useCallback, useMemo } from 'react'\n\n// Import the internal QueryFilter type that the app uses\nimport { QueryFilter } from '@shared/containers/ProjectTreeTable/types/operations'\n\ntype Return = {\n // Filter management\n filters: QueryFilter\n onUpdateFilters: (filters: QueryFilter) => void\n\n // Hierarchy management\n showHierarchy: boolean\n onUpdateHierarchy: (showHierarchy: boolean) => void\n\n // Column management\n columns: ColumnsConfig\n onUpdateColumns: (columns: ColumnsConfig, allColumnIds?: string[]) => void\n}\n\nexport const useOverviewViewSettings = (): Return => {\n // this views context is per page/project\n const { viewSettings } = useViewsContext()\n\n // Local state for immediate updates\n const [localFilters, setLocalFilters] = useState<QueryFilter | null>(null)\n const [localHierarchy, setLocalHierarchy] = useState<boolean | null>(null)\n const [localColumns, setLocalColumns] = useState<ColumnsConfig | null>(null)\n\n // Get view update helper\n const { updateViewSettings } = useViewUpdateHelper()\n\n // Get server settings\n const overviewSettings = viewSettings as OverviewSettings\n const serverFilters = (overviewSettings?.filter as any) ?? {}\n const serverHierarchy = overviewSettings?.showHierarchy ?? true\n const serverColumns = useMemo(\n () => convertColumnConfigToTanstackStates(overviewSettings),\n [JSON.stringify(viewSettings)],\n )\n\n // Sync local state with server when viewSettings change\n useEffect(() => {\n setLocalFilters(null)\n setLocalHierarchy(null)\n setLocalColumns(null)\n }, [JSON.stringify(viewSettings)])\n\n // Use local state if available, otherwise use server state\n const filters = localFilters !== null ? localFilters : serverFilters\n const showHierarchy = localHierarchy !== null ? localHierarchy : serverHierarchy\n const columns = localColumns || serverColumns\n\n // Filter update handler\n const onUpdateFilters = useCallback(\n async (newFilters: QueryFilter) => {\n await updateViewSettings({ filter: newFilters as any }, setLocalFilters, newFilters, {\n errorMessage: 'Failed to update filter settings',\n })\n },\n [updateViewSettings],\n )\n\n // Hierarchy update handler\n const onUpdateHierarchy = useCallback(\n async (newShowHierarchy: boolean) => {\n await updateViewSettings(\n { showHierarchy: newShowHierarchy },\n setLocalHierarchy,\n newShowHierarchy,\n { errorMessage: 'Failed to update hierarchy setting' },\n )\n },\n [updateViewSettings],\n )\n\n // Column update handler\n const onUpdateColumns = useCallback(\n async (tableSettings: ColumnsConfig, allColumnIds?: string[]) => {\n const settings = convertTanstackStatesToColumnConfig(tableSettings,
|
|
1
|
+
{"version":3,"file":"useOverviewViewSettings.cjs.js","sources":["../../../../../../../src/containers/Views/hooks/pages/useOverviewViewSettings.ts"],"sourcesContent":["/**\n * Unified hook for managing all overview page view settings.\n *\n * The hook handles:\n * - Filter settings (QueryFilter format)\n * - Hierarchy visibility toggle\n * - Column configurations (ColumnsConfig format)\n *\n * Must be used within a ViewsProvider context.\n */\n\nimport { useViewsContext } from '../../context/ViewsContext'\nimport { OverviewSettings } from '@shared/api'\nimport { ColumnsConfig } from '@shared/containers/ProjectTreeTable'\nimport {\n convertColumnConfigToTanstackStates,\n convertTanstackStatesToColumnConfig,\n} from '@shared/util'\nimport { useViewUpdateHelper } from '../../utils/viewUpdateHelper'\nimport { useState, useEffect, useCallback, useMemo } from 'react'\n\n// Import the internal QueryFilter type that the app uses\nimport { QueryFilter } from '@shared/containers/ProjectTreeTable/types/operations'\n\ntype Return = {\n // Filter management\n filters: QueryFilter\n onUpdateFilters: (filters: QueryFilter) => void\n\n // Hierarchy management\n showHierarchy: boolean\n onUpdateHierarchy: (showHierarchy: boolean) => void\n\n // Column management\n columns: ColumnsConfig\n onUpdateColumns: (columns: ColumnsConfig, allColumnIds?: string[]) => void\n}\n\nexport const useOverviewViewSettings = (): Return => {\n // this views context is per page/project\n const { viewSettings } = useViewsContext()\n\n // Local state for immediate updates\n const [localFilters, setLocalFilters] = useState<QueryFilter | null>(null)\n const [localHierarchy, setLocalHierarchy] = useState<boolean | null>(null)\n const [localColumns, setLocalColumns] = useState<ColumnsConfig | null>(null)\n\n // Get view update helper\n const { updateViewSettings } = useViewUpdateHelper()\n\n // Get server settings\n const overviewSettings = viewSettings as OverviewSettings\n const serverFilters = (overviewSettings?.filter as any) ?? {}\n const serverHierarchy = overviewSettings?.showHierarchy ?? true\n\n const serverColumns = useMemo(\n () => convertColumnConfigToTanstackStates(overviewSettings),\n [JSON.stringify(viewSettings)],\n )\n\n // Sync local state with server when viewSettings change\n useEffect(() => {\n setLocalFilters(null)\n setLocalHierarchy(null)\n setLocalColumns(null)\n }, [JSON.stringify(viewSettings)])\n\n // Use local state if available, otherwise use server state\n const filters = localFilters !== null ? localFilters : serverFilters\n const showHierarchy = localHierarchy !== null ? localHierarchy : serverHierarchy\n const columns = localColumns || serverColumns\n\n // Filter update handler\n const onUpdateFilters = useCallback(\n async (newFilters: QueryFilter) => {\n await updateViewSettings({ filter: newFilters as any }, setLocalFilters, newFilters, {\n errorMessage: 'Failed to update filter settings',\n })\n },\n [updateViewSettings],\n )\n\n // Hierarchy update handler\n const onUpdateHierarchy = useCallback(\n async (newShowHierarchy: boolean) => {\n // If turning hierarchy ON while grouped, clear groupBy in the same update\n if (newShowHierarchy && (columns as ColumnsConfig)?.groupBy) {\n const clearedColumns: ColumnsConfig = { ...columns, groupBy: undefined }\n // Optimistically update local columns to remove grouping\n setLocalColumns(clearedColumns)\n const settings = convertTanstackStatesToColumnConfig(clearedColumns)\n await updateViewSettings(\n { ...settings, showHierarchy: true },\n setLocalHierarchy,\n newShowHierarchy,\n { errorMessage: 'Failed to update hierarchy setting' },\n )\n return\n }\n\n await updateViewSettings(\n { showHierarchy: newShowHierarchy },\n setLocalHierarchy,\n newShowHierarchy,\n { errorMessage: 'Failed to update hierarchy setting' },\n )\n },\n [updateViewSettings, columns],\n )\n\n // Column update handler\n const onUpdateColumns = useCallback(\n async (tableSettings: ColumnsConfig, allColumnIds?: string[]) => {\n // Derive a stable allColumnIds if not provided to preserve order and grouping on server\n const derivedAll =\n allColumnIds ||\n [\n ...(tableSettings.columnOrder || []),\n ...Object.keys(tableSettings.columnVisibility || {}),\n ...((tableSettings.columnPinning?.left as string[]) || []),\n ...((tableSettings.columnPinning?.right as string[]) || []),\n ]\n .filter(Boolean)\n .filter((v, i, a) => a.indexOf(v) === i)\n\n const settings = convertTanstackStatesToColumnConfig(tableSettings, derivedAll)\n const hasGroupBy = !!tableSettings.groupBy\n\n // If grouping is being set, turn off hierarchy in the same update for consistency\n if (hasGroupBy) {\n // Optimistically reflect hierarchy off\n setLocalHierarchy(false)\n }\n\n await updateViewSettings(\n hasGroupBy ? { ...settings, showHierarchy: false } : settings,\n setLocalColumns,\n tableSettings,\n { errorMessage: 'Failed to update columns' },\n )\n },\n [updateViewSettings],\n )\n\n return {\n filters,\n onUpdateFilters,\n showHierarchy,\n onUpdateHierarchy,\n columns,\n onUpdateColumns,\n }\n}\n"],"names":["useViewsContext","useState","useViewUpdateHelper","useMemo","convertColumnConfigToTanstackStates","useEffect","useCallback","convertTanstackStatesToColumnConfig"],"mappings":";;;;;;;;;AAsCO,MAAM,0BAA0B,MAAc;AAE7C,QAAA,EAAE,aAAa,IAAIA,6BAAgB;AAGzC,QAAM,CAAC,cAAc,eAAe,IAAIC,MAAAA,SAA6B,IAAI;AACzE,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,MAAAA,SAAyB,IAAI;AACzE,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAAA,SAA+B,IAAI;AAGrE,QAAA,EAAE,mBAAmB,IAAIC,qCAAoB;AAGnD,QAAM,mBAAmB;AACnB,QAAA,iBAAiB,qDAAkB,WAAkB,CAAC;AACtD,QAAA,mBAAkB,qDAAkB,kBAAiB;AAE3D,QAAM,gBAAgBC,MAAA;AAAA,IACpB,MAAMC,sBAAAA,oCAAoC,gBAAgB;AAAA,IAC1D,CAAC,KAAK,UAAU,YAAY,CAAC;AAAA,EAC/B;AAGAC,QAAAA,UAAU,MAAM;AACd,oBAAgB,IAAI;AACpB,sBAAkB,IAAI;AACtB,oBAAgB,IAAI;AAAA,KACnB,CAAC,KAAK,UAAU,YAAY,CAAC,CAAC;AAG3B,QAAA,UAAU,iBAAiB,OAAO,eAAe;AACjD,QAAA,gBAAgB,mBAAmB,OAAO,iBAAiB;AACjE,QAAM,UAAU,gBAAgB;AAGhC,QAAM,kBAAkBC,MAAA;AAAA,IACtB,OAAO,eAA4B;AACjC,YAAM,mBAAmB,EAAE,QAAQ,WAAkB,GAAG,iBAAiB,YAAY;AAAA,QACnF,cAAc;AAAA,MAAA,CACf;AAAA,IACH;AAAA,IACA,CAAC,kBAAkB;AAAA,EACrB;AAGA,QAAM,oBAAoBA,MAAA;AAAA,IACxB,OAAO,qBAA8B;AAE/B,UAAA,qBAAqB,mCAA2B,UAAS;AAC3D,cAAM,iBAAgC,EAAE,GAAG,SAAS,SAAS,OAAU;AAEvE,wBAAgB,cAAc;AACxB,cAAA,WAAWC,0DAAoC,cAAc;AAC7D,cAAA;AAAA,UACJ,EAAE,GAAG,UAAU,eAAe,KAAK;AAAA,UACnC;AAAA,UACA;AAAA,UACA,EAAE,cAAc,qCAAqC;AAAA,QACvD;AACA;AAAA,MAAA;AAGI,YAAA;AAAA,QACJ,EAAE,eAAe,iBAAiB;AAAA,QAClC;AAAA,QACA;AAAA,QACA,EAAE,cAAc,qCAAqC;AAAA,MACvD;AAAA,IACF;AAAA,IACA,CAAC,oBAAoB,OAAO;AAAA,EAC9B;AAGA,QAAM,kBAAkBD,MAAA;AAAA,IACtB,OAAO,eAA8B,iBAA4B;;AAE/D,YAAM,aACJ,gBACA;AAAA,QACE,GAAI,cAAc,eAAe,CAAC;AAAA,QAClC,GAAG,OAAO,KAAK,cAAc,oBAAoB,CAAA,CAAE;AAAA,QACnD,KAAK,mBAAc,kBAAd,mBAA6B,SAAqB,CAAC;AAAA,QACxD,KAAK,mBAAc,kBAAd,mBAA6B,UAAsB,CAAA;AAAA,MAEvD,EAAA,OAAO,OAAO,EACd,OAAO,CAAC,GAAG,GAAG,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;AAErC,YAAA,WAAWC,sBAAAA,oCAAoC,eAAe,UAAU;AACxE,YAAA,aAAa,CAAC,CAAC,cAAc;AAGnC,UAAI,YAAY;AAEd,0BAAkB,KAAK;AAAA,MAAA;AAGnB,YAAA;AAAA,QACJ,aAAa,EAAE,GAAG,UAAU,eAAe,MAAU,IAAA;AAAA,QACrD;AAAA,QACA;AAAA,QACA,EAAE,cAAc,2BAA2B;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,CAAC,kBAAkB;AAAA,EACrB;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;"}
|
|
@@ -36,6 +36,18 @@ const useOverviewViewSettings = () => {
|
|
|
36
36
|
);
|
|
37
37
|
const onUpdateHierarchy = useCallback(
|
|
38
38
|
async (newShowHierarchy) => {
|
|
39
|
+
if (newShowHierarchy && (columns == null ? void 0 : columns.groupBy)) {
|
|
40
|
+
const clearedColumns = { ...columns, groupBy: void 0 };
|
|
41
|
+
setLocalColumns(clearedColumns);
|
|
42
|
+
const settings = convertTanstackStatesToColumnConfig(clearedColumns);
|
|
43
|
+
await updateViewSettings(
|
|
44
|
+
{ ...settings, showHierarchy: true },
|
|
45
|
+
setLocalHierarchy,
|
|
46
|
+
newShowHierarchy,
|
|
47
|
+
{ errorMessage: "Failed to update hierarchy setting" }
|
|
48
|
+
);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
39
51
|
await updateViewSettings(
|
|
40
52
|
{ showHierarchy: newShowHierarchy },
|
|
41
53
|
setLocalHierarchy,
|
|
@@ -43,14 +55,28 @@ const useOverviewViewSettings = () => {
|
|
|
43
55
|
{ errorMessage: "Failed to update hierarchy setting" }
|
|
44
56
|
);
|
|
45
57
|
},
|
|
46
|
-
[updateViewSettings]
|
|
58
|
+
[updateViewSettings, columns]
|
|
47
59
|
);
|
|
48
60
|
const onUpdateColumns = useCallback(
|
|
49
61
|
async (tableSettings, allColumnIds) => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
62
|
+
var _a, _b;
|
|
63
|
+
const derivedAll = allColumnIds || [
|
|
64
|
+
...tableSettings.columnOrder || [],
|
|
65
|
+
...Object.keys(tableSettings.columnVisibility || {}),
|
|
66
|
+
...((_a = tableSettings.columnPinning) == null ? void 0 : _a.left) || [],
|
|
67
|
+
...((_b = tableSettings.columnPinning) == null ? void 0 : _b.right) || []
|
|
68
|
+
].filter(Boolean).filter((v, i, a) => a.indexOf(v) === i);
|
|
69
|
+
const settings = convertTanstackStatesToColumnConfig(tableSettings, derivedAll);
|
|
70
|
+
const hasGroupBy = !!tableSettings.groupBy;
|
|
71
|
+
if (hasGroupBy) {
|
|
72
|
+
setLocalHierarchy(false);
|
|
73
|
+
}
|
|
74
|
+
await updateViewSettings(
|
|
75
|
+
hasGroupBy ? { ...settings, showHierarchy: false } : settings,
|
|
76
|
+
setLocalColumns,
|
|
77
|
+
tableSettings,
|
|
78
|
+
{ errorMessage: "Failed to update columns" }
|
|
79
|
+
);
|
|
54
80
|
},
|
|
55
81
|
[updateViewSettings]
|
|
56
82
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOverviewViewSettings.es.js","sources":["../../../../../../../src/containers/Views/hooks/pages/useOverviewViewSettings.ts"],"sourcesContent":["/**\n * Unified hook for managing all overview page view settings.\n *\n * The hook handles:\n * - Filter settings (QueryFilter format)\n * - Hierarchy visibility toggle\n * - Column configurations (ColumnsConfig format)\n *\n * Must be used within a ViewsProvider context.\n */\n\nimport { useViewsContext } from '../../context/ViewsContext'\nimport { OverviewSettings } from '@shared/api'\nimport { ColumnsConfig } from '@shared/containers/ProjectTreeTable'\nimport {\n convertColumnConfigToTanstackStates,\n convertTanstackStatesToColumnConfig,\n} from '@shared/util'\nimport { useViewUpdateHelper } from '../../utils/viewUpdateHelper'\nimport { useState, useEffect, useCallback, useMemo } from 'react'\n\n// Import the internal QueryFilter type that the app uses\nimport { QueryFilter } from '@shared/containers/ProjectTreeTable/types/operations'\n\ntype Return = {\n // Filter management\n filters: QueryFilter\n onUpdateFilters: (filters: QueryFilter) => void\n\n // Hierarchy management\n showHierarchy: boolean\n onUpdateHierarchy: (showHierarchy: boolean) => void\n\n // Column management\n columns: ColumnsConfig\n onUpdateColumns: (columns: ColumnsConfig, allColumnIds?: string[]) => void\n}\n\nexport const useOverviewViewSettings = (): Return => {\n // this views context is per page/project\n const { viewSettings } = useViewsContext()\n\n // Local state for immediate updates\n const [localFilters, setLocalFilters] = useState<QueryFilter | null>(null)\n const [localHierarchy, setLocalHierarchy] = useState<boolean | null>(null)\n const [localColumns, setLocalColumns] = useState<ColumnsConfig | null>(null)\n\n // Get view update helper\n const { updateViewSettings } = useViewUpdateHelper()\n\n // Get server settings\n const overviewSettings = viewSettings as OverviewSettings\n const serverFilters = (overviewSettings?.filter as any) ?? {}\n const serverHierarchy = overviewSettings?.showHierarchy ?? true\n const serverColumns = useMemo(\n () => convertColumnConfigToTanstackStates(overviewSettings),\n [JSON.stringify(viewSettings)],\n )\n\n // Sync local state with server when viewSettings change\n useEffect(() => {\n setLocalFilters(null)\n setLocalHierarchy(null)\n setLocalColumns(null)\n }, [JSON.stringify(viewSettings)])\n\n // Use local state if available, otherwise use server state\n const filters = localFilters !== null ? localFilters : serverFilters\n const showHierarchy = localHierarchy !== null ? localHierarchy : serverHierarchy\n const columns = localColumns || serverColumns\n\n // Filter update handler\n const onUpdateFilters = useCallback(\n async (newFilters: QueryFilter) => {\n await updateViewSettings({ filter: newFilters as any }, setLocalFilters, newFilters, {\n errorMessage: 'Failed to update filter settings',\n })\n },\n [updateViewSettings],\n )\n\n // Hierarchy update handler\n const onUpdateHierarchy = useCallback(\n async (newShowHierarchy: boolean) => {\n await updateViewSettings(\n { showHierarchy: newShowHierarchy },\n setLocalHierarchy,\n newShowHierarchy,\n { errorMessage: 'Failed to update hierarchy setting' },\n )\n },\n [updateViewSettings],\n )\n\n // Column update handler\n const onUpdateColumns = useCallback(\n async (tableSettings: ColumnsConfig, allColumnIds?: string[]) => {\n const settings = convertTanstackStatesToColumnConfig(tableSettings,
|
|
1
|
+
{"version":3,"file":"useOverviewViewSettings.es.js","sources":["../../../../../../../src/containers/Views/hooks/pages/useOverviewViewSettings.ts"],"sourcesContent":["/**\n * Unified hook for managing all overview page view settings.\n *\n * The hook handles:\n * - Filter settings (QueryFilter format)\n * - Hierarchy visibility toggle\n * - Column configurations (ColumnsConfig format)\n *\n * Must be used within a ViewsProvider context.\n */\n\nimport { useViewsContext } from '../../context/ViewsContext'\nimport { OverviewSettings } from '@shared/api'\nimport { ColumnsConfig } from '@shared/containers/ProjectTreeTable'\nimport {\n convertColumnConfigToTanstackStates,\n convertTanstackStatesToColumnConfig,\n} from '@shared/util'\nimport { useViewUpdateHelper } from '../../utils/viewUpdateHelper'\nimport { useState, useEffect, useCallback, useMemo } from 'react'\n\n// Import the internal QueryFilter type that the app uses\nimport { QueryFilter } from '@shared/containers/ProjectTreeTable/types/operations'\n\ntype Return = {\n // Filter management\n filters: QueryFilter\n onUpdateFilters: (filters: QueryFilter) => void\n\n // Hierarchy management\n showHierarchy: boolean\n onUpdateHierarchy: (showHierarchy: boolean) => void\n\n // Column management\n columns: ColumnsConfig\n onUpdateColumns: (columns: ColumnsConfig, allColumnIds?: string[]) => void\n}\n\nexport const useOverviewViewSettings = (): Return => {\n // this views context is per page/project\n const { viewSettings } = useViewsContext()\n\n // Local state for immediate updates\n const [localFilters, setLocalFilters] = useState<QueryFilter | null>(null)\n const [localHierarchy, setLocalHierarchy] = useState<boolean | null>(null)\n const [localColumns, setLocalColumns] = useState<ColumnsConfig | null>(null)\n\n // Get view update helper\n const { updateViewSettings } = useViewUpdateHelper()\n\n // Get server settings\n const overviewSettings = viewSettings as OverviewSettings\n const serverFilters = (overviewSettings?.filter as any) ?? {}\n const serverHierarchy = overviewSettings?.showHierarchy ?? true\n\n const serverColumns = useMemo(\n () => convertColumnConfigToTanstackStates(overviewSettings),\n [JSON.stringify(viewSettings)],\n )\n\n // Sync local state with server when viewSettings change\n useEffect(() => {\n setLocalFilters(null)\n setLocalHierarchy(null)\n setLocalColumns(null)\n }, [JSON.stringify(viewSettings)])\n\n // Use local state if available, otherwise use server state\n const filters = localFilters !== null ? localFilters : serverFilters\n const showHierarchy = localHierarchy !== null ? localHierarchy : serverHierarchy\n const columns = localColumns || serverColumns\n\n // Filter update handler\n const onUpdateFilters = useCallback(\n async (newFilters: QueryFilter) => {\n await updateViewSettings({ filter: newFilters as any }, setLocalFilters, newFilters, {\n errorMessage: 'Failed to update filter settings',\n })\n },\n [updateViewSettings],\n )\n\n // Hierarchy update handler\n const onUpdateHierarchy = useCallback(\n async (newShowHierarchy: boolean) => {\n // If turning hierarchy ON while grouped, clear groupBy in the same update\n if (newShowHierarchy && (columns as ColumnsConfig)?.groupBy) {\n const clearedColumns: ColumnsConfig = { ...columns, groupBy: undefined }\n // Optimistically update local columns to remove grouping\n setLocalColumns(clearedColumns)\n const settings = convertTanstackStatesToColumnConfig(clearedColumns)\n await updateViewSettings(\n { ...settings, showHierarchy: true },\n setLocalHierarchy,\n newShowHierarchy,\n { errorMessage: 'Failed to update hierarchy setting' },\n )\n return\n }\n\n await updateViewSettings(\n { showHierarchy: newShowHierarchy },\n setLocalHierarchy,\n newShowHierarchy,\n { errorMessage: 'Failed to update hierarchy setting' },\n )\n },\n [updateViewSettings, columns],\n )\n\n // Column update handler\n const onUpdateColumns = useCallback(\n async (tableSettings: ColumnsConfig, allColumnIds?: string[]) => {\n // Derive a stable allColumnIds if not provided to preserve order and grouping on server\n const derivedAll =\n allColumnIds ||\n [\n ...(tableSettings.columnOrder || []),\n ...Object.keys(tableSettings.columnVisibility || {}),\n ...((tableSettings.columnPinning?.left as string[]) || []),\n ...((tableSettings.columnPinning?.right as string[]) || []),\n ]\n .filter(Boolean)\n .filter((v, i, a) => a.indexOf(v) === i)\n\n const settings = convertTanstackStatesToColumnConfig(tableSettings, derivedAll)\n const hasGroupBy = !!tableSettings.groupBy\n\n // If grouping is being set, turn off hierarchy in the same update for consistency\n if (hasGroupBy) {\n // Optimistically reflect hierarchy off\n setLocalHierarchy(false)\n }\n\n await updateViewSettings(\n hasGroupBy ? { ...settings, showHierarchy: false } : settings,\n setLocalColumns,\n tableSettings,\n { errorMessage: 'Failed to update columns' },\n )\n },\n [updateViewSettings],\n )\n\n return {\n filters,\n onUpdateFilters,\n showHierarchy,\n onUpdateHierarchy,\n columns,\n onUpdateColumns,\n }\n}\n"],"names":[],"mappings":";;;;;;;AAsCO,MAAM,0BAA0B,MAAc;AAE7C,QAAA,EAAE,aAAa,IAAI,gBAAgB;AAGzC,QAAM,CAAC,cAAc,eAAe,IAAI,SAA6B,IAAI;AACzE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAyB,IAAI;AACzE,QAAM,CAAC,cAAc,eAAe,IAAI,SAA+B,IAAI;AAGrE,QAAA,EAAE,mBAAmB,IAAI,oBAAoB;AAGnD,QAAM,mBAAmB;AACnB,QAAA,iBAAiB,qDAAkB,WAAkB,CAAC;AACtD,QAAA,mBAAkB,qDAAkB,kBAAiB;AAE3D,QAAM,gBAAgB;AAAA,IACpB,MAAM,oCAAoC,gBAAgB;AAAA,IAC1D,CAAC,KAAK,UAAU,YAAY,CAAC;AAAA,EAC/B;AAGA,YAAU,MAAM;AACd,oBAAgB,IAAI;AACpB,sBAAkB,IAAI;AACtB,oBAAgB,IAAI;AAAA,KACnB,CAAC,KAAK,UAAU,YAAY,CAAC,CAAC;AAG3B,QAAA,UAAU,iBAAiB,OAAO,eAAe;AACjD,QAAA,gBAAgB,mBAAmB,OAAO,iBAAiB;AACjE,QAAM,UAAU,gBAAgB;AAGhC,QAAM,kBAAkB;AAAA,IACtB,OAAO,eAA4B;AACjC,YAAM,mBAAmB,EAAE,QAAQ,WAAkB,GAAG,iBAAiB,YAAY;AAAA,QACnF,cAAc;AAAA,MAAA,CACf;AAAA,IACH;AAAA,IACA,CAAC,kBAAkB;AAAA,EACrB;AAGA,QAAM,oBAAoB;AAAA,IACxB,OAAO,qBAA8B;AAE/B,UAAA,qBAAqB,mCAA2B,UAAS;AAC3D,cAAM,iBAAgC,EAAE,GAAG,SAAS,SAAS,OAAU;AAEvE,wBAAgB,cAAc;AACxB,cAAA,WAAW,oCAAoC,cAAc;AAC7D,cAAA;AAAA,UACJ,EAAE,GAAG,UAAU,eAAe,KAAK;AAAA,UACnC;AAAA,UACA;AAAA,UACA,EAAE,cAAc,qCAAqC;AAAA,QACvD;AACA;AAAA,MAAA;AAGI,YAAA;AAAA,QACJ,EAAE,eAAe,iBAAiB;AAAA,QAClC;AAAA,QACA;AAAA,QACA,EAAE,cAAc,qCAAqC;AAAA,MACvD;AAAA,IACF;AAAA,IACA,CAAC,oBAAoB,OAAO;AAAA,EAC9B;AAGA,QAAM,kBAAkB;AAAA,IACtB,OAAO,eAA8B,iBAA4B;;AAE/D,YAAM,aACJ,gBACA;AAAA,QACE,GAAI,cAAc,eAAe,CAAC;AAAA,QAClC,GAAG,OAAO,KAAK,cAAc,oBAAoB,CAAA,CAAE;AAAA,QACnD,KAAK,mBAAc,kBAAd,mBAA6B,SAAqB,CAAC;AAAA,QACxD,KAAK,mBAAc,kBAAd,mBAA6B,UAAsB,CAAA;AAAA,MAEvD,EAAA,OAAO,OAAO,EACd,OAAO,CAAC,GAAG,GAAG,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;AAErC,YAAA,WAAW,oCAAoC,eAAe,UAAU;AACxE,YAAA,aAAa,CAAC,CAAC,cAAc;AAGnC,UAAI,YAAY;AAEd,0BAAkB,KAAK;AAAA,MAAA;AAGnB,YAAA;AAAA,QACJ,aAAa,EAAE,GAAG,UAAU,eAAe,MAAU,IAAA;AAAA,QACrD;AAAA,QACA;AAAA,QACA,EAAE,cAAc,2BAA2B;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,CAAC,kBAAkB;AAAA,EACrB;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;"}
|