@ynput/ayon-frontend-shared 0.3.36 → 0.3.37
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 +24 -23
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/ProjectTreeTable.cjs.js +1 -1
- package/dist/ProjectTreeTable.es.js +222 -215
- package/dist/ProjectTreeTable.es.js.map +1 -1
- package/dist/_virtual/index.cjs12.js +1 -1
- package/dist/_virtual/index.cjs13.js +1 -1
- package/dist/_virtual/index.cjs15.js +1 -1
- package/dist/_virtual/index.cjs18.js +1 -1
- package/dist/_virtual/index.cjs19.js +1 -1
- package/dist/_virtual/index.cjs4.js +1 -1
- package/dist/_virtual/index.cjs8.js +1 -1
- package/dist/_virtual/index.cjs9.js +1 -1
- package/dist/_virtual/index.es12.js +2 -5
- package/dist/_virtual/index.es12.js.map +1 -1
- package/dist/_virtual/index.es13.js +2 -5
- package/dist/_virtual/index.es13.js.map +1 -1
- package/dist/_virtual/index.es14.js +2 -2
- package/dist/_virtual/index.es15.js +2 -2
- package/dist/_virtual/index.es16.js +2 -2
- package/dist/_virtual/index.es17.js +2 -2
- package/dist/_virtual/index.es18.js +2 -2
- package/dist/_virtual/index.es19.js +2 -2
- package/dist/_virtual/index.es4.js +5 -2
- package/dist/_virtual/index.es4.js.map +1 -1
- package/dist/_virtual/index.es7.js +2 -2
- package/dist/_virtual/index.es8.js +2 -2
- package/dist/_virtual/index.es9.js +5 -2
- package/dist/_virtual/index.es9.js.map +1 -1
- package/dist/components.cjs.js +1 -1
- package/dist/components.es.js +77 -73
- package/dist/components.es.js.map +1 -1
- package/dist/context.cjs.js +1 -1
- package/dist/context.es.js +50 -49
- package/dist/hooks.cjs.js +1 -1
- package/dist/hooks.es.js +33 -29
- package/dist/hooks.es.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +13 -10
- package/dist/index.es.js.map +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js.map +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js.map +1 -1
- package/dist/node_modules/remove-accents/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/module/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/module/index.cjs.js.map +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/module/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/type/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/type/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/index.cjs.js.map +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.cjs.js.map +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/utils.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/utils.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/sdk/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/sdk/dist/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/sdk/dist/utils.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/sdk/dist/utils.es.js +1 -1
- package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
- package/dist/shared/node_modules/prop-types/index.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js.map +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js.map +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js.map +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
- package/dist/shared/src/api/generated/graphql.cjs.js +108 -23
- package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.es.js +138 -53
- 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/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 +42 -42
- package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/patchTableLatestComments.cjs.js +2 -0
- package/dist/shared/src/api/queries/activities/patchTableLatestComments.cjs.js.map +1 -0
- package/dist/shared/src/api/queries/activities/patchTableLatestComments.es.js +68 -0
- package/dist/shared/src/api/queries/activities/patchTableLatestComments.es.js.map +1 -0
- package/dist/shared/src/api/queries/activities/updateActivities.cjs.js +1 -1
- package/dist/shared/src/api/queries/activities/updateActivities.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/updateActivities.es.js +69 -62
- package/dist/shared/src/api/queries/activities/updateActivities.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js +1 -1
- package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js +64 -56
- package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js +1 -1
- package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/columnStats.es.js +57 -53
- package/dist/shared/src/api/queries/columnStats/columnStats.es.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js +1 -1
- package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/metricTargets.es.js +27 -25
- package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +1 -1
- package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.cjs.js +1 -1
- package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.es.js +4 -4
- package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.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 +212 -187
- package/dist/shared/src/api/queries/overview/getOverview.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 +6 -3
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.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 +6 -3
- 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 +6 -3
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.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 +6 -3
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +102 -99
- 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 +95 -87
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.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 +6 -3
- 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 +6 -3
- 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 +6 -3
- 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 +6 -3
- 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 +7 -4
- 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 +6 -3
- 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 +6 -3
- package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/CustomDateRangeDialog.cjs.js +6 -0
- package/dist/shared/src/components/SearchFilter/CustomDateRangeDialog.cjs.js.map +1 -0
- package/dist/shared/src/components/SearchFilter/CustomDateRangeDialog.es.js +58 -0
- package/dist/shared/src/components/SearchFilter/CustomDateRangeDialog.es.js.map +1 -0
- 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 +1 -4
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useDateRangeFilter.cjs.js +2 -0
- package/dist/shared/src/components/SearchFilter/useDateRangeFilter.cjs.js.map +1 -0
- package/dist/shared/src/components/SearchFilter/useDateRangeFilter.es.js +106 -0
- package/dist/shared/src/components/SearchFilter/useDateRangeFilter.es.js.map +1 -0
- 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 +8 -5
- 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 +6 -3
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.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 +6 -3
- 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 +10 -7
- 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 +6 -3
- package/dist/shared/src/containers/Actions/ActionConfigDialog.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 +6 -3
- 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 +4 -3
- 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 +6 -3
- 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 +6 -3
- 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 +6 -3
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.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 +6 -3
- 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 +6 -3
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js +10 -0
- package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js.map +1 -0
- package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.es.js +135 -0
- package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.es.js.map +1 -0
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.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 +20 -17
- 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 +41 -44
- 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 +5 -2
- 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 +19 -25
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/subtasksFilterAdapter.cjs.js +2 -0
- package/dist/shared/src/containers/DetailsPanel/helpers/subtasksFilterAdapter.cjs.js.map +1 -0
- package/dist/shared/src/containers/DetailsPanel/helpers/subtasksFilterAdapter.es.js +91 -0
- package/dist/shared/src/containers/DetailsPanel/helpers/subtasksFilterAdapter.es.js.map +1 -0
- 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 +6 -3
- 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 +6 -3
- 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 +6 -3
- 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 +6 -3
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.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 +156 -164
- package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.styled.cjs.js +25 -3
- package/dist/shared/src/containers/Feed/Feed.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.styled.es.js +30 -8
- package/dist/shared/src/containers/Feed/Feed.styled.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 +6 -3
- 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 +6 -3
- 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 +6 -3
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.cjs.js +3 -3
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.es.js +1 -0
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js +8 -5
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
- 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 +5 -2
- 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 +10 -7
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.es.js +5 -5
- package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +17 -0
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -0
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +279 -0
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -0
- 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 +5 -2
- 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 +62 -50
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js +2 -0
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js.map +1 -0
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js +141 -0
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js.map +1 -0
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js +2 -0
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js.map +1 -0
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js +81 -0
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js.map +1 -0
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +20 -18
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.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 +106 -103
- 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 +7 -4
- 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 +6 -3
- package/dist/shared/src/containers/ListTable/ListTableHeader.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 +127 -123
- 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 +158 -130
- 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 +6 -3
- 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 +36 -33
- 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 +6 -3
- 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 +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +228 -222
- 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 +103 -100
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.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 +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.cjs.js +3 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.es.js +22 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.es.js.map +1 -0
- 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 +113 -109
- 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 +125 -121
- 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 +6 -3
- 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 +6 -3
- 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 +36 -33
- 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 +6 -3
- 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 +107 -103
- 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 +36 -33
- 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 +36 -33
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.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 +6 -3
- 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 +6 -3
- 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 +6 -3
- 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 +105 -102
- 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 -34
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.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 +48 -45
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js +61 -61
- package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js +15 -6
- package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.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 +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +4 -3
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +108 -101
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +82 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +416 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +8 -5
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.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 +37 -34
- 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 +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.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 +6 -3
- 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 +6 -3
- package/dist/shared/src/containers/SimpleTable/SimpleTable.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 +6 -3
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js +6 -3
- package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.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 +6 -3
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.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 +92 -94
- package/dist/shared/src/context/DetailsPanelContext.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 +8 -5
- package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
- package/dist/shared/src/hooks/useGetProductionAddon.cjs.js +2 -0
- package/dist/shared/src/hooks/useGetProductionAddon.cjs.js.map +1 -0
- package/dist/shared/src/hooks/useGetProductionAddon.es.js +124 -0
- package/dist/shared/src/hooks/useGetProductionAddon.es.js.map +1 -0
- package/dist/shared/src/hooks/useLocalStorage.cjs.js +1 -1
- package/dist/shared/src/hooks/useLocalStorage.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useLocalStorage.es.js +43 -27
- package/dist/shared/src/hooks/useLocalStorage.es.js.map +1 -1
- package/dist/types/api/generated/graphql.d.ts +122 -0
- package/dist/types/api/generated/graphqlLinks.d.ts +10 -0
- package/dist/types/api/queries/activities/getActivities.d.ts +83 -0
- package/dist/types/api/queries/activities/patchTableLatestComments.d.ts +1 -0
- package/dist/types/api/queries/activities/updateActivities.d.ts +16 -0
- package/dist/types/api/queries/activities/util/activitiesHelpers.d.ts +1 -0
- package/dist/types/api/queries/entities/getEntity.d.ts +7 -0
- package/dist/types/api/queries/entities/getEntityPanel.d.ts +7 -0
- package/dist/types/api/queries/entities/updateEntity.d.ts +7 -0
- package/dist/types/api/queries/entityLists/getLists.d.ts +84 -0
- package/dist/types/api/queries/entityLists/types.d.ts +2 -1
- package/dist/types/api/queries/overview/getOverview.d.ts +58 -0
- package/dist/types/api/queries/project/getProject.d.ts +7 -0
- package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +7 -0
- package/dist/types/api/queries/users/getUsers.d.ts +7 -0
- package/dist/types/api/queries/versions/getVersionsProducts.d.ts +30 -0
- package/dist/types/components/SearchFilter/CustomDateRangeDialog.d.ts +13 -0
- package/dist/types/components/SearchFilter/index.d.ts +2 -0
- package/dist/types/components/SearchFilter/useDateRangeFilter.d.ts +36 -0
- package/dist/types/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.d.ts +13 -0
- package/dist/types/containers/DetailsPanel/helpers/subtasksFilterAdapter.d.ts +5 -0
- package/dist/types/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.d.ts +1 -0
- package/dist/types/containers/Feed/components/ActivityReference/ActivityReference.styled.d.ts +2 -2
- package/dist/types/containers/Feed/components/FeedSearchFilter.d.ts +15 -0
- package/dist/types/containers/Feed/context/FeedContext.d.ts +5 -1
- package/dist/types/containers/Feed/helpers/buildBackendFilter.d.ts +3 -0
- package/dist/types/containers/Feed/helpers/feedFilterAdapter.d.ts +5 -0
- package/dist/types/containers/Feed/hooks/useGetFeedActivitiesData.d.ts +5 -1
- package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/context/clipboard/clipboardComments.d.ts +6 -0
- package/dist/types/containers/ProjectTreeTable/context/clipboard/index.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +2 -1
- package/dist/types/containers/ProjectTreeTable/types/table.d.ts +2 -1
- package/dist/types/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.d.ts +9 -0
- package/dist/types/containers/ProjectTreeTable/utils/queryFilterToClientFilter.d.ts +5 -0
- package/dist/types/containers/ProjectTreeTable/widgets/CellWidget.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/widgets/CommentsWidget.d.ts +7 -0
- package/dist/types/context/DetailsPanelContext.d.ts +1 -0
- package/dist/types/hooks/index.d.ts +1 -0
- package/dist/types/hooks/useGetProductionAddon.d.ts +10 -0
- package/dist/types/hooks/useLocalStorage.d.ts +2 -0
- package/package.json +3 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("../../base/client.cjs.js");const Q=require("../../generated/graphql.cjs.js");require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/dataImport.cjs.js");require("../../generated/desktop.cjs.js");require("../../generated/entityLists.cjs.js");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");const L=require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/projectFolders.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");require("lodash");require("react-toastify");require("uuid");const C=require("../../../util/thumbnailWebsocket.cjs.js"),A=require("../../../util/pubsub.cjs.js"),P=require("../columnStats/columnStats.cjs.js"),E=require("../columnStats/metricTargets.cjs.js"),G=r=>{try{return JSON.parse(r)}catch{return{}}},N=r=>{if(!r.project)return[];const e=[];for(const{node:s}of r.project.tasks.edges)e.push({...s,folderId:s.folderId||"root",attrib:G(s.allAttrib),entityId:s.id,entityType:"task",links:[]});return e},_=(r=[],e,s)=>{const a=r?.map(p=>({type:"overviewTask",id:p.id}))||[],i=s?(Array.isArray(s)?s:[s]).map(p=>({type:"overviewTask",id:p})):[];return[...a,...i,{type:"overviewTask",id:e},{type:"overviewTask",id:"LIST"}]},F=Q.api.enhanceEndpoints({endpoints:{GetTasksByParent:{transformResponse:N,providesTags:(r,e,{parentIds:s,projectName:a})=>_(r,a,s)},GetTasksList:{transformResponse:r=>({tasks:N(r),pageInfo:r.project.tasks.pageInfo}),providesTags:(r,e,{projectName:s})=>_(r?.tasks||[],s)},GetFolderColumnStats:{transformResponse:r=>P.normalizeFieldStats(r?.project?.folders?.fieldStats??[]),serializeQueryArgs:({queryArgs:{targets:r,...e}})=>e,merge:(r,e)=>P.mergeFieldStats(e,r),forceRefetch:({currentArg:r,previousArg:e})=>E.hasNewTargetFields(r,e),providesTags:(r,e,{projectName:s})=>[{type:"folderColumnStats",id:s}]},GetTaskColumnStats:{transformResponse:r=>P.normalizeFieldStats(r?.project?.tasks?.fieldStats??[]),serializeQueryArgs:({queryArgs:{targets:r,...e}})=>e,merge:(r,e)=>P.mergeFieldStats(e,r),forceRefetch:({currentArg:r,previousArg:e})=>E.hasNewTargetFields(r,e),providesTags:(r,e,{projectName:s})=>[{type:"taskColumnStats",id:s}]}}}),O=L.api.enhanceEndpoints({endpoints:{searchFolders:{}}}),R=100,x=F.injectEndpoints({endpoints:r=>({getOverviewTasksByFolders:r.query({async queryFn({projectName:e,parentIds:s,filter:a,folderFilter:i,search:p},{dispatch:q,forced:g}){try{const T=[];for(let o=0;o<s.length;o+=20){const b=s.slice(o,o+20),l=(await Promise.all(b.map(async t=>q(F.endpoints.GetTasksByParent.initiate({projectName:e,parentIds:[t],filter:a,folderFilter:i,search:p},{forceRefetch:g}))))).filter(t=>!!t.data).flatMap(t=>t.data);T.push(...l)}return{data:T}}catch(I){return console.error(I),{error:{status:"FETCH_ERROR",error:I.message}}}},serializeQueryArgs:({queryArgs:{parentIds:e,...s}})=>({...s}),forceRefetch({currentArg:e,previousArg:s}){return JSON.stringify(e)!==JSON.stringify(s)},providesTags:(e,s,{parentIds:a,projectName:i})=>_(e,i,a),async onCacheEntryAdded({projectName:e,parentIds:s,filter:a,search:i},{cacheDataLoaded:p,cacheEntryRemoved:q,updateCachedData:g,dispatch:I}){let T;const o=new Set,b=100,v=500;let l=!1;const t=()=>{l||(l=!0,setTimeout(y,v))},y=async()=>{if(l=!1,!o.size)return;const f=Array.from(o).slice(0,b);f.forEach(n=>o.delete(n));try{const u=(await I(F.endpoints.GetTasksList.initiate({projectName:e,taskIds:f},{forceRefetch:!0})).unwrap()).tasks||[],d=new Map(u.map(c=>[c.id,c]));g(c=>{for(const h of u){const S=c.findIndex(m=>m.id===h.id);S>-1?c[S]=h:c.push(h)}for(const h of f)if(!d.has(h)){const S=c.findIndex(m=>m.id===h);S>-1&&c.splice(S,1)}})}catch(n){console.error("Realtime overview batch update failed",n)}finally{o.size&&t()}};let k;try{await p,k=C.subscribeToThumbnailUpdates(n=>{g(u=>{n.forEach(d=>{if(d.summary.entityType==="task"&&d.summary.thumbnailHash){const c=u.findIndex(h=>h.id===d.summary.entityId);c>-1&&(u[c].thumbnailHash=d.summary.thumbnailHash)}})})},["task"]);const f=async(n,u)=>{const d=u?.summary?.entityId,c=u?.summary?.parentId;!d||!c||s.includes(c)&&(o.add(d),t())};T=A.subscribe("entity.task",f)}catch{}await q,T&&A.unsubscribe(T),k&&k()}}),getSearchFolders:r.query({async queryFn({projectName:e,folderSearchRequest:s},{dispatch:a}){try{return{data:(await a(O.endpoints.searchFolders.initiate({projectName:e,folderSearchRequest:s}))).data?.folderIds||[]}}catch(i){return console.error(i),{error:{status:"FETCH_ERROR",error:i.message}}}},providesTags:(e,s,{projectName:a})=>[{type:"tasksFolder",id:a}]}),getTasksListInfinite:r.infiniteQuery({infiniteQueryOptions:{initialPageParam:{cursor:"",desc:!1},getNextPageParam:(e,s,a,i)=>{const p=e.pageInfo;if(!(!(a.desc?p.hasPreviousPage:p.hasNextPage)||!p.endCursor))return{cursor:p.endCursor,desc:a.desc}}},queryFn:async({queryArg:e,pageParam:s},a)=>{try{const{projectName:i,filter:p,folderFilter:q,search:g,folderIds:I,taskIds:T,sortBy:o,desc:b}=e,{cursor:v}=s,l={projectName:i,filter:p,folderFilter:q,search:g,folderIds:I,taskIds:T};o?(l.sortBy=o,b?(l.before=v||void 0,l.last=R):(l.after=v||void 0,l.first=R)):(l.after=v||void 0,l.first=R);const t=await a.dispatch(F.endpoints.GetTasksList.initiate(l,{forceRefetch:!0}));if(t.error)throw t.error;const y={tasks:[],pageInfo:{hasNextPage:!1,endCursor:null,startCursor:null,hasPreviousPage:!1}};return{data:t.data||y}}catch(i){return console.error("Error in getTasksListInfinite queryFn:",i),{error:{status:"FETCH_ERROR",error:i.message}}}},providesTags:(e,s,{projectName:a})=>_(e?.pages.flatMap(i=>i.tasks)||[],a),async onCacheEntryAdded(e,{cacheDataLoaded:s,cacheEntryRemoved:a,updateCachedData:i,dispatch:p}){let q;const g=new Set,I=100,T=500;let o=!1;const b=()=>{o||(o=!0,setTimeout(v,T))},v=async()=>{if(o=!1,!g.size)return;const t=Array.from(g).slice(0,I);t.forEach(y=>g.delete(y));try{const k=(await p(F.endpoints.GetTasksList.initiate({projectName:e.projectName,taskIds:t,folderIds:e.folderIds},{forceRefetch:!0})).unwrap()).tasks||[],f=new Map(k.map(n=>[n.id,n]));i(n=>{for(const u of k){let d=!1;for(const c of n.pages){const h=c.tasks.findIndex(S=>S.id===u.id);if(h!==-1){c.tasks[h]=u,d=!0;break}}d||(n.pages.length?n.pages[0].tasks.unshift(u):n.pages.push({tasks:[u],pageInfo:{startCursor:null,endCursor:null,hasNextPage:!1,hasPreviousPage:!1}}))}for(const u of t)if(!f.has(u))for(const d of n.pages){const c=d.tasks.findIndex(h=>h.id===u);if(c!==-1){d.tasks.splice(c,1);break}}})}catch(y){console.error("Realtime infinite tasks batch update failed",y)}finally{g.size&&b()}};let l;try{await s,l=C.subscribeToThumbnailUpdates(y=>{i(k=>{y.forEach(f=>{if(f.summary.entityType==="task"&&f.summary.thumbnailHash)for(const n of k.pages){const u=n.tasks.findIndex(d=>d.id===f.summary.entityId);if(u>-1){n.tasks[u].thumbnailHash=f.summary.thumbnailHash;break}}})})},["task"]);const t=async(y,k)=>{const f=k?.summary?.entityId;f&&(g.add(f),b())};q=A.subscribe("entity.task",t)}catch{}await a,q&&A.unsubscribe(q),l&&l()}}),getGroupedTasksList:r.query({queryFn:async({projectName:e,groups:s,search:a,folderFilter:i,folderIds:p,desc:q,sortBy:g,groupCount:I},T)=>{try{let o=[];const b=new Set(["folderType"]);for(const t of s){const y=I||t.count||500;let k=t.filter,f=i;if(t.filter)try{const d=JSON.parse(t.filter),c=d.conditions||[],h=c.filter(m=>!b.has(m.key)),S=c.filter(m=>b.has(m.key));if(S.length>0){k=h.length?JSON.stringify({...d,conditions:h}):void 0;const m=i?JSON.parse(i):null,w=[...m&&Array.isArray(m.conditions)?m.conditions:[],...S];f=JSON.stringify(m?{...m,conditions:w}:{conditions:w})}}catch{}const n={projectName:e,filter:k,folderFilter:f,search:a,folderIds:p,sortBy:g,group:t.value};q?n.last=y:n.first=y;const u=T.dispatch(F.endpoints.GetTasksList.initiate(n,{forceRefetch:!0}));o.push(u)}const v=await Promise.all(o),l=[];for(const t of v){if(t.error)throw t.error;const y=t.originalArgs?.group,k=t.data?.pageInfo?.hasNextPage||t.data?.pageInfo?.hasPreviousPage||!1,f=t.data?.tasks.map((n,u,d)=>({...n,groups:[{value:y,hasNextPage:u===d.length-1&&k?y:void 0}]}))||[];l.push(...f)}return{data:{tasks:l}}}catch(o){return console.error("Error in getGroupedTasksList queryFn:",o),{error:{status:"FETCH_ERROR",error:o.message}}}},providesTags:(e,s,{projectName:a})=>_(e?.tasks,a)})})}),{useGetOverviewTasksByFoldersQuery:B,useGetSearchFoldersQuery:H,useGetTasksListQuery:j,useGetTasksListInfiniteInfiniteQuery:z,useLazyGetTasksByParentQuery:M,useGetGroupedTasksListQuery:J,useGetFolderColumnStatsQuery:U,useGetTaskColumnStatsQuery:K}=x;exports.TASKS_INFINITE_QUERY_COUNT=R;exports.default=x;exports.parseAllAttribs=G;exports.useGetFolderColumnStatsQuery=U;exports.useGetGroupedTasksListQuery=J;exports.useGetOverviewTasksByFoldersQuery=B;exports.useGetSearchFoldersQuery=H;exports.useGetTaskColumnStatsQuery=K;exports.useGetTasksListInfiniteInfiniteQuery=z;exports.useGetTasksListQuery=j;exports.useLazyGetTasksByParentQuery=M;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("../../base/client.cjs.js");const L=require("../../generated/graphql.cjs.js");require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/dataImport.cjs.js");require("../../generated/desktop.cjs.js");require("../../generated/entityLists.cjs.js");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");const O=require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/projectFolders.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");require("lodash");require("react-toastify");require("uuid");const E=require("../../../util/thumbnailWebsocket.cjs.js"),_=require("../../../util/pubsub.cjs.js"),A=require("../columnStats/columnStats.cjs.js"),N=require("../columnStats/metricTargets.cjs.js"),x=t=>{try{return JSON.parse(t)}catch{return{}}},G=t=>{if(!t.project)return[];const e=[];for(const{node:s}of t.project.tasks.edges)e.push({...s,folderId:s.folderId||"root",attrib:x(s.allAttrib),entityId:s.id,entityType:"task",links:[]});return e},C=(t=[],e,s)=>{const a=t?.map(l=>({type:"overviewTask",id:l.id}))||[],i=s?(Array.isArray(s)?s:[s]).map(l=>({type:"overviewTask",id:l})):[];return[...a,...i,{type:"overviewTask",id:e},{type:"overviewTask",id:"LIST"}]},w=L.api.enhanceEndpoints({endpoints:{GetTasksByParent:{transformResponse:G,providesTags:(t,e,{parentIds:s,projectName:a})=>C(t,a,s)},GetTasksList:{transformResponse:t=>({tasks:G(t),pageInfo:t.project.tasks.pageInfo}),providesTags:(t,e,{projectName:s})=>C(t?.tasks||[],s)},GetFolderColumnStats:{transformResponse:t=>A.normalizeFieldStats(t?.project?.folders?.fieldStats??[]),serializeQueryArgs:({queryArgs:{targets:t,...e}})=>e,merge:(t,e)=>A.mergeFieldStats(e,t),forceRefetch:({currentArg:t,previousArg:e})=>N.hasNewTargetFields(t,e),providesTags:(t,e,{projectName:s})=>[{type:"folderColumnStats",id:s}]},GetTaskColumnStats:{transformResponse:t=>A.normalizeFieldStats(t?.project?.tasks?.fieldStats??[]),serializeQueryArgs:({queryArgs:{targets:t,...e}})=>e,merge:(t,e)=>A.mergeFieldStats(e,t),forceRefetch:({currentArg:t,previousArg:e})=>N.hasNewTargetFields(t,e),providesTags:(t,e,{projectName:s})=>[{type:"taskColumnStats",id:s}]}}}),B=O.api.enhanceEndpoints({endpoints:{searchFolders:{}}}),P=100,Q=w.injectEndpoints({endpoints:t=>({getOverviewTasksByFolders:t.query({async queryFn({projectName:e,parentIds:s,filter:a,folderFilter:i,search:l,showComments:q},{dispatch:g,forced:v}){try{const h=[];for(let d=0;d<s.length;d+=20){const S=s.slice(d,d+20),n=(await Promise.all(S.map(async r=>g(w.endpoints.GetTasksByParent.initiate({projectName:e,parentIds:[r],filter:a,folderFilter:i,search:l,showComments:!!q},{forceRefetch:v}))))).filter(r=>!!r.data).flatMap(r=>r.data);h.push(...n)}return{data:h}}catch(b){return console.error(b),{error:{status:"FETCH_ERROR",error:b.message}}}},serializeQueryArgs:({queryArgs:{parentIds:e,...s}})=>({...s}),forceRefetch({currentArg:e,previousArg:s}){return JSON.stringify(e)!==JSON.stringify(s)},providesTags:(e,s,{parentIds:a,projectName:i})=>C(e,i,a),async onCacheEntryAdded({projectName:e,parentIds:s,filter:a,search:i,showComments:l},{cacheDataLoaded:q,cacheEntryRemoved:g,updateCachedData:v,dispatch:b}){let h;const d=new Set,S=100,I=500;let n=!1;const r=()=>{n||(n=!0,setTimeout(m,I))},m=async()=>{if(n=!1,!d.size)return;const u=Array.from(d).slice(0,S);u.forEach(o=>d.delete(o));try{const f=(await b(w.endpoints.GetTasksList.initiate({projectName:e,taskIds:u,showComments:!!l},{forceRefetch:!0})).unwrap()).tasks||[],p=new Map(f.map(c=>[c.id,c]));v(c=>{for(const k of f){const F=c.findIndex(T=>T.id===k.id);F>-1?c[F]=k:c.push(k)}for(const k of u)if(!p.has(k)){const F=c.findIndex(T=>T.id===k);F>-1&&c.splice(F,1)}})}catch(o){console.error("Realtime overview batch update failed",o)}finally{d.size&&r()}};let y;try{await q,y=E.subscribeToThumbnailUpdates(o=>{v(f=>{o.forEach(p=>{if(p.summary.entityType==="task"&&p.summary.thumbnailHash){const c=f.findIndex(k=>k.id===p.summary.entityId);c>-1&&(f[c].thumbnailHash=p.summary.thumbnailHash)}})})},["task"]);const u=async(o,f)=>{const p=f?.summary?.entityId,c=f?.summary?.parentId;!p||!c||s.includes(c)&&(d.add(p),r())};h=_.subscribe("entity.task",u)}catch{}await g,h&&_.unsubscribe(h),y&&y()}}),getSearchFolders:t.query({async queryFn({projectName:e,folderSearchRequest:s},{dispatch:a}){try{return{data:(await a(B.endpoints.searchFolders.initiate({projectName:e,folderSearchRequest:s}))).data?.folderIds||[]}}catch(i){return console.error(i),{error:{status:"FETCH_ERROR",error:i.message}}}},providesTags:(e,s,{projectName:a})=>[{type:"tasksFolder",id:a}]}),getTasksListInfinite:t.infiniteQuery({infiniteQueryOptions:{initialPageParam:{cursor:"",desc:!1},getNextPageParam:(e,s,a,i)=>{const l=e.pageInfo;if(!(!(a.desc?l.hasPreviousPage:l.hasNextPage)||!l.endCursor))return{cursor:l.endCursor,desc:a.desc}}},queryFn:async({queryArg:e,pageParam:s},a)=>{try{const{projectName:i,filter:l,folderFilter:q,search:g,folderIds:v,taskIds:b,sortBy:h,desc:d,showComments:S}=e,{cursor:I}=s,n={projectName:i,filter:l,folderFilter:q,search:g,folderIds:v,taskIds:b,showComments:!!S};h?(n.sortBy=h,d?(n.before=I||void 0,n.last=P):(n.after=I||void 0,n.first=P)):(n.after=I||void 0,n.first=P);const r=await a.dispatch(w.endpoints.GetTasksList.initiate(n,{forceRefetch:!0}));if(r.error)throw r.error;const m={tasks:[],pageInfo:{hasNextPage:!1,endCursor:null,startCursor:null,hasPreviousPage:!1}};return{data:r.data||m}}catch(i){return console.error("Error in getTasksListInfinite queryFn:",i),{error:{status:"FETCH_ERROR",error:i.message}}}},providesTags:(e,s,{projectName:a})=>C(e?.pages.flatMap(i=>i.tasks)||[],a),async onCacheEntryAdded(e,{cacheDataLoaded:s,cacheEntryRemoved:a,updateCachedData:i,dispatch:l}){let q;const g=new Set,v=100,b=500;let h=!1;const d=()=>{h||(h=!0,setTimeout(S,b))},S=async()=>{if(h=!1,!g.size)return;const n=Array.from(g).slice(0,v);n.forEach(r=>g.delete(r));try{const m=(await l(w.endpoints.GetTasksList.initiate({projectName:e.projectName,taskIds:n,folderIds:e.folderIds,showComments:!!e.showComments},{forceRefetch:!0})).unwrap()).tasks||[],y=new Map(m.map(u=>[u.id,u]));i(u=>{for(const o of m){let f=!1;for(const p of u.pages){const c=p.tasks.findIndex(k=>k.id===o.id);if(c!==-1){p.tasks[c]=o,f=!0;break}}f||(u.pages.length?u.pages[0].tasks.unshift(o):u.pages.push({tasks:[o],pageInfo:{startCursor:null,endCursor:null,hasNextPage:!1,hasPreviousPage:!1}}))}for(const o of n)if(!y.has(o))for(const f of u.pages){const p=f.tasks.findIndex(c=>c.id===o);if(p!==-1){f.tasks.splice(p,1);break}}})}catch(r){console.error("Realtime infinite tasks batch update failed",r)}finally{g.size&&d()}};let I;try{await s,I=E.subscribeToThumbnailUpdates(r=>{i(m=>{r.forEach(y=>{if(y.summary.entityType==="task"&&y.summary.thumbnailHash)for(const u of m.pages){const o=u.tasks.findIndex(f=>f.id===y.summary.entityId);if(o>-1){u.tasks[o].thumbnailHash=y.summary.thumbnailHash;break}}})})},["task"]);const n=async(r,m)=>{const y=m?.summary?.entityId;y&&(g.add(y),d())};q=_.subscribe("entity.task",n)}catch{}await a,q&&_.unsubscribe(q),I&&I()}}),getGroupedTasksList:t.query({queryFn:async({projectName:e,groups:s,search:a,folderFilter:i,folderIds:l,desc:q,sortBy:g,groupCount:v,showComments:b},h)=>{try{let d=[];const S=new Set(["folderType"]);for(const r of s){const m=v||r.count||500;let y=r.filter,u=i;if(r.filter)try{const p=JSON.parse(r.filter),c=p.conditions||[],k=c.filter(T=>!S.has(T.key)),F=c.filter(T=>S.has(T.key));if(F.length>0){y=k.length?JSON.stringify({...p,conditions:k}):void 0;const T=i?JSON.parse(i):null,R=[...T&&Array.isArray(T.conditions)?T.conditions:[],...F];u=JSON.stringify(T?{...T,conditions:R}:{conditions:R})}}catch{}const o={projectName:e,filter:y,folderFilter:u,search:a,folderIds:l,sortBy:g,showComments:!!b,group:r.value};q?o.last=m:o.first=m;const f=h.dispatch(w.endpoints.GetTasksList.initiate(o,{forceRefetch:!0}));d.push(f)}const I=await Promise.all(d),n=[];for(const r of I){if(r.error)throw r.error;const m=r.originalArgs?.group,y=r.data?.pageInfo?.hasNextPage||r.data?.pageInfo?.hasPreviousPage||!1,u=r.data?.tasks.map((o,f,p)=>({...o,groups:[{value:m,hasNextPage:f===p.length-1&&y?m:void 0}]}))||[];n.push(...u)}return{data:{tasks:n}}}catch(d){return console.error("Error in getGroupedTasksList queryFn:",d),{error:{status:"FETCH_ERROR",error:d.message}}}},providesTags:(e,s,{projectName:a})=>C(e?.tasks,a)})})}),{useGetOverviewTasksByFoldersQuery:H,useGetSearchFoldersQuery:j,useGetTasksListQuery:z,useGetTasksListInfiniteInfiniteQuery:M,useLazyGetTasksByParentQuery:J,useGetGroupedTasksListQuery:U,useGetFolderColumnStatsQuery:K,useGetTaskColumnStatsQuery:V}=Q;exports.TASKS_INFINITE_QUERY_COUNT=P;exports.default=Q;exports.parseAllAttribs=x;exports.useGetFolderColumnStatsQuery=K;exports.useGetGroupedTasksListQuery=U;exports.useGetOverviewTasksByFoldersQuery=H;exports.useGetSearchFoldersQuery=j;exports.useGetTaskColumnStatsQuery=V;exports.useGetTasksListInfiniteInfiniteQuery=M;exports.useGetTasksListQuery=z;exports.useLazyGetTasksByParentQuery=J;
|
|
2
2
|
//# sourceMappingURL=getOverview.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getOverview.cjs.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, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport { EditorTaskNode } from '@shared/containers/ProjectTreeTable'\nimport type { FieldStats } from '../columnStats'\nimport { normalizeFieldStats, mergeFieldStats, hasNewTargetFields } from '../columnStats'\nimport {\n DefinitionsFromApi,\n FetchBaseQueryError,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\n\n// parse attribs JSON string to object\nexport const parseAllAttribs = (allAttrib: string) => {\n try {\n return JSON.parse(allAttrib)\n } catch (e) {\n return {}\n }\n}\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: parseAllAttribs(taskNode.allAttrib),\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}\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}\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}\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'], EditorTaskNode[]>\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: transformFilteredEntitiesByParent,\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\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 },\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 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 },\n GetTaskColumnStats: {\n transformResponse: (res: GetTaskColumnStatsQuery) =>\n normalizeFieldStats(res?.project?.tasks?.fieldStats ?? []),\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 },\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\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 }\n >({\n async queryFn(\n { projectName, parentIds, filter, folderFilter, search },\n { dispatch, forced },\n ) {\n try {\n // Process parent IDs in sequential batches\n const BATCH_SIZE = 20 // Process x parentIds at a time\n const allTasks: EditorTaskNode[] = []\n\n // Process batches one after another\n for (let i = 0; i < parentIds.length; i += BATCH_SIZE) {\n const batchParentIds = parentIds.slice(i, i + BATCH_SIZE)\n\n // Process this batch in parallel\n const batchResults = await Promise.all(\n batchParentIds.map(async (parentId) =>\n dispatch(\n enhancedApi.endpoints.GetTasksByParent.initiate(\n {\n projectName,\n parentIds: [parentId],\n filter,\n folderFilter,\n search,\n },\n { forceRefetch: forced },\n ),\n ),\n ),\n )\n\n // Add the results from this batch to our accumulated results\n const batchTasks = batchResults\n .filter((r) => !!r.data)\n .flatMap((result) => result.data as EditorTaskNode[])\n\n allTasks.push(...batchTasks)\n }\n\n return { data: allTasks }\n } catch (e: any) {\n // handle errors appropriately\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\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, search },\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 } 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 if (token) PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) unsubscribeThumbnails()\n },\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 }),\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 { projectName, filter, folderFilter, search, folderIds, taskIds, sortBy, desc } =\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 }\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 } 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 }),\n getGroupedTasksList: build.query<GetGroupedTasksListResult, GetGroupedTasksListArgs>({\n queryFn: async (\n { projectName, groups, search, folderFilter, folderIds, desc, sortBy, groupCount },\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 = 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 // @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 }),\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":["parseAllAttribs","allAttrib","transformFilteredEntitiesByParent","response","tasks","taskNode","getOverviewTaskTags","result","projectName","parentIds","taskTags","task","parentTags","id","enhancedApi","gqlApi","_e","res","normalizeFieldStats","_t","rest","cache","incoming","mergeFieldStats","currentArg","previousArg","hasNewTargetFields","_r","foldersApiEnhanced","foldersApi","TASKS_INFINITE_QUERY_COUNT","injectedApi","build","filter","folderFilter","search","dispatch","forced","allTasks","i","batchParentIds","batchTasks","parentId","r","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","PubSub","folderSearchRequest","lastPage","_allPages","lastPageParam","_allPageParams","pageInfo","queryArg","pageParam","api","folderIds","taskIds","sortBy","desc","cursor","queryParams","fallback","p","arg","located","page","groups","groupCount","promises","folderFilterKeys","group","count","taskFilter","mergedFolderFilter","parsed","conditions","taskConditions","c","folderConditions","existingFolderFilter","allFolderConditions","promise","groupValue","hasNextPage","groupTasks","a","error","useGetOverviewTasksByFoldersQuery","useGetSearchFoldersQuery","useGetTasksListQuery","useGetTasksListInfiniteInfiniteQuery","useLazyGetTasksByParentQuery","useGetGroupedTasksListQuery","useGetFolderColumnStatsQuery","useGetTaskColumnStatsQuery"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getOverview.cjs.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, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport { EditorTaskNode } from '@shared/containers/ProjectTreeTable'\nimport type { FieldStats } from '../columnStats'\nimport { normalizeFieldStats, mergeFieldStats, hasNewTargetFields } from '../columnStats'\nimport {\n DefinitionsFromApi,\n FetchBaseQueryError,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\n\n// parse attribs JSON string to object\nexport const parseAllAttribs = (allAttrib: string) => {\n try {\n return JSON.parse(allAttrib)\n } catch (e) {\n return {}\n }\n}\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: parseAllAttribs(taskNode.allAttrib),\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}\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}\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'], EditorTaskNode[]>\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: transformFilteredEntitiesByParent,\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\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 },\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 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 },\n GetTaskColumnStats: {\n transformResponse: (res: GetTaskColumnStatsQuery) =>\n normalizeFieldStats(res?.project?.tasks?.fieldStats ?? []),\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 },\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\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, forced },\n ) {\n try {\n // Process parent IDs in sequential batches\n const BATCH_SIZE = 20 // Process x parentIds at a time\n const allTasks: EditorTaskNode[] = []\n\n // Process batches one after another\n for (let i = 0; i < parentIds.length; i += BATCH_SIZE) {\n const batchParentIds = parentIds.slice(i, i + BATCH_SIZE)\n\n // Process this batch in parallel\n const batchResults = await Promise.all(\n batchParentIds.map(async (parentId) =>\n dispatch(\n enhancedApi.endpoints.GetTasksByParent.initiate(\n {\n projectName,\n parentIds: [parentId],\n filter,\n folderFilter,\n search,\n showComments: !!showComments,\n },\n { forceRefetch: forced },\n ),\n ),\n ),\n )\n\n // Add the results from this batch to our accumulated results\n const batchTasks = batchResults\n .filter((r) => !!r.data)\n .flatMap((result) => result.data as EditorTaskNode[])\n\n allTasks.push(...batchTasks)\n }\n\n return { data: allTasks }\n } catch (e: any) {\n // handle errors appropriately\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\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, 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 if (token) PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) unsubscribeThumbnails()\n },\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 }),\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 } = 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 }\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 }),\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 = 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 }),\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":["parseAllAttribs","allAttrib","transformFilteredEntitiesByParent","response","tasks","taskNode","getOverviewTaskTags","result","projectName","parentIds","taskTags","task","parentTags","id","enhancedApi","gqlApi","_e","res","normalizeFieldStats","_t","rest","cache","incoming","mergeFieldStats","currentArg","previousArg","hasNewTargetFields","_r","foldersApiEnhanced","foldersApi","TASKS_INFINITE_QUERY_COUNT","injectedApi","build","filter","folderFilter","search","showComments","dispatch","forced","allTasks","i","batchParentIds","batchTasks","parentId","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","PubSub","folderSearchRequest","lastPage","_allPages","lastPageParam","_allPageParams","pageInfo","queryArg","pageParam","api","folderIds","taskIds","sortBy","desc","cursor","queryParams","fallback","p","arg","located","page","groups","groupCount","promises","folderFilterKeys","group","count","taskFilter","mergedFolderFilter","parsed","conditions","taskConditions","c","folderConditions","existingFolderFilter","allFolderConditions","promise","groupValue","hasNextPage","groupTasks","a","error","useGetOverviewTasksByFoldersQuery","useGetSearchFoldersQuery","useGetTasksListQuery","useGetTasksListInfiniteInfiniteQuery","useLazyGetTasksByParentQuery","useGetGroupedTasksListQuery","useGetFolderColumnStatsQuery","useGetTaskColumnStatsQuery"],"mappings":"wjEAsBaA,EAAmBC,GAAsB,CACpD,GAAI,CACF,OAAO,KAAK,MAAMA,CAAS,CAC7B,MAAY,CACV,MAAO,CAAA,CACT,CACF,EAEMC,EAAqCC,GAAsD,CAC/F,GAAI,CAACA,EAAS,QACZ,MAAO,CAAA,EAGT,MAAMC,EAA0B,CAAA,EAChC,SAAW,CAAE,KAAMC,CAAA,IAAcF,EAAS,QAAQ,MAAM,MACtDC,EAAM,KAAK,CACT,GAAGC,EACH,SAAUA,EAAS,UAAY,OAC/B,OAAQL,EAAgBK,EAAS,SAAS,EAC1C,SAAUA,EAAS,GACnB,WAAY,OACZ,MAAO,CAAA,CAAC,CACT,EAGH,OAAOD,CACT,EAEME,EAAsB,CAC1BC,EAAuC,GACvCC,EACAC,IACG,CACH,MAAMC,EAAWH,GAAQ,IAAKI,IAAU,CAAE,KAAM,eAAgB,GAAIA,EAAK,EAAA,EAAK,GAAK,CAAA,EAE7EC,EAAaH,GACd,MAAM,QAAQA,CAAS,EAAIA,EAAY,CAACA,CAAS,GAAG,IAAKI,IAAQ,CAChE,KAAM,eACN,GAAAA,CAAA,EACA,EACF,CAAA,EAEJ,MAAO,CACL,GAAGH,EACH,GAAGE,EACH,CAAE,KAAM,eAAgB,GAAIJ,CAAA,EAC5B,CAAE,KAAM,eAAgB,GAAI,MAAA,CAAO,CAEvC,EAkDMM,EAAcC,EAAAA,IAAO,iBAA+C,CACxE,UAAW,CAIT,iBAAkB,CAChB,kBAAmBb,EACnB,aAAc,CAACK,EAAQS,EAAI,CAAE,UAAAP,EAAW,YAAAD,CAAA,IACtCF,EAAoBC,EAAQC,EAAaC,CAAS,CAAA,EAEtD,aAAc,CACZ,kBAAoBF,IAA+B,CACjD,MAAOL,EAAkCK,CAAM,EAC/C,SAAUA,EAAO,QAAQ,MAAM,QAAA,GAEjC,aAAc,CAACA,EAAQS,EAAI,CAAE,YAAAR,KAC3BF,EAAoBC,GAAQ,OAAS,CAAA,EAAIC,CAAW,CAAA,EAIxD,qBAAsB,CACpB,kBAAoBS,GAClBC,sBAAoBD,GAAK,SAAS,SAAS,YAAc,EAAE,EAC7D,mBAAoB,CAAC,CAAE,UAAW,CAAE,QAASE,EAAI,GAAGC,CAAA,CAAK,IAAQA,EACjE,MAAO,CAACC,EAAOC,IAAaC,EAAAA,gBAAgBD,EAAUD,CAAK,EAC3D,aAAc,CAAC,CAAE,WAAAG,EAAY,YAAAC,KAAkBC,EAAAA,mBAAmBF,EAAYC,CAAW,EACzF,aAAc,CAACE,EAAIX,EAAI,CAAE,YAAAR,CAAA,IAAkB,CAAC,CAAE,KAAM,oBAAqB,GAAIA,EAAa,CAAA,EAE5F,mBAAoB,CAClB,kBAAoBS,GAClBC,sBAAoBD,GAAK,SAAS,OAAO,YAAc,EAAE,EAC3D,mBAAoB,CAAC,CAAE,UAAW,CAAE,QAASE,EAAI,GAAGC,CAAA,CAAK,IAAQA,EACjE,MAAO,CAACC,EAAOC,IAAaC,EAAAA,gBAAgBD,EAAUD,CAAK,EAC3D,aAAc,CAAC,CAAE,WAAAG,EAAY,YAAAC,KAAkBC,EAAAA,mBAAmBF,EAAYC,CAAW,EACzF,aAAc,CAACE,EAAIX,EAAI,CAAE,YAAAR,CAAA,IAAkB,CAAC,CAAE,KAAM,kBAAmB,GAAIA,EAAa,CAAA,CAC1F,CAEJ,CAAC,EAGKoB,EAAqBC,EAAAA,IAAW,iBAAiB,CACrD,UAAW,CACT,cAAe,CAAA,CAAC,CAEpB,CAAC,EAEYC,EAA6B,IAEpCC,EAAcjB,EAAY,gBAAgB,CAC9C,UAAYkB,IAAW,CAMrB,0BAA2BA,EAAM,MAU/B,CACA,MAAM,QACJ,CAAE,YAAAxB,EAAa,UAAAC,EAAW,OAAAwB,EAAQ,aAAAC,EAAc,OAAAC,EAAQ,aAAAC,CAAA,EACxD,CAAE,SAAAC,EAAU,OAAAC,GACZ,CACA,GAAI,CAGF,MAAMC,EAA6B,CAAA,EAGnC,QAASC,EAAI,EAAGA,EAAI/B,EAAU,OAAQ+B,GAAK,GAAY,CACrD,MAAMC,EAAiBhC,EAAU,MAAM+B,EAAGA,EAAI,EAAU,EAsBlDE,GAnBe,MAAM,QAAQ,IACjCD,EAAe,IAAI,MAAOE,GACxBN,EACEvB,EAAY,UAAU,iBAAiB,SACrC,CACE,YAAAN,EACA,UAAW,CAACmC,CAAQ,EACpB,OAAAV,EACA,aAAAC,EACA,OAAAC,EACA,aAAc,CAAC,CAACC,CAAA,EAElB,CAAE,aAAcE,CAAA,CAAO,CACzB,CACF,CACF,GAKC,OAAQ,GAAM,CAAC,CAAC,EAAE,IAAI,EACtB,QAAS/B,GAAWA,EAAO,IAAwB,EAEtDgC,EAAS,KAAK,GAAGG,CAAU,CAC7B,CAEA,MAAO,CAAE,KAAMH,CAAA,CACjB,OAASK,EAAQ,CAEf,eAAQ,MAAMA,CAAC,EAER,CAAE,MADK,CAAE,OAAQ,cAAe,MAAOA,EAAE,OAAA,CACvC,CACX,CACF,EAEA,mBAAoB,CAAC,CAAE,UAAW,CAAE,UAAAnC,EAAW,GAAGW,CAAA,MAAc,CAC9D,GAAGA,CAAA,GAGL,aAAa,CAAE,WAAAI,EAAY,YAAAC,GAAe,CACxC,OAAO,KAAK,UAAUD,CAAU,IAAM,KAAK,UAAUC,CAAW,CAClE,EACA,aAAc,CAAClB,EAAQS,EAAI,CAAE,UAAAP,EAAW,YAAAD,CAAA,IACtCF,EAAoBC,EAAQC,EAAaC,CAAS,EACpD,MAAM,kBACJ,CAAE,YAAAD,EAAa,UAAAC,EAAW,OAAAwB,EAAQ,OAAAE,EAAQ,aAAAC,CAAA,EAC1C,CAAE,gBAAAS,EAAiB,kBAAAC,EAAmB,iBAAAC,EAAkB,SAAAV,GACxD,CACA,IAAIW,EACJ,MAAMC,MAAqB,IACrBC,EAAY,IACZC,EAAW,IACjB,IAAIC,EAAY,GAEhB,MAAMC,EAAW,IAAM,CACjBD,IACJA,EAAY,GACZ,WAAWE,EAAOH,CAAQ,EAC5B,EAEMG,EAAQ,SAAY,CAExB,GADAF,EAAY,GACR,CAACH,EAAe,KAAM,OAC1B,MAAMM,EAAW,MAAM,KAAKN,CAAc,EAAE,MAAM,EAAGC,CAAS,EAC9DK,EAAS,QAAS1C,GAAOoC,EAAe,OAAOpC,CAAE,CAAC,EAClD,GAAI,CAWF,MAAM2C,GAVM,MAAMnB,EAChBvB,EAAY,UAAU,aAAa,SACjC,CACE,YAAAN,EACA,QAAS+C,EACT,aAAc,CAAC,CAACnB,CAAA,EAElB,CAAE,aAAc,EAAA,CAAK,CACvB,EACA,OAAA,GACmB,OAAS,CAAA,EACxBqB,EAAc,IAAI,IAAID,EAAS,IAAKE,GAAsB,CAACA,EAAE,GAAIA,CAAC,CAAC,CAAC,EAE1EX,EAAkBY,GAA4B,CAE5C,UAAWhD,KAAQ6C,EAAU,CAC3B,MAAMI,EAAMD,EAAM,UAAWD,GAAMA,EAAE,KAAO/C,EAAK,EAAE,EAC/CiD,EAAM,GAAID,EAAMC,CAAG,EAAIjD,EACtBgD,EAAM,KAAKhD,CAAI,CACtB,CAEA,UAAWE,KAAM0C,EACf,GAAI,CAACE,EAAY,IAAI5C,CAAE,EAAG,CACxB,MAAM+C,EAAMD,EAAM,UAAWD,GAAMA,EAAE,KAAO7C,CAAE,EAC1C+C,EAAM,IAAID,EAAM,OAAOC,EAAK,CAAC,CACnC,CAEJ,CAAC,CACH,OAASC,EAAK,CACZ,QAAQ,MAAM,wCAAyCA,CAAG,CAC5D,QAAA,CACMZ,EAAe,MAAMI,EAAA,CAC3B,CACF,EACA,IAAIS,EACJ,GAAI,CACF,MAAMjB,EAENiB,EAAwBC,EAAAA,4BACrBC,GAAuC,CACtCjB,EAAkBY,GAA4B,CAC5CK,EAAS,QAASC,GAAY,CAC5B,GAAIA,EAAQ,QAAQ,aAAe,QAAUA,EAAQ,QAAQ,cAAe,CAC1E,MAAML,EAAMD,EAAM,UAAWD,GAAMA,EAAE,KAAOO,EAAQ,QAAQ,QAAQ,EAChEL,EAAM,KACRD,EAAMC,CAAG,EAAE,cAAgBK,EAAQ,QAAQ,cAE/C,CACF,CAAC,CACH,CAAC,CACH,EACA,CAAC,MAAM,CAAA,EAGT,MAAMC,EAAe,MAAOC,EAAgBF,IAAiB,CAC3D,MAAMG,EAASH,GAAS,SAAS,SAC3BtB,EAAWsB,GAAS,SAAS,SAC/B,CAACG,GAAU,CAACzB,GAEXlC,EAAU,SAASkC,CAAQ,IAChCM,EAAe,IAAImB,CAAM,EACzBf,EAAA,EACF,EAKAL,EAAQqB,EAAO,UAAU,cAAeH,CAAY,CACtD,MAAY,CAEZ,CAEA,MAAMpB,EACFE,GAAOqB,EAAO,YAAYrB,CAAK,EAC/Bc,GAAuBA,EAAA,CAC7B,CAAA,CACD,EAGD,iBAAkB9B,EAAM,MAAqC,CAC3D,MAAM,QAAQ,CAAE,YAAAxB,EAAa,oBAAA8D,GAAuB,CAAE,SAAAjC,GAAY,CAChE,GAAI,CAUF,MAAO,CAAE,MATM,MAAMA,EACnBT,EAAmB,UAAU,cAAc,SAAS,CAClD,YAAApB,EACA,oBAAA8D,CAAA,CACD,CAAA,GAGiB,MAAM,WAAa,CAAA,CAE9B,CACX,OAAS1B,EAAQ,CACf,eAAQ,MAAMA,CAAC,EAER,CAAE,MADK,CAAE,OAAQ,cAAe,MAAOA,EAAE,OAAA,CACvC,CACX,CACF,EACA,aAAc,CAACjB,EAAIX,EAAI,CAAE,YAAAR,CAAA,IAAkB,CAAC,CAAE,KAAM,cAAe,GAAIA,EAAa,CAAA,CACrF,EAED,qBAAsBwB,EAAM,cAI1B,CACA,qBAAsB,CACpB,iBAAkB,CAAE,OAAQ,GAAI,KAAM,EAAA,EAEtC,iBAAkB,CAACuC,EAAUC,EAAWC,EAAeC,IAAmB,CAExE,MAAMC,EAAWJ,EAAS,SAI1B,GAAI,IAHSE,EAAc,KACAE,EAAS,gBAAkBA,EAAS,cAE3C,CAACA,EAAS,WAE9B,MAAO,CACL,OAAQA,EAAS,UACjB,KAAMF,EAAc,IAAA,CAExB,CAAA,EAEF,QAAS,MAAO,CAAE,SAAAG,EAAU,UAAAC,CAAA,EAAaC,IAAQ,CAC/C,GAAI,CACF,KAAM,CACJ,YAAAtE,EACA,OAAAyB,EACA,aAAAC,EACA,OAAAC,EACA,UAAA4C,EACA,QAAAC,EACA,OAAAC,EACA,KAAAC,EACA,aAAA9C,CAAA,EACEwC,EACE,CAAE,OAAAO,GAAWN,EAGbO,EAAmB,CACvB,YAAA5E,EACA,OAAAyB,EACA,aAAAC,EACA,OAAAC,EACA,UAAA4C,EACA,QAAAC,EACA,aAAc,CAAC,CAAC5C,CAAA,EAId6C,GACFG,EAAY,OAASH,EACjBC,GACFE,EAAY,OAASD,GAAU,OAC/BC,EAAY,KAAOtD,IAEnBsD,EAAY,MAAQD,GAAU,OAC9BC,EAAY,MAAQtD,KAGtBsD,EAAY,MAAQD,GAAU,OAC9BC,EAAY,MAAQtD,GAItB,MAAMvB,EAAS,MAAMuE,EAAI,SACvBhE,EAAY,UAAU,aAAa,SAASsE,EAAa,CAAE,aAAc,GAAM,CAAA,EAGjF,GAAI7E,EAAO,MAAO,MAAMA,EAAO,MAC/B,MAAM8E,EAAW,CACf,MAAO,CAAA,EACP,SAAU,CACR,YAAa,GACb,UAAW,KACX,YAAa,KACb,gBAAiB,EAAA,CACnB,EAIF,MAAO,CACL,KAAM9E,EAAO,MAAQ8E,CAAA,CAEzB,OAASzC,EAAQ,CACf,eAAQ,MAAM,yCAA0CA,CAAC,EAClD,CAAE,MAAO,CAAE,OAAQ,cAAe,MAAOA,EAAE,QAAQ,CAC5D,CACF,EACA,aAAc,CAACrC,EAAQS,EAAI,CAAE,YAAAR,CAAA,IAC3BF,EAAoBC,GAAQ,MAAM,QAAS+E,GAAMA,EAAE,KAAK,GAAK,CAAA,EAAI9E,CAAW,EAC9E,MAAM,kBACJ+E,EACA,CAAE,gBAAA1C,EAAiB,kBAAAC,EAAmB,iBAAAC,EAAkB,SAAAV,GACxD,CACA,IAAIW,EACJ,MAAMC,MAAqB,IACrBC,EAAY,IACZC,EAAW,IACjB,IAAIC,EAAY,GAEhB,MAAMC,EAAW,IAAM,CACjBD,IACJA,EAAY,GACZ,WAAWE,EAAOH,CAAQ,EAC5B,EAEMG,EAAQ,SAAY,CAExB,GADAF,EAAY,GACR,CAACH,EAAe,KAAM,OAC1B,MAAMM,EAAW,MAAM,KAAKN,CAAc,EAAE,MAAM,EAAGC,CAAS,EAC9DK,EAAS,QAAS1C,GAAOoC,EAAe,OAAOpC,CAAE,CAAC,EAClD,GAAI,CAaF,MAAM2C,GAZM,MAAMnB,EAChBvB,EAAY,UAAU,aAAa,SACjC,CACE,YAAayE,EAAI,YACjB,QAAShC,EACT,UAAWgC,EAAI,UACf,aAAc,CAAC,CAACA,EAAI,YAAA,EAEtB,CAAE,aAAc,EAAA,CAAK,CACvB,EACA,OAAA,GAEmB,OAAS,CAAA,EACxB9B,EAAc,IAAI,IAAID,EAAS,IAAKE,GAAsB,CAACA,EAAE,GAAIA,CAAC,CAAC,CAAC,EAE1EX,EAAkBY,GAA8D,CAE9E,UAAWhD,KAAQ6C,EAAU,CAC3B,IAAIgC,EAAU,GACd,UAAWC,KAAQ9B,EAAM,MAAO,CAC9B,MAAMC,EAAM6B,EAAK,MAAM,UAAW/B,GAAMA,EAAE,KAAO/C,EAAK,EAAE,EACxD,GAAIiD,IAAQ,GAAI,CACd6B,EAAK,MAAM7B,CAAG,EAAIjD,EAClB6E,EAAU,GACV,KACF,CACF,CACKA,IACC7B,EAAM,MAAM,OAAQA,EAAM,MAAM,CAAC,EAAE,MAAM,QAAQhD,CAAI,EAEvDgD,EAAM,MAAM,KAAK,CACf,MAAO,CAAChD,CAAI,EACZ,SAAU,CACR,YAAa,KACb,UAAW,KACX,YAAa,GACb,gBAAiB,EAAA,CACnB,CACD,EAEP,CAEA,UAAWE,KAAM0C,EACf,GAAI,CAAAE,EAAY,IAAI5C,CAAE,EACtB,UAAW4E,KAAQ9B,EAAM,MAAO,CAC9B,MAAMC,EAAM6B,EAAK,MAAM,UAAW/B,GAAMA,EAAE,KAAO7C,CAAE,EACnD,GAAI+C,IAAQ,GAAI,CACd6B,EAAK,MAAM,OAAO7B,EAAK,CAAC,EACxB,KACF,CACF,CAEJ,CAAC,CACH,OAASC,EAAK,CACZ,QAAQ,MAAM,8CAA+CA,CAAG,CAClE,QAAA,CACMZ,EAAe,MAAMI,EAAA,CAC3B,CACF,EACA,IAAIS,EACJ,GAAI,CACF,MAAMjB,EAENiB,EAAwBC,EAAAA,4BACrBC,GAAuC,CACtCjB,EAAkBY,GAA8D,CAC9EK,EAAS,QAASC,GAAY,CAC5B,GAAIA,EAAQ,QAAQ,aAAe,QAAUA,EAAQ,QAAQ,cAC3D,UAAWwB,KAAQ9B,EAAM,MAAO,CAC9B,MAAMC,EAAM6B,EAAK,MAAM,UAAW/B,GAAMA,EAAE,KAAOO,EAAQ,QAAQ,QAAQ,EACzE,GAAIL,EAAM,GAAI,CACZ6B,EAAK,MAAM7B,CAAG,EAAE,cAAgBK,EAAQ,QAAQ,cAChD,KACF,CACF,CAEJ,CAAC,CACH,CAAC,CACH,EACA,CAAC,MAAM,CAAA,EAGT,MAAMC,EAAe,MAAOC,EAAgBF,IAAiB,CAC3D,MAAMG,EAASH,GAAS,SAAS,SAC5BG,IACLnB,EAAe,IAAImB,CAAM,EACzBf,EAAA,EACF,EAEAL,EAAQqB,EAAO,UAAU,cAAeH,CAAY,CACtD,MAAY,CAEZ,CACA,MAAMpB,EACFE,GAAOqB,EAAO,YAAYrB,CAAK,EAC/Bc,GAAuBA,EAAA,CAC7B,CAAA,CACD,EACD,oBAAqB9B,EAAM,MAA0D,CACnF,QAAS,MACP,CACE,YAAAxB,EACA,OAAAkF,EACA,OAAAvD,EACA,aAAAD,EACA,UAAA6C,EACA,KAAAG,EACA,OAAAD,EACA,WAAAU,EACA,aAAAvD,CAAA,EAEF0C,IACG,CACH,GAAI,CACF,IAAIc,EAAW,CAAA,EAEf,MAAMC,EAAmB,IAAI,IAAI,CAAC,YAAY,CAAC,EAE/C,UAAWC,KAASJ,EAAQ,CAE1B,MAAMK,EAAQJ,GAAcG,EAAM,OAAS,IAG3C,IAAIE,EAAaF,EAAM,OACnBG,EAAqB/D,EACzB,GAAI4D,EAAM,OACR,GAAI,CACF,MAAMI,EAAS,KAAK,MAAMJ,EAAM,MAAM,EAChCK,EAAaD,EAAO,YAAc,CAAA,EAClCE,EAAiBD,EAAW,OAAQE,GAAW,CAACR,EAAiB,IAAIQ,EAAE,GAAG,CAAC,EAC3EC,EAAmBH,EAAW,OAAQE,GAAWR,EAAiB,IAAIQ,EAAE,GAAG,CAAC,EAElF,GAAIC,EAAiB,OAAS,EAAG,CAC/BN,EAAaI,EAAe,OACxB,KAAK,UAAU,CAAE,GAAGF,EAAQ,WAAYE,CAAA,CAAgB,EACxD,OAEJ,MAAMG,EAAuBrE,EAAe,KAAK,MAAMA,CAAY,EAAI,KAKjEsE,EAAsB,CAAC,GAH3BD,GAAwB,MAAM,QAAQA,EAAqB,UAAU,EACjEA,EAAqB,WACrB,CAAA,EAC8C,GAAGD,CAAgB,EACvEL,EAAqB,KAAK,UACxBM,EACI,CAAE,GAAGA,EAAsB,WAAYC,CAAA,EACvC,CAAE,WAAYA,CAAA,CAAoB,CAE1C,CACF,MAAQ,CAER,CAGF,MAAMpB,EAA0C,CAC9C,YAAA5E,EACA,OAAQwF,EACR,aAAcC,EACd,OAAA9D,EACA,UAAA4C,EACA,OAAAE,EACA,aAAc,CAAC,CAAC7C,EAEhB,MAAO0D,EAAM,KAAA,EAEXZ,EACFE,EAAY,KAAOW,EAEnBX,EAAY,MAAQW,EAGtB,MAAMU,EAAU3B,EAAI,SAClBhE,EAAY,UAAU,aAAa,SAASsE,EAAa,CAAE,aAAc,GAAM,CAAA,EAEjFQ,EAAS,KAAKa,CAAO,CACvB,CAEA,MAAMlG,EAAS,MAAM,QAAQ,IAAIqF,CAAQ,EACnCxF,EAA0B,CAAA,EAChC,UAAWa,KAAOV,EAAQ,CACxB,GAAIU,EAAI,MAAO,MAAMA,EAAI,MAGzB,MAAMyF,EAAazF,EAAI,cAAc,MAE/B0F,EACJ1F,EAAI,MAAM,UAAU,aAAeA,EAAI,MAAM,UAAU,iBAAmB,GACtE2F,EACJ3F,EAAI,MAAM,MAAM,IAAI,CAACN,EAAM6B,EAAGqE,KAAO,CACnC,GAAGlG,EACH,OAAQ,CACN,CACE,MAAO+F,EACP,YAAalE,IAAMqE,EAAE,OAAS,GAAKF,EAAcD,EAAa,MAAA,CAChE,CACF,EACA,GAAK,CAAA,EAETtG,EAAM,KAAK,GAAGwG,CAAU,CAC1B,CAGA,MAAO,CACL,KAAM,CACJ,MAAAxG,CAAA,CACF,CAEJ,OAAS0G,EAAY,CACnB,eAAQ,MAAM,wCAAyCA,CAAK,EACrD,CAAE,MAAO,CAAE,OAAQ,cAAe,MAAOA,EAAM,QAAQ,CAChE,CACF,EACA,aAAc,CAACvG,EAAQS,EAAI,CAAE,YAAAR,KAC3BF,EAAoBC,GAAQ,MAAOC,CAAW,CAAA,CACjD,CAAA,EAEL,CAAC,EAEY,CACX,kCAAAuG,EACA,yBAAAC,EACA,qBAAAC,EACA,qCAAAC,EACA,6BAAAC,EACA,4BAAAC,EACA,6BAAAC,EACA,2BAAAC,CACF,EAAIvF"}
|