@ynput/ayon-frontend-shared 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DetailsPanel.cjs.js +1 -1
- package/dist/DetailsPanel.es.js +49 -46
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/ProjectTreeTable.cjs.js +1 -1
- package/dist/ProjectTreeTable.es.js +244 -228
- package/dist/ProjectTreeTable.es.js.map +1 -1
- package/dist/Slicer.cjs.js +1 -1
- package/dist/Slicer.es.js +52 -49
- package/dist/Slicer.es.js.map +1 -1
- package/dist/api.cjs.js +1 -1
- package/dist/api.es.js +93 -93
- package/dist/components.cjs.js +1 -1
- package/dist/components.es.js +130 -126
- package/dist/components.es.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +36 -33
- package/dist/index.es.js.map +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/shared/node_modules/react-is/index.cjs.js +1 -1
- package/dist/shared/node_modules/react-is/index.es.js +1 -1
- package/dist/shared/src/api/generated/graphql.cjs.js +40 -21
- package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.es.js +36 -17
- package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
- package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphqlLinks.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/activities/getActivities.cjs.js +1 -1
- package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/getActivities.es.js +4 -4
- package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
- package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +99 -105
- package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
- package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +133 -87
- package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
- package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/getLists.es.js +155 -155
- package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
- package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -1
- package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/folders/getFolders.es.js +66 -64
- package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
- package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +1 -1
- package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/links/getEntityLinks.es.js +110 -111
- package/dist/shared/src/api/queries/links/getEntityLinks.es.js.map +1 -1
- package/dist/shared/src/api/queries/links/getLinks.cjs.js +1 -1
- package/dist/shared/src/api/queries/links/getLinks.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/links/getLinks.es.js +58 -73
- package/dist/shared/src/api/queries/links/getLinks.es.js.map +1 -1
- package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
- package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/overview/getOverview.es.js +380 -328
- package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
- package/dist/shared/src/api/queries/overview/patchVersions.cjs.js +1 -1
- package/dist/shared/src/api/queries/overview/patchVersions.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/overview/patchVersions.es.js +130 -77
- package/dist/shared/src/api/queries/overview/patchVersions.es.js.map +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.es.js +136 -132
- package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
- package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -1
- package/dist/shared/src/api/queries/review/getReview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/review/getReview.es.js +180 -104
- package/dist/shared/src/api/queries/review/getReview.es.js.map +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +152 -132
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
- package/dist/shared/src/api/queries/users/getUsers.cjs.js +2 -2
- package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/users/getUsers.es.js +2 -2
- package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
- package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
- package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +485 -439
- package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
- package/dist/shared/src/components/Chips/Chips.cjs.js +1 -1
- package/dist/shared/src/components/Chips/Chips.cjs.js.map +1 -1
- package/dist/shared/src/components/Chips/Chips.es.js +18 -17
- package/dist/shared/src/components/Chips/Chips.es.js.map +1 -1
- package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +1 -1
- package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
- package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +23 -20
- package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +10 -7
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +23 -20
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +23 -20
- package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +23 -20
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
- package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
- package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +34 -30
- package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +23 -20
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +28 -25
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
- package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
- package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +23 -20
- package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
- package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
- package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
- package/dist/shared/src/components/Feedback/FeedbackContext.es.js +27 -24
- package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.es.js +23 -20
- package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +23 -20
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
- package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
- package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
- package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +23 -20
- package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
- package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
- package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
- package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +23 -20
- package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
- package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
- package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
- package/dist/shared/src/components/Menu/Menu.es.js +23 -20
- package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
- package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
- package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
- package/dist/shared/src/components/Menu/MenuItem.es.js +21 -18
- package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
- package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
- package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
- package/dist/shared/src/components/Menu/MenuList.es.js +23 -20
- package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +23 -20
- package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +23 -20
- package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +2 -2
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +210 -182
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +89 -82
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +23 -20
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +109 -106
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +23 -20
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.es.js +23 -20
- package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +29 -32
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +30 -27
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +29 -26
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesSelector/Card.es.js +29 -26
- package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/filterScopeRegistry.cjs.js +1 -1
- package/dist/shared/src/components/SearchFilter/filterScopeRegistry.cjs.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/filterScopeRegistry.es.js +2 -1
- package/dist/shared/src/components/SearchFilter/filterScopeRegistry.es.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +511 -394
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +23 -20
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js +8 -5
- package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js.map +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js +36 -22
- package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
- package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +30 -27
- package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +29 -26
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +1 -1
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +23 -20
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +29 -26
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +32 -29
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +29 -26
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.es.js +23 -20
- package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +29 -26
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +29 -26
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +29 -26
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +29 -26
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +29 -26
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js +23 -20
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +29 -26
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +29 -26
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +23 -20
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.es.js +12 -12
- package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +133 -130
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +29 -26
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +27 -24
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +27 -24
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +23 -20
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +29 -26
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +29 -26
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +29 -26
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +29 -26
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +23 -20
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.es.js +28 -25
- package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +29 -26
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +29 -26
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +29 -26
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +23 -20
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +27 -24
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +33 -30
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +23 -20
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +23 -20
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +2 -2
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +21 -18
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +23 -20
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +27 -24
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js +26 -23
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
- package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTable.es.js +25 -22
- package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.es.js +119 -116
- package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
- package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +29 -26
- package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
- package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js +2 -2
- package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js.map +1 -1
- package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js +114 -111
- package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js.map +1 -1
- package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js +1 -1
- package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js +116 -113
- package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +64 -61
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +586 -414
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +24 -21
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +24 -21
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +29 -26
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +131 -128
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +5 -5
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +289 -272
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +34 -31
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +25 -22
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +28 -25
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +118 -115
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +23 -20
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +28 -25
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +25 -22
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +124 -121
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +48 -45
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +26 -23
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +23 -20
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +103 -100
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +26 -23
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +26 -23
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupCounts.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupCounts.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +93 -383
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +23 -20
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +22 -19
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +25 -22
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +37 -45
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +21 -18
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +37 -34
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/columnIds.cjs.js +2 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/columnIds.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/columnIds.es.js +45 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/columnIds.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js +37 -21
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +28 -25
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +6 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +28 -21
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +29 -26
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.cjs.js +30 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.es.js +370 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +2 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +39 -36
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +23 -20
- package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +26 -23
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +29 -26
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +23 -20
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +29 -26
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +29 -26
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/Slicer.es.js +25 -22
- package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +23 -20
- package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +29 -26
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +27 -24
- package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +23 -20
- package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js +22 -19
- package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +23 -20
- package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +23 -20
- package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js +25 -22
- package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js +23 -20
- package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js +23 -20
- package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js +23 -20
- package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +24 -21
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +23 -20
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +23 -20
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +23 -20
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js +25 -22
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +26 -23
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.es.js +27 -24
- package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
- package/dist/shared/src/context/EntityUpdatesContext.cjs.js +1 -1
- package/dist/shared/src/context/EntityUpdatesContext.cjs.js.map +1 -1
- package/dist/shared/src/context/EntityUpdatesContext.es.js +85 -65
- package/dist/shared/src/context/EntityUpdatesContext.es.js.map +1 -1
- package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
- package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
- package/dist/shared/src/context/PowerpackContext.es.js +27 -24
- package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
- package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
- package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
- package/dist/shared/src/context/ProjectFoldersContext.es.js +25 -22
- package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
- package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
- package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
- package/dist/shared/src/context/SubtasksModulesContext.es.js +25 -22
- package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
- package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
- package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
- package/dist/shared/src/context/WebsocketContext.es.js +31 -28
- package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.es.js +23 -20
- package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
- package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
- package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +23 -20
- package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
- package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
- package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useHierarchyTable.es.js +23 -20
- package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.es.js +23 -20
- package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
- package/dist/shared/src/util/columnConfigConverter.cjs.js +1 -1
- package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
- package/dist/shared/src/util/columnConfigConverter.es.js +33 -33
- package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
- package/dist/shared/src/util/getAttributeIcon.cjs.js +1 -1
- package/dist/shared/src/util/getAttributeIcon.cjs.js.map +1 -1
- package/dist/shared/src/util/getAttributeIcon.es.js +2 -1
- package/dist/shared/src/util/getAttributeIcon.es.js.map +1 -1
- package/dist/shared/src/util/realtimeUpdatesUtils.cjs.js +1 -1
- package/dist/shared/src/util/realtimeUpdatesUtils.cjs.js.map +1 -1
- package/dist/shared/src/util/realtimeUpdatesUtils.es.js +33 -27
- package/dist/shared/src/util/realtimeUpdatesUtils.es.js.map +1 -1
- package/dist/types/api/generated/graphql.d.ts +45 -2
- package/dist/types/api/generated/graphqlLinks.d.ts +14 -2
- package/dist/types/api/generated/views.d.ts +13 -4
- package/dist/types/api/queries/activities/getActivities.d.ts +24 -0
- package/dist/types/api/queries/activities/util/activityRealtimeHandler.d.ts +0 -3
- package/dist/types/api/queries/entities/getEntity.d.ts +12 -0
- package/dist/types/api/queries/entities/getEntityPanel.d.ts +12 -0
- package/dist/types/api/queries/entities/updateEntity.d.ts +12 -0
- package/dist/types/api/queries/entityLists/getLists.d.ts +12 -7
- package/dist/types/api/queries/entityLists/types.d.ts +7 -0
- package/dist/types/api/queries/overview/getOverview.d.ts +14 -2
- package/dist/types/api/queries/overview/patchVersions.d.ts +9 -0
- package/dist/types/api/queries/project/getProject.d.ts +12 -0
- package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +12 -0
- package/dist/types/api/queries/users/getUsers.d.ts +12 -0
- package/dist/types/api/queries/versions/getVersionsProducts.d.ts +155 -0
- package/dist/types/components/EntityIcon/EntityIcon.d.ts +4 -4
- package/dist/types/components/ProjectTableSettings/ColumnsSettings.d.ts +9 -1
- package/dist/types/components/ProjectTableSettings/index.d.ts +1 -0
- package/dist/types/components/RemotePage/RemotePageWrapper.d.ts +1 -1
- package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +5 -2
- package/dist/types/components/SettingsPanel/SettingsPanelItemTemplate.d.ts +1 -0
- package/dist/types/components/index.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +3 -1
- package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +22 -1
- package/dist/types/containers/ProjectTreeTable/hooks/useGroupCounts.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/types/index.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/types/table.d.ts +3 -0
- package/dist/types/containers/ProjectTreeTable/utils/columnIds.d.ts +10 -0
- package/dist/types/containers/ProjectTreeTable/utils/getTableFieldOptions.d.ts +2 -1
- package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/widgets/EntityWidget.d.ts +15 -0
- package/dist/types/containers/ProjectTreeTable/widgets/index.d.ts +1 -0
- package/dist/types/util/realtimeUpdatesUtils.d.ts +6 -3
- package/dist/util.cjs.js +1 -1
- package/dist/util.es.js +43 -42
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getOverview.es.js","sources":["../../../../../../src/api/queries/overview/getOverview.ts"],"sourcesContent":["import {\n gqlApi,\n GetTasksByParentQuery,\n GetTasksListQuery,\n GetFolderColumnStatsQuery,\n GetTaskColumnStatsQuery,\n foldersApi,\n SearchFoldersApiArg,\n GetTasksListQueryVariables,\n} from '@shared/api/generated'\nimport PubSub from '@shared/util/pubsub'\nimport { subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport { EditorTaskNode } from '@shared/containers/ProjectTreeTable'\nimport type { FieldStats } from '../columnStats'\nimport {\n normalizeFieldStats,\n mergeFieldStats,\n hasNewTargetFields,\n transformStatsError,\n} from '../columnStats'\nimport {\n DefinitionsFromApi,\n FetchBaseQueryError,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\n\nconst CACHE_TIME = 10 // seconds\n\n// parse attribs JSON string to object\nexport const parseJSONField = (allAttrib: string | null | undefined): Record<string, unknown> => {\n if (!allAttrib) return {}\n try {\n return JSON.parse(allAttrib)\n } catch (e) {\n return {}\n }\n}\n// backwards compatibility for old API\nexport const parseAllAttribs = parseJSONField\n\nconst transformFilteredEntitiesByParent = (response: GetTasksByParentQuery): EditorTaskNode[] => {\n if (!response.project) {\n return []\n }\n\n const tasks: EditorTaskNode[] = []\n for (const { node: taskNode } of response.project.tasks.edges) {\n tasks.push({\n ...taskNode,\n folderId: taskNode.folderId || 'root',\n attrib: parseJSONField(taskNode.allAttrib),\n data: parseJSONField(taskNode.data),\n entityId: taskNode.id,\n entityType: 'task',\n links: [],\n })\n }\n\n return tasks\n}\n\nconst getOverviewTaskTags = (\n result: EditorTaskNode[] | undefined = [],\n projectName: string,\n parentIds?: string | string[],\n) => {\n const taskTags = result?.map((task) => ({ type: 'overviewTask', id: task.id })) || []\n\n const parentTags = parentIds\n ? (Array.isArray(parentIds) ? parentIds : [parentIds]).map((id) => ({\n type: 'overviewTask',\n id,\n }))\n : []\n\n return [\n ...taskTags,\n ...parentTags,\n { type: 'overviewTask', id: projectName },\n { type: 'overviewTask', id: 'LIST' },\n ]\n}\n\nexport type GetTasksListResult = {\n pageInfo: GetTasksListQuery['project']['tasks']['pageInfo']\n tasks: EditorTaskNode[]\n}\nexport type GetTasksByParentResult = {\n pageInfo: GetTasksByParentQuery['project']['tasks']['pageInfo']\n tasks: EditorTaskNode[]\n}\n\nexport type GetTasksListArgs = {\n projectName: string\n filter?: string\n folderFilter?: string\n search?: string\n folderIds?: string[]\n taskIds?: string[]\n desc?: boolean\n sortBy?: string\n showComments?: boolean\n includeFolderChildren?: boolean\n}\n\nexport type GetGroupedTasksListResult = {\n tasks: EditorTaskNode[]\n}\n\nexport type GetGroupedTasksListArgs = {\n projectName: string\n groups: { filter: string; count: number; value: string }[]\n search?: string\n folderFilter?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n groupCount?: number // optional override for all groups\n showComments?: boolean\n}\n\n// Define the page param type for infinite query\ntype TasksListPageParam = {\n cursor: string\n desc?: boolean\n}\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\ntype UpdatedDefinitions = Omit<Definitions, 'GetFilteredEntities'> & {\n GetTasksByParent: OverrideResultType<Definitions['GetTasksByParent'], GetTasksByParentResult>\n GetTasksList: OverrideResultType<Definitions['GetTasksList'], GetTasksListResult>\n GetFolderColumnStats: OverrideResultType<Definitions['GetFolderColumnStats'], FieldStats[]>\n GetTaskColumnStats: OverrideResultType<Definitions['GetTaskColumnStats'], FieldStats[]>\n}\n\n// GRAPHQL API\nconst enhancedApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // This gets tasks for all parent folders provided\n // But in this case it will only ever receive one parent folder from the getOverviewTasksByFolders query\n // It is only used by getOverviewTasksByFolders in this file\n GetTasksByParent: {\n transformResponse: (res: GetTasksByParentQuery) => ({\n pageInfo: res?.project?.tasks?.pageInfo ?? { hasNextPage: false, endCursor: null },\n tasks: transformFilteredEntitiesByParent(res),\n }),\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result?.tasks || [], projectName, parentIds),\n keepUnusedDataFor: CACHE_TIME,\n },\n GetTasksList: {\n transformResponse: (result: GetTasksListQuery) => ({\n tasks: transformFilteredEntitiesByParent(result),\n pageInfo: result.project.tasks.pageInfo,\n }),\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks || [], projectName),\n keepUnusedDataFor: CACHE_TIME,\n },\n // footer stats: `targets` excluded from cache key + responses merged,\n // so column toggles reuse cache and only added targets refetch\n GetFolderColumnStats: {\n transformResponse: (res: GetFolderColumnStatsQuery) =>\n normalizeFieldStats(res?.project?.folders?.fieldStats ?? []),\n transformErrorResponse: (error: any) => transformStatsError(error, 'folder'),\n serializeQueryArgs: ({ queryArgs: { targets: _t, ...rest } }) => rest,\n merge: (cache, incoming) => mergeFieldStats(incoming, cache),\n forceRefetch: ({ currentArg, previousArg }) => hasNewTargetFields(currentArg, previousArg),\n providesTags: (_r, _e, { projectName }) => [{ type: 'folderColumnStats', id: projectName }],\n keepUnusedDataFor: CACHE_TIME,\n },\n GetTaskColumnStats: {\n transformResponse: (res: GetTaskColumnStatsQuery) =>\n normalizeFieldStats(res?.project?.tasks?.fieldStats ?? []),\n transformErrorResponse: (error: any) => transformStatsError(error, 'task'),\n serializeQueryArgs: ({ queryArgs: { targets: _t, ...rest } }) => rest,\n merge: (cache, incoming) => mergeFieldStats(incoming, cache),\n forceRefetch: ({ currentArg, previousArg }) => hasNewTargetFields(currentArg, previousArg),\n providesTags: (_r, _e, { projectName }) => [{ type: 'taskColumnStats', id: projectName }],\n keepUnusedDataFor: CACHE_TIME,\n },\n },\n})\n\n// REST FOLDERS API\nconst foldersApiEnhanced = foldersApi.enhanceEndpoints({\n endpoints: {\n searchFolders: {},\n },\n})\n\nexport const TASKS_INFINITE_QUERY_COUNT = 100 // Number of items to fetch per page\n\n// --- TRACKING REGISTRY FOR EMPTY FOLDERS (FILTER-AWARE) ---\nconst queriedFoldersRegistry: Record<string, Set<string>> = {}\n\nconst getCacheKey = (\n projectName: string,\n filter?: string,\n folderFilter?: string,\n search?: string,\n showComments?: boolean,\n) => {\n return JSON.stringify({ projectName, filter, folderFilter, search, showComments })\n}\n\nconst markFoldersAsQueried = (cacheKey: string, folderIds: string[]) => {\n if (!queriedFoldersRegistry[cacheKey]) {\n queriedFoldersRegistry[cacheKey] = new Set()\n }\n folderIds.forEach((id) => queriedFoldersRegistry[cacheKey].add(id))\n}\n\nconst getQueriedFolders = (cacheKey: string): Set<string> => {\n return queriedFoldersRegistry[cacheKey] || new Set()\n}\n\nconst injectedApi = enhancedApi.injectEndpoints({\n endpoints: (build) => ({\n // Each project has one cache for all the tasks of the expanded folders\n // Changing the expanded folders will trigger a refetch but not a new cache\n // Each expanded folder has it's own query that is looped over here\n // When new folders are expanded, the new tasks are fetched and we use the cache for the rest\n // This also solves the pagination issue of getting all tasks in one query, splitting it up in multiple queries to avoid pagination limits\n getOverviewTasksByFolders: build.query<\n EditorTaskNode[],\n {\n projectName: string\n parentIds: string[]\n filter?: string\n folderFilter?: string\n search?: string\n showComments?: boolean\n }\n >({\n async queryFn(\n { projectName, parentIds, filter, folderFilter, search, showComments },\n { dispatch, getState, forced },\n ) {\n try {\n const state = getState()\n const cacheArgs = { projectName, filter, folderFilter, search, showComments }\n\n // Select current flat cache state\n const currentCache = (injectedApi.endpoints as any).getOverviewTasksByFolders.select(\n cacheArgs,\n )(state)\n const cacheData: EditorTaskNode[] = currentCache?.data || []\n\n // 1. Generate a stable cache key matching RTK Query's serialization\n const cacheKey = getCacheKey(projectName, filter, folderFilter, search, showComments)\n\n // 2. Fetch our registry specific to THIS combination of search/filters\n const alreadyQueriedFolders = getQueriedFolders(cacheKey)\n\n // 3. Diffing: Only request folders that haven't hit the network under these specific filters\n // If forced, we ignore the registry and fetch all folders again, like a refresh\n const newFolderIds = forced\n ? parentIds\n : parentIds.filter((id) => !alreadyQueriedFolders.has(id))\n\n // Short-circuit if all expanded folders have been evaluated for this filter setup\n if (newFolderIds.length === 0) {\n return { data: cacheData }\n }\n\n const allNewTasks: EditorTaskNode[] = []\n const BATCH_SIZE = 100\n const TASK_PER_FOLDER = 20\n const MAX_PAGES_PER_BATCH = 10\n const MAX_FOLDERS = 1000\n const TASKS_PER_PAGE = BATCH_SIZE * TASK_PER_FOLDER\n\n if (newFolderIds.length > MAX_FOLDERS) {\n throw new Error(\n `Exceeded maximum folders count limit ${MAX_FOLDERS} (${newFolderIds.length}). Please reduce the number of expanded folders.`,\n )\n }\n\n // 5. Batch folder IDs into groups and process them sequentially\n for (let i = 0; i < newFolderIds.length; i += BATCH_SIZE) {\n const batchFolderIds = newFolderIds.slice(i, i + BATCH_SIZE)\n\n let hasNextPage = true\n let cursor: string | undefined = undefined\n let pageCount = 0\n\n while (hasNextPage && pageCount < MAX_PAGES_PER_BATCH) {\n pageCount++\n\n if (pageCount === MAX_PAGES_PER_BATCH) {\n throw new Error(\n `Exceeded maximum tasks count limit ${MAX_PAGES_PER_BATCH * TASKS_PER_PAGE}.`,\n )\n }\n\n const result = await dispatch(\n enhancedApi.endpoints.GetTasksByParent.initiate(\n {\n projectName,\n parentIds: batchFolderIds,\n filter,\n folderFilter,\n search,\n showComments: !!showComments,\n first: TASKS_PER_PAGE,\n after: cursor,\n },\n { forceRefetch: true },\n ),\n )\n\n if (result.error) throw result.error\n const data = result.data as GetTasksByParentResult\n\n const fetchedTasks = data?.tasks || []\n allNewTasks.push(...fetchedTasks)\n\n const pageInfo = data?.pageInfo\n hasNextPage = pageInfo?.hasNextPage || false\n cursor = pageInfo?.endCursor || undefined\n }\n }\n\n // 4. Only mark folders as queried if the network loops complete successfully\n markFoldersAsQueried(cacheKey, newFolderIds)\n\n // 5. Append new tasks to the existing flat array cache with task ID deduplication\n const finalTasks = [...cacheData, ...allNewTasks]\n const uniqueTasksMap = new Map(finalTasks.map((task) => [task.id, task]))\n\n return {\n data: Array.from(uniqueTasksMap.values()),\n }\n } catch (e: any) {\n console.error(e)\n const errorMessage =\n e.message || e.data?.message || JSON.stringify(e) || 'Unknown Fetch Error'\n return { error: { status: 'FETCH_ERROR', error: errorMessage } as FetchBaseQueryError }\n }\n },\n // keep one cache per project\n serializeQueryArgs: ({ queryArgs: { parentIds, ...rest } }) => ({\n ...rest,\n }),\n // Refetch when the page arg changes\n forceRefetch({ currentArg, previousArg }) {\n return JSON.stringify(currentArg) !== JSON.stringify(previousArg)\n },\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n async onCacheEntryAdded(\n { projectName, parentIds, filter, folderFilter, search, showComments },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n let token: any\n const pendingTaskIds = new Set<string>()\n const MAX_BATCH = 100\n const INTERVAL = 500\n let scheduled = false\n\n const schedule = () => {\n if (scheduled) return\n scheduled = true\n setTimeout(flush, INTERVAL)\n }\n\n const flush = async () => {\n scheduled = false\n if (!pendingTaskIds.size) return\n const batchIds = Array.from(pendingTaskIds).slice(0, MAX_BATCH)\n batchIds.forEach((id) => pendingTaskIds.delete(id))\n try {\n const res = await dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(\n {\n projectName,\n taskIds: batchIds,\n showComments: !!showComments,\n } as any,\n { forceRefetch: true },\n ),\n ).unwrap()\n const returned = res.tasks || []\n const returnedMap = new Map(returned.map((t: EditorTaskNode) => [t.id, t]))\n\n updateCachedData((draft: EditorTaskNode[]) => {\n // update or add\n for (const task of returned) {\n const idx = draft.findIndex((t) => t.id === task.id)\n if (idx > -1) draft[idx] = task\n else draft.push(task)\n }\n // remove missing\n for (const id of batchIds) {\n if (!returnedMap.has(id)) {\n const idx = draft.findIndex((t) => t.id === id)\n if (idx > -1) draft.splice(idx, 1)\n }\n }\n })\n } catch (err) {\n console.error('Realtime overview batch update failed', err)\n } finally {\n if (pendingTaskIds.size) schedule()\n }\n }\n let unsubscribeThumbnails: (() => void) | undefined\n try {\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: EditorTaskNode[]) => {\n messages.forEach((message) => {\n if (message.summary.entityType === 'task' && message.summary.thumbnailHash) {\n const idx = draft.findIndex((t) => t.id === message.summary.entityId)\n if (idx > -1) {\n draft[idx].thumbnailHash = message.summary.thumbnailHash\n }\n }\n })\n })\n },\n ['task'],\n )\n\n const handlePubSub = async (_topic: string, message: any) => {\n const taskId = message?.summary?.entityId\n const parentId = message?.summary?.parentId\n if (!taskId || !parentId) return\n // Only react if the parent folder is part of the current expanded set\n if (!parentIds.includes(parentId)) return\n pendingTaskIds.add(taskId)\n schedule()\n }\n\n // Subscribe to task entity updates\n // NOTE: backend emits topics like 'entity.task.assignees_changed'.\n // Assuming PubSub supports prefix matching when subscribing without the suffix.\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (e) {\n // cache entry removed before loaded - ignore\n }\n\n await cacheEntryRemoved\n\n // Evict tracking map memory entry completely when this RTK Query cache entry expires\n const deadCacheKey = getCacheKey(projectName, filter, folderFilter, search, showComments)\n delete queriedFoldersRegistry[deadCacheKey]\n\n if (token) PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) unsubscribeThumbnails()\n },\n keepUnusedDataFor: CACHE_TIME,\n }),\n // searchFolders is a post so it's a bit annoying to consume\n // we wrap it in a queryFn to make it easier to consume as a query hook\n getSearchFolders: build.query<string[], SearchFoldersApiArg>({\n async queryFn({ projectName, folderSearchRequest }, { dispatch }) {\n try {\n const result = await dispatch(\n foldersApiEnhanced.endpoints.searchFolders.initiate({\n projectName,\n folderSearchRequest,\n }),\n )\n\n const data = result.data?.folderIds || []\n\n return { data }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n providesTags: (_r, _e, { projectName }) => [{ type: 'tasksFolder', id: projectName }],\n keepUnusedDataFor: CACHE_TIME,\n }),\n // Add new infinite query endpoint for tasks list\n getTasksListInfinite: build.infiniteQuery<\n GetTasksListResult,\n GetTasksListArgs,\n TasksListPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '', desc: false },\n // Calculate the next page param based on current page response and params\n getNextPageParam: (lastPage, _allPages, lastPageParam, _allPageParams) => {\n // Use the endCursor from the query as the next page param\n const pageInfo = lastPage.pageInfo\n const desc = lastPageParam.desc\n const hasNextPage = desc ? pageInfo.hasPreviousPage : pageInfo.hasNextPage\n\n if (!hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n desc: lastPageParam.desc,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const {\n projectName,\n filter,\n folderFilter,\n search,\n folderIds,\n taskIds,\n sortBy,\n desc,\n showComments,\n includeFolderChildren,\n } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetTasksList\n const queryParams: any = {\n projectName,\n filter,\n folderFilter,\n search,\n folderIds,\n taskIds,\n showComments: !!showComments,\n includeFolderChildren: includeFolderChildren !== false, // default to true\n }\n\n // Add cursor-based pagination\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.last = TASKS_INFINITE_QUERY_COUNT\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n\n // Call the existing GetTasksList endpoint\n const result = await api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n const fallback = {\n tasks: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n }\n\n // Return the tasks directly as required by the infinite query format\n return {\n data: result.data || fallback,\n }\n } catch (e: any) {\n console.error('Error in getTasksListInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.pages.flatMap((p) => p.tasks) || [], projectName),\n async onCacheEntryAdded(\n arg,\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n let token: any\n const pendingTaskIds = new Set<string>()\n const MAX_BATCH = 100\n const INTERVAL = 500\n let scheduled = false\n\n const schedule = () => {\n if (scheduled) return\n scheduled = true\n setTimeout(flush, INTERVAL)\n }\n\n const flush = async () => {\n scheduled = false\n if (!pendingTaskIds.size) return\n const batchIds = Array.from(pendingTaskIds).slice(0, MAX_BATCH)\n batchIds.forEach((id) => pendingTaskIds.delete(id))\n try {\n const res = await dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(\n {\n projectName: arg.projectName,\n taskIds: batchIds,\n folderIds: arg.folderIds,\n showComments: !!arg.showComments,\n } as any,\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const returned = res.tasks || []\n const returnedMap = new Map(returned.map((t: EditorTaskNode) => [t.id, t]))\n\n updateCachedData((draft: { pages: GetTasksListResult[]; pageParams: any[] }) => {\n // update/insert\n for (const task of returned) {\n let located = false\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === task.id)\n if (idx !== -1) {\n page.tasks[idx] = task\n located = true\n break\n }\n }\n if (!located) {\n if (draft.pages.length) draft.pages[0].tasks.unshift(task)\n else\n draft.pages.push({\n tasks: [task],\n pageInfo: {\n startCursor: null,\n endCursor: null,\n hasNextPage: false,\n hasPreviousPage: false,\n },\n })\n }\n }\n // remove any requested but missing tasks\n for (const id of batchIds) {\n if (returnedMap.has(id)) continue\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === id)\n if (idx !== -1) {\n page.tasks.splice(idx, 1)\n break\n }\n }\n }\n })\n } catch (err) {\n console.error('Realtime infinite tasks batch update failed', err)\n } finally {\n if (pendingTaskIds.size) schedule()\n }\n }\n let unsubscribeThumbnails: (() => void) | undefined\n try {\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: { pages: GetTasksListResult[]; pageParams: any[] }) => {\n messages.forEach((message) => {\n if (message.summary.entityType === 'task' && message.summary.thumbnailHash) {\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === message.summary.entityId)\n if (idx > -1) {\n page.tasks[idx].thumbnailHash = message.summary.thumbnailHash\n break\n }\n }\n }\n })\n })\n },\n ['task'],\n )\n\n const handlePubSub = async (_topic: string, message: any) => {\n const taskId = message?.summary?.entityId\n if (!taskId) return\n pendingTaskIds.add(taskId)\n schedule()\n }\n\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (_) {\n // ignore\n }\n await cacheEntryRemoved\n if (token) PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) unsubscribeThumbnails()\n },\n keepUnusedDataFor: CACHE_TIME,\n }),\n getGroupedTasksList: build.query<GetGroupedTasksListResult, GetGroupedTasksListArgs>({\n queryFn: async (\n {\n projectName,\n groups,\n search,\n folderFilter,\n folderIds,\n desc,\n sortBy,\n groupCount,\n showComments,\n },\n api,\n ) => {\n try {\n let promises = []\n // Folder-level filter keys that must go in folderFilter, not task filter\n const folderFilterKeys = new Set(['folderType'])\n\n for (const group of groups) {\n // Determine count for this group - use argument override, else group count, else default\n const count = groupCount || group.count || 500\n\n // Separate folder-level conditions from task-level conditions in the group filter\n let taskFilter: string | undefined = group.filter\n let mergedFolderFilter = folderFilter\n if (group.filter) {\n try {\n const parsed = JSON.parse(group.filter)\n const conditions = parsed.conditions || []\n const taskConditions = conditions.filter((c: any) => !folderFilterKeys.has(c.key))\n const folderConditions = conditions.filter((c: any) => folderFilterKeys.has(c.key))\n\n if (folderConditions.length > 0) {\n taskFilter = taskConditions.length\n ? JSON.stringify({ ...parsed, conditions: taskConditions })\n : undefined\n // Merge folder conditions with existing folderFilter, preserving metadata\n const existingFolderFilter = folderFilter ? JSON.parse(folderFilter) : null\n const existingConditions =\n existingFolderFilter && Array.isArray(existingFolderFilter.conditions)\n ? existingFolderFilter.conditions\n : []\n const allFolderConditions = [...existingConditions, ...folderConditions]\n mergedFolderFilter = JSON.stringify(\n existingFolderFilter\n ? { ...existingFolderFilter, conditions: allFolderConditions }\n : { conditions: allFolderConditions },\n )\n }\n } catch {\n // If parsing fails, use the original filter as-is\n }\n }\n\n const queryParams: GetTasksListQueryVariables = {\n projectName,\n filter: taskFilter,\n folderFilter: mergedFolderFilter,\n search,\n folderIds,\n sortBy: sortBy,\n showComments: !!showComments,\n // @ts-expect-error - we know group does not exist on query variables but we need it for later\n group: group.value,\n }\n if (desc) {\n queryParams.last = count\n } else {\n queryParams.first = count\n }\n\n const promise = api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n promises.push(promise)\n }\n\n const result = await Promise.all(promises)\n const tasks: EditorTaskNode[] = []\n for (const res of result) {\n if (res.error) throw res.error\n // get group value\n // @ts-expect-error - we know group does exist on res.originalArgs from line 319\n const groupValue = res.originalArgs?.group as string\n\n const hasNextPage =\n res.data?.pageInfo?.hasNextPage || res.data?.pageInfo?.hasPreviousPage || false\n const groupTasks =\n res.data?.tasks.map((task, i, a) => ({\n ...task,\n groups: [\n {\n value: groupValue,\n hasNextPage: i === a.length - 1 && hasNextPage ? groupValue : undefined, // Only add hasNextPage to the last task in the group\n },\n ],\n })) || []\n\n tasks.push(...groupTasks)\n }\n\n // Return the tasks directly as required by the query format\n return {\n data: {\n tasks,\n },\n }\n } catch (error: any) {\n console.error('Error in getGroupedTasksList queryFn:', error)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks, projectName),\n keepUnusedDataFor: CACHE_TIME,\n }),\n }),\n})\n\nexport const {\n useGetOverviewTasksByFoldersQuery,\n useGetSearchFoldersQuery,\n useGetTasksListQuery,\n useGetTasksListInfiniteInfiniteQuery,\n useLazyGetTasksByParentQuery,\n useGetGroupedTasksListQuery,\n useGetFolderColumnStatsQuery,\n useGetTaskColumnStatsQuery,\n} = injectedApi\nexport default injectedApi\n"],"names":["CACHE_TIME","parseJSONField","allAttrib","parseAllAttribs","transformFilteredEntitiesByParent","response","tasks","taskNode","getOverviewTaskTags","result","projectName","parentIds","taskTags","task","parentTags","id","enhancedApi","gqlApi","res","_e","normalizeFieldStats","error","transformStatsError","_t","rest","cache","incoming","mergeFieldStats","currentArg","previousArg","hasNewTargetFields","_r","foldersApiEnhanced","foldersApi","TASKS_INFINITE_QUERY_COUNT","queriedFoldersRegistry","getCacheKey","filter","folderFilter","search","showComments","markFoldersAsQueried","cacheKey","folderIds","getQueriedFolders","injectedApi","build","dispatch","getState","forced","state","cacheArgs","cacheData","alreadyQueriedFolders","newFolderIds","allNewTasks","BATCH_SIZE","TASK_PER_FOLDER","MAX_PAGES_PER_BATCH","MAX_FOLDERS","TASKS_PER_PAGE","i","batchFolderIds","hasNextPage","cursor","pageCount","data","fetchedTasks","pageInfo","finalTasks","uniqueTasksMap","e","cacheDataLoaded","cacheEntryRemoved","updateCachedData","token","pendingTaskIds","MAX_BATCH","INTERVAL","scheduled","schedule","flush","batchIds","returned","returnedMap","t","draft","idx","err","unsubscribeThumbnails","subscribeToThumbnailUpdates","messages","message","handlePubSub","_topic","taskId","parentId","PubSub","deadCacheKey","folderSearchRequest","lastPage","_allPages","lastPageParam","_allPageParams","queryArg","pageParam","api","taskIds","sortBy","desc","includeFolderChildren","queryParams","fallback","p","arg","located","page","groups","groupCount","promises","folderFilterKeys","group","count","taskFilter","mergedFolderFilter","parsed","conditions","taskConditions","c","folderConditions","existingFolderFilter","allFolderConditions","promise","groupValue","groupTasks","a","useGetOverviewTasksByFoldersQuery","useGetSearchFoldersQuery","useGetTasksListQuery","useGetTasksListInfiniteInfiniteQuery","useLazyGetTasksByParentQuery","useGetGroupedTasksListQuery","useGetFolderColumnStatsQuery","useGetTaskColumnStatsQuery"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getOverview.es.js","sources":["../../../../../../src/api/queries/overview/getOverview.ts"],"sourcesContent":["import {\n gqlApi,\n GetTasksByParentQuery,\n GetTasksListQuery,\n GetFolderColumnStatsQuery,\n GetTaskColumnStatsQuery,\n foldersApi,\n SearchFoldersApiArg,\n GetTasksListQueryVariables,\n} from '@shared/api/generated'\nimport PubSub from '@shared/util/pubsub'\nimport {\n createRealtimeBatcher,\n getSupportedEntityPatch,\n REALTIME_REST_CALL_LIMIT,\n REALTIME_TASK_SUPPORTED_VALUE_FIELDS,\n RealtimeBatchProcessor,\n subscribeToThumbnailUpdates,\n SupportedTaskField,\n ThumbnailUpdateMessage,\n waitForRealtimeJitter,\n} from '@shared/util'\nimport { EditorTaskNode } from '@shared/containers/ProjectTreeTable'\nimport type { FieldStats } from '../columnStats'\nimport {\n normalizeFieldStats,\n mergeFieldStats,\n hasNewTargetFields,\n transformStatsError,\n} from '../columnStats'\nimport {\n DefinitionsFromApi,\n FetchBaseQueryError,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\n\nconst CACHE_TIME = 10 // seconds\n\n// parse attribs JSON string to object\nexport const parseJSONField = (allAttrib: string | null | undefined): Record<string, any> => {\n if (!allAttrib) return {}\n try {\n const parsed: unknown = JSON.parse(allAttrib)\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed)\n ? (parsed as Record<string, any>)\n : {}\n } catch (e) {\n return {}\n }\n}\n// backwards compatibility for old API\nexport const parseAllAttribs = parseJSONField\n\nconst transformFilteredEntitiesByParent = (response: GetTasksByParentQuery): EditorTaskNode[] => {\n if (!response.project) {\n return []\n }\n\n const tasks: EditorTaskNode[] = []\n for (const { node: taskNode } of response.project.tasks.edges) {\n tasks.push({\n ...taskNode,\n folderId: taskNode.folderId || 'root',\n attrib: parseJSONField(taskNode.allAttrib),\n data: parseJSONField(taskNode.data),\n entityId: taskNode.id,\n entityType: 'task',\n links: [],\n })\n }\n\n return tasks\n}\n\nconst getOverviewTaskTags = (\n result: EditorTaskNode[] | undefined = [],\n projectName: string,\n parentIds?: string | string[],\n) => {\n const taskTags = result?.map((task) => ({ type: 'overviewTask', id: task.id })) || []\n\n const parentTags = parentIds\n ? (Array.isArray(parentIds) ? parentIds : [parentIds]).map((id) => ({\n type: 'overviewTask',\n id,\n }))\n : []\n\n return [\n ...taskTags,\n ...parentTags,\n { type: 'overviewTask', id: projectName },\n { type: 'overviewTask', id: 'LIST' },\n ]\n}\n\nexport type GetTasksListResult = {\n pageInfo: GetTasksListQuery['project']['tasks']['pageInfo']\n tasks: EditorTaskNode[]\n}\nexport type GetTasksByParentResult = {\n pageInfo: GetTasksByParentQuery['project']['tasks']['pageInfo']\n tasks: EditorTaskNode[]\n}\n\nexport type GetTasksListArgs = {\n projectName: string\n filter?: string\n folderFilter?: string\n search?: string\n folderIds?: string[]\n taskIds?: string[]\n desc?: boolean\n sortBy?: string\n showComments?: boolean\n includeFolderChildren?: boolean\n}\n\nexport type GetGroupedTasksListResult = {\n tasks: EditorTaskNode[]\n}\n\nexport type GetGroupedTasksListArgs = {\n projectName: string\n groups: { filter: string; count: number; value: string }[]\n search?: string\n folderFilter?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n groupCount?: number // optional override for all groups\n showComments?: boolean\n}\n\n// Define the page param type for infinite query\ntype TasksListPageParam = {\n cursor: string\n desc?: boolean\n}\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\ntype UpdatedDefinitions = Omit<Definitions, 'GetFilteredEntities'> & {\n GetTasksByParent: OverrideResultType<Definitions['GetTasksByParent'], GetTasksByParentResult>\n GetTasksList: OverrideResultType<Definitions['GetTasksList'], GetTasksListResult>\n GetFolderColumnStats: OverrideResultType<Definitions['GetFolderColumnStats'], FieldStats[]>\n GetTaskColumnStats: OverrideResultType<Definitions['GetTaskColumnStats'], FieldStats[]>\n}\n\n// GRAPHQL API\nconst enhancedApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // This gets tasks for all parent folders provided\n // But in this case it will only ever receive one parent folder from the getOverviewTasksByFolders query\n // It is only used by getOverviewTasksByFolders in this file\n GetTasksByParent: {\n transformResponse: (res: GetTasksByParentQuery) => ({\n pageInfo: res?.project?.tasks?.pageInfo ?? { hasNextPage: false, endCursor: null },\n tasks: transformFilteredEntitiesByParent(res),\n }),\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result?.tasks || [], projectName, parentIds),\n keepUnusedDataFor: CACHE_TIME,\n },\n GetTasksList: {\n transformResponse: (result: GetTasksListQuery) => ({\n tasks: transformFilteredEntitiesByParent(result),\n pageInfo: result.project.tasks.pageInfo,\n }),\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks || [], projectName),\n keepUnusedDataFor: CACHE_TIME,\n },\n // footer stats: `targets` excluded from cache key + responses merged,\n // so column toggles reuse cache and only added targets refetch\n GetFolderColumnStats: {\n transformResponse: (res: GetFolderColumnStatsQuery) =>\n normalizeFieldStats(res?.project?.folders?.fieldStats ?? []),\n transformErrorResponse: (error: any) => transformStatsError(error, 'folder'),\n serializeQueryArgs: ({ queryArgs: { targets: _t, ...rest } }) => rest,\n merge: (cache, incoming) => mergeFieldStats(incoming, cache),\n forceRefetch: ({ currentArg, previousArg }) => hasNewTargetFields(currentArg, previousArg),\n providesTags: (_r, _e, { projectName }) => [{ type: 'folderColumnStats', id: projectName }],\n keepUnusedDataFor: CACHE_TIME,\n },\n GetTaskColumnStats: {\n transformResponse: (res: GetTaskColumnStatsQuery) =>\n normalizeFieldStats(res?.project?.tasks?.fieldStats ?? []),\n transformErrorResponse: (error: any) => transformStatsError(error, 'task'),\n serializeQueryArgs: ({ queryArgs: { targets: _t, ...rest } }) => rest,\n merge: (cache, incoming) => mergeFieldStats(incoming, cache),\n forceRefetch: ({ currentArg, previousArg }) => hasNewTargetFields(currentArg, previousArg),\n providesTags: (_r, _e, { projectName }) => [{ type: 'taskColumnStats', id: projectName }],\n keepUnusedDataFor: CACHE_TIME,\n },\n },\n})\n\n// REST FOLDERS API\nconst foldersApiEnhanced = foldersApi.enhanceEndpoints({\n endpoints: {\n searchFolders: {},\n },\n})\n\nexport const TASKS_INFINITE_QUERY_COUNT = 100 // Number of items to fetch per page\n\n// --- TRACKING REGISTRY FOR EMPTY FOLDERS (FILTER-AWARE) ---\nconst queriedFoldersRegistry: Record<string, Set<string>> = {}\n\nconst getCacheKey = (\n projectName: string,\n filter?: string,\n folderFilter?: string,\n search?: string,\n showComments?: boolean,\n) => {\n return JSON.stringify({ projectName, filter, folderFilter, search, showComments })\n}\n\nconst markFoldersAsQueried = (cacheKey: string, folderIds: string[]) => {\n if (!queriedFoldersRegistry[cacheKey]) {\n queriedFoldersRegistry[cacheKey] = new Set()\n }\n folderIds.forEach((id) => queriedFoldersRegistry[cacheKey].add(id))\n}\n\nconst getQueriedFolders = (cacheKey: string): Set<string> => {\n return queriedFoldersRegistry[cacheKey] || new Set()\n}\n\nconst injectedApi = enhancedApi.injectEndpoints({\n endpoints: (build) => ({\n // Each project has one cache for all the tasks of the expanded folders\n // Changing the expanded folders will trigger a refetch but not a new cache\n // Each expanded folder has it's own query that is looped over here\n // When new folders are expanded, the new tasks are fetched and we use the cache for the rest\n // This also solves the pagination issue of getting all tasks in one query, splitting it up in multiple queries to avoid pagination limits\n getOverviewTasksByFolders: build.query<\n EditorTaskNode[],\n {\n projectName: string\n parentIds: string[]\n filter?: string\n folderFilter?: string\n search?: string\n showComments?: boolean\n }\n >({\n async queryFn(\n { projectName, parentIds, filter, folderFilter, search, showComments },\n { dispatch, getState, forced },\n ) {\n try {\n const state = getState()\n const cacheArgs = { projectName, filter, folderFilter, search, showComments }\n\n // Select current flat cache state\n const currentCache = (injectedApi.endpoints as any).getOverviewTasksByFolders.select(\n cacheArgs,\n )(state)\n const cacheData: EditorTaskNode[] = currentCache?.data || []\n\n // 1. Generate a stable cache key matching RTK Query's serialization\n const cacheKey = getCacheKey(projectName, filter, folderFilter, search, showComments)\n\n // 2. Fetch our registry specific to THIS combination of search/filters\n const alreadyQueriedFolders = getQueriedFolders(cacheKey)\n\n // 3. Diffing: Only request folders that haven't hit the network under these specific filters\n // If forced, we ignore the registry and fetch all folders again, like a refresh\n const newFolderIds = forced\n ? parentIds\n : parentIds.filter((id) => !alreadyQueriedFolders.has(id))\n\n // Short-circuit if all expanded folders have been evaluated for this filter setup\n if (newFolderIds.length === 0) {\n return { data: cacheData }\n }\n\n const allNewTasks: EditorTaskNode[] = []\n const BATCH_SIZE = 100\n const TASK_PER_FOLDER = 20\n const MAX_PAGES_PER_BATCH = 10\n const MAX_FOLDERS = 1000\n const TASKS_PER_PAGE = BATCH_SIZE * TASK_PER_FOLDER\n\n if (newFolderIds.length > MAX_FOLDERS) {\n throw new Error(\n `Exceeded maximum folders count limit ${MAX_FOLDERS} (${newFolderIds.length}). Please reduce the number of expanded folders.`,\n )\n }\n\n // 5. Batch folder IDs into groups and process them sequentially\n for (let i = 0; i < newFolderIds.length; i += BATCH_SIZE) {\n const batchFolderIds = newFolderIds.slice(i, i + BATCH_SIZE)\n\n let hasNextPage = true\n let cursor: string | undefined = undefined\n let pageCount = 0\n\n while (hasNextPage && pageCount < MAX_PAGES_PER_BATCH) {\n pageCount++\n\n if (pageCount === MAX_PAGES_PER_BATCH) {\n throw new Error(\n `Exceeded maximum tasks count limit ${MAX_PAGES_PER_BATCH * TASKS_PER_PAGE}.`,\n )\n }\n\n const result = await dispatch(\n enhancedApi.endpoints.GetTasksByParent.initiate(\n {\n projectName,\n parentIds: batchFolderIds,\n filter,\n folderFilter,\n search,\n showComments: !!showComments,\n first: TASKS_PER_PAGE,\n after: cursor,\n },\n { forceRefetch: true },\n ),\n )\n\n if (result.error) throw result.error\n const data = result.data as GetTasksByParentResult\n\n const fetchedTasks = data?.tasks || []\n allNewTasks.push(...fetchedTasks)\n\n const pageInfo = data?.pageInfo\n hasNextPage = pageInfo?.hasNextPage || false\n cursor = pageInfo?.endCursor || undefined\n }\n }\n\n // 4. Only mark folders as queried if the network loops complete successfully\n markFoldersAsQueried(cacheKey, newFolderIds)\n\n // 5. Append new tasks to the existing flat array cache with task ID deduplication\n const finalTasks = [...cacheData, ...allNewTasks]\n const uniqueTasksMap = new Map(finalTasks.map((task) => [task.id, task]))\n\n return {\n data: Array.from(uniqueTasksMap.values()),\n }\n } catch (e: any) {\n console.error(e)\n const errorMessage =\n e.message || e.data?.message || JSON.stringify(e) || 'Unknown Fetch Error'\n return { error: { status: 'FETCH_ERROR', error: errorMessage } as FetchBaseQueryError }\n }\n },\n // keep one cache per project\n serializeQueryArgs: ({ queryArgs: { parentIds, ...rest } }) => ({\n ...rest,\n }),\n // Refetch when the page arg changes\n forceRefetch({ currentArg, previousArg }) {\n return JSON.stringify(currentArg) !== JSON.stringify(previousArg)\n },\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n async onCacheEntryAdded(\n { projectName, parentIds, filter, folderFilter, search, showComments },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch, getCacheEntry },\n ) {\n let token: any\n const batchProcessMessages: RealtimeBatchProcessor<any> = async (messages, isActive) => {\n const queriedFolders = getQueriedFolders(\n getCacheKey(projectName, filter, folderFilter, search, showComments),\n )\n const cachedTaskIds = new Set(\n (getCacheEntry().data as EditorTaskNode[] | undefined)?.map((task) => task.id) || [],\n )\n const batchIds = new Set<string>()\n const patches: {\n taskId: string\n field: SupportedTaskField\n value: string | string[]\n }[] = []\n\n messages\n .filter((message) => message.project === projectName)\n .filter((message) => queriedFolders.has(message.summary?.parentId))\n .forEach((message) => {\n const taskId = message.summary?.entityId\n if (!taskId || !cachedTaskIds.has(taskId)) return\n\n const field = message.topic?.split('.')[2]?.replace('_changed', '')\n const patch = getSupportedEntityPatch(\n field,\n message.summary,\n REALTIME_TASK_SUPPORTED_VALUE_FIELDS,\n )\n if (patch)\n patches.push({\n taskId,\n field: patch.field as SupportedTaskField,\n value: patch.value,\n })\n else batchIds.add(taskId)\n })\n\n if (patches.length) {\n updateCachedData((draft: EditorTaskNode[]) => {\n patches.forEach(({ taskId, field, value }) => {\n const task = draft.find((item) => item.id === taskId)\n if (!task) return\n Object.assign(task, { [field === 'type' ? 'taskType' : field]: value })\n })\n })\n }\n\n const idsToFetch = Array.from(batchIds)\n if (!idsToFetch.length || idsToFetch.length > REALTIME_REST_CALL_LIMIT) return\n\n try {\n await waitForRealtimeJitter()\n const res = await dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(\n {\n projectName,\n taskIds: idsToFetch,\n showComments: !!showComments,\n } as any,\n { forceRefetch: true },\n ),\n ).unwrap()\n const returned = res.tasks || []\n if (!isActive()) return\n const returnedMap = new Map(returned.map((t: EditorTaskNode) => [t.id, t]))\n\n updateCachedData((draft: EditorTaskNode[]) => {\n // update or add\n for (const task of returned) {\n const idx = draft.findIndex((t) => t.id === task.id)\n if (idx > -1) draft[idx] = task\n else draft.push(task)\n }\n // remove missing\n for (const id of idsToFetch) {\n if (!returnedMap.has(id)) {\n const idx = draft.findIndex((t) => t.id === id)\n if (idx > -1) draft.splice(idx, 1)\n }\n }\n })\n } catch (err) {\n console.error('Realtime overview batch update failed', err)\n }\n }\n const batcher = createRealtimeBatcher(\n batchProcessMessages,\n (message: any) =>\n `${message.project ?? projectName}:${message.summary?.entityId}:${message.topic}`,\n )\n let unsubscribeThumbnails: (() => void) | undefined\n try {\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: EditorTaskNode[]) => {\n messages.forEach((message) => {\n if (message.summary.entityType === 'task' && message.summary.thumbnailHash) {\n const idx = draft.findIndex((t) => t.id === message.summary.entityId)\n if (idx > -1) {\n draft[idx].thumbnailHash = message.summary.thumbnailHash\n }\n }\n })\n })\n },\n ['task'],\n )\n\n const handlePubSub = (_topic: string, message: any) => {\n const taskId = message?.summary?.entityId\n const parentId = message?.summary?.parentId\n if (!taskId || !parentId) return\n batcher.add({ ...message, topic: _topic })\n }\n\n // Subscribe to task entity updates\n // NOTE: backend emits topics like 'entity.task.assignees_changed'.\n // Assuming PubSub supports prefix matching when subscribing without the suffix.\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (e) {\n // cache entry removed before loaded - ignore\n }\n\n await cacheEntryRemoved\n batcher.clear()\n\n // Evict tracking map memory entry completely when this RTK Query cache entry expires\n const deadCacheKey = getCacheKey(projectName, filter, folderFilter, search, showComments)\n delete queriedFoldersRegistry[deadCacheKey]\n\n if (token) PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) unsubscribeThumbnails()\n },\n keepUnusedDataFor: CACHE_TIME,\n }),\n // searchFolders is a post so it's a bit annoying to consume\n // we wrap it in a queryFn to make it easier to consume as a query hook\n getSearchFolders: build.query<string[], SearchFoldersApiArg>({\n async queryFn({ projectName, folderSearchRequest }, { dispatch }) {\n try {\n const result = await dispatch(\n foldersApiEnhanced.endpoints.searchFolders.initiate({\n projectName,\n folderSearchRequest,\n }),\n )\n\n const data = result.data?.folderIds || []\n\n return { data }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n providesTags: (_r, _e, { projectName }) => [{ type: 'tasksFolder', id: projectName }],\n keepUnusedDataFor: CACHE_TIME,\n }),\n // Add new infinite query endpoint for tasks list\n getTasksListInfinite: build.infiniteQuery<\n GetTasksListResult,\n GetTasksListArgs,\n TasksListPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '', desc: false },\n // Calculate the next page param based on current page response and params\n getNextPageParam: (lastPage, _allPages, lastPageParam, _allPageParams) => {\n // Use the endCursor from the query as the next page param\n const pageInfo = lastPage.pageInfo\n const desc = lastPageParam.desc\n const hasNextPage = desc ? pageInfo.hasPreviousPage : pageInfo.hasNextPage\n\n if (!hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n desc: lastPageParam.desc,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const {\n projectName,\n filter,\n folderFilter,\n search,\n folderIds,\n taskIds,\n sortBy,\n desc,\n showComments,\n includeFolderChildren,\n } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetTasksList\n const queryParams: any = {\n projectName,\n filter,\n folderFilter,\n search,\n folderIds,\n taskIds,\n showComments: !!showComments,\n includeFolderChildren: includeFolderChildren !== false, // default to true\n }\n\n // Add cursor-based pagination\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.last = TASKS_INFINITE_QUERY_COUNT\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n\n // Call the existing GetTasksList endpoint\n const result = await api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n const fallback = {\n tasks: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n }\n\n // Return the tasks directly as required by the infinite query format\n return {\n data: result.data || fallback,\n }\n } catch (e: any) {\n console.error('Error in getTasksListInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.pages.flatMap((p) => p.tasks) || [], projectName),\n async onCacheEntryAdded(\n arg,\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch, getCacheEntry },\n ) {\n let token: any\n const batchProcessMessages: RealtimeBatchProcessor<any> = async (messages, isActive) => {\n const cachedTaskIds = new Set(\n (getCacheEntry().data?.pages || []).flatMap((page) =>\n page.tasks.map((task: EditorTaskNode) => task.id),\n ),\n )\n const batchIds = new Set<string>()\n const patches: {\n taskId: string\n field: SupportedTaskField\n value: string | string[]\n }[] = []\n\n messages\n .filter((message) => message.project === arg.projectName)\n .forEach((message) => {\n const taskId = message.summary?.entityId\n if (!taskId || !cachedTaskIds.has(taskId)) return\n\n const field = message.topic?.split('.')[2]?.replace('_changed', '')\n const patch = getSupportedEntityPatch(\n field,\n message.summary,\n REALTIME_TASK_SUPPORTED_VALUE_FIELDS,\n )\n if (patch)\n patches.push({\n taskId,\n field: patch.field as SupportedTaskField,\n value: patch.value,\n })\n else batchIds.add(taskId)\n })\n\n if (patches.length) {\n updateCachedData((draft: { pages: GetTasksListResult[]; pageParams: any[] }) => {\n patches.forEach(({ taskId, field, value }) => {\n for (const page of draft.pages) {\n const task = page.tasks.find((item) => item.id === taskId)\n if (!task) continue\n Object.assign(task, { [field === 'type' ? 'taskType' : field]: value })\n break\n }\n })\n })\n }\n\n const idsToFetch = Array.from(batchIds)\n if (!idsToFetch.length || idsToFetch.length > REALTIME_REST_CALL_LIMIT) return\n\n try {\n await waitForRealtimeJitter()\n const res = await dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(\n {\n projectName: arg.projectName,\n taskIds: idsToFetch,\n folderIds: arg.folderIds,\n showComments: !!arg.showComments,\n } as any,\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const returned = res.tasks || []\n if (!isActive()) return\n const returnedMap = new Map(returned.map((t: EditorTaskNode) => [t.id, t]))\n\n updateCachedData((draft: { pages: GetTasksListResult[]; pageParams: any[] }) => {\n // update/insert\n for (const task of returned) {\n let located = false\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === task.id)\n if (idx !== -1) {\n page.tasks[idx] = task\n located = true\n break\n }\n }\n if (!located) {\n if (draft.pages.length) draft.pages[0].tasks.unshift(task)\n else\n draft.pages.push({\n tasks: [task],\n pageInfo: {\n startCursor: null,\n endCursor: null,\n hasNextPage: false,\n hasPreviousPage: false,\n },\n })\n }\n }\n // remove any requested but missing tasks\n for (const id of idsToFetch) {\n if (returnedMap.has(id)) continue\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === id)\n if (idx !== -1) {\n page.tasks.splice(idx, 1)\n break\n }\n }\n }\n })\n } catch (err) {\n console.error('Realtime infinite tasks batch update failed', err)\n }\n }\n const batcher = createRealtimeBatcher(\n batchProcessMessages,\n (message: any) => `${message.project}:${message.summary?.entityId}:${message.topic}`,\n )\n let unsubscribeThumbnails: (() => void) | undefined\n try {\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: { pages: GetTasksListResult[]; pageParams: any[] }) => {\n messages.forEach((message) => {\n if (message.summary.entityType === 'task' && message.summary.thumbnailHash) {\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === message.summary.entityId)\n if (idx > -1) {\n page.tasks[idx].thumbnailHash = message.summary.thumbnailHash\n break\n }\n }\n }\n })\n })\n },\n ['task'],\n )\n\n const handlePubSub = (_topic: string, message: any) => {\n const taskId = message?.summary?.entityId\n if (!taskId) return\n batcher.add({ ...message, topic: _topic })\n }\n\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (_) {\n // ignore\n }\n await cacheEntryRemoved\n batcher.clear()\n if (token) PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) unsubscribeThumbnails()\n },\n keepUnusedDataFor: CACHE_TIME,\n }),\n getGroupedTasksList: build.query<GetGroupedTasksListResult, GetGroupedTasksListArgs>({\n queryFn: async (\n {\n projectName,\n groups,\n search,\n folderFilter,\n folderIds,\n desc,\n sortBy,\n groupCount,\n showComments,\n },\n api,\n ) => {\n try {\n let promises = []\n // Folder-level filter keys that must go in folderFilter, not task filter\n const folderFilterKeys = new Set(['folderType'])\n\n for (const group of groups) {\n // Determine count for this group - use argument override, else group count, else default\n const count = groupCount || group.count || 500\n\n // Separate folder-level conditions from task-level conditions in the group filter\n let taskFilter: string | undefined = group.filter\n let mergedFolderFilter = folderFilter\n if (group.filter) {\n try {\n const parsed = JSON.parse(group.filter)\n const conditions = parsed.conditions || []\n const taskConditions = conditions.filter((c: any) => !folderFilterKeys.has(c.key))\n const folderConditions = conditions.filter((c: any) => folderFilterKeys.has(c.key))\n\n if (folderConditions.length > 0) {\n taskFilter = taskConditions.length\n ? JSON.stringify({ ...parsed, conditions: taskConditions })\n : undefined\n // Merge folder conditions with existing folderFilter, preserving metadata\n const existingFolderFilter = folderFilter ? JSON.parse(folderFilter) : null\n const existingConditions =\n existingFolderFilter && Array.isArray(existingFolderFilter.conditions)\n ? existingFolderFilter.conditions\n : []\n const allFolderConditions = [...existingConditions, ...folderConditions]\n mergedFolderFilter = JSON.stringify(\n existingFolderFilter\n ? { ...existingFolderFilter, conditions: allFolderConditions }\n : { conditions: allFolderConditions },\n )\n }\n } catch {\n // If parsing fails, use the original filter as-is\n }\n }\n\n const queryParams: GetTasksListQueryVariables = {\n projectName,\n filter: taskFilter,\n folderFilter: mergedFolderFilter,\n search,\n folderIds,\n sortBy: sortBy,\n showComments: !!showComments,\n // @ts-expect-error - we know group does not exist on query variables but we need it for later\n group: group.value,\n }\n if (desc) {\n queryParams.last = count\n } else {\n queryParams.first = count\n }\n\n const promise = api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n promises.push(promise)\n }\n\n const result = await Promise.all(promises)\n const tasks: EditorTaskNode[] = []\n for (const res of result) {\n if (res.error) throw res.error\n // get group value\n // @ts-expect-error - we know group does exist on res.originalArgs from line 319\n const groupValue = res.originalArgs?.group as string\n\n const hasNextPage =\n res.data?.pageInfo?.hasNextPage || res.data?.pageInfo?.hasPreviousPage || false\n const groupTasks =\n res.data?.tasks.map((task, i, a) => ({\n ...task,\n groups: [\n {\n value: groupValue,\n hasNextPage: i === a.length - 1 && hasNextPage ? groupValue : undefined, // Only add hasNextPage to the last task in the group\n },\n ],\n })) || []\n\n tasks.push(...groupTasks)\n }\n\n // Return the tasks directly as required by the query format\n return {\n data: {\n tasks,\n },\n }\n } catch (error: any) {\n console.error('Error in getGroupedTasksList queryFn:', error)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks, projectName),\n keepUnusedDataFor: CACHE_TIME,\n }),\n }),\n})\n\nexport const {\n useGetOverviewTasksByFoldersQuery,\n useGetSearchFoldersQuery,\n useGetTasksListQuery,\n useGetTasksListInfiniteInfiniteQuery,\n useLazyGetTasksByParentQuery,\n useGetGroupedTasksListQuery,\n useGetFolderColumnStatsQuery,\n useGetTaskColumnStatsQuery,\n} = injectedApi\nexport default injectedApi\n"],"names":["CACHE_TIME","parseJSONField","allAttrib","parsed","parseAllAttribs","transformFilteredEntitiesByParent","response","tasks","taskNode","getOverviewTaskTags","result","projectName","parentIds","taskTags","task","parentTags","id","enhancedApi","gqlApi","res","_e","normalizeFieldStats","error","transformStatsError","_t","rest","cache","incoming","mergeFieldStats","currentArg","previousArg","hasNewTargetFields","_r","foldersApiEnhanced","foldersApi","TASKS_INFINITE_QUERY_COUNT","queriedFoldersRegistry","getCacheKey","filter","folderFilter","search","showComments","markFoldersAsQueried","cacheKey","folderIds","getQueriedFolders","injectedApi","build","dispatch","getState","forced","state","cacheArgs","cacheData","alreadyQueriedFolders","newFolderIds","allNewTasks","BATCH_SIZE","TASK_PER_FOLDER","MAX_PAGES_PER_BATCH","MAX_FOLDERS","TASKS_PER_PAGE","i","batchFolderIds","hasNextPage","cursor","pageCount","data","fetchedTasks","pageInfo","finalTasks","uniqueTasksMap","e","cacheDataLoaded","cacheEntryRemoved","updateCachedData","getCacheEntry","token","batcher","createRealtimeBatcher","messages","isActive","queriedFolders","cachedTaskIds","batchIds","patches","message","taskId","field","patch","getSupportedEntityPatch","REALTIME_TASK_SUPPORTED_VALUE_FIELDS","draft","value","item","idsToFetch","REALTIME_REST_CALL_LIMIT","waitForRealtimeJitter","returned","returnedMap","t","idx","err","unsubscribeThumbnails","subscribeToThumbnailUpdates","handlePubSub","_topic","parentId","PubSub","deadCacheKey","folderSearchRequest","lastPage","_allPages","lastPageParam","_allPageParams","queryArg","pageParam","api","taskIds","sortBy","desc","includeFolderChildren","queryParams","fallback","p","arg","page","located","groups","groupCount","promises","folderFilterKeys","group","count","taskFilter","mergedFolderFilter","conditions","taskConditions","folderConditions","existingFolderFilter","allFolderConditions","promise","groupValue","groupTasks","a","useGetOverviewTasksByFoldersQuery","useGetSearchFoldersQuery","useGetTasksListQuery","useGetTasksListInfiniteInfiniteQuery","useLazyGetTasksByParentQuery","useGetGroupedTasksListQuery","useGetFolderColumnStatsQuery","useGetTaskColumnStatsQuery"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("../versions/getVersionsProducts.cjs.js"),I=r=>[{type:"version",id:"LIST"},...r.map(d=>({type:"version",id:d.entityId}))],V=(r,d)=>{const n={...r};return Object.keys(d).forEach(s=>{s!=="attrib"&&d[s]!==void 0&&(n[s]=d[s])}),d.attrib&&(n.attrib={...n.attrib,...d.attrib}),n},h=(r,d)=>{r.forEach(n=>{const s=n.product?.folder,l=s&&d.get(s.id);l!==void 0&&s&&(s.status=l)})},P=(r,d)=>{r.forEach(n=>{const s=d.get(n.folder?.id);s!==void 0&&n.folder&&(n.folder.status=s)})},m=(r,{state:d,dispatch:n},s)=>{const l=new Map(r.filter(t=>t.type!=="delete"&&t.entityId&&t.data?.status!==void 0).map(t=>[t.entityId,t.data?.status]));if(!l.size)return;const y=g.injectedVersionsPageApi.util.selectInvalidatedBy(d,[{type:"version",id:"LIST"},{type:"product",id:"LIST"}]);for(const t of y)if(t.endpointName==="getVersionsInfinite"||t.endpointName==="getProductsInfinite"){const f=n(g.injectedVersionsPageApi.util.updateQueryData(t.endpointName,t.originalArgs,o=>{for(const p of o.pages)t.endpointName==="getVersionsInfinite"?h(p.versions,l):P(p.products,l)}));s?.push(f)}else if(t.endpointName==="getVersionsByProducts"||t.endpointName==="getGroupedVersionsList"||t.endpointName==="GetVersions"||t.endpointName==="GetVersionsByProductId"){const f=n(g.injectedVersionsPageApi.util.updateQueryData(t.endpointName,t.originalArgs,o=>h(o.versions,l)));s?.push(f)}else if(t.endpointName==="GetProducts"){const f=n(g.injectedVersionsPageApi.util.updateQueryData(t.endpointName,t.originalArgs,o=>P(o.products,l)));s?.push(f)}},A=(r,{state:d,dispatch:n},s)=>{if(!r.length)return;const l=I(r),y=g.injectedVersionsPageApi.util.selectInvalidatedBy(d,l),t=new Set(r.filter(o=>o.type==="delete").map(o=>o.entityId));for(const o of y)if(o.endpointName==="getVersionsInfinite"){const p=n(g.injectedVersionsPageApi.util.updateQueryData("getVersionsInfinite",o.originalArgs,a=>{for(const e of a.pages){for(let i=e.versions.length-1;i>=0;i--)t.has(e.versions[i].id)&&e.versions.splice(i,1);for(let i=0;i<e.versions.length;i++){const c=e.versions[i],u=r.find(v=>v.entityId===c.id&&v.type!=="delete");u?.data&&(e.versions[i]=V(c,u.data))}}}));s?.push(p)}else if(o.endpointName==="getVersionsByProducts"){const p=n(g.injectedVersionsPageApi.util.updateQueryData("getVersionsByProducts",o.originalArgs,a=>{for(let e=a.versions.length-1;e>=0;e--)t.has(a.versions[e].id)&&a.versions.splice(e,1);for(let e=0;e<a.versions.length;e++){const i=a.versions[e],c=r.find(u=>u.entityId===i.id&&u.type!=="delete");c?.data&&(a.versions[e]=V(i,c.data))}}));s?.push(p)}else if(o.endpointName==="getProductsInfinite"){const p=n(g.injectedVersionsPageApi.util.updateQueryData("getProductsInfinite",o.originalArgs,a=>{for(const e of a.pages)for(const i of e.products)if(i.featuredVersion)if(t.has(i.featuredVersion.id))i.featuredVersion=null;else{const c=r.find(u=>u.entityId===i.featuredVersion.id&&u.type!=="delete");c?.data&&(i.featuredVersion=V(i.featuredVersion,c.data))}}));s?.push(p)}else if(o.endpointName==="getGroupedVersionsList"){const p=n(g.injectedVersionsPageApi.util.updateQueryData("getGroupedVersionsList",o.originalArgs,a=>{for(let e=a.versions.length-1;e>=0;e--)t.has(a.versions[e].id)&&a.versions.splice(e,1);for(let e=0;e<a.versions.length;e++){const i=a.versions[e],c=r.find(u=>u.entityId===i.id&&u.type!=="delete");if(c?.data){const u=i.groups;a.versions[e]=V(i,c.data),a.versions[e].groups=u}}}));s?.push(p)}const f=r.filter(o=>o.type!=="delete");f.length>0&&n(g.injectedVersionsPageApi.util.invalidateTags(I(f)))};exports.patchFolderStatusInVersions=m;exports.patchVersions=A;
|
|
2
2
|
//# sourceMappingURL=patchVersions.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patchVersions.cjs.js","sources":["../../../../../../src/api/queries/overview/patchVersions.ts"],"sourcesContent":["/**\n * PATCH VERSIONS - Cache patching for version updates\n *\n * This module handles optimistic updates for version entities and invalidates\n * affected caches to trigger refetching.\n *\n * When versions are updated via operations, this module:\n * 1. Immediately patches caches with operation data (optimistic update)\n * 2. Invalidates affected caches to trigger automatic refetching\n */\n\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { RootState } from '@reduxjs/toolkit/query'\nimport { PatchOperation } from './updateOverview'\nimport { injectedVersionsPageApi } from '../versions/getVersionsProducts'\nimport type { VersionNode } from '../versions/getVersionsProducts'\n\n// Helper to get version tags for selectInvalidatedBy and invalidation\nconst getVersionTags = (versions: Pick<PatchOperation, 'entityId'>[]) => {\n return [\n { type: 'version', id: 'LIST' },\n ...versions.map((op) => ({ type: 'version', id: op.entityId })),\n ]\n}\n\n// Helper to merge operation data into a version entity\nconst updateVersionWithOperation = (version: VersionNode, operationData: any): VersionNode => {\n const updated = { ...version } as any\n\n // Update top-level properties\n Object.keys(operationData).forEach((key) => {\n if (key === 'attrib') return // Handle separately\n if (operationData[key] !== undefined) {\n updated[key] = operationData[key]\n }\n })\n\n // Handle attrib merging\n if (operationData.attrib) {\n updated.attrib = {\n ...updated.attrib,\n ...operationData.attrib,\n }\n }\n\n return updated as VersionNode\n}\n\n/**\n * Patches version updates into all relevant caches and invalidates them for refetching:\n * 1. Optimistically update getVersionsInfinite and getVersionsByProducts caches\n * 2. Invalidate all affected caches to trigger automatic refetching\n * 3. For delete operations, invalidate tags immediately\n */\nexport const patchVersions = (\n versions: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n if (!versions.length) return\n\n const tags = getVersionTags(versions)\n\n // Step 1: Get caches that need updating using selectInvalidatedBy for version tags\n const versionEntries = injectedVersionsPageApi.util.selectInvalidatedBy(state, tags)\n\n // Get IDs of versions being deleted\n const deleteIds = new Set(\n versions.filter((op) => op.type === 'delete').map((op) => op.entityId),\n )\n\n // Step 2: Optimistically patch caches - handle both updates and deletes\n for (const entry of versionEntries) {\n if (entry.endpointName === 'getVersionsInfinite') {\n const patch = dispatch(\n injectedVersionsPageApi.util.updateQueryData(\n 'getVersionsInfinite',\n entry.originalArgs,\n (draft: any) => {\n for (const page of draft.pages) {\n // Remove deleted versions (iterate in reverse to avoid index issues)\n for (let i = page.versions.length - 1; i >= 0; i--) {\n if (deleteIds.has(page.versions[i].id)) {\n page.versions.splice(i, 1)\n }\n }\n // Update remaining versions\n for (let i = 0; i < page.versions.length; i++) {\n const version = page.versions[i]\n const operation = versions.find(\n (op) => op.entityId === version.id && op.type !== 'delete',\n )\n if (operation?.data) {\n page.versions[i] = updateVersionWithOperation(version, operation.data)\n }\n }\n }\n },\n ),\n )\n patches?.push(patch)\n } else if (entry.endpointName === 'getVersionsByProducts') {\n const patch = dispatch(\n injectedVersionsPageApi.util.updateQueryData(\n 'getVersionsByProducts',\n entry.originalArgs,\n (draft: any) => {\n // Remove deleted versions (iterate in reverse to avoid index issues)\n for (let i = draft.versions.length - 1; i >= 0; i--) {\n if (deleteIds.has(draft.versions[i].id)) {\n draft.versions.splice(i, 1)\n }\n }\n // Update remaining versions\n for (let i = 0; i < draft.versions.length; i++) {\n const version = draft.versions[i]\n const operation = versions.find(\n (op) => op.entityId === version.id && op.type !== 'delete',\n )\n if (operation?.data) {\n draft.versions[i] = updateVersionWithOperation(version, operation.data)\n }\n }\n },\n ),\n )\n patches?.push(patch)\n } else if (entry.endpointName === 'getProductsInfinite') {\n const patch = dispatch(\n injectedVersionsPageApi.util.updateQueryData(\n 'getProductsInfinite',\n entry.originalArgs,\n (draft: any) => {\n for (const page of draft.pages) {\n for (const product of page.products) {\n if (product.featuredVersion) {\n // If featured version was deleted, set to null\n if (deleteIds.has(product.featuredVersion.id)) {\n product.featuredVersion = null\n } else {\n // Update featured version if it was updated\n const operation = versions.find(\n (op) => op.entityId === product.featuredVersion.id && op.type !== 'delete',\n )\n if (operation?.data) {\n product.featuredVersion = updateVersionWithOperation(\n product.featuredVersion,\n operation.data,\n )\n }\n }\n }\n }\n }\n },\n ),\n )\n patches?.push(patch)\n } else if (entry.endpointName === 'getGroupedVersionsList') {\n const patch = dispatch(\n injectedVersionsPageApi.util.updateQueryData(\n 'getGroupedVersionsList',\n entry.originalArgs,\n (draft: any) => {\n // Remove deleted versions (iterate in reverse to avoid index issues)\n for (let i = draft.versions.length - 1; i >= 0; i--) {\n if (deleteIds.has(draft.versions[i].id)) {\n draft.versions.splice(i, 1)\n }\n }\n // Update remaining versions\n for (let i = 0; i < draft.versions.length; i++) {\n const version = draft.versions[i]\n const operation = versions.find(\n (op) => op.entityId === version.id && op.type !== 'delete',\n )\n if (operation?.data) {\n // Preserve the groups array (contains pagination state)\n const groups = version.groups\n draft.versions[i] = updateVersionWithOperation(version, operation.data)\n draft.versions[i].groups = groups\n }\n }\n },\n ),\n )\n patches?.push(patch)\n }\n }\n\n // Invalidate updated rows only; deletes have nothing to refresh — reconciled by invalidatesTags.\n const nonDeleteOps = versions.filter((op) => op.type !== 'delete')\n if (nonDeleteOps.length > 0) {\n dispatch(injectedVersionsPageApi.util.invalidateTags(getVersionTags(nonDeleteOps)))\n }\n}\n"],"names":["getVersionTags","versions","op","updateVersionWithOperation","version","operationData","updated","key","patchVersions","state","dispatch","patches","tags","versionEntries","injectedVersionsPageApi","deleteIds","entry","patch","draft","page","i","operation","product","groups","nonDeleteOps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"patchVersions.cjs.js","sources":["../../../../../../src/api/queries/overview/patchVersions.ts"],"sourcesContent":["/**\n * PATCH VERSIONS - Cache patching for version updates\n *\n * This module handles optimistic updates for version entities and invalidates\n * affected caches to trigger refetching.\n *\n * When versions are updated via operations, this module:\n * 1. Immediately patches caches with operation data (optimistic update)\n * 2. Invalidates affected caches to trigger automatic refetching\n */\n\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { RootState } from '@reduxjs/toolkit/query'\nimport { PatchOperation } from './updateOverview'\nimport { injectedVersionsPageApi } from '../versions/getVersionsProducts'\nimport type { ProductNode, VersionNode } from '../versions/getVersionsProducts'\n\n// Helper to get version tags for selectInvalidatedBy and invalidation\nconst getVersionTags = (versions: Pick<PatchOperation, 'entityId'>[]) => {\n return [\n { type: 'version', id: 'LIST' },\n ...versions.map((op) => ({ type: 'version', id: op.entityId })),\n ]\n}\n\n// Helper to merge operation data into a version entity\nconst updateVersionWithOperation = (version: VersionNode, operationData: any): VersionNode => {\n const updated = { ...version } as any\n\n // Update top-level properties\n Object.keys(operationData).forEach((key) => {\n if (key === 'attrib') return // Handle separately\n if (operationData[key] !== undefined) {\n updated[key] = operationData[key]\n }\n })\n\n // Handle attrib merging\n if (operationData.attrib) {\n updated.attrib = {\n ...updated.attrib,\n ...operationData.attrib,\n }\n }\n\n return updated as VersionNode\n}\n\nconst applyFolderStatusToVersions = (versions: VersionNode[], folderStatuses: Map<string, any>) => {\n versions.forEach((version) => {\n const folder = version.product?.folder\n const status = folder && folderStatuses.get(folder.id)\n if (status !== undefined && folder) folder.status = status\n })\n}\n\nconst patchFolderStatusInProducts = (products: ProductNode[], folderStatuses: Map<string, any>) => {\n products.forEach((product) => {\n const status = folderStatuses.get(product.folder?.id)\n if (status !== undefined && product.folder) product.folder.status = status\n })\n}\n\n/**\n * Patches folder status into the nested folder data returned by versions/products queries.\n * Folder updates are handled by the overview cache separately, so this deliberately does not\n * invalidate version or product tags and cause those queries to reload.\n */\nexport const patchFolderStatusInVersions = (\n folders: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const folderStatuses = new Map(\n folders\n .filter((op) => op.type !== 'delete' && op.entityId && op.data?.status !== undefined)\n .map((op) => [op.entityId as string, op.data?.status]),\n )\n if (!folderStatuses.size) return\n\n const entries = injectedVersionsPageApi.util.selectInvalidatedBy(state, [\n { type: 'version', id: 'LIST' },\n { type: 'product', id: 'LIST' },\n ])\n\n for (const entry of entries) {\n if (\n entry.endpointName === 'getVersionsInfinite' ||\n entry.endpointName === 'getProductsInfinite'\n ) {\n const patch = dispatch(\n injectedVersionsPageApi.util.updateQueryData(\n entry.endpointName,\n entry.originalArgs,\n (draft: any) => {\n for (const page of draft.pages) {\n if (entry.endpointName === 'getVersionsInfinite') {\n applyFolderStatusToVersions(page.versions, folderStatuses)\n } else {\n patchFolderStatusInProducts(page.products, folderStatuses)\n }\n }\n },\n ),\n )\n patches?.push(patch)\n } else if (\n entry.endpointName === 'getVersionsByProducts' ||\n entry.endpointName === 'getGroupedVersionsList' ||\n entry.endpointName === 'GetVersions' ||\n entry.endpointName === 'GetVersionsByProductId'\n ) {\n const patch = dispatch(\n injectedVersionsPageApi.util.updateQueryData(\n entry.endpointName,\n entry.originalArgs,\n (draft: any) => applyFolderStatusToVersions(draft.versions, folderStatuses),\n ),\n )\n patches?.push(patch)\n } else if (entry.endpointName === 'GetProducts') {\n const patch = dispatch(\n injectedVersionsPageApi.util.updateQueryData(\n entry.endpointName,\n entry.originalArgs,\n (draft: any) => patchFolderStatusInProducts(draft.products, folderStatuses),\n ),\n )\n patches?.push(patch)\n }\n }\n}\n\n/**\n * Patches version updates into all relevant caches and invalidates them for refetching:\n * 1. Optimistically update getVersionsInfinite and getVersionsByProducts caches\n * 2. Invalidate all affected caches to trigger automatic refetching\n * 3. For delete operations, invalidate tags immediately\n */\nexport const patchVersions = (\n versions: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n if (!versions.length) return\n\n const tags = getVersionTags(versions)\n\n // Step 1: Get caches that need updating using selectInvalidatedBy for version tags\n const versionEntries = injectedVersionsPageApi.util.selectInvalidatedBy(state, tags)\n\n // Get IDs of versions being deleted\n const deleteIds = new Set(versions.filter((op) => op.type === 'delete').map((op) => op.entityId))\n\n // Step 2: Optimistically patch caches - handle both updates and deletes\n for (const entry of versionEntries) {\n if (entry.endpointName === 'getVersionsInfinite') {\n const patch = dispatch(\n injectedVersionsPageApi.util.updateQueryData(\n 'getVersionsInfinite',\n entry.originalArgs,\n (draft: any) => {\n for (const page of draft.pages) {\n // Remove deleted versions (iterate in reverse to avoid index issues)\n for (let i = page.versions.length - 1; i >= 0; i--) {\n if (deleteIds.has(page.versions[i].id)) {\n page.versions.splice(i, 1)\n }\n }\n // Update remaining versions\n for (let i = 0; i < page.versions.length; i++) {\n const version = page.versions[i]\n const operation = versions.find(\n (op) => op.entityId === version.id && op.type !== 'delete',\n )\n if (operation?.data) {\n page.versions[i] = updateVersionWithOperation(version, operation.data)\n }\n }\n }\n },\n ),\n )\n patches?.push(patch)\n } else if (entry.endpointName === 'getVersionsByProducts') {\n const patch = dispatch(\n injectedVersionsPageApi.util.updateQueryData(\n 'getVersionsByProducts',\n entry.originalArgs,\n (draft: any) => {\n // Remove deleted versions (iterate in reverse to avoid index issues)\n for (let i = draft.versions.length - 1; i >= 0; i--) {\n if (deleteIds.has(draft.versions[i].id)) {\n draft.versions.splice(i, 1)\n }\n }\n // Update remaining versions\n for (let i = 0; i < draft.versions.length; i++) {\n const version = draft.versions[i]\n const operation = versions.find(\n (op) => op.entityId === version.id && op.type !== 'delete',\n )\n if (operation?.data) {\n draft.versions[i] = updateVersionWithOperation(version, operation.data)\n }\n }\n },\n ),\n )\n patches?.push(patch)\n } else if (entry.endpointName === 'getProductsInfinite') {\n const patch = dispatch(\n injectedVersionsPageApi.util.updateQueryData(\n 'getProductsInfinite',\n entry.originalArgs,\n (draft: any) => {\n for (const page of draft.pages) {\n for (const product of page.products) {\n if (product.featuredVersion) {\n // If featured version was deleted, set to null\n if (deleteIds.has(product.featuredVersion.id)) {\n product.featuredVersion = null\n } else {\n // Update featured version if it was updated\n const operation = versions.find(\n (op) => op.entityId === product.featuredVersion.id && op.type !== 'delete',\n )\n if (operation?.data) {\n product.featuredVersion = updateVersionWithOperation(\n product.featuredVersion,\n operation.data,\n )\n }\n }\n }\n }\n }\n },\n ),\n )\n patches?.push(patch)\n } else if (entry.endpointName === 'getGroupedVersionsList') {\n const patch = dispatch(\n injectedVersionsPageApi.util.updateQueryData(\n 'getGroupedVersionsList',\n entry.originalArgs,\n (draft: any) => {\n // Remove deleted versions (iterate in reverse to avoid index issues)\n for (let i = draft.versions.length - 1; i >= 0; i--) {\n if (deleteIds.has(draft.versions[i].id)) {\n draft.versions.splice(i, 1)\n }\n }\n // Update remaining versions\n for (let i = 0; i < draft.versions.length; i++) {\n const version = draft.versions[i]\n const operation = versions.find(\n (op) => op.entityId === version.id && op.type !== 'delete',\n )\n if (operation?.data) {\n // Preserve the groups array (contains pagination state)\n const groups = version.groups\n draft.versions[i] = updateVersionWithOperation(version, operation.data)\n draft.versions[i].groups = groups\n }\n }\n },\n ),\n )\n patches?.push(patch)\n }\n }\n\n // Invalidate updated rows only; deletes have nothing to refresh — reconciled by invalidatesTags.\n const nonDeleteOps = versions.filter((op) => op.type !== 'delete')\n if (nonDeleteOps.length > 0) {\n dispatch(injectedVersionsPageApi.util.invalidateTags(getVersionTags(nonDeleteOps)))\n }\n}\n"],"names":["getVersionTags","versions","op","updateVersionWithOperation","version","operationData","updated","key","applyFolderStatusToVersions","folderStatuses","folder","status","patchFolderStatusInProducts","products","product","patchFolderStatusInVersions","folders","state","dispatch","patches","entries","injectedVersionsPageApi","entry","patch","draft","page","patchVersions","tags","versionEntries","deleteIds","operation","i","groups","nonDeleteOps"],"mappings":"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"}
|
|
@@ -1,112 +1,165 @@
|
|
|
1
|
-
import { injectedVersionsPageApi as
|
|
2
|
-
const
|
|
1
|
+
import { injectedVersionsPageApi as c } from "../versions/getVersionsProducts.es.js";
|
|
2
|
+
const V = (r) => [
|
|
3
3
|
{ type: "version", id: "LIST" },
|
|
4
|
-
...
|
|
5
|
-
],
|
|
6
|
-
const
|
|
7
|
-
return Object.keys(
|
|
8
|
-
|
|
9
|
-
}),
|
|
10
|
-
...
|
|
11
|
-
...
|
|
12
|
-
}),
|
|
13
|
-
},
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
4
|
+
...r.map((d) => ({ type: "version", id: d.entityId }))
|
|
5
|
+
], y = (r, d) => {
|
|
6
|
+
const n = { ...r };
|
|
7
|
+
return Object.keys(d).forEach((s) => {
|
|
8
|
+
s !== "attrib" && d[s] !== void 0 && (n[s] = d[s]);
|
|
9
|
+
}), d.attrib && (n.attrib = {
|
|
10
|
+
...n.attrib,
|
|
11
|
+
...d.attrib
|
|
12
|
+
}), n;
|
|
13
|
+
}, h = (r, d) => {
|
|
14
|
+
r.forEach((n) => {
|
|
15
|
+
const s = n.product?.folder, p = s && d.get(s.id);
|
|
16
|
+
p !== void 0 && s && (s.status = p);
|
|
17
|
+
});
|
|
18
|
+
}, m = (r, d) => {
|
|
19
|
+
r.forEach((n) => {
|
|
20
|
+
const s = d.get(n.folder?.id);
|
|
21
|
+
s !== void 0 && n.folder && (n.folder.status = s);
|
|
22
|
+
});
|
|
23
|
+
}, P = (r, {
|
|
24
|
+
state: d,
|
|
25
|
+
dispatch: n
|
|
26
|
+
}, s) => {
|
|
27
|
+
const p = new Map(
|
|
28
|
+
r.filter((t) => t.type !== "delete" && t.entityId && t.data?.status !== void 0).map((t) => [t.entityId, t.data?.status])
|
|
20
29
|
);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
30
|
+
if (!p.size) return;
|
|
31
|
+
const v = c.util.selectInvalidatedBy(d, [
|
|
32
|
+
{ type: "version", id: "LIST" },
|
|
33
|
+
{ type: "product", id: "LIST" }
|
|
34
|
+
]);
|
|
35
|
+
for (const t of v)
|
|
36
|
+
if (t.endpointName === "getVersionsInfinite" || t.endpointName === "getProductsInfinite") {
|
|
37
|
+
const g = n(
|
|
38
|
+
c.util.updateQueryData(
|
|
39
|
+
t.endpointName,
|
|
40
|
+
t.originalArgs,
|
|
41
|
+
(o) => {
|
|
42
|
+
for (const f of o.pages)
|
|
43
|
+
t.endpointName === "getVersionsInfinite" ? h(f.versions, p) : m(f.products, p);
|
|
44
|
+
}
|
|
45
|
+
)
|
|
46
|
+
);
|
|
47
|
+
s?.push(g);
|
|
48
|
+
} else if (t.endpointName === "getVersionsByProducts" || t.endpointName === "getGroupedVersionsList" || t.endpointName === "GetVersions" || t.endpointName === "GetVersionsByProductId") {
|
|
49
|
+
const g = n(
|
|
50
|
+
c.util.updateQueryData(
|
|
51
|
+
t.endpointName,
|
|
52
|
+
t.originalArgs,
|
|
53
|
+
(o) => h(o.versions, p)
|
|
54
|
+
)
|
|
55
|
+
);
|
|
56
|
+
s?.push(g);
|
|
57
|
+
} else if (t.endpointName === "GetProducts") {
|
|
58
|
+
const g = n(
|
|
59
|
+
c.util.updateQueryData(
|
|
60
|
+
t.endpointName,
|
|
61
|
+
t.originalArgs,
|
|
62
|
+
(o) => m(o.products, p)
|
|
63
|
+
)
|
|
64
|
+
);
|
|
65
|
+
s?.push(g);
|
|
66
|
+
}
|
|
67
|
+
}, A = (r, {
|
|
68
|
+
state: d,
|
|
69
|
+
dispatch: n
|
|
70
|
+
}, s) => {
|
|
71
|
+
if (!r.length) return;
|
|
72
|
+
const p = V(r), v = c.util.selectInvalidatedBy(d, p), t = new Set(r.filter((o) => o.type === "delete").map((o) => o.entityId));
|
|
73
|
+
for (const o of v)
|
|
74
|
+
if (o.endpointName === "getVersionsInfinite") {
|
|
75
|
+
const f = n(
|
|
76
|
+
c.util.updateQueryData(
|
|
25
77
|
"getVersionsInfinite",
|
|
26
|
-
|
|
27
|
-
(
|
|
28
|
-
for (const e of
|
|
29
|
-
for (let
|
|
30
|
-
|
|
31
|
-
for (let
|
|
32
|
-
const
|
|
33
|
-
(
|
|
78
|
+
o.originalArgs,
|
|
79
|
+
(a) => {
|
|
80
|
+
for (const e of a.pages) {
|
|
81
|
+
for (let i = e.versions.length - 1; i >= 0; i--)
|
|
82
|
+
t.has(e.versions[i].id) && e.versions.splice(i, 1);
|
|
83
|
+
for (let i = 0; i < e.versions.length; i++) {
|
|
84
|
+
const l = e.versions[i], u = r.find(
|
|
85
|
+
(I) => I.entityId === l.id && I.type !== "delete"
|
|
34
86
|
);
|
|
35
|
-
|
|
87
|
+
u?.data && (e.versions[i] = y(l, u.data));
|
|
36
88
|
}
|
|
37
89
|
}
|
|
38
90
|
}
|
|
39
91
|
)
|
|
40
92
|
);
|
|
41
|
-
|
|
42
|
-
} else if (
|
|
43
|
-
const
|
|
44
|
-
|
|
93
|
+
s?.push(f);
|
|
94
|
+
} else if (o.endpointName === "getVersionsByProducts") {
|
|
95
|
+
const f = n(
|
|
96
|
+
c.util.updateQueryData(
|
|
45
97
|
"getVersionsByProducts",
|
|
46
|
-
|
|
47
|
-
(
|
|
48
|
-
for (let e =
|
|
49
|
-
|
|
50
|
-
for (let e = 0; e <
|
|
51
|
-
const
|
|
52
|
-
(
|
|
98
|
+
o.originalArgs,
|
|
99
|
+
(a) => {
|
|
100
|
+
for (let e = a.versions.length - 1; e >= 0; e--)
|
|
101
|
+
t.has(a.versions[e].id) && a.versions.splice(e, 1);
|
|
102
|
+
for (let e = 0; e < a.versions.length; e++) {
|
|
103
|
+
const i = a.versions[e], l = r.find(
|
|
104
|
+
(u) => u.entityId === i.id && u.type !== "delete"
|
|
53
105
|
);
|
|
54
|
-
|
|
106
|
+
l?.data && (a.versions[e] = y(i, l.data));
|
|
55
107
|
}
|
|
56
108
|
}
|
|
57
109
|
)
|
|
58
110
|
);
|
|
59
|
-
|
|
60
|
-
} else if (
|
|
61
|
-
const
|
|
62
|
-
|
|
111
|
+
s?.push(f);
|
|
112
|
+
} else if (o.endpointName === "getProductsInfinite") {
|
|
113
|
+
const f = n(
|
|
114
|
+
c.util.updateQueryData(
|
|
63
115
|
"getProductsInfinite",
|
|
64
|
-
|
|
65
|
-
(
|
|
66
|
-
for (const e of
|
|
67
|
-
for (const
|
|
68
|
-
if (
|
|
69
|
-
if (
|
|
70
|
-
|
|
116
|
+
o.originalArgs,
|
|
117
|
+
(a) => {
|
|
118
|
+
for (const e of a.pages)
|
|
119
|
+
for (const i of e.products)
|
|
120
|
+
if (i.featuredVersion)
|
|
121
|
+
if (t.has(i.featuredVersion.id))
|
|
122
|
+
i.featuredVersion = null;
|
|
71
123
|
else {
|
|
72
|
-
const
|
|
73
|
-
(
|
|
124
|
+
const l = r.find(
|
|
125
|
+
(u) => u.entityId === i.featuredVersion.id && u.type !== "delete"
|
|
74
126
|
);
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
127
|
+
l?.data && (i.featuredVersion = y(
|
|
128
|
+
i.featuredVersion,
|
|
129
|
+
l.data
|
|
78
130
|
));
|
|
79
131
|
}
|
|
80
132
|
}
|
|
81
133
|
)
|
|
82
134
|
);
|
|
83
|
-
|
|
84
|
-
} else if (
|
|
85
|
-
const
|
|
86
|
-
|
|
135
|
+
s?.push(f);
|
|
136
|
+
} else if (o.endpointName === "getGroupedVersionsList") {
|
|
137
|
+
const f = n(
|
|
138
|
+
c.util.updateQueryData(
|
|
87
139
|
"getGroupedVersionsList",
|
|
88
|
-
|
|
89
|
-
(
|
|
90
|
-
for (let e =
|
|
91
|
-
|
|
92
|
-
for (let e = 0; e <
|
|
93
|
-
const
|
|
94
|
-
(
|
|
140
|
+
o.originalArgs,
|
|
141
|
+
(a) => {
|
|
142
|
+
for (let e = a.versions.length - 1; e >= 0; e--)
|
|
143
|
+
t.has(a.versions[e].id) && a.versions.splice(e, 1);
|
|
144
|
+
for (let e = 0; e < a.versions.length; e++) {
|
|
145
|
+
const i = a.versions[e], l = r.find(
|
|
146
|
+
(u) => u.entityId === i.id && u.type !== "delete"
|
|
95
147
|
);
|
|
96
|
-
if (
|
|
97
|
-
const
|
|
98
|
-
|
|
148
|
+
if (l?.data) {
|
|
149
|
+
const u = i.groups;
|
|
150
|
+
a.versions[e] = y(i, l.data), a.versions[e].groups = u;
|
|
99
151
|
}
|
|
100
152
|
}
|
|
101
153
|
}
|
|
102
154
|
)
|
|
103
155
|
);
|
|
104
|
-
|
|
156
|
+
s?.push(f);
|
|
105
157
|
}
|
|
106
|
-
const
|
|
107
|
-
|
|
158
|
+
const g = r.filter((o) => o.type !== "delete");
|
|
159
|
+
g.length > 0 && n(c.util.invalidateTags(V(g)));
|
|
108
160
|
};
|
|
109
161
|
export {
|
|
110
|
-
|
|
162
|
+
P as patchFolderStatusInVersions,
|
|
163
|
+
A as patchVersions
|
|
111
164
|
};
|
|
112
165
|
//# sourceMappingURL=patchVersions.es.js.map
|