@ynput/ayon-frontend-shared 0.3.39 → 0.3.41
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 +23 -22
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/ProjectTreeTable.cjs.js +1 -1
- package/dist/ProjectTreeTable.es.js +219 -218
- package/dist/ProjectTreeTable.es.js.map +1 -1
- package/dist/_virtual/index.cjs22.js +1 -1
- package/dist/_virtual/index.cjs23.js +1 -1
- package/dist/_virtual/index.cjs24.js +1 -1
- package/dist/_virtual/index.cjs6.js +1 -1
- package/dist/_virtual/index.cjs8.js +1 -1
- package/dist/_virtual/index.es22.js +3 -3
- package/dist/_virtual/index.es23.js +5 -5
- package/dist/_virtual/index.es24.js +5 -5
- package/dist/_virtual/index.es6.js +2 -2
- package/dist/_virtual/index.es8.js +2 -2
- package/dist/api.cjs.js +1 -1
- package/dist/api.es.js +219 -220
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +10 -9
- package/dist/index.es.js.map +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +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-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/src/api/generated/graphql.cjs.js +20 -58
- package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.es.js +37 -75
- package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
- package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/getLists.es.js +14 -16
- package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
- package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js +1 -1
- package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/grouping/getGrouping.es.js +6 -21
- package/dist/shared/src/api/queries/grouping/getGrouping.es.js.map +1 -1
- package/dist/shared/src/api/queries/products/createProduct.cjs.js +1 -1
- package/dist/shared/src/api/queries/products/createProduct.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/products/createProduct.es.js +7 -46
- package/dist/shared/src/api/queries/products/createProduct.es.js.map +1 -1
- package/dist/shared/src/api/queries/products/getProduct.cjs.js +2 -0
- package/dist/shared/src/api/queries/products/getProduct.cjs.js.map +1 -0
- package/dist/shared/src/api/queries/products/getProduct.es.js +52 -0
- package/dist/shared/src/api/queries/products/getProduct.es.js.map +1 -0
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +5 -4
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +4 -3
- 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 +3 -2
- 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 +3 -2
- package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +339 -353
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
- package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +5 -4
- 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 +3 -2
- 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 +3 -2
- 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 +7 -6
- 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 +3 -2
- 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 +3 -2
- 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 +113 -119
- 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 +3 -2
- 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 +3 -2
- 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 +132 -122
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js +6 -6
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.es.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js +2 -0
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js.map +1 -0
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js +148 -0
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js.map +1 -0
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.cjs.js +29 -0
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.cjs.js.map +1 -0
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.es.js +34 -0
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.es.js.map +1 -0
- 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 +3 -2
- 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 +3 -2
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.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 +17 -16
- 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 +3 -2
- 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 +3 -2
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.cjs.js +2 -0
- package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.cjs.js.map +1 -0
- package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.es.js +9 -0
- package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.es.js.map +1 -0
- package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.es.js +12 -12
- package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.styled.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/Feed.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.styled.es.js +5 -5
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.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 +5 -4
- 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 +2 -2
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +3 -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 +7 -6
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +3 -2
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +365 -363
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.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 +3 -2
- 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 +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +6 -5
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +14 -13
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.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 +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +4 -3
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
- 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 +5 -4
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +61 -82
- package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
- package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
- package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
- package/dist/shared/src/context/ProjectContext.es.js +83 -66
- package/dist/shared/src/context/ProjectContext.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 +5 -4
- package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
- package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
- package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
- package/dist/types/api/generated/graphql.d.ts +1 -34
- package/dist/types/api/queries/entities/transformDetailsPanelData.d.ts +3 -1
- package/dist/types/api/queries/entityLists/getLists.d.ts +2 -315
- package/dist/types/api/queries/products/createProduct.d.ts +2 -2
- package/dist/types/api/queries/products/getProduct.d.ts +259 -0
- package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +1 -1
- package/dist/types/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.d.ts +3 -2
- package/dist/types/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.d.ts +7 -0
- package/dist/types/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.d.ts +2 -0
- package/dist/types/containers/DetailsPanel/helpers/buildEntityTypeIcons.d.ts +4 -0
- package/dist/types/containers/DetailsPanel/helpers/mergeProjectInfo.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/types/index.d.ts +1 -0
- package/dist/types/containers/Slicer/hooks/useProjectAnatomySlices.d.ts +1 -0
- package/dist/types/context/ProjectContext.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformDetailsPanelData.cjs.js","sources":["../../../../../../src/api/queries/entities/transformDetailsPanelData.ts"],"sourcesContent":["import {\n DetailsPanelFolderFragmentFragment,\n DetailsPanelProductFragmentFragment,\n DetailsPanelRepresentationFragmentFragment,\n DetailsPanelTaskFragmentFragment,\n DetailsPanelVersionFragmentFragment,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport { parseAllAttribs } from '../overview'\n\ntype DetailsPanelTask = NonNullable<GetDetailsPanelTaskQuery['project']['task']>\ntype DetailsPanelRepresentation = NonNullable<\n GetDetailsPanelRepresentationQuery['project']['representation']\n>\ntype DetailsPanelVersion = NonNullable<GetDetailsPanelVersionQuery['project']['version']>\ntype DetailsPanelFolder = NonNullable<GetDetailsPanelFolderQuery['project']['folder']>\n\nexport const detailsPanelEntityTypes = ['task', 'version', 'folder', 'representation'] as const\nexport type DetailsPanelEntityType = (typeof detailsPanelEntityTypes)[number]\n\ntype TransformEntityDataArgs = {\n entity: DetailsPanelRepresentation | DetailsPanelTask | DetailsPanelVersion | DetailsPanelFolder\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\ntype NullableString = string | null | undefined\n\n// return type\nexport type DetailsPanelEntityData = {\n id: string\n name: string\n label: NullableString\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n thumbnailHash: string\n attrib: Record<string, string | number>\n hasReviewables?: boolean\n thumbnailId?: string | null | undefined\n path: string\n parents: string[]\n // extra metadata\n entityType: string\n entitySubType?: string\n projectName: string\n // type specific\n task?: DetailsPanelTaskFragmentFragment\n folder?: DetailsPanelFolderFragmentFragment\n product?: DetailsPanelProductFragmentFragment\n version?: DetailsPanelVersionFragmentFragment\n representations?: DetailsPanelRepresentationFragmentFragment[]\n}\n\n// takes the data from different entity types and returns a single data model\nexport const transformDetailsPanelQueriesData = ({\n entity,\n entityType,\n projectName,\n}: TransformEntityDataArgs): DetailsPanelEntityData => {\n switch (entityType) {\n case 'task':\n const task = entity as DetailsPanelTask\n return {\n entityType: 'task',\n entitySubType: task.taskType,\n projectName: projectName,\n id: task.id,\n name: task.name,\n label: task.label,\n tags: task.tags,\n status: task.status,\n updatedAt: task.updatedAt,\n createdAt: task.createdAt,\n thumbnailHash: task.thumbnailHash,\n attrib: parseAllAttribs(task.allAttrib),\n hasReviewables: task.hasReviewables,\n thumbnailId: task.thumbnailId,\n path: (task.folder?.path || '') + '/' + task.name,\n parents: task.parents,\n folder: task.folder,\n task: {\n id: task.id,\n name: task.name,\n label: task.label,\n assignees: task.assignees,\n taskType: task.taskType,\n subtasks: task.subtasks,\n },\n product: undefined,\n version: task.versions?.edges?.[0]?.node,\n }\n case 'version':\n const version = entity as DetailsPanelVersion\n return {\n entityType: 'version',\n entitySubType: undefined,\n projectName: projectName,\n id: version.id,\n name: version.name,\n label: undefined,\n tags: version.tags,\n status: version.status,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n thumbnailHash: version.thumbnailHash,\n attrib: parseAllAttribs(version.allAttrib),\n hasReviewables: version.hasReviewables,\n thumbnailId: version.thumbnailId,\n path:\n (version.product?.folder?.path || '') + '/' + version.product.name + '/' + version.name,\n parents: version.parents,\n folder: version.product?.folder,\n task: version.task ?? undefined,\n product: {\n id: version.product?.id,\n name: version.product?.name,\n productType: version.product?.productType,\n latestVersion: version.product.latestVersion,\n },\n version: {\n version: version.version,\n id: version.id,\n name: version.name,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n productId: version.product.id,\n },\n representations: version.representations?.edges?.map((edge) => edge.node) || [],\n }\n case 'folder':\n const folder = entity as DetailsPanelFolder\n return {\n entityType: 'folder',\n entitySubType: folder.folderType,\n projectName: projectName,\n id: folder.id,\n name: folder.name,\n label: folder.label,\n tags: folder.tags,\n status: folder.status,\n updatedAt: folder.updatedAt,\n createdAt: folder.createdAt,\n thumbnailHash: folder.thumbnailHash,\n attrib: parseAllAttribs(folder.allAttrib),\n hasReviewables: folder.hasReviewables,\n thumbnailId: folder.thumbnailId,\n path: folder.path || '',\n parents: folder.parents,\n folder: {\n id: folder.id,\n name: folder.name,\n label: folder.label,\n folderType: folder.folderType,\n },\n product: undefined,\n version: undefined,\n representations: undefined,\n }\n case 'representation':\n const representation = entity as DetailsPanelRepresentation\n return {\n entityType: 'representation',\n entitySubType: undefined,\n projectName: projectName,\n id: representation.id,\n name: representation.name,\n label: undefined,\n tags: representation.tags,\n status: representation.status,\n updatedAt: representation.updatedAt,\n createdAt: representation.createdAt,\n thumbnailHash: 'not_supported',\n attrib: parseAllAttribs(representation.allAttrib),\n hasReviewables: undefined,\n thumbnailId: undefined,\n path:\n (representation.version?.product?.folder?.path || '') +\n '/' +\n (representation.version?.product?.name || '') +\n '/' +\n representation.version?.version +\n '/' +\n representation.name,\n parents: representation.parents,\n version: representation.version,\n product: representation.version.product,\n task: representation.version.task || undefined,\n folder: representation.version.product?.folder,\n representations: undefined,\n }\n }\n}\n"],"names":["detailsPanelEntityTypes","transformDetailsPanelQueriesData","entity","entityType","projectName","task","parseAllAttribs","version","edge","folder","representation"],"mappings":"2QAoBO,MAAMA,EAA0B,CAAC,OAAQ,UAAW,SAAU,gBAAgB,
|
|
1
|
+
{"version":3,"file":"transformDetailsPanelData.cjs.js","sources":["../../../../../../src/api/queries/entities/transformDetailsPanelData.ts"],"sourcesContent":["import {\n DetailsPanelFolderFragmentFragment,\n DetailsPanelProductFragmentFragment,\n DetailsPanelRepresentationFragmentFragment,\n DetailsPanelTaskFragmentFragment,\n DetailsPanelVersionFragmentFragment,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport { parseAllAttribs } from '../overview'\n\ntype DetailsPanelTask = NonNullable<GetDetailsPanelTaskQuery['project']['task']>\ntype DetailsPanelRepresentation = NonNullable<\n GetDetailsPanelRepresentationQuery['project']['representation']\n>\ntype DetailsPanelVersion = NonNullable<GetDetailsPanelVersionQuery['project']['version']>\ntype DetailsPanelFolder = NonNullable<GetDetailsPanelFolderQuery['project']['folder']>\n\nexport const detailsPanelEntityTypes = ['task', 'version', 'folder', 'representation'] as const\nexport type DetailsPanelEntityType = (typeof detailsPanelEntityTypes)[number]\n\ntype TransformEntityDataArgs = {\n entity: DetailsPanelRepresentation | DetailsPanelTask | DetailsPanelVersion | DetailsPanelFolder\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\ntype NullableString = string | null | undefined\n\n// return type\nexport type DetailsPanelEntityData = {\n id: string\n name: string\n label: NullableString\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n thumbnailHash: string\n attrib: Record<string, string | number>\n hasReviewables?: boolean\n thumbnailId?: string | null | undefined\n path: string\n parents: string[]\n // extra metadata\n entityType: string\n entitySubType?: string\n projectName: string\n // type specific\n // subtasks aren't on the shared fragment (version/rep don't need them); the task entity adds them from its own query\n task?: DetailsPanelTaskFragmentFragment & { subtasks?: DetailsPanelTask['subtasks'] }\n folder?: DetailsPanelFolderFragmentFragment\n product?: DetailsPanelProductFragmentFragment\n version?: DetailsPanelVersionFragmentFragment\n representations?: DetailsPanelRepresentationFragmentFragment[]\n}\n\n// takes the data from different entity types and returns a single data model\nexport const transformDetailsPanelQueriesData = ({\n entity,\n entityType,\n projectName,\n}: TransformEntityDataArgs): DetailsPanelEntityData => {\n switch (entityType) {\n case 'task':\n const task = entity as DetailsPanelTask\n return {\n entityType: 'task',\n entitySubType: task.taskType,\n projectName: projectName,\n id: task.id,\n name: task.name,\n label: task.label,\n tags: task.tags,\n status: task.status,\n updatedAt: task.updatedAt,\n createdAt: task.createdAt,\n thumbnailHash: task.thumbnailHash,\n attrib: parseAllAttribs(task.allAttrib),\n hasReviewables: task.hasReviewables,\n thumbnailId: task.thumbnailId,\n path: (task.folder?.path || '') + '/' + task.name,\n parents: task.parents,\n folder: task.folder,\n task: {\n id: task.id,\n name: task.name,\n label: task.label,\n assignees: task.assignees,\n taskType: task.taskType,\n subtasks: task.subtasks,\n },\n product: undefined,\n version: task.versions?.edges?.[0]?.node,\n }\n case 'version':\n const version = entity as DetailsPanelVersion\n return {\n entityType: 'version',\n entitySubType: undefined,\n projectName: projectName,\n id: version.id,\n name: version.name,\n label: undefined,\n tags: version.tags,\n status: version.status,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n thumbnailHash: version.thumbnailHash,\n attrib: parseAllAttribs(version.allAttrib),\n hasReviewables: version.hasReviewables,\n thumbnailId: version.thumbnailId,\n path:\n (version.product?.folder?.path || '') + '/' + version.product.name + '/' + version.name,\n parents: version.parents,\n folder: version.product?.folder,\n task: version.task ?? undefined,\n product: {\n id: version.product?.id,\n name: version.product?.name,\n productType: version.product?.productType,\n latestVersion: version.product.latestVersion,\n },\n version: {\n version: version.version,\n id: version.id,\n name: version.name,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n productId: version.product.id,\n },\n representations: version.representations?.edges?.map((edge) => edge.node) || [],\n }\n case 'folder':\n const folder = entity as DetailsPanelFolder\n return {\n entityType: 'folder',\n entitySubType: folder.folderType,\n projectName: projectName,\n id: folder.id,\n name: folder.name,\n label: folder.label,\n tags: folder.tags,\n status: folder.status,\n updatedAt: folder.updatedAt,\n createdAt: folder.createdAt,\n thumbnailHash: folder.thumbnailHash,\n attrib: parseAllAttribs(folder.allAttrib),\n hasReviewables: folder.hasReviewables,\n thumbnailId: folder.thumbnailId,\n path: folder.path || '',\n parents: folder.parents,\n folder: {\n id: folder.id,\n name: folder.name,\n label: folder.label,\n folderType: folder.folderType,\n },\n product: undefined,\n version: undefined,\n representations: undefined,\n }\n case 'representation':\n const representation = entity as DetailsPanelRepresentation\n return {\n entityType: 'representation',\n entitySubType: undefined,\n projectName: projectName,\n id: representation.id,\n name: representation.name,\n label: undefined,\n tags: representation.tags,\n status: representation.status,\n updatedAt: representation.updatedAt,\n createdAt: representation.createdAt,\n thumbnailHash: 'not_supported',\n attrib: parseAllAttribs(representation.allAttrib),\n hasReviewables: undefined,\n thumbnailId: undefined,\n path:\n (representation.version?.product?.folder?.path || '') +\n '/' +\n (representation.version?.product?.name || '') +\n '/' +\n representation.version?.version +\n '/' +\n representation.name,\n parents: representation.parents,\n version: representation.version,\n product: representation.version.product,\n task: representation.version.task || undefined,\n folder: representation.version.product?.folder,\n representations: undefined,\n }\n }\n}\n"],"names":["detailsPanelEntityTypes","transformDetailsPanelQueriesData","entity","entityType","projectName","task","parseAllAttribs","version","edge","folder","representation"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformDetailsPanelData.es.js","sources":["../../../../../../src/api/queries/entities/transformDetailsPanelData.ts"],"sourcesContent":["import {\n DetailsPanelFolderFragmentFragment,\n DetailsPanelProductFragmentFragment,\n DetailsPanelRepresentationFragmentFragment,\n DetailsPanelTaskFragmentFragment,\n DetailsPanelVersionFragmentFragment,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport { parseAllAttribs } from '../overview'\n\ntype DetailsPanelTask = NonNullable<GetDetailsPanelTaskQuery['project']['task']>\ntype DetailsPanelRepresentation = NonNullable<\n GetDetailsPanelRepresentationQuery['project']['representation']\n>\ntype DetailsPanelVersion = NonNullable<GetDetailsPanelVersionQuery['project']['version']>\ntype DetailsPanelFolder = NonNullable<GetDetailsPanelFolderQuery['project']['folder']>\n\nexport const detailsPanelEntityTypes = ['task', 'version', 'folder', 'representation'] as const\nexport type DetailsPanelEntityType = (typeof detailsPanelEntityTypes)[number]\n\ntype TransformEntityDataArgs = {\n entity: DetailsPanelRepresentation | DetailsPanelTask | DetailsPanelVersion | DetailsPanelFolder\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\ntype NullableString = string | null | undefined\n\n// return type\nexport type DetailsPanelEntityData = {\n id: string\n name: string\n label: NullableString\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n thumbnailHash: string\n attrib: Record<string, string | number>\n hasReviewables?: boolean\n thumbnailId?: string | null | undefined\n path: string\n parents: string[]\n // extra metadata\n entityType: string\n entitySubType?: string\n projectName: string\n // type specific\n task?: DetailsPanelTaskFragmentFragment\n folder?: DetailsPanelFolderFragmentFragment\n product?: DetailsPanelProductFragmentFragment\n version?: DetailsPanelVersionFragmentFragment\n representations?: DetailsPanelRepresentationFragmentFragment[]\n}\n\n// takes the data from different entity types and returns a single data model\nexport const transformDetailsPanelQueriesData = ({\n entity,\n entityType,\n projectName,\n}: TransformEntityDataArgs): DetailsPanelEntityData => {\n switch (entityType) {\n case 'task':\n const task = entity as DetailsPanelTask\n return {\n entityType: 'task',\n entitySubType: task.taskType,\n projectName: projectName,\n id: task.id,\n name: task.name,\n label: task.label,\n tags: task.tags,\n status: task.status,\n updatedAt: task.updatedAt,\n createdAt: task.createdAt,\n thumbnailHash: task.thumbnailHash,\n attrib: parseAllAttribs(task.allAttrib),\n hasReviewables: task.hasReviewables,\n thumbnailId: task.thumbnailId,\n path: (task.folder?.path || '') + '/' + task.name,\n parents: task.parents,\n folder: task.folder,\n task: {\n id: task.id,\n name: task.name,\n label: task.label,\n assignees: task.assignees,\n taskType: task.taskType,\n subtasks: task.subtasks,\n },\n product: undefined,\n version: task.versions?.edges?.[0]?.node,\n }\n case 'version':\n const version = entity as DetailsPanelVersion\n return {\n entityType: 'version',\n entitySubType: undefined,\n projectName: projectName,\n id: version.id,\n name: version.name,\n label: undefined,\n tags: version.tags,\n status: version.status,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n thumbnailHash: version.thumbnailHash,\n attrib: parseAllAttribs(version.allAttrib),\n hasReviewables: version.hasReviewables,\n thumbnailId: version.thumbnailId,\n path:\n (version.product?.folder?.path || '') + '/' + version.product.name + '/' + version.name,\n parents: version.parents,\n folder: version.product?.folder,\n task: version.task ?? undefined,\n product: {\n id: version.product?.id,\n name: version.product?.name,\n productType: version.product?.productType,\n latestVersion: version.product.latestVersion,\n },\n version: {\n version: version.version,\n id: version.id,\n name: version.name,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n productId: version.product.id,\n },\n representations: version.representations?.edges?.map((edge) => edge.node) || [],\n }\n case 'folder':\n const folder = entity as DetailsPanelFolder\n return {\n entityType: 'folder',\n entitySubType: folder.folderType,\n projectName: projectName,\n id: folder.id,\n name: folder.name,\n label: folder.label,\n tags: folder.tags,\n status: folder.status,\n updatedAt: folder.updatedAt,\n createdAt: folder.createdAt,\n thumbnailHash: folder.thumbnailHash,\n attrib: parseAllAttribs(folder.allAttrib),\n hasReviewables: folder.hasReviewables,\n thumbnailId: folder.thumbnailId,\n path: folder.path || '',\n parents: folder.parents,\n folder: {\n id: folder.id,\n name: folder.name,\n label: folder.label,\n folderType: folder.folderType,\n },\n product: undefined,\n version: undefined,\n representations: undefined,\n }\n case 'representation':\n const representation = entity as DetailsPanelRepresentation\n return {\n entityType: 'representation',\n entitySubType: undefined,\n projectName: projectName,\n id: representation.id,\n name: representation.name,\n label: undefined,\n tags: representation.tags,\n status: representation.status,\n updatedAt: representation.updatedAt,\n createdAt: representation.createdAt,\n thumbnailHash: 'not_supported',\n attrib: parseAllAttribs(representation.allAttrib),\n hasReviewables: undefined,\n thumbnailId: undefined,\n path:\n (representation.version?.product?.folder?.path || '') +\n '/' +\n (representation.version?.product?.name || '') +\n '/' +\n representation.version?.version +\n '/' +\n representation.name,\n parents: representation.parents,\n version: representation.version,\n product: representation.version.product,\n task: representation.version.task || undefined,\n folder: representation.version.product?.folder,\n representations: undefined,\n }\n }\n}\n"],"names":["detailsPanelEntityTypes","transformDetailsPanelQueriesData","entity","entityType","projectName","task","parseAllAttribs","version","edge","folder","representation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transformDetailsPanelData.es.js","sources":["../../../../../../src/api/queries/entities/transformDetailsPanelData.ts"],"sourcesContent":["import {\n DetailsPanelFolderFragmentFragment,\n DetailsPanelProductFragmentFragment,\n DetailsPanelRepresentationFragmentFragment,\n DetailsPanelTaskFragmentFragment,\n DetailsPanelVersionFragmentFragment,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport { parseAllAttribs } from '../overview'\n\ntype DetailsPanelTask = NonNullable<GetDetailsPanelTaskQuery['project']['task']>\ntype DetailsPanelRepresentation = NonNullable<\n GetDetailsPanelRepresentationQuery['project']['representation']\n>\ntype DetailsPanelVersion = NonNullable<GetDetailsPanelVersionQuery['project']['version']>\ntype DetailsPanelFolder = NonNullable<GetDetailsPanelFolderQuery['project']['folder']>\n\nexport const detailsPanelEntityTypes = ['task', 'version', 'folder', 'representation'] as const\nexport type DetailsPanelEntityType = (typeof detailsPanelEntityTypes)[number]\n\ntype TransformEntityDataArgs = {\n entity: DetailsPanelRepresentation | DetailsPanelTask | DetailsPanelVersion | DetailsPanelFolder\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\ntype NullableString = string | null | undefined\n\n// return type\nexport type DetailsPanelEntityData = {\n id: string\n name: string\n label: NullableString\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n thumbnailHash: string\n attrib: Record<string, string | number>\n hasReviewables?: boolean\n thumbnailId?: string | null | undefined\n path: string\n parents: string[]\n // extra metadata\n entityType: string\n entitySubType?: string\n projectName: string\n // type specific\n // subtasks aren't on the shared fragment (version/rep don't need them); the task entity adds them from its own query\n task?: DetailsPanelTaskFragmentFragment & { subtasks?: DetailsPanelTask['subtasks'] }\n folder?: DetailsPanelFolderFragmentFragment\n product?: DetailsPanelProductFragmentFragment\n version?: DetailsPanelVersionFragmentFragment\n representations?: DetailsPanelRepresentationFragmentFragment[]\n}\n\n// takes the data from different entity types and returns a single data model\nexport const transformDetailsPanelQueriesData = ({\n entity,\n entityType,\n projectName,\n}: TransformEntityDataArgs): DetailsPanelEntityData => {\n switch (entityType) {\n case 'task':\n const task = entity as DetailsPanelTask\n return {\n entityType: 'task',\n entitySubType: task.taskType,\n projectName: projectName,\n id: task.id,\n name: task.name,\n label: task.label,\n tags: task.tags,\n status: task.status,\n updatedAt: task.updatedAt,\n createdAt: task.createdAt,\n thumbnailHash: task.thumbnailHash,\n attrib: parseAllAttribs(task.allAttrib),\n hasReviewables: task.hasReviewables,\n thumbnailId: task.thumbnailId,\n path: (task.folder?.path || '') + '/' + task.name,\n parents: task.parents,\n folder: task.folder,\n task: {\n id: task.id,\n name: task.name,\n label: task.label,\n assignees: task.assignees,\n taskType: task.taskType,\n subtasks: task.subtasks,\n },\n product: undefined,\n version: task.versions?.edges?.[0]?.node,\n }\n case 'version':\n const version = entity as DetailsPanelVersion\n return {\n entityType: 'version',\n entitySubType: undefined,\n projectName: projectName,\n id: version.id,\n name: version.name,\n label: undefined,\n tags: version.tags,\n status: version.status,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n thumbnailHash: version.thumbnailHash,\n attrib: parseAllAttribs(version.allAttrib),\n hasReviewables: version.hasReviewables,\n thumbnailId: version.thumbnailId,\n path:\n (version.product?.folder?.path || '') + '/' + version.product.name + '/' + version.name,\n parents: version.parents,\n folder: version.product?.folder,\n task: version.task ?? undefined,\n product: {\n id: version.product?.id,\n name: version.product?.name,\n productType: version.product?.productType,\n latestVersion: version.product.latestVersion,\n },\n version: {\n version: version.version,\n id: version.id,\n name: version.name,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n productId: version.product.id,\n },\n representations: version.representations?.edges?.map((edge) => edge.node) || [],\n }\n case 'folder':\n const folder = entity as DetailsPanelFolder\n return {\n entityType: 'folder',\n entitySubType: folder.folderType,\n projectName: projectName,\n id: folder.id,\n name: folder.name,\n label: folder.label,\n tags: folder.tags,\n status: folder.status,\n updatedAt: folder.updatedAt,\n createdAt: folder.createdAt,\n thumbnailHash: folder.thumbnailHash,\n attrib: parseAllAttribs(folder.allAttrib),\n hasReviewables: folder.hasReviewables,\n thumbnailId: folder.thumbnailId,\n path: folder.path || '',\n parents: folder.parents,\n folder: {\n id: folder.id,\n name: folder.name,\n label: folder.label,\n folderType: folder.folderType,\n },\n product: undefined,\n version: undefined,\n representations: undefined,\n }\n case 'representation':\n const representation = entity as DetailsPanelRepresentation\n return {\n entityType: 'representation',\n entitySubType: undefined,\n projectName: projectName,\n id: representation.id,\n name: representation.name,\n label: undefined,\n tags: representation.tags,\n status: representation.status,\n updatedAt: representation.updatedAt,\n createdAt: representation.createdAt,\n thumbnailHash: 'not_supported',\n attrib: parseAllAttribs(representation.allAttrib),\n hasReviewables: undefined,\n thumbnailId: undefined,\n path:\n (representation.version?.product?.folder?.path || '') +\n '/' +\n (representation.version?.product?.name || '') +\n '/' +\n representation.version?.version +\n '/' +\n representation.name,\n parents: representation.parents,\n version: representation.version,\n product: representation.version.product,\n task: representation.version.task || undefined,\n folder: representation.version.product?.folder,\n representations: undefined,\n }\n }\n}\n"],"names":["detailsPanelEntityTypes","transformDetailsPanelQueriesData","entity","entityType","projectName","task","parseAllAttribs","version","edge","folder","representation"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("../../base/client.cjs.js");const R=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");const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("../../base/client.cjs.js");const R=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");const C=require("../../generated/entityLists.cjs.js");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");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");const Q=require("../overview/getOverview.cjs.js");require("../overview/updateOverview.cjs.js");require("../versions/getVersionsProducts.cjs.js");require("../links/getEntityLinks.cjs.js");require("lodash");require("react-toastify");require("uuid");const A=require("../../../util/thumbnailWebsocket.cjs.js"),I=require("../../../util/pubsub.cjs.js");function S(s,e,t=5e3){let r=[],i=null;const n=(a,u)=>{r.push({topic:a,message:u}),i||(i=setTimeout(()=>{const o=[...r];r=[],i=null,o.length>0&&s(y=>e(y,o))},t))};return n.clear=()=>{i&&(clearTimeout(i),i=null),r=[]},n}const _=s=>{if(!s)return{};try{return typeof s!="string"?s??{}:JSON.parse(s)}catch(e){return console.warn("Failed to parse entity list data field:",e,s),{}}},T=1e4,b=100,E=R.api.enhanceEndpoints({endpoints:{GetLists:{transformResponse:s=>({lists:s.project.entityLists.edges.map(e=>({...e.node,data:_(e.node.data),attrib:_(e.node.allAttrib)})),pageInfo:s.project.entityLists.pageInfo})},GetListItems:{transformResponse:s=>{const e=s.project.entityLists.edges[0];if(!e)throw new Error("List does not exist, was it deleted?");return{items:s.project.entityLists.edges.flatMap(t=>t.node.items.edges.map(({node:r,...i})=>({...r,...i,attrib:Q.parseAllAttribs(i.allAttrib)}))),pageInfo:e.node.items.pageInfo}}},GetListsItemsForReviewSession:{transformResponse:s=>({lists:s.project.entityLists.edges.map(e=>e.node),pageInfo:s.project.entityLists.pageInfo})}}}),G=E.injectEndpoints({endpoints:s=>({getListsInfinite:s.infiniteQuery({infiniteQueryOptions:{initialPageParam:{cursor:""},getNextPageParam:e=>{const{pageInfo:t}=e;if(!(!t.hasNextPage||!t.endCursor))return{cursor:t.endCursor}}},queryFn:async({queryArg:e,pageParam:t},r)=>{try{const{cursor:i}=t,n={...e,first:T,after:i||void 0},a=await r.dispatch(E.endpoints.GetLists.initiate(n,{forceRefetch:!0}));return a.error?{error:a.error}:{data:a.data||{lists:[],pageInfo:{hasNextPage:!1,endCursor:null,startCursor:null,hasPreviousPage:!1}}}}catch(i){return console.error("Error in getListsInfinite queryFn:",i),{error:{status:"FETCH_ERROR",error:i.message}}}},providesTags:e=>{const t=e?.pages.flatMap(r=>r.lists)||[];return[{type:"entityList",id:"LIST"},...t.flatMap(r=>[{type:"entityList",id:r.id},{type:"entityList",id:r.entityListType},{type:"entityList",id:r.entityListFolderId||"NO_FOLDER"}])]},async onCacheEntryAdded({projectName:e},{cacheDataLoaded:t,cacheEntryRemoved:r,updateCachedData:i}){const n=["entity_list.changed","entity_list.created","entity_list.deleted"];let a=null;try{await t,a=S(i,(u,o)=>{o.forEach(({topic:y,message:v})=>{const l=v.summary,p=l.id;if(!p)return;const h=c=>({projectName:e,tags:[],data:{},allAttrib:"",attrib:{},createdAt:new Date().toISOString(),updatedAt:"",active:!0,access:"",accessLevel:30,...c||{},id:l.id,label:l.label,entityType:l.entity_type,entityListType:l.entity_list_type,count:l.count});if(y==="entity_list.changed"){const c=u.pages.flatMap(q=>q.lists).find(q=>q.id===p);if(!c)return;const m=h(c);Object.assign(c,m)}else if(y==="entity_list.created"){const c=h();u.pages.length!==0&&u.pages[0].lists.unshift(c)}else y==="entity_list.deleted"&&u.pages.forEach(c=>{c.lists=c.lists.filter(m=>m.id!==p)})})},1e4),n.forEach(u=>I.subscribe(u,a))}catch{}await r,n.forEach(u=>I.unsubscribe(u)),a&&typeof a.clear=="function"&&a.clear()}}),getListItemsInfinite:s.infiniteQuery({infiniteQueryOptions:{initialPageParam:{cursor:""},getNextPageParam:e=>{const{pageInfo:t}=e;if(!(!t.hasNextPage||!t.endCursor))return{cursor:t.endCursor}}},queryFn:async({queryArg:e,pageParam:t},r)=>{try{const{sortBy:i,desc:n,...a}=e,{cursor:u}=t,o={...a,first:b,after:u||void 0};o.after=u||void 0,o.first=b,i&&(o.sortBy=i,n&&(o.before=u||void 0,o.after=void 0,o.last=b,o.first=void 0));const y=await r.dispatch(E.endpoints.GetListItems.initiate(o,{forceRefetch:!0}));return y.error?{error:y.error}:{data:y.data||{items:[],pageInfo:{hasNextPage:!1,endCursor:null,startCursor:null,hasPreviousPage:!1}}}}catch(i){return console.error("Error in getListsInfinite queryFn:",i),{error:{status:"FETCH_ERROR",error:i.message}}}},providesTags:(e,t,{listId:r,projectName:i})=>[{type:"entityListItem",id:"LIST"},{type:"entityListItem",id:r},{type:"entityListItem",id:i},...(e?.pages.flatMap(n=>n.items)||[]).filter(n=>!!n).flatMap(n=>[{type:"entityListItem",id:n.id},{type:"entityListItem",id:n.entityId}])],async onCacheEntryAdded(e,{cacheDataLoaded:t,cacheEntryRemoved:r,dispatch:i,updateCachedData:n}){let a,u,o;try{const p=(await t).data.pages.flatMap(d=>d.items)[0]?.entityType;o=A.subscribeToThumbnailUpdates(d=>{n(g=>{g?.pages&&d.forEach(L=>{g.pages.forEach(f=>{(f.items||[]).forEach(P=>{P.entityId===L.summary.entityId&&P.entityType===L.summary.entityType&&L.summary.thumbnailHash&&(P.thumbnailHash=L.summary.thumbnailHash)})})})})});const h="entity_list.changed",c=`entity.${p}`,m=d=>{i(R.api.util.invalidateTags([{type:"entityListItem",id:d}]))},q=(d,g)=>{if(d!==h)return;const f=g.summary.id;f&&m(f)},F=(d,g)=>{if(!d.startsWith(c))return;const f=g.summary.entityId;f&&m(f)};a=I.subscribe(h,q),p&&(u=I.subscribe(c,F))}catch{}await r,I.unsubscribe(a),I.unsubscribe(u),o&&o()}}),getListsItemsForReviewSession:s.infiniteQuery({infiniteQueryOptions:{initialPageParam:{cursor:""},getNextPageParam:e=>{const{pageInfo:t}=e;if(!(!t.hasNextPage||!t.endCursor))return{cursor:t.endCursor}}},queryFn:async({queryArg:e,pageParam:t},r)=>{try{const{cursor:i}=t,n={...e,first:T,after:i||void 0},a=await r.dispatch(E.endpoints.GetListsItemsForReviewSession.initiate(n,{forceRefetch:!0}));return a.error?{error:a.error}:{data:a.data||{lists:[],pageInfo:{hasNextPage:!1,endCursor:null,startCursor:null,hasPreviousPage:!1}}}}catch(i){return console.error("Error in getListsInfinite queryFn:",i),{error:{status:"FETCH_ERROR",error:i.message}}}},providesTags:e=>[{type:"entityList",id:"LIST"},...(e?.pages.flatMap(t=>t.lists)||[]).map(t=>({type:"entityList",id:t.id}))]})})}),w=C.api.enhanceEndpoints({endpoints:{getEntityList:{providesTags:(s,e,{listId:t,projectName:r})=>[{type:"entityList",id:t},{type:"entityList",id:r},...s?[{type:"entityList",id:s.entityListType},{type:"entityList",id:s.entityListFolderId||"NO_FOLDER"}]:[]]}}}),{useGetListsInfiniteInfiniteQuery:O,useGetListItemsInfiniteInfiniteQuery:M,useGetListsItemsForReviewSessionInfiniteQuery:N,useLazyGetListsItemsForReviewSessionQuery:j,useLazyGetListItemsQuery:x}=G,{useGetEntityListQuery:H}=w;exports.LISTS_PER_PAGE=T;exports.LIST_ITEMS_PER_PAGE=b;exports.createBatchedCacheUpdater=S;exports.default=G;exports.getListsApiEnhanced=w;exports.useGetEntityListQuery=H;exports.useGetListItemsInfiniteInfiniteQuery=M;exports.useGetListsInfiniteInfiniteQuery=O;exports.useGetListsItemsForReviewSessionInfiniteQuery=N;exports.useLazyGetListItemsQuery=x;exports.useLazyGetListsItemsForReviewSessionQuery=j;
|
|
2
2
|
//# sourceMappingURL=getLists.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getLists.cjs.js","sources":["../../../../../../src/api/queries/entityLists/getLists.ts"],"sourcesContent":["import { entityListsApi, gqlApi } from '@shared/api/generated'\nimport {\n FetchBaseQueryError,\n DefinitionsFromApi,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\nimport type {\n EntityList,\n GetListItemsQuery,\n GetListItemsQueryVariables,\n GetListsItemsForReviewSessionQuery,\n GetListsItemsForReviewSessionResult,\n GetListsQuery,\n GetListsQueryVariables,\n} from '@shared/api'\nimport { parseAllAttribs } from '../overview'\nimport { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport {\n GetListItemsResult,\n GetListsResult,\n ListItemMessage,\n ListItemsPageParam,\n ListsPageParam,\n} from './types'\n\n// Helper function to batch pub/sub messages to avoid constant cache updates\nexport function createBatchedCacheUpdater<TMessage, TDraft>(\n updateCachedData: (updater: (draft: TDraft) => void) => void,\n applyBatch: (draft: TDraft, batch: { topic: string; message: TMessage }[]) => void,\n delay = 5000,\n) {\n let queue: { topic: string; message: TMessage }[] = []\n let timeout: ReturnType<typeof setTimeout> | null = null\n\n const handler = (topic: string, message: TMessage) => {\n queue.push({ topic, message })\n if (!timeout) {\n timeout = setTimeout(() => {\n const batch = [...queue]\n queue = []\n timeout = null\n if (batch.length > 0) {\n updateCachedData((draft) => applyBatch(draft, batch))\n }\n }, delay)\n }\n }\n\n handler.clear = () => {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n queue = []\n }\n\n return handler\n}\n\n// Helper function to safely parse entity list data field from JSON string to object\nconst parseJSON = (data: string | null | undefined): Record<string, any> => {\n if (!data) return {}\n\n try {\n if (typeof data !== 'string') {\n return (data as unknown as Record<string, any>) ?? {}\n }\n return JSON.parse(data)\n } catch (e) {\n console.warn('Failed to parse entity list data field:', e, data)\n return {}\n }\n}\n\n// GRAPHQL API (getLists and getListItems)\n// Define the LISTS_PER_PAGE constant for pagination\nexport const LISTS_PER_PAGE = 500\nexport const LIST_ITEMS_PER_PAGE = 100\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetLists' | 'GetListItems'> & {\n GetLists: OverrideResultType<Definitions['GetLists'], GetListsResult>\n GetListItems: OverrideResultType<Definitions['GetListItems'], GetListItemsResult>\n GetListsItemsForReviewSession: OverrideResultType<\n Definitions['GetListsItemsForReviewSession'],\n GetListsItemsForReviewSessionResult\n >\n}\n\nconst getListsGqlApiEnhanced = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetLists: {\n transformResponse: (response: GetListsQuery): GetListsResult => {\n return {\n // @ts-expect-error - entityType is string\n lists: response.project.entityLists.edges.map((edge) => ({\n ...edge.node,\n data: parseJSON(edge.node.data),\n attrib: parseJSON(edge.node.allAttrib),\n })),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n },\n GetListItems: {\n transformResponse: (response: GetListItemsQuery): GetListItemsResult => {\n const firstEdge = response.project.entityLists.edges[0]\n if (!firstEdge) {\n throw new Error('List does not exist, was it deleted?')\n }\n return {\n items: response.project.entityLists.edges.flatMap((listEdge) =>\n listEdge.node.items.edges.map(({ node, ...edge }) => {\n return {\n ...node,\n ...edge,\n attrib: parseAllAttribs(edge.allAttrib),\n } as GetListItemsResult['items'][number]\n }),\n ),\n pageInfo: firstEdge.node.items.pageInfo,\n }\n },\n },\n GetListsItemsForReviewSession: {\n transformResponse: (\n response: GetListsItemsForReviewSessionQuery,\n ): GetListsItemsForReviewSessionResult => {\n return {\n lists: response.project.entityLists.edges.map((edge) => edge.node),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n },\n },\n})\n\nconst getListsGqlApiInjected = getListsGqlApiEnhanced.injectEndpoints({\n endpoints: (build) => ({\n getListsInfinite: build.infiniteQuery<\n GetListsResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetLists.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) {\n // Preserve original error (e.g. 403) so the UI can react accordingly\n return { error: result.error as FetchBaseQueryError }\n }\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => {\n const lists = result?.pages.flatMap((page) => page.lists) || []\n return [\n { type: 'entityList', id: 'LIST' },\n ...lists.flatMap((list) => [\n { type: 'entityList' as const, id: list.id },\n { type: 'entityList' as const, id: list.entityListType },\n { type: 'entityList' as const, id: list.entityListFolderId || 'NO_FOLDER' },\n ]),\n ]\n },\n async onCacheEntryAdded(\n { projectName },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData },\n ) {\n const topics = ['entity_list.changed', 'entity_list.created', 'entity_list.deleted']\n let handlePubSub: any = null\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n handlePubSub = createBatchedCacheUpdater<ListItemMessage, any>(\n updateCachedData,\n (draft, batch) => {\n batch.forEach(({ topic, message }) => {\n const summary = message.summary\n const id = summary.id\n if (!id) return\n\n const getListFromSummary = (list?: EntityList): EntityList => {\n return {\n // defaults\n projectName: projectName,\n tags: [],\n data: {},\n allAttrib: '',\n attrib: {},\n createdAt: new Date().toISOString(),\n updatedAt: '',\n active: true,\n access: '',\n accessLevel: 30, // default admin\n // existing data\n ...(list || {}),\n // new data\n id: summary.id as string,\n label: summary.label,\n entityType: summary.entity_type,\n entityListType: summary.entity_list_type,\n count: summary.count,\n }\n }\n\n if (topic === 'entity_list.changed') {\n // update the data of existing list in cache\n const list = draft.pages\n .flatMap((page: any) => page.lists)\n .find((l: any) => l.id === id)\n if (!list) return\n const newList = getListFromSummary(list)\n\n Object.assign(list, newList)\n } else if (topic === 'entity_list.created') {\n // Add new list to the cache using basic summary\n const newList = getListFromSummary()\n // Insert the new list at the beginning of the first page\n if (draft.pages.length !== 0) {\n draft.pages[0].lists.unshift(newList)\n }\n } else if (topic === 'entity_list.deleted') {\n // delete the list from the cache\n draft.pages.forEach((page: any) => {\n page.lists = page.lists.filter((l: any) => l.id !== id)\n })\n }\n })\n },\n 10000, // 10 seconds debounce/batch window\n )\n\n topics.forEach((topic) => PubSub.subscribe(topic, handlePubSub))\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n topics.forEach((t) => PubSub.unsubscribe(t))\n if (handlePubSub && typeof handlePubSub.clear === 'function') handlePubSub.clear()\n },\n }),\n getListItemsInfinite: build.infiniteQuery<\n GetListItemsResult,\n Omit<GetListItemsQueryVariables, 'first' | 'after' | 'before' | 'last'> & { desc?: boolean },\n ListItemsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { sortBy, desc, ...rest } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams: GetListItemsQueryVariables = {\n ...rest,\n first: LIST_ITEMS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Add cursor-based pagination\n queryParams.after = cursor || undefined\n queryParams.first = LIST_ITEMS_PER_PAGE\n\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.after = undefined\n queryParams.last = LIST_ITEMS_PER_PAGE\n queryParams.first = undefined\n }\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListItems.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) {\n return { error: result.error as FetchBaseQueryError }\n }\n\n return {\n data: result.data || {\n items: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityListItem', id: 'LIST' },\n { type: 'entityListItem', id: listId },\n { type: 'entityListItem', id: projectName },\n ...(result?.pages.flatMap((page) => page.items) || [])\n .filter((i) => !!i)\n .flatMap((item) => [\n {\n type: 'entityListItem',\n id: item.id,\n },\n {\n type: 'entityListItem',\n id: item.entityId,\n },\n ]),\n ],\n async onCacheEntryAdded(\n _args,\n { cacheDataLoaded, cacheEntryRemoved, dispatch, updateCachedData },\n ) {\n let token, token2\n let unsubscribeThumbnails: (() => void) | undefined\n try {\n // wait for the initial query to resolve before proceeding\n const cache = await cacheDataLoaded\n const pages = cache.data.pages\n const items = pages.flatMap((page) => page.items)\n // get entityType of first item\n const entityType = items[0]?.entityType\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: any) => {\n if (!draft?.pages) return\n messages.forEach((message) => {\n draft.pages.forEach((page: any) => {\n const pageItems = page.items || []\n pageItems.forEach((item: any) => {\n if (\n item.entityId === message.summary.entityId &&\n item.entityType === message.summary.entityType &&\n message.summary.thumbnailHash\n ) {\n item.thumbnailHash = message.summary.thumbnailHash\n }\n })\n })\n })\n })\n },\n )\n\n const listTopic = `entity_list.changed`\n const entityTypeTopic = `entity.${entityType}`\n\n const invalidateListItems = (id: string) => {\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityListItem', id: id }]))\n }\n\n const handleListMessage = (topic: string, message: ListItemMessage) => {\n if (topic !== listTopic) return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n invalidateListItems(id)\n }\n\n const handleEntityMessage = (topic: string, message: ListItemMessage) => {\n if (!topic.startsWith(entityTypeTopic)) return\n const summary = message.summary\n const id = summary.entityId\n // check for id\n if (!id) return\n invalidateListItems(id)\n }\n\n // sub to websocket topic\n token = PubSub.subscribe(listTopic, handleListMessage)\n if (entityType) token2 = PubSub.subscribe(entityTypeTopic, handleEntityMessage)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n PubSub.unsubscribe(token2)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n },\n }),\n getListsItemsForReviewSession: build.infiniteQuery<\n GetListsItemsForReviewSessionResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before' | 'filter'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListsItemsForReviewSession.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) {\n return { error: result.error as FetchBaseQueryError }\n }\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => [\n { type: 'entityList', id: 'LIST' },\n ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.id,\n })),\n ],\n }),\n }),\n})\n\nexport const getListsApiEnhanced = entityListsApi.enhanceEndpoints({\n endpoints: {\n getEntityList: {\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityList', id: listId },\n { type: 'entityList', id: projectName },\n ...(result\n ? [\n { type: 'entityList', id: result.entityListType },\n {\n type: 'entityList',\n id: result.entityListFolderId || 'NO_FOLDER',\n },\n ]\n : []),\n ],\n },\n },\n})\n\nexport default getListsGqlApiInjected\n\nexport const {\n useGetListsInfiniteInfiniteQuery,\n useGetListItemsInfiniteInfiniteQuery,\n useGetListsItemsForReviewSessionInfiniteQuery,\n useLazyGetListsQuery,\n useLazyGetListsItemsForReviewSessionQuery,\n useLazyGetListItemsQuery,\n} = getListsGqlApiInjected\n\nexport const { useGetEntityListQuery } = getListsApiEnhanced\n"],"names":["createBatchedCacheUpdater","updateCachedData","applyBatch","delay","queue","timeout","handler","topic","message","batch","draft","parseJSON","data","LISTS_PER_PAGE","LIST_ITEMS_PER_PAGE","getListsGqlApiEnhanced","gqlApi","response","edge","firstEdge","listEdge","node","parseAllAttribs","getListsGqlApiInjected","build","lastPage","pageInfo","queryArg","pageParam","api","cursor","queryParams","result","e","lists","page","list","projectName","cacheDataLoaded","cacheEntryRemoved","topics","handlePubSub","summary","id","getListFromSummary","l","newList","PubSub","t","sortBy","desc","rest","_e","listId","i","item","_args","dispatch","token","token2","unsubscribeThumbnails","entityType","subscribeToThumbnailUpdates","messages","listTopic","entityTypeTopic","invalidateListItems","handleListMessage","handleEntityMessage","getListsApiEnhanced","entityListsApi","useGetListsInfiniteInfiniteQuery","useGetListItemsInfiniteInfiniteQuery","useGetListsItemsForReviewSessionInfiniteQuery","useLazyGetListsQuery","useLazyGetListsItemsForReviewSessionQuery","useLazyGetListItemsQuery","useGetEntityListQuery"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getLists.cjs.js","sources":["../../../../../../src/api/queries/entityLists/getLists.ts"],"sourcesContent":["import { entityListsApi, gqlApi } from '@shared/api/generated'\nimport {\n FetchBaseQueryError,\n DefinitionsFromApi,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\nimport type {\n EntityList,\n GetListItemsQuery,\n GetListItemsQueryVariables,\n GetListsItemsForReviewSessionQuery,\n GetListsItemsForReviewSessionResult,\n GetListsQuery,\n GetListsQueryVariables,\n} from '@shared/api'\nimport { parseAllAttribs } from '../overview'\nimport { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport {\n GetListItemsResult,\n GetListsResult,\n ListItemMessage,\n ListItemsPageParam,\n ListsPageParam,\n} from './types'\n\n// Helper function to batch pub/sub messages to avoid constant cache updates\nexport function createBatchedCacheUpdater<TMessage, TDraft>(\n updateCachedData: (updater: (draft: TDraft) => void) => void,\n applyBatch: (draft: TDraft, batch: { topic: string; message: TMessage }[]) => void,\n delay = 5000,\n) {\n let queue: { topic: string; message: TMessage }[] = []\n let timeout: ReturnType<typeof setTimeout> | null = null\n\n const handler = (topic: string, message: TMessage) => {\n queue.push({ topic, message })\n if (!timeout) {\n timeout = setTimeout(() => {\n const batch = [...queue]\n queue = []\n timeout = null\n if (batch.length > 0) {\n updateCachedData((draft) => applyBatch(draft, batch))\n }\n }, delay)\n }\n }\n\n handler.clear = () => {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n queue = []\n }\n\n return handler\n}\n\n// Helper function to safely parse entity list data field from JSON string to object\nconst parseJSON = (data: string | null | undefined): Record<string, any> => {\n if (!data) return {}\n\n try {\n if (typeof data !== 'string') {\n return (data as unknown as Record<string, any>) ?? {}\n }\n return JSON.parse(data)\n } catch (e) {\n console.warn('Failed to parse entity list data field:', e, data)\n return {}\n }\n}\n\n// GRAPHQL API (getLists and getListItems)\n// Define the LISTS_PER_PAGE constant for pagination\nexport const LISTS_PER_PAGE = 10000\nexport const LIST_ITEMS_PER_PAGE = 100\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetLists' | 'GetListItems'> & {\n GetLists: OverrideResultType<Definitions['GetLists'], GetListsResult>\n GetListItems: OverrideResultType<Definitions['GetListItems'], GetListItemsResult>\n GetListsItemsForReviewSession: OverrideResultType<\n Definitions['GetListsItemsForReviewSession'],\n GetListsItemsForReviewSessionResult\n >\n}\n\nconst getListsGqlApiEnhanced = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetLists: {\n transformResponse: (response: GetListsQuery): GetListsResult => {\n return {\n // @ts-expect-error - entityType is string\n lists: response.project.entityLists.edges.map((edge) => ({\n ...edge.node,\n data: parseJSON(edge.node.data),\n attrib: parseJSON(edge.node.allAttrib),\n })),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n },\n GetListItems: {\n transformResponse: (response: GetListItemsQuery): GetListItemsResult => {\n const firstEdge = response.project.entityLists.edges[0]\n if (!firstEdge) {\n throw new Error('List does not exist, was it deleted?')\n }\n return {\n items: response.project.entityLists.edges.flatMap((listEdge) =>\n listEdge.node.items.edges.map(({ node, ...edge }) => {\n return {\n ...node,\n ...edge,\n attrib: parseAllAttribs(edge.allAttrib),\n } as GetListItemsResult['items'][number]\n }),\n ),\n pageInfo: firstEdge.node.items.pageInfo,\n }\n },\n },\n GetListsItemsForReviewSession: {\n transformResponse: (\n response: GetListsItemsForReviewSessionQuery,\n ): GetListsItemsForReviewSessionResult => {\n return {\n lists: response.project.entityLists.edges.map((edge) => edge.node),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n },\n },\n})\n\nconst getListsGqlApiInjected = getListsGqlApiEnhanced.injectEndpoints({\n endpoints: (build) => ({\n getListsInfinite: build.infiniteQuery<\n GetListsResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetLists.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) {\n // Preserve original error (e.g. 403) so the UI can react accordingly\n return { error: result.error as FetchBaseQueryError }\n }\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => {\n const lists = result?.pages.flatMap((page) => page.lists) || []\n return [\n { type: 'entityList', id: 'LIST' },\n ...lists.flatMap((list) => [\n { type: 'entityList' as const, id: list.id },\n { type: 'entityList' as const, id: list.entityListType },\n { type: 'entityList' as const, id: list.entityListFolderId || 'NO_FOLDER' },\n ]),\n ]\n },\n async onCacheEntryAdded(\n { projectName },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData },\n ) {\n const topics = ['entity_list.changed', 'entity_list.created', 'entity_list.deleted']\n let handlePubSub: any = null\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n handlePubSub = createBatchedCacheUpdater<ListItemMessage, any>(\n updateCachedData,\n (draft, batch) => {\n batch.forEach(({ topic, message }) => {\n const summary = message.summary\n const id = summary.id\n if (!id) return\n\n const getListFromSummary = (list?: EntityList): EntityList => {\n return {\n // defaults\n projectName: projectName,\n tags: [],\n data: {},\n allAttrib: '',\n attrib: {},\n createdAt: new Date().toISOString(),\n updatedAt: '',\n active: true,\n access: '',\n accessLevel: 30, // default admin\n // existing data\n ...(list || {}),\n // new data\n id: summary.id as string,\n label: summary.label,\n entityType: summary.entity_type,\n entityListType: summary.entity_list_type,\n count: summary.count,\n }\n }\n\n if (topic === 'entity_list.changed') {\n // update the data of existing list in cache\n const list = draft.pages\n .flatMap((page: any) => page.lists)\n .find((l: any) => l.id === id)\n if (!list) return\n const newList = getListFromSummary(list)\n\n Object.assign(list, newList)\n } else if (topic === 'entity_list.created') {\n // Add new list to the cache using basic summary\n const newList = getListFromSummary()\n // Insert the new list at the beginning of the first page\n if (draft.pages.length !== 0) {\n draft.pages[0].lists.unshift(newList)\n }\n } else if (topic === 'entity_list.deleted') {\n // delete the list from the cache\n draft.pages.forEach((page: any) => {\n page.lists = page.lists.filter((l: any) => l.id !== id)\n })\n }\n })\n },\n 10000, // 10 seconds debounce/batch window\n )\n\n topics.forEach((topic) => PubSub.subscribe(topic, handlePubSub))\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n topics.forEach((t) => PubSub.unsubscribe(t))\n if (handlePubSub && typeof handlePubSub.clear === 'function') handlePubSub.clear()\n },\n }),\n getListItemsInfinite: build.infiniteQuery<\n GetListItemsResult,\n Omit<GetListItemsQueryVariables, 'first' | 'after' | 'before' | 'last'> & { desc?: boolean },\n ListItemsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { sortBy, desc, ...rest } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams: GetListItemsQueryVariables = {\n ...rest,\n first: LIST_ITEMS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Add cursor-based pagination\n queryParams.after = cursor || undefined\n queryParams.first = LIST_ITEMS_PER_PAGE\n\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.after = undefined\n queryParams.last = LIST_ITEMS_PER_PAGE\n queryParams.first = undefined\n }\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListItems.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) {\n return { error: result.error as FetchBaseQueryError }\n }\n\n return {\n data: result.data || {\n items: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityListItem', id: 'LIST' },\n { type: 'entityListItem', id: listId },\n { type: 'entityListItem', id: projectName },\n ...(result?.pages.flatMap((page) => page.items) || [])\n .filter((i) => !!i)\n .flatMap((item) => [\n {\n type: 'entityListItem',\n id: item.id,\n },\n {\n type: 'entityListItem',\n id: item.entityId,\n },\n ]),\n ],\n async onCacheEntryAdded(\n _args,\n { cacheDataLoaded, cacheEntryRemoved, dispatch, updateCachedData },\n ) {\n let token, token2\n let unsubscribeThumbnails: (() => void) | undefined\n try {\n // wait for the initial query to resolve before proceeding\n const cache = await cacheDataLoaded\n const pages = cache.data.pages\n const items = pages.flatMap((page) => page.items)\n // get entityType of first item\n const entityType = items[0]?.entityType\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: any) => {\n if (!draft?.pages) return\n messages.forEach((message) => {\n draft.pages.forEach((page: any) => {\n const pageItems = page.items || []\n pageItems.forEach((item: any) => {\n if (\n item.entityId === message.summary.entityId &&\n item.entityType === message.summary.entityType &&\n message.summary.thumbnailHash\n ) {\n item.thumbnailHash = message.summary.thumbnailHash\n }\n })\n })\n })\n })\n },\n )\n\n const listTopic = `entity_list.changed`\n const entityTypeTopic = `entity.${entityType}`\n\n const invalidateListItems = (id: string) => {\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityListItem', id: id }]))\n }\n\n const handleListMessage = (topic: string, message: ListItemMessage) => {\n if (topic !== listTopic) return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n invalidateListItems(id)\n }\n\n const handleEntityMessage = (topic: string, message: ListItemMessage) => {\n if (!topic.startsWith(entityTypeTopic)) return\n const summary = message.summary\n const id = summary.entityId\n // check for id\n if (!id) return\n invalidateListItems(id)\n }\n\n // sub to websocket topic\n token = PubSub.subscribe(listTopic, handleListMessage)\n if (entityType) token2 = PubSub.subscribe(entityTypeTopic, handleEntityMessage)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n PubSub.unsubscribe(token2)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n },\n }),\n getListsItemsForReviewSession: build.infiniteQuery<\n GetListsItemsForReviewSessionResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before' | 'filter'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListsItemsForReviewSession.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) {\n return { error: result.error as FetchBaseQueryError }\n }\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => [\n { type: 'entityList', id: 'LIST' },\n ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.id,\n })),\n ],\n }),\n }),\n})\n\nexport const getListsApiEnhanced = entityListsApi.enhanceEndpoints({\n endpoints: {\n getEntityList: {\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityList', id: listId },\n { type: 'entityList', id: projectName },\n ...(result\n ? [\n { type: 'entityList', id: result.entityListType },\n {\n type: 'entityList',\n id: result.entityListFolderId || 'NO_FOLDER',\n },\n ]\n : []),\n ],\n },\n },\n})\n\nexport default getListsGqlApiInjected\n\nexport const {\n useGetListsInfiniteInfiniteQuery,\n useGetListItemsInfiniteInfiniteQuery,\n useGetListsItemsForReviewSessionInfiniteQuery,\n useLazyGetListsItemsForReviewSessionQuery,\n useLazyGetListItemsQuery,\n} = getListsGqlApiInjected\n\nexport const { useGetEntityListQuery } = getListsApiEnhanced\n"],"names":["createBatchedCacheUpdater","updateCachedData","applyBatch","delay","queue","timeout","handler","topic","message","batch","draft","parseJSON","data","LISTS_PER_PAGE","LIST_ITEMS_PER_PAGE","getListsGqlApiEnhanced","gqlApi","response","edge","firstEdge","listEdge","node","parseAllAttribs","getListsGqlApiInjected","build","lastPage","pageInfo","queryArg","pageParam","api","cursor","queryParams","result","e","lists","page","list","projectName","cacheDataLoaded","cacheEntryRemoved","topics","handlePubSub","summary","id","getListFromSummary","l","newList","PubSub","t","sortBy","desc","rest","_e","listId","i","item","_args","dispatch","token","token2","unsubscribeThumbnails","entityType","subscribeToThumbnailUpdates","messages","listTopic","entityTypeTopic","invalidateListItems","handleListMessage","handleEntityMessage","getListsApiEnhanced","entityListsApi","useGetListsInfiniteInfiniteQuery","useGetListItemsInfiniteInfiniteQuery","useGetListsItemsForReviewSessionInfiniteQuery","useLazyGetListsItemsForReviewSessionQuery","useLazyGetListItemsQuery","useGetEntityListQuery"],"mappings":"mpEA2BO,SAASA,EACdC,EACAC,EACAC,EAAQ,IACR,CACA,IAAIC,EAAgD,CAAA,EAChDC,EAAgD,KAEpD,MAAMC,EAAU,CAACC,EAAeC,IAAsB,CACpDJ,EAAM,KAAK,CAAE,MAAAG,EAAO,QAAAC,CAAA,CAAS,EACxBH,IACHA,EAAU,WAAW,IAAM,CACzB,MAAMI,EAAQ,CAAC,GAAGL,CAAK,EACvBA,EAAQ,CAAA,EACRC,EAAU,KACNI,EAAM,OAAS,GACjBR,EAAkBS,GAAUR,EAAWQ,EAAOD,CAAK,CAAC,CAExD,EAAGN,CAAK,EAEZ,EAEA,OAAAG,EAAQ,MAAQ,IAAM,CAChBD,IACF,aAAaA,CAAO,EACpBA,EAAU,MAEZD,EAAQ,CAAA,CACV,EAEOE,CACT,CAGA,MAAMK,EAAaC,GAAyD,CAC1E,GAAI,CAACA,EAAM,MAAO,CAAA,EAElB,GAAI,CACF,OAAI,OAAOA,GAAS,SACVA,GAA2C,CAAA,EAE9C,KAAK,MAAMA,CAAI,CACxB,OAAS,EAAG,CACV,eAAQ,KAAK,0CAA2C,EAAGA,CAAI,EACxD,CAAA,CACT,CACF,EAIaC,EAAiB,IACjBC,EAAsB,IAc7BC,EAAyBC,EAAAA,IAAO,iBAA+C,CACnF,UAAW,CACT,SAAU,CACR,kBAAoBC,IACX,CAEL,MAAOA,EAAS,QAAQ,YAAY,MAAM,IAAKC,IAAU,CACvD,GAAGA,EAAK,KACR,KAAMP,EAAUO,EAAK,KAAK,IAAI,EAC9B,OAAQP,EAAUO,EAAK,KAAK,SAAS,CAAA,EACrC,EACF,SAAUD,EAAS,QAAQ,YAAY,QAAA,EAE3C,EAEF,aAAc,CACZ,kBAAoBA,GAAoD,CACtE,MAAME,EAAYF,EAAS,QAAQ,YAAY,MAAM,CAAC,EACtD,GAAI,CAACE,EACH,MAAM,IAAI,MAAM,sCAAsC,EAExD,MAAO,CACL,MAAOF,EAAS,QAAQ,YAAY,MAAM,QAASG,GACjDA,EAAS,KAAK,MAAM,MAAM,IAAI,CAAC,CAAE,KAAAC,EAAM,GAAGH,MACjC,CACL,GAAGG,EACH,GAAGH,EACH,OAAQI,EAAAA,gBAAgBJ,EAAK,SAAS,CAAA,EAEzC,CAAA,EAEH,SAAUC,EAAU,KAAK,MAAM,QAAA,CAEnC,CAAA,EAEF,8BAA+B,CAC7B,kBACEF,IAEO,CACL,MAAOA,EAAS,QAAQ,YAAY,MAAM,IAAKC,GAASA,EAAK,IAAI,EACjE,SAAUD,EAAS,QAAQ,YAAY,QAAA,EAE3C,CACF,CAEJ,CAAC,EAEKM,EAAyBR,EAAuB,gBAAgB,CACpE,UAAYS,IAAW,CACrB,iBAAkBA,EAAM,cAItB,CACA,qBAAsB,CACpB,iBAAkB,CAAE,OAAQ,EAAA,EAC5B,iBAAmBC,GAAa,CAC9B,KAAM,CAAE,SAAAC,GAAaD,EACrB,GAAI,GAACC,EAAS,aAAe,CAACA,EAAS,WAEvC,MAAO,CACL,OAAQA,EAAS,SAAA,CAErB,CAAA,EAEF,QAAS,MAAO,CAAE,SAAAC,EAAU,UAAAC,CAAA,EAAaC,IAAQ,CAC/C,GAAI,CACF,KAAM,CAAE,OAAAC,GAAWF,EAGbG,EAAc,CAClB,GAAGJ,EACH,MAAOd,EACP,MAAOiB,GAAU,MAAA,EAIbE,EAAS,MAAMH,EAAI,SACvBd,EAAuB,UAAU,SAAS,SAASgB,EAAa,CAAE,aAAc,GAAM,CAAA,EAGxF,OAAIC,EAAO,MAEF,CAAE,MAAOA,EAAO,KAAA,EAGlB,CACL,KAAMA,EAAO,MAAQ,CACnB,MAAO,CAAA,EACP,SAAU,CACR,YAAa,GACb,UAAW,KACX,YAAa,KACb,gBAAiB,EAAA,CACnB,CACF,CAEJ,OAASC,EAAQ,CACf,eAAQ,MAAM,qCAAsCA,CAAC,EAC9C,CAAE,MAAO,CAAE,OAAQ,cAAe,MAAOA,EAAE,QAAQ,CAC5D,CACF,EACA,aAAeD,GAAW,CACxB,MAAME,EAAQF,GAAQ,MAAM,QAASG,GAASA,EAAK,KAAK,GAAK,CAAA,EAC7D,MAAO,CACL,CAAE,KAAM,aAAc,GAAI,MAAA,EAC1B,GAAGD,EAAM,QAASE,GAAS,CACzB,CAAE,KAAM,aAAuB,GAAIA,EAAK,EAAA,EACxC,CAAE,KAAM,aAAuB,GAAIA,EAAK,cAAA,EACxC,CAAE,KAAM,aAAuB,GAAIA,EAAK,oBAAsB,WAAA,CAAY,CAC3E,CAAA,CAEL,EACA,MAAM,kBACJ,CAAE,YAAAC,CAAA,EACF,CAAE,gBAAAC,EAAiB,kBAAAC,EAAmB,iBAAAtC,GACtC,CACA,MAAMuC,EAAS,CAAC,sBAAuB,sBAAuB,qBAAqB,EACnF,IAAIC,EAAoB,KACxB,GAAI,CAEF,MAAMH,EAENG,EAAezC,EACbC,EACA,CAACS,EAAOD,IAAU,CAChBA,EAAM,QAAQ,CAAC,CAAE,MAAAF,EAAO,QAAAC,KAAc,CACpC,MAAMkC,EAAUlC,EAAQ,QAClBmC,EAAKD,EAAQ,GACnB,GAAI,CAACC,EAAI,OAET,MAAMC,EAAsBR,IACnB,CAEL,YAAAC,EACA,KAAM,CAAA,EACN,KAAM,CAAA,EACN,UAAW,GACX,OAAQ,CAAA,EACR,UAAW,IAAI,KAAA,EAAO,YAAA,EACtB,UAAW,GACX,OAAQ,GACR,OAAQ,GACR,YAAa,GAEb,GAAID,GAAQ,CAAA,EAEZ,GAAIM,EAAQ,GACZ,MAAOA,EAAQ,MACf,WAAYA,EAAQ,YACpB,eAAgBA,EAAQ,iBACxB,MAAOA,EAAQ,KAAA,GAInB,GAAInC,IAAU,sBAAuB,CAEnC,MAAM6B,EAAO1B,EAAM,MAChB,QAASyB,GAAcA,EAAK,KAAK,EACjC,KAAMU,GAAWA,EAAE,KAAOF,CAAE,EAC/B,GAAI,CAACP,EAAM,OACX,MAAMU,EAAUF,EAAmBR,CAAI,EAEvC,OAAO,OAAOA,EAAMU,CAAO,CAC7B,SAAWvC,IAAU,sBAAuB,CAE1C,MAAMuC,EAAUF,EAAA,EAEZlC,EAAM,MAAM,SAAW,GACzBA,EAAM,MAAM,CAAC,EAAE,MAAM,QAAQoC,CAAO,CAExC,MAAWvC,IAAU,uBAEnBG,EAAM,MAAM,QAASyB,GAAc,CACjCA,EAAK,MAAQA,EAAK,MAAM,OAAQU,GAAWA,EAAE,KAAOF,CAAE,CACxD,CAAC,CAEL,CAAC,CACH,EACA,GAAA,EAGFH,EAAO,QAASjC,GAAUwC,EAAO,UAAUxC,EAAOkC,CAAY,CAAC,CACjE,MAAQ,CAGR,CAEA,MAAMF,EAENC,EAAO,QAASQ,GAAMD,EAAO,YAAYC,CAAC,CAAC,EACvCP,GAAgB,OAAOA,EAAa,OAAU,cAAyB,MAAA,CAC7E,CAAA,CACD,EACD,qBAAsBjB,EAAM,cAI1B,CACA,qBAAsB,CACpB,iBAAkB,CAAE,OAAQ,EAAA,EAC5B,iBAAmBC,GAAa,CAC9B,KAAM,CAAE,SAAAC,GAAaD,EACrB,GAAI,GAACC,EAAS,aAAe,CAACA,EAAS,WAEvC,MAAO,CACL,OAAQA,EAAS,SAAA,CAErB,CAAA,EAEF,QAAS,MAAO,CAAE,SAAAC,EAAU,UAAAC,CAAA,EAAaC,IAAQ,CAC/C,GAAI,CACF,KAAM,CAAE,OAAAoB,EAAQ,KAAAC,EAAM,GAAGC,GAASxB,EAC5B,CAAE,OAAAG,GAAWF,EAGbG,EAA0C,CAC9C,GAAGoB,EACH,MAAOrC,EACP,MAAOgB,GAAU,MAAA,EAInBC,EAAY,MAAQD,GAAU,OAC9BC,EAAY,MAAQjB,EAEhBmC,IACFlB,EAAY,OAASkB,EACjBC,IACFnB,EAAY,OAASD,GAAU,OAC/BC,EAAY,MAAQ,OACpBA,EAAY,KAAOjB,EACnBiB,EAAY,MAAQ,SAKxB,MAAMC,EAAS,MAAMH,EAAI,SACvBd,EAAuB,UAAU,aAAa,SAASgB,EAAa,CAClE,aAAc,EAAA,CACf,CAAA,EAGH,OAAIC,EAAO,MACF,CAAE,MAAOA,EAAO,KAAA,EAGlB,CACL,KAAMA,EAAO,MAAQ,CACnB,MAAO,CAAA,EACP,SAAU,CACR,YAAa,GACb,UAAW,KACX,YAAa,KACb,gBAAiB,EAAA,CACnB,CACF,CAEJ,OAASC,EAAQ,CACf,eAAQ,MAAM,qCAAsCA,CAAC,EAC9C,CAAE,MAAO,CAAE,OAAQ,cAAe,MAAOA,EAAE,QAAQ,CAC5D,CACF,EACA,aAAc,CAACD,EAAQoB,EAAI,CAAE,OAAAC,EAAQ,YAAAhB,KAAkB,CACrD,CAAE,KAAM,iBAAkB,GAAI,MAAA,EAC9B,CAAE,KAAM,iBAAkB,GAAIgB,CAAA,EAC9B,CAAE,KAAM,iBAAkB,GAAIhB,CAAA,EAC9B,IAAIL,GAAQ,MAAM,QAASG,GAASA,EAAK,KAAK,GAAK,CAAA,GAChD,OAAQmB,GAAM,CAAC,CAACA,CAAC,EACjB,QAASC,GAAS,CACjB,CACE,KAAM,iBACN,GAAIA,EAAK,EAAA,EAEX,CACE,KAAM,iBACN,GAAIA,EAAK,QAAA,CACX,CACD,CAAA,EAEL,MAAM,kBACJC,EACA,CAAE,gBAAAlB,EAAiB,kBAAAC,EAAmB,SAAAkB,EAAU,iBAAAxD,GAChD,CACA,IAAIyD,EAAOC,EACPC,EACJ,GAAI,CAMF,MAAMC,GAJQ,MAAMvB,GACA,KAAK,MACL,QAASH,GAASA,EAAK,KAAK,EAEvB,CAAC,GAAG,WAE7ByB,EAAwBE,EAAAA,4BACrBC,GAAuC,CACtC9D,EAAkBS,GAAe,CAC1BA,GAAO,OACZqD,EAAS,QAASvD,GAAY,CAC5BE,EAAM,MAAM,QAASyB,GAAc,EACfA,EAAK,OAAS,CAAA,GACtB,QAASoB,GAAc,CAE7BA,EAAK,WAAa/C,EAAQ,QAAQ,UAClC+C,EAAK,aAAe/C,EAAQ,QAAQ,YACpCA,EAAQ,QAAQ,gBAEhB+C,EAAK,cAAgB/C,EAAQ,QAAQ,cAEzC,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAAA,EAGF,MAAMwD,EAAY,sBACZC,EAAkB,UAAUJ,CAAU,GAEtCK,EAAuBvB,GAAe,CAC1Cc,EAASzC,EAAAA,IAAO,KAAK,eAAe,CAAC,CAAE,KAAM,iBAAkB,GAAA2B,CAAA,CAAQ,CAAC,CAAC,CAC3E,EAEMwB,EAAoB,CAAC5D,EAAeC,IAA6B,CACrE,GAAID,IAAUyD,EAAW,OAEzB,MAAMrB,EADUnC,EAAQ,QACL,GACdmC,GACLuB,EAAoBvB,CAAE,CACxB,EAEMyB,EAAsB,CAAC7D,EAAeC,IAA6B,CACvE,GAAI,CAACD,EAAM,WAAW0D,CAAe,EAAG,OAExC,MAAMtB,EADUnC,EAAQ,QACL,SAEdmC,GACLuB,EAAoBvB,CAAE,CACxB,EAGAe,EAAQX,EAAO,UAAUiB,EAAWG,CAAiB,EACjDN,IAAYF,EAASZ,EAAO,UAAUkB,EAAiBG,CAAmB,EAChF,MAAQ,CAGR,CAEA,MAAM7B,EAENQ,EAAO,YAAYW,CAAK,EACxBX,EAAO,YAAYY,CAAM,EACrBC,GACFA,EAAA,CAEJ,CAAA,CACD,EACD,8BAA+BpC,EAAM,cAInC,CACA,qBAAsB,CACpB,iBAAkB,CAAE,OAAQ,EAAA,EAC5B,iBAAmBC,GAAa,CAC9B,KAAM,CAAE,SAAAC,GAAaD,EACrB,GAAI,GAACC,EAAS,aAAe,CAACA,EAAS,WAEvC,MAAO,CACL,OAAQA,EAAS,SAAA,CAErB,CAAA,EAEF,QAAS,MAAO,CAAE,SAAAC,EAAU,UAAAC,CAAA,EAAaC,IAAQ,CAC/C,GAAI,CACF,KAAM,CAAE,OAAAC,GAAWF,EAGbG,EAAc,CAClB,GAAGJ,EACH,MAAOd,EACP,MAAOiB,GAAU,MAAA,EAIbE,EAAS,MAAMH,EAAI,SACvBd,EAAuB,UAAU,8BAA8B,SAASgB,EAAa,CACnF,aAAc,EAAA,CACf,CAAA,EAGH,OAAIC,EAAO,MACF,CAAE,MAAOA,EAAO,KAAA,EAGlB,CACL,KAAMA,EAAO,MAAQ,CACnB,MAAO,CAAA,EACP,SAAU,CACR,YAAa,GACb,UAAW,KACX,YAAa,KACb,gBAAiB,EAAA,CACnB,CACF,CAEJ,OAASC,EAAQ,CACf,eAAQ,MAAM,qCAAsCA,CAAC,EAC9C,CAAE,MAAO,CAAE,OAAQ,cAAe,MAAOA,EAAE,QAAQ,CAC5D,CACF,EACA,aAAeD,GAAW,CACxB,CAAE,KAAM,aAAc,GAAI,MAAA,EAC1B,IAAIA,GAAQ,MAAM,QAASG,GAASA,EAAK,KAAK,GAAK,CAAA,GAAI,IAAKC,IAAU,CACpE,KAAM,aACN,GAAIA,EAAK,EAAA,EACT,CAAA,CACJ,CACD,CAAA,EAEL,CAAC,EAEYiC,EAAsBC,EAAAA,IAAe,iBAAiB,CACjE,UAAW,CACT,cAAe,CACb,aAAc,CAACtC,EAAQoB,EAAI,CAAE,OAAAC,EAAQ,YAAAhB,KAAkB,CACrD,CAAE,KAAM,aAAc,GAAIgB,CAAA,EAC1B,CAAE,KAAM,aAAc,GAAIhB,CAAA,EAC1B,GAAIL,EACA,CACE,CAAE,KAAM,aAAc,GAAIA,EAAO,cAAA,EACjC,CACE,KAAM,aACN,GAAIA,EAAO,oBAAsB,WAAA,CACnC,EAEF,CAAA,CAAC,CACP,CACF,CAEJ,CAAC,EAIY,CACX,iCAAAuC,EACA,qCAAAC,EACA,8CAAAC,EACA,0CAAAC,EACA,yBAAAC,CACF,EAAIpD,EAES,CAAE,sBAAAqD,GAA0BP"}
|
|
@@ -45,9 +45,9 @@ import "../links/getEntityLinks.es.js";
|
|
|
45
45
|
import "lodash";
|
|
46
46
|
import "react-toastify";
|
|
47
47
|
import "uuid";
|
|
48
|
-
import { subscribeToThumbnailUpdates as
|
|
48
|
+
import { subscribeToThumbnailUpdates as A } from "../../../util/thumbnailWebsocket.es.js";
|
|
49
49
|
import h from "../../../util/pubsub.es.js";
|
|
50
|
-
function
|
|
50
|
+
function G(r, t, e = 5e3) {
|
|
51
51
|
let s = [], i = null;
|
|
52
52
|
const n = (o, a) => {
|
|
53
53
|
s.push({ topic: o, message: a }), i || (i = setTimeout(() => {
|
|
@@ -66,7 +66,7 @@ const R = (r) => {
|
|
|
66
66
|
} catch (t) {
|
|
67
67
|
return console.warn("Failed to parse entity list data field:", t, r), {};
|
|
68
68
|
}
|
|
69
|
-
}, _ =
|
|
69
|
+
}, _ = 1e4, T = 100, E = F.enhanceEndpoints({
|
|
70
70
|
endpoints: {
|
|
71
71
|
GetLists: {
|
|
72
72
|
transformResponse: (r) => ({
|
|
@@ -155,7 +155,7 @@ const R = (r) => {
|
|
|
155
155
|
const n = ["entity_list.changed", "entity_list.created", "entity_list.deleted"];
|
|
156
156
|
let o = null;
|
|
157
157
|
try {
|
|
158
|
-
await e, o =
|
|
158
|
+
await e, o = G(
|
|
159
159
|
i,
|
|
160
160
|
(a, p) => {
|
|
161
161
|
p.forEach(({ topic: c, message: v }) => {
|
|
@@ -262,7 +262,7 @@ const R = (r) => {
|
|
|
262
262
|
let o, a, p;
|
|
263
263
|
try {
|
|
264
264
|
const l = (await e).data.pages.flatMap((y) => y.items)[0]?.entityType;
|
|
265
|
-
p =
|
|
265
|
+
p = A(
|
|
266
266
|
(y) => {
|
|
267
267
|
n((g) => {
|
|
268
268
|
g?.pages && y.forEach((L) => {
|
|
@@ -355,25 +355,23 @@ const R = (r) => {
|
|
|
355
355
|
}
|
|
356
356
|
}
|
|
357
357
|
}), {
|
|
358
|
-
useGetListsInfiniteInfiniteQuery:
|
|
359
|
-
useGetListItemsInfiniteInfiniteQuery:
|
|
358
|
+
useGetListsInfiniteInfiniteQuery: At,
|
|
359
|
+
useGetListItemsInfiniteInfiniteQuery: Gt,
|
|
360
360
|
useGetListsItemsForReviewSessionInfiniteQuery: Ot,
|
|
361
|
-
|
|
362
|
-
useLazyGetListsItemsForReviewSessionQuery: Qt,
|
|
361
|
+
useLazyGetListsItemsForReviewSessionQuery: Nt,
|
|
363
362
|
useLazyGetListItemsQuery: qt
|
|
364
|
-
} = O, { useGetEntityListQuery:
|
|
363
|
+
} = O, { useGetEntityListQuery: Qt } = N;
|
|
365
364
|
export {
|
|
366
365
|
_ as LISTS_PER_PAGE,
|
|
367
366
|
T as LIST_ITEMS_PER_PAGE,
|
|
368
|
-
|
|
367
|
+
G as createBatchedCacheUpdater,
|
|
369
368
|
O as default,
|
|
370
369
|
N as getListsApiEnhanced,
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
370
|
+
Qt as useGetEntityListQuery,
|
|
371
|
+
Gt as useGetListItemsInfiniteInfiniteQuery,
|
|
372
|
+
At as useGetListsInfiniteInfiniteQuery,
|
|
374
373
|
Ot as useGetListsItemsForReviewSessionInfiniteQuery,
|
|
375
374
|
qt as useLazyGetListItemsQuery,
|
|
376
|
-
|
|
377
|
-
Nt as useLazyGetListsQuery
|
|
375
|
+
Nt as useLazyGetListsItemsForReviewSessionQuery
|
|
378
376
|
};
|
|
379
377
|
//# sourceMappingURL=getLists.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getLists.es.js","sources":["../../../../../../src/api/queries/entityLists/getLists.ts"],"sourcesContent":["import { entityListsApi, gqlApi } from '@shared/api/generated'\nimport {\n FetchBaseQueryError,\n DefinitionsFromApi,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\nimport type {\n EntityList,\n GetListItemsQuery,\n GetListItemsQueryVariables,\n GetListsItemsForReviewSessionQuery,\n GetListsItemsForReviewSessionResult,\n GetListsQuery,\n GetListsQueryVariables,\n} from '@shared/api'\nimport { parseAllAttribs } from '../overview'\nimport { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport {\n GetListItemsResult,\n GetListsResult,\n ListItemMessage,\n ListItemsPageParam,\n ListsPageParam,\n} from './types'\n\n// Helper function to batch pub/sub messages to avoid constant cache updates\nexport function createBatchedCacheUpdater<TMessage, TDraft>(\n updateCachedData: (updater: (draft: TDraft) => void) => void,\n applyBatch: (draft: TDraft, batch: { topic: string; message: TMessage }[]) => void,\n delay = 5000,\n) {\n let queue: { topic: string; message: TMessage }[] = []\n let timeout: ReturnType<typeof setTimeout> | null = null\n\n const handler = (topic: string, message: TMessage) => {\n queue.push({ topic, message })\n if (!timeout) {\n timeout = setTimeout(() => {\n const batch = [...queue]\n queue = []\n timeout = null\n if (batch.length > 0) {\n updateCachedData((draft) => applyBatch(draft, batch))\n }\n }, delay)\n }\n }\n\n handler.clear = () => {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n queue = []\n }\n\n return handler\n}\n\n// Helper function to safely parse entity list data field from JSON string to object\nconst parseJSON = (data: string | null | undefined): Record<string, any> => {\n if (!data) return {}\n\n try {\n if (typeof data !== 'string') {\n return (data as unknown as Record<string, any>) ?? {}\n }\n return JSON.parse(data)\n } catch (e) {\n console.warn('Failed to parse entity list data field:', e, data)\n return {}\n }\n}\n\n// GRAPHQL API (getLists and getListItems)\n// Define the LISTS_PER_PAGE constant for pagination\nexport const LISTS_PER_PAGE = 500\nexport const LIST_ITEMS_PER_PAGE = 100\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetLists' | 'GetListItems'> & {\n GetLists: OverrideResultType<Definitions['GetLists'], GetListsResult>\n GetListItems: OverrideResultType<Definitions['GetListItems'], GetListItemsResult>\n GetListsItemsForReviewSession: OverrideResultType<\n Definitions['GetListsItemsForReviewSession'],\n GetListsItemsForReviewSessionResult\n >\n}\n\nconst getListsGqlApiEnhanced = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetLists: {\n transformResponse: (response: GetListsQuery): GetListsResult => {\n return {\n // @ts-expect-error - entityType is string\n lists: response.project.entityLists.edges.map((edge) => ({\n ...edge.node,\n data: parseJSON(edge.node.data),\n attrib: parseJSON(edge.node.allAttrib),\n })),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n },\n GetListItems: {\n transformResponse: (response: GetListItemsQuery): GetListItemsResult => {\n const firstEdge = response.project.entityLists.edges[0]\n if (!firstEdge) {\n throw new Error('List does not exist, was it deleted?')\n }\n return {\n items: response.project.entityLists.edges.flatMap((listEdge) =>\n listEdge.node.items.edges.map(({ node, ...edge }) => {\n return {\n ...node,\n ...edge,\n attrib: parseAllAttribs(edge.allAttrib),\n } as GetListItemsResult['items'][number]\n }),\n ),\n pageInfo: firstEdge.node.items.pageInfo,\n }\n },\n },\n GetListsItemsForReviewSession: {\n transformResponse: (\n response: GetListsItemsForReviewSessionQuery,\n ): GetListsItemsForReviewSessionResult => {\n return {\n lists: response.project.entityLists.edges.map((edge) => edge.node),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n },\n },\n})\n\nconst getListsGqlApiInjected = getListsGqlApiEnhanced.injectEndpoints({\n endpoints: (build) => ({\n getListsInfinite: build.infiniteQuery<\n GetListsResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetLists.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) {\n // Preserve original error (e.g. 403) so the UI can react accordingly\n return { error: result.error as FetchBaseQueryError }\n }\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => {\n const lists = result?.pages.flatMap((page) => page.lists) || []\n return [\n { type: 'entityList', id: 'LIST' },\n ...lists.flatMap((list) => [\n { type: 'entityList' as const, id: list.id },\n { type: 'entityList' as const, id: list.entityListType },\n { type: 'entityList' as const, id: list.entityListFolderId || 'NO_FOLDER' },\n ]),\n ]\n },\n async onCacheEntryAdded(\n { projectName },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData },\n ) {\n const topics = ['entity_list.changed', 'entity_list.created', 'entity_list.deleted']\n let handlePubSub: any = null\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n handlePubSub = createBatchedCacheUpdater<ListItemMessage, any>(\n updateCachedData,\n (draft, batch) => {\n batch.forEach(({ topic, message }) => {\n const summary = message.summary\n const id = summary.id\n if (!id) return\n\n const getListFromSummary = (list?: EntityList): EntityList => {\n return {\n // defaults\n projectName: projectName,\n tags: [],\n data: {},\n allAttrib: '',\n attrib: {},\n createdAt: new Date().toISOString(),\n updatedAt: '',\n active: true,\n access: '',\n accessLevel: 30, // default admin\n // existing data\n ...(list || {}),\n // new data\n id: summary.id as string,\n label: summary.label,\n entityType: summary.entity_type,\n entityListType: summary.entity_list_type,\n count: summary.count,\n }\n }\n\n if (topic === 'entity_list.changed') {\n // update the data of existing list in cache\n const list = draft.pages\n .flatMap((page: any) => page.lists)\n .find((l: any) => l.id === id)\n if (!list) return\n const newList = getListFromSummary(list)\n\n Object.assign(list, newList)\n } else if (topic === 'entity_list.created') {\n // Add new list to the cache using basic summary\n const newList = getListFromSummary()\n // Insert the new list at the beginning of the first page\n if (draft.pages.length !== 0) {\n draft.pages[0].lists.unshift(newList)\n }\n } else if (topic === 'entity_list.deleted') {\n // delete the list from the cache\n draft.pages.forEach((page: any) => {\n page.lists = page.lists.filter((l: any) => l.id !== id)\n })\n }\n })\n },\n 10000, // 10 seconds debounce/batch window\n )\n\n topics.forEach((topic) => PubSub.subscribe(topic, handlePubSub))\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n topics.forEach((t) => PubSub.unsubscribe(t))\n if (handlePubSub && typeof handlePubSub.clear === 'function') handlePubSub.clear()\n },\n }),\n getListItemsInfinite: build.infiniteQuery<\n GetListItemsResult,\n Omit<GetListItemsQueryVariables, 'first' | 'after' | 'before' | 'last'> & { desc?: boolean },\n ListItemsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { sortBy, desc, ...rest } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams: GetListItemsQueryVariables = {\n ...rest,\n first: LIST_ITEMS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Add cursor-based pagination\n queryParams.after = cursor || undefined\n queryParams.first = LIST_ITEMS_PER_PAGE\n\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.after = undefined\n queryParams.last = LIST_ITEMS_PER_PAGE\n queryParams.first = undefined\n }\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListItems.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) {\n return { error: result.error as FetchBaseQueryError }\n }\n\n return {\n data: result.data || {\n items: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityListItem', id: 'LIST' },\n { type: 'entityListItem', id: listId },\n { type: 'entityListItem', id: projectName },\n ...(result?.pages.flatMap((page) => page.items) || [])\n .filter((i) => !!i)\n .flatMap((item) => [\n {\n type: 'entityListItem',\n id: item.id,\n },\n {\n type: 'entityListItem',\n id: item.entityId,\n },\n ]),\n ],\n async onCacheEntryAdded(\n _args,\n { cacheDataLoaded, cacheEntryRemoved, dispatch, updateCachedData },\n ) {\n let token, token2\n let unsubscribeThumbnails: (() => void) | undefined\n try {\n // wait for the initial query to resolve before proceeding\n const cache = await cacheDataLoaded\n const pages = cache.data.pages\n const items = pages.flatMap((page) => page.items)\n // get entityType of first item\n const entityType = items[0]?.entityType\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: any) => {\n if (!draft?.pages) return\n messages.forEach((message) => {\n draft.pages.forEach((page: any) => {\n const pageItems = page.items || []\n pageItems.forEach((item: any) => {\n if (\n item.entityId === message.summary.entityId &&\n item.entityType === message.summary.entityType &&\n message.summary.thumbnailHash\n ) {\n item.thumbnailHash = message.summary.thumbnailHash\n }\n })\n })\n })\n })\n },\n )\n\n const listTopic = `entity_list.changed`\n const entityTypeTopic = `entity.${entityType}`\n\n const invalidateListItems = (id: string) => {\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityListItem', id: id }]))\n }\n\n const handleListMessage = (topic: string, message: ListItemMessage) => {\n if (topic !== listTopic) return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n invalidateListItems(id)\n }\n\n const handleEntityMessage = (topic: string, message: ListItemMessage) => {\n if (!topic.startsWith(entityTypeTopic)) return\n const summary = message.summary\n const id = summary.entityId\n // check for id\n if (!id) return\n invalidateListItems(id)\n }\n\n // sub to websocket topic\n token = PubSub.subscribe(listTopic, handleListMessage)\n if (entityType) token2 = PubSub.subscribe(entityTypeTopic, handleEntityMessage)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n PubSub.unsubscribe(token2)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n },\n }),\n getListsItemsForReviewSession: build.infiniteQuery<\n GetListsItemsForReviewSessionResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before' | 'filter'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListsItemsForReviewSession.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) {\n return { error: result.error as FetchBaseQueryError }\n }\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => [\n { type: 'entityList', id: 'LIST' },\n ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.id,\n })),\n ],\n }),\n }),\n})\n\nexport const getListsApiEnhanced = entityListsApi.enhanceEndpoints({\n endpoints: {\n getEntityList: {\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityList', id: listId },\n { type: 'entityList', id: projectName },\n ...(result\n ? [\n { type: 'entityList', id: result.entityListType },\n {\n type: 'entityList',\n id: result.entityListFolderId || 'NO_FOLDER',\n },\n ]\n : []),\n ],\n },\n },\n})\n\nexport default getListsGqlApiInjected\n\nexport const {\n useGetListsInfiniteInfiniteQuery,\n useGetListItemsInfiniteInfiniteQuery,\n useGetListsItemsForReviewSessionInfiniteQuery,\n useLazyGetListsQuery,\n useLazyGetListsItemsForReviewSessionQuery,\n useLazyGetListItemsQuery,\n} = getListsGqlApiInjected\n\nexport const { useGetEntityListQuery } = getListsApiEnhanced\n"],"names":["createBatchedCacheUpdater","updateCachedData","applyBatch","delay","queue","timeout","handler","topic","message","batch","draft","parseJSON","data","e","LISTS_PER_PAGE","LIST_ITEMS_PER_PAGE","getListsGqlApiEnhanced","gqlApi","response","edge","firstEdge","listEdge","node","parseAllAttribs","getListsGqlApiInjected","build","lastPage","pageInfo","queryArg","pageParam","api","cursor","queryParams","result","lists","page","list","projectName","cacheDataLoaded","cacheEntryRemoved","topics","handlePubSub","summary","id","getListFromSummary","l","newList","PubSub","t","sortBy","desc","rest","_e","listId","i","item","_args","dispatch","token","token2","unsubscribeThumbnails","entityType","subscribeToThumbnailUpdates","messages","listTopic","entityTypeTopic","invalidateListItems","handleListMessage","handleEntityMessage","getListsApiEnhanced","entityListsApi","useGetListsInfiniteInfiniteQuery","useGetListItemsInfiniteInfiniteQuery","useGetListsItemsForReviewSessionInfiniteQuery","useLazyGetListsQuery","useLazyGetListsItemsForReviewSessionQuery","useLazyGetListItemsQuery","useGetEntityListQuery"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getLists.es.js","sources":["../../../../../../src/api/queries/entityLists/getLists.ts"],"sourcesContent":["import { entityListsApi, gqlApi } from '@shared/api/generated'\nimport {\n FetchBaseQueryError,\n DefinitionsFromApi,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\nimport type {\n EntityList,\n GetListItemsQuery,\n GetListItemsQueryVariables,\n GetListsItemsForReviewSessionQuery,\n GetListsItemsForReviewSessionResult,\n GetListsQuery,\n GetListsQueryVariables,\n} from '@shared/api'\nimport { parseAllAttribs } from '../overview'\nimport { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport {\n GetListItemsResult,\n GetListsResult,\n ListItemMessage,\n ListItemsPageParam,\n ListsPageParam,\n} from './types'\n\n// Helper function to batch pub/sub messages to avoid constant cache updates\nexport function createBatchedCacheUpdater<TMessage, TDraft>(\n updateCachedData: (updater: (draft: TDraft) => void) => void,\n applyBatch: (draft: TDraft, batch: { topic: string; message: TMessage }[]) => void,\n delay = 5000,\n) {\n let queue: { topic: string; message: TMessage }[] = []\n let timeout: ReturnType<typeof setTimeout> | null = null\n\n const handler = (topic: string, message: TMessage) => {\n queue.push({ topic, message })\n if (!timeout) {\n timeout = setTimeout(() => {\n const batch = [...queue]\n queue = []\n timeout = null\n if (batch.length > 0) {\n updateCachedData((draft) => applyBatch(draft, batch))\n }\n }, delay)\n }\n }\n\n handler.clear = () => {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n queue = []\n }\n\n return handler\n}\n\n// Helper function to safely parse entity list data field from JSON string to object\nconst parseJSON = (data: string | null | undefined): Record<string, any> => {\n if (!data) return {}\n\n try {\n if (typeof data !== 'string') {\n return (data as unknown as Record<string, any>) ?? {}\n }\n return JSON.parse(data)\n } catch (e) {\n console.warn('Failed to parse entity list data field:', e, data)\n return {}\n }\n}\n\n// GRAPHQL API (getLists and getListItems)\n// Define the LISTS_PER_PAGE constant for pagination\nexport const LISTS_PER_PAGE = 10000\nexport const LIST_ITEMS_PER_PAGE = 100\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetLists' | 'GetListItems'> & {\n GetLists: OverrideResultType<Definitions['GetLists'], GetListsResult>\n GetListItems: OverrideResultType<Definitions['GetListItems'], GetListItemsResult>\n GetListsItemsForReviewSession: OverrideResultType<\n Definitions['GetListsItemsForReviewSession'],\n GetListsItemsForReviewSessionResult\n >\n}\n\nconst getListsGqlApiEnhanced = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetLists: {\n transformResponse: (response: GetListsQuery): GetListsResult => {\n return {\n // @ts-expect-error - entityType is string\n lists: response.project.entityLists.edges.map((edge) => ({\n ...edge.node,\n data: parseJSON(edge.node.data),\n attrib: parseJSON(edge.node.allAttrib),\n })),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n },\n GetListItems: {\n transformResponse: (response: GetListItemsQuery): GetListItemsResult => {\n const firstEdge = response.project.entityLists.edges[0]\n if (!firstEdge) {\n throw new Error('List does not exist, was it deleted?')\n }\n return {\n items: response.project.entityLists.edges.flatMap((listEdge) =>\n listEdge.node.items.edges.map(({ node, ...edge }) => {\n return {\n ...node,\n ...edge,\n attrib: parseAllAttribs(edge.allAttrib),\n } as GetListItemsResult['items'][number]\n }),\n ),\n pageInfo: firstEdge.node.items.pageInfo,\n }\n },\n },\n GetListsItemsForReviewSession: {\n transformResponse: (\n response: GetListsItemsForReviewSessionQuery,\n ): GetListsItemsForReviewSessionResult => {\n return {\n lists: response.project.entityLists.edges.map((edge) => edge.node),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n },\n },\n})\n\nconst getListsGqlApiInjected = getListsGqlApiEnhanced.injectEndpoints({\n endpoints: (build) => ({\n getListsInfinite: build.infiniteQuery<\n GetListsResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetLists.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) {\n // Preserve original error (e.g. 403) so the UI can react accordingly\n return { error: result.error as FetchBaseQueryError }\n }\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => {\n const lists = result?.pages.flatMap((page) => page.lists) || []\n return [\n { type: 'entityList', id: 'LIST' },\n ...lists.flatMap((list) => [\n { type: 'entityList' as const, id: list.id },\n { type: 'entityList' as const, id: list.entityListType },\n { type: 'entityList' as const, id: list.entityListFolderId || 'NO_FOLDER' },\n ]),\n ]\n },\n async onCacheEntryAdded(\n { projectName },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData },\n ) {\n const topics = ['entity_list.changed', 'entity_list.created', 'entity_list.deleted']\n let handlePubSub: any = null\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n handlePubSub = createBatchedCacheUpdater<ListItemMessage, any>(\n updateCachedData,\n (draft, batch) => {\n batch.forEach(({ topic, message }) => {\n const summary = message.summary\n const id = summary.id\n if (!id) return\n\n const getListFromSummary = (list?: EntityList): EntityList => {\n return {\n // defaults\n projectName: projectName,\n tags: [],\n data: {},\n allAttrib: '',\n attrib: {},\n createdAt: new Date().toISOString(),\n updatedAt: '',\n active: true,\n access: '',\n accessLevel: 30, // default admin\n // existing data\n ...(list || {}),\n // new data\n id: summary.id as string,\n label: summary.label,\n entityType: summary.entity_type,\n entityListType: summary.entity_list_type,\n count: summary.count,\n }\n }\n\n if (topic === 'entity_list.changed') {\n // update the data of existing list in cache\n const list = draft.pages\n .flatMap((page: any) => page.lists)\n .find((l: any) => l.id === id)\n if (!list) return\n const newList = getListFromSummary(list)\n\n Object.assign(list, newList)\n } else if (topic === 'entity_list.created') {\n // Add new list to the cache using basic summary\n const newList = getListFromSummary()\n // Insert the new list at the beginning of the first page\n if (draft.pages.length !== 0) {\n draft.pages[0].lists.unshift(newList)\n }\n } else if (topic === 'entity_list.deleted') {\n // delete the list from the cache\n draft.pages.forEach((page: any) => {\n page.lists = page.lists.filter((l: any) => l.id !== id)\n })\n }\n })\n },\n 10000, // 10 seconds debounce/batch window\n )\n\n topics.forEach((topic) => PubSub.subscribe(topic, handlePubSub))\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n topics.forEach((t) => PubSub.unsubscribe(t))\n if (handlePubSub && typeof handlePubSub.clear === 'function') handlePubSub.clear()\n },\n }),\n getListItemsInfinite: build.infiniteQuery<\n GetListItemsResult,\n Omit<GetListItemsQueryVariables, 'first' | 'after' | 'before' | 'last'> & { desc?: boolean },\n ListItemsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { sortBy, desc, ...rest } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams: GetListItemsQueryVariables = {\n ...rest,\n first: LIST_ITEMS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Add cursor-based pagination\n queryParams.after = cursor || undefined\n queryParams.first = LIST_ITEMS_PER_PAGE\n\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.after = undefined\n queryParams.last = LIST_ITEMS_PER_PAGE\n queryParams.first = undefined\n }\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListItems.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) {\n return { error: result.error as FetchBaseQueryError }\n }\n\n return {\n data: result.data || {\n items: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityListItem', id: 'LIST' },\n { type: 'entityListItem', id: listId },\n { type: 'entityListItem', id: projectName },\n ...(result?.pages.flatMap((page) => page.items) || [])\n .filter((i) => !!i)\n .flatMap((item) => [\n {\n type: 'entityListItem',\n id: item.id,\n },\n {\n type: 'entityListItem',\n id: item.entityId,\n },\n ]),\n ],\n async onCacheEntryAdded(\n _args,\n { cacheDataLoaded, cacheEntryRemoved, dispatch, updateCachedData },\n ) {\n let token, token2\n let unsubscribeThumbnails: (() => void) | undefined\n try {\n // wait for the initial query to resolve before proceeding\n const cache = await cacheDataLoaded\n const pages = cache.data.pages\n const items = pages.flatMap((page) => page.items)\n // get entityType of first item\n const entityType = items[0]?.entityType\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: any) => {\n if (!draft?.pages) return\n messages.forEach((message) => {\n draft.pages.forEach((page: any) => {\n const pageItems = page.items || []\n pageItems.forEach((item: any) => {\n if (\n item.entityId === message.summary.entityId &&\n item.entityType === message.summary.entityType &&\n message.summary.thumbnailHash\n ) {\n item.thumbnailHash = message.summary.thumbnailHash\n }\n })\n })\n })\n })\n },\n )\n\n const listTopic = `entity_list.changed`\n const entityTypeTopic = `entity.${entityType}`\n\n const invalidateListItems = (id: string) => {\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityListItem', id: id }]))\n }\n\n const handleListMessage = (topic: string, message: ListItemMessage) => {\n if (topic !== listTopic) return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n invalidateListItems(id)\n }\n\n const handleEntityMessage = (topic: string, message: ListItemMessage) => {\n if (!topic.startsWith(entityTypeTopic)) return\n const summary = message.summary\n const id = summary.entityId\n // check for id\n if (!id) return\n invalidateListItems(id)\n }\n\n // sub to websocket topic\n token = PubSub.subscribe(listTopic, handleListMessage)\n if (entityType) token2 = PubSub.subscribe(entityTypeTopic, handleEntityMessage)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n PubSub.unsubscribe(token2)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n },\n }),\n getListsItemsForReviewSession: build.infiniteQuery<\n GetListsItemsForReviewSessionResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before' | 'filter'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListsItemsForReviewSession.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) {\n return { error: result.error as FetchBaseQueryError }\n }\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => [\n { type: 'entityList', id: 'LIST' },\n ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.id,\n })),\n ],\n }),\n }),\n})\n\nexport const getListsApiEnhanced = entityListsApi.enhanceEndpoints({\n endpoints: {\n getEntityList: {\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityList', id: listId },\n { type: 'entityList', id: projectName },\n ...(result\n ? [\n { type: 'entityList', id: result.entityListType },\n {\n type: 'entityList',\n id: result.entityListFolderId || 'NO_FOLDER',\n },\n ]\n : []),\n ],\n },\n },\n})\n\nexport default getListsGqlApiInjected\n\nexport const {\n useGetListsInfiniteInfiniteQuery,\n useGetListItemsInfiniteInfiniteQuery,\n useGetListsItemsForReviewSessionInfiniteQuery,\n useLazyGetListsItemsForReviewSessionQuery,\n useLazyGetListItemsQuery,\n} = getListsGqlApiInjected\n\nexport const { useGetEntityListQuery } = getListsApiEnhanced\n"],"names":["createBatchedCacheUpdater","updateCachedData","applyBatch","delay","queue","timeout","handler","topic","message","batch","draft","parseJSON","data","e","LISTS_PER_PAGE","LIST_ITEMS_PER_PAGE","getListsGqlApiEnhanced","gqlApi","response","edge","firstEdge","listEdge","node","parseAllAttribs","getListsGqlApiInjected","build","lastPage","pageInfo","queryArg","pageParam","api","cursor","queryParams","result","lists","page","list","projectName","cacheDataLoaded","cacheEntryRemoved","topics","handlePubSub","summary","id","getListFromSummary","l","newList","PubSub","t","sortBy","desc","rest","_e","listId","i","item","_args","dispatch","token","token2","unsubscribeThumbnails","entityType","subscribeToThumbnailUpdates","messages","listTopic","entityTypeTopic","invalidateListItems","handleListMessage","handleEntityMessage","getListsApiEnhanced","entityListsApi","useGetListsInfiniteInfiniteQuery","useGetListItemsInfiniteInfiniteQuery","useGetListsItemsForReviewSessionInfiniteQuery","useLazyGetListsItemsForReviewSessionQuery","useLazyGetListItemsQuery","useGetEntityListQuery"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");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");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");const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");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");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");const r=require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");const e=r.api.enhanceEndpoints({endpoints:{getEntityGroups:{}}}),{useGetEntityGroupsQuery:i}=e;exports.groupingQueries=e;exports.useGetEntityGroupsQuery=i;
|
|
2
2
|
//# sourceMappingURL=getGrouping.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getGrouping.cjs.js","sources":["../../../../../../src/api/queries/grouping/getGrouping.ts"],"sourcesContent":["import { groupingApi } from '@shared/api/generated'\nimport { PubSub } from '@shared/util'\n\nconst enhancedGroupingApi = groupingApi.enhanceEndpoints({\n endpoints: {\n getEntityGroups: {
|
|
1
|
+
{"version":3,"file":"getGrouping.cjs.js","sources":["../../../../../../src/api/queries/grouping/getGrouping.ts"],"sourcesContent":["import { groupingApi } from '@shared/api/generated'\nimport { PubSub } from '@shared/util'\n\nconst enhancedGroupingApi = groupingApi.enhanceEndpoints({\n endpoints: {\n getEntityGroups: {},\n },\n})\n\nexport const { useGetEntityGroupsQuery } = enhancedGroupingApi\nexport { enhancedGroupingApi as groupingQueries }\n"],"names":["enhancedGroupingApi","groupingApi","useGetEntityGroupsQuery"],"mappings":"oxDAGA,MAAMA,EAAsBC,EAAAA,IAAY,iBAAiB,CACvD,UAAW,CACT,gBAAiB,CAAA,CAAC,CAEtB,CAAC,EAEY,CAAE,wBAAAC,GAA4BF"}
|
|
@@ -36,30 +36,15 @@ import "../../generated/users.es.js";
|
|
|
36
36
|
import "../../generated/versions.es.js";
|
|
37
37
|
import "../../generated/workfiles.es.js";
|
|
38
38
|
import "../../generated/ynputCloud.es.js";
|
|
39
|
-
import { api as
|
|
39
|
+
import { api as t } from "../../generated/grouping.es.js";
|
|
40
40
|
import "../../generated/views.es.js";
|
|
41
|
-
|
|
42
|
-
import "react-toastify";
|
|
43
|
-
import "uuid";
|
|
44
|
-
import i from "../../../util/pubsub.es.js";
|
|
45
|
-
const o = s.enhanceEndpoints({
|
|
41
|
+
const i = t.enhanceEndpoints({
|
|
46
42
|
endpoints: {
|
|
47
|
-
getEntityGroups: {
|
|
48
|
-
// Subscribe to entity changes to refresh group counts
|
|
49
|
-
onCacheEntryAdded: async (t, { cacheDataLoaded: p, cacheEntryRemoved: r, dispatch: m }) => {
|
|
50
|
-
await p;
|
|
51
|
-
const e = `entity.${t.entityType.replace(/s$/, "")}`, n = i.subscribe(e, () => {
|
|
52
|
-
m(
|
|
53
|
-
o.endpoints.getEntityGroups.initiate(t, { forceRefetch: !0 })
|
|
54
|
-
);
|
|
55
|
-
});
|
|
56
|
-
await r, i.unsubscribe(n);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
43
|
+
getEntityGroups: {}
|
|
59
44
|
}
|
|
60
|
-
}), { useGetEntityGroupsQuery:
|
|
45
|
+
}), { useGetEntityGroupsQuery: O } = i;
|
|
61
46
|
export {
|
|
62
|
-
|
|
63
|
-
|
|
47
|
+
i as groupingQueries,
|
|
48
|
+
O as useGetEntityGroupsQuery
|
|
64
49
|
};
|
|
65
50
|
//# sourceMappingURL=getGrouping.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getGrouping.es.js","sources":["../../../../../../src/api/queries/grouping/getGrouping.ts"],"sourcesContent":["import { groupingApi } from '@shared/api/generated'\nimport { PubSub } from '@shared/util'\n\nconst enhancedGroupingApi = groupingApi.enhanceEndpoints({\n endpoints: {\n getEntityGroups: {
|
|
1
|
+
{"version":3,"file":"getGrouping.es.js","sources":["../../../../../../src/api/queries/grouping/getGrouping.ts"],"sourcesContent":["import { groupingApi } from '@shared/api/generated'\nimport { PubSub } from '@shared/util'\n\nconst enhancedGroupingApi = groupingApi.enhanceEndpoints({\n endpoints: {\n getEntityGroups: {},\n },\n})\n\nexport const { useGetEntityGroupsQuery } = enhancedGroupingApi\nexport { enhancedGroupingApi as groupingQueries }\n"],"names":["enhancedGroupingApi","groupingApi","useGetEntityGroupsQuery"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,MAAMA,IAAsBC,EAAY,iBAAiB;AAAA,EACvD,WAAW;AAAA,IACT,iBAAiB,CAAA;AAAA,EAAC;AAEtB,CAAC,GAEY,EAAE,yBAAAC,MAA4BF;"}
|