@ynput/ayon-frontend-shared 0.2.19 → 0.2.20
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 +10 -0
- package/dist/DetailsPanel.cjs.js.map +1 -1
- package/dist/DetailsPanel.es.js +10 -0
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/api.cjs.js +16 -0
- package/dist/api.cjs.js.map +1 -1
- package/dist/api.es.js +17 -1
- package/dist/api.es.js.map +1 -1
- package/dist/components.cjs.js +22 -0
- package/dist/components.cjs.js.map +1 -1
- package/dist/components.es.js +23 -1
- package/dist/components.es.js.map +1 -1
- package/dist/index.cjs.js +10 -0
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +10 -0
- package/dist/index.es.js.map +1 -1
- package/dist/shared/node_modules/uuid/dist/esm-browser/native.cjs.js +5 -0
- package/dist/shared/node_modules/uuid/dist/esm-browser/native.cjs.js.map +1 -0
- package/dist/shared/node_modules/uuid/dist/esm-browser/native.es.js +6 -0
- package/dist/shared/node_modules/uuid/dist/esm-browser/native.es.js.map +1 -0
- package/dist/shared/node_modules/uuid/dist/esm-browser/rng.cjs.js +2 -2
- package/dist/shared/node_modules/uuid/dist/esm-browser/rng.cjs.js.map +1 -1
- package/dist/shared/node_modules/uuid/dist/esm-browser/rng.es.js +2 -2
- package/dist/shared/node_modules/uuid/dist/esm-browser/rng.es.js.map +1 -1
- package/dist/shared/node_modules/uuid/dist/esm-browser/stringify.cjs.js +1 -1
- package/dist/shared/node_modules/uuid/dist/esm-browser/stringify.cjs.js.map +1 -1
- package/dist/shared/node_modules/uuid/dist/esm-browser/stringify.es.js +1 -1
- package/dist/shared/node_modules/uuid/dist/esm-browser/stringify.es.js.map +1 -1
- package/dist/shared/node_modules/uuid/dist/esm-browser/v1.cjs.js +58 -41
- package/dist/shared/node_modules/uuid/dist/esm-browser/v1.cjs.js.map +1 -1
- package/dist/shared/node_modules/uuid/dist/esm-browser/v1.es.js +57 -41
- package/dist/shared/node_modules/uuid/dist/esm-browser/v1.es.js.map +1 -1
- package/dist/shared/node_modules/uuid/dist/esm-browser/v4.cjs.js +20 -0
- package/dist/shared/node_modules/uuid/dist/esm-browser/v4.cjs.js.map +1 -0
- package/dist/shared/node_modules/uuid/dist/esm-browser/v4.es.js +21 -0
- package/dist/shared/node_modules/uuid/dist/esm-browser/v4.es.js.map +1 -0
- package/dist/shared/src/api/base/client.cjs.js +2 -1
- package/dist/shared/src/api/base/client.cjs.js.map +1 -1
- package/dist/shared/src/api/base/client.es.js +2 -1
- package/dist/shared/src/api/base/client.es.js.map +1 -1
- package/dist/shared/src/api/generated/actions.cjs.js +6 -1
- package/dist/shared/src/api/generated/actions.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/actions.es.js +6 -1
- package/dist/shared/src/api/generated/actions.es.js.map +1 -1
- package/dist/shared/src/api/generated/activityFeed.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/activityFeed.es.js.map +1 -1
- package/dist/shared/src/api/generated/addons.cjs.js +2 -1
- package/dist/shared/src/api/generated/addons.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/addons.es.js +2 -1
- package/dist/shared/src/api/generated/addons.es.js.map +1 -1
- package/dist/shared/src/api/generated/anatomy.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/anatomy.es.js.map +1 -1
- package/dist/shared/src/api/generated/authentication.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/authentication.es.js.map +1 -1
- package/dist/shared/src/api/generated/configuration.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/configuration.es.js.map +1 -1
- package/dist/shared/src/api/generated/links.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/links.es.js.map +1 -1
- package/dist/shared/src/api/generated/onboarding.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/onboarding.es.js.map +1 -1
- package/dist/shared/src/api/generated/operations.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/operations.es.js.map +1 -1
- package/dist/shared/src/api/generated/projects.cjs.js +0 -8
- package/dist/shared/src/api/generated/projects.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/projects.es.js +0 -8
- package/dist/shared/src/api/generated/projects.es.js.map +1 -1
- package/dist/shared/src/api/generated/system.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/system.es.js.map +1 -1
- package/dist/shared/src/api/generated/tasks.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/tasks.es.js.map +1 -1
- package/dist/shared/src/api/generated/views.cjs.js +53 -0
- package/dist/shared/src/api/generated/views.cjs.js.map +1 -0
- package/dist/shared/src/api/generated/views.es.js +53 -0
- package/dist/shared/src/api/generated/views.es.js.map +1 -0
- package/dist/shared/src/api/queries/actions/getActions.cjs.js +1 -0
- package/dist/shared/src/api/queries/actions/getActions.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/actions/getActions.es.js +1 -0
- package/dist/shared/src/api/queries/actions/getActions.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/getActivities.cjs.js +1 -0
- package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/getActivities.es.js +1 -0
- package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/getMentions.cjs.js +1 -0
- package/dist/shared/src/api/queries/activities/getMentions.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/getMentions.es.js +1 -0
- package/dist/shared/src/api/queries/activities/getMentions.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/updateReaction.cjs.js +1 -0
- package/dist/shared/src/api/queries/activities/updateReaction.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/updateReaction.es.js +1 -0
- package/dist/shared/src/api/queries/activities/updateReaction.es.js.map +1 -1
- package/dist/shared/src/api/queries/addons/getAddons.cjs.js +1 -0
- package/dist/shared/src/api/queries/addons/getAddons.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/addons/getAddons.es.js +1 -0
- package/dist/shared/src/api/queries/addons/getAddons.es.js.map +1 -1
- package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js +1 -0
- package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/attributes/getAttributes.es.js +1 -0
- package/dist/shared/src/api/queries/attributes/getAttributes.es.js.map +1 -1
- package/dist/shared/src/api/queries/authentication/getAuthentication.cjs.js +1 -0
- package/dist/shared/src/api/queries/authentication/getAuthentication.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/authentication/getAuthentication.es.js +1 -0
- package/dist/shared/src/api/queries/authentication/getAuthentication.es.js.map +1 -1
- package/dist/shared/src/api/queries/cloud/cloud.cjs.js +67 -0
- package/dist/shared/src/api/queries/cloud/cloud.cjs.js.map +1 -0
- package/dist/shared/src/api/queries/cloud/cloud.es.js +67 -0
- package/dist/shared/src/api/queries/cloud/cloud.es.js.map +1 -0
- package/dist/shared/src/api/queries/entities/getEntity.cjs.js +1 -0
- package/dist/shared/src/api/queries/entities/getEntity.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/getEntity.es.js +1 -0
- package/dist/shared/src/api/queries/entities/getEntity.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -0
- package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +1 -0
- package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +4 -0
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +4 -0
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +11 -1
- package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/updateEntity.es.js +11 -1
- package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -0
- package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/getLists.es.js +1 -0
- package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/getListsAttributes.cjs.js +1 -0
- package/dist/shared/src/api/queries/entityLists/getListsAttributes.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/getListsAttributes.es.js +1 -0
- package/dist/shared/src/api/queries/entityLists/getListsAttributes.es.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js +1 -0
- package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/updateLists.es.js +1 -0
- package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
- package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -0
- package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/folders/getFolders.es.js +1 -0
- package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
- package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js +1 -0
- package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/grouping/getGrouping.es.js +1 -0
- package/dist/shared/src/api/queries/grouping/getGrouping.es.js.map +1 -1
- package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -0
- package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/overview/getOverview.es.js +1 -0
- package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +17 -2
- package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.es.js +17 -2
- package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
- package/dist/shared/src/api/queries/permissions/getPermissions.cjs.js +1 -0
- package/dist/shared/src/api/queries/permissions/getPermissions.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/permissions/getPermissions.es.js +1 -0
- package/dist/shared/src/api/queries/permissions/getPermissions.es.js.map +1 -1
- package/dist/shared/src/api/queries/products/createProduct.cjs.js +1 -0
- package/dist/shared/src/api/queries/products/createProduct.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/products/createProduct.es.js +1 -0
- package/dist/shared/src/api/queries/products/createProduct.es.js.map +1 -1
- package/dist/shared/src/api/queries/project/getProject.cjs.js +1 -0
- package/dist/shared/src/api/queries/project/getProject.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/project/getProject.es.js +1 -0
- package/dist/shared/src/api/queries/project/getProject.es.js.map +1 -1
- package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -0
- package/dist/shared/src/api/queries/review/getReview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/review/getReview.es.js +1 -0
- package/dist/shared/src/api/queries/review/getReview.es.js.map +1 -1
- package/dist/shared/src/api/queries/review/updateReview.cjs.js +1 -0
- package/dist/shared/src/api/queries/review/updateReview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/review/updateReview.es.js +1 -0
- package/dist/shared/src/api/queries/review/updateReview.es.js.map +1 -1
- package/dist/shared/src/api/queries/system/getSystem.cjs.js +1 -0
- package/dist/shared/src/api/queries/system/getSystem.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/system/getSystem.es.js +1 -0
- package/dist/shared/src/api/queries/system/getSystem.es.js.map +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -0
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +1 -0
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
- package/dist/shared/src/api/queries/users/getUsers.cjs.js +4 -0
- package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/users/getUsers.es.js +4 -0
- package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
- package/dist/shared/src/api/queries/users/updateUsers.cjs.js +1 -0
- package/dist/shared/src/api/queries/users/updateUsers.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/users/updateUsers.es.js +1 -0
- package/dist/shared/src/api/queries/users/updateUsers.es.js.map +1 -1
- package/dist/shared/src/api/queries/versions/updateVersions.cjs.js +1 -0
- package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/versions/updateVersions.es.js +1 -0
- package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -1
- package/dist/shared/src/api/queries/views/getViews.cjs.js +72 -0
- package/dist/shared/src/api/queries/views/getViews.cjs.js.map +1 -0
- package/dist/shared/src/api/queries/views/getViews.es.js +72 -0
- package/dist/shared/src/api/queries/views/getViews.es.js.map +1 -0
- package/dist/shared/src/api/queries/views/updateViews.cjs.js +33 -0
- package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -0
- package/dist/shared/src/api/queries/views/updateViews.es.js +33 -0
- package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -0
- package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js +1 -0
- package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/watchers/getWatchers.es.js +1 -0
- package/dist/shared/src/api/queries/watchers/getWatchers.es.js.map +1 -1
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +4 -0
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +4 -0
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js +12 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js +12 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +10 -0
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +10 -0
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
- package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +369 -0
- package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -0
- package/dist/shared/src/components/Feedback/FeedbackContext.es.js +369 -0
- package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -0
- package/dist/shared/src/components/Feedback/SupportBubble.cjs.js +48 -0
- package/dist/shared/src/components/Feedback/SupportBubble.cjs.js.map +1 -0
- package/dist/shared/src/components/Feedback/SupportBubble.es.js +48 -0
- package/dist/shared/src/components/Feedback/SupportBubble.es.js.map +1 -0
- package/dist/shared/src/components/Powerpack/CTAButton.cjs.js +10 -0
- package/dist/shared/src/components/Powerpack/CTAButton.cjs.js.map +1 -0
- package/dist/shared/src/components/Powerpack/CTAButton.es.js +10 -0
- package/dist/shared/src/components/Powerpack/CTAButton.es.js.map +1 -0
- package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +229 -28
- package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +230 -29
- package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.cjs.js +3 -0
- package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.cjs.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.es.js +3 -0
- package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +4 -0
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +4 -0
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +179 -0
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +179 -0
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +4 -0
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +4 -0
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +10 -0
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +10 -0
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +10 -0
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +10 -0
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +10 -0
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +10 -0
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +4 -0
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +4 -0
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +4 -0
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +4 -0
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +10 -0
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +10 -0
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +10 -0
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +10 -0
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +4 -0
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +4 -0
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
- package/dist/shared/src/components/Views/ViewForm/ViewForm.cjs.js +164 -0
- package/dist/shared/src/components/Views/ViewForm/ViewForm.cjs.js.map +1 -0
- package/dist/shared/src/components/Views/ViewForm/ViewForm.es.js +164 -0
- package/dist/shared/src/components/Views/ViewForm/ViewForm.es.js.map +1 -0
- package/dist/shared/src/components/Views/ViewForm/ViewForm.styled.cjs.js +71 -0
- package/dist/shared/src/components/Views/ViewForm/ViewForm.styled.cjs.js.map +1 -0
- package/dist/shared/src/components/Views/ViewForm/ViewForm.styled.es.js +71 -0
- package/dist/shared/src/components/Views/ViewForm/ViewForm.styled.es.js.map +1 -0
- package/dist/shared/src/components/Views/ViewForm/ViewFormContainer.cjs.js +189 -0
- package/dist/shared/src/components/Views/ViewForm/ViewFormContainer.cjs.js.map +1 -0
- package/dist/shared/src/components/Views/ViewForm/ViewFormContainer.es.js +189 -0
- package/dist/shared/src/components/Views/ViewForm/ViewFormContainer.es.js.map +1 -0
- package/dist/shared/src/components/Views/ViewItem/ViewItem.cjs.js +36 -0
- package/dist/shared/src/components/Views/ViewItem/ViewItem.cjs.js.map +1 -0
- package/dist/shared/src/components/Views/ViewItem/ViewItem.es.js +36 -0
- package/dist/shared/src/components/Views/ViewItem/ViewItem.es.js.map +1 -0
- package/dist/shared/src/components/Views/ViewItem/ViewItem.styled.cjs.js +63 -0
- package/dist/shared/src/components/Views/ViewItem/ViewItem.styled.cjs.js.map +1 -0
- package/dist/shared/src/components/Views/ViewItem/ViewItem.styled.es.js +63 -0
- package/dist/shared/src/components/Views/ViewItem/ViewItem.styled.es.js.map +1 -0
- package/dist/shared/src/components/Views/Views.cjs.js +21 -0
- package/dist/shared/src/components/Views/Views.cjs.js.map +1 -0
- package/dist/shared/src/components/Views/Views.es.js +21 -0
- package/dist/shared/src/components/Views/Views.es.js.map +1 -0
- package/dist/shared/src/components/Views/Views.styled.cjs.js +44 -0
- package/dist/shared/src/components/Views/Views.styled.cjs.js.map +1 -0
- package/dist/shared/src/components/Views/Views.styled.es.js +44 -0
- package/dist/shared/src/components/Views/Views.styled.es.js.map +1 -0
- package/dist/shared/src/components/Views/ViewsButton/ViewsButton.cjs.js +32 -0
- package/dist/shared/src/components/Views/ViewsButton/ViewsButton.cjs.js.map +1 -0
- package/dist/shared/src/components/Views/ViewsButton/ViewsButton.es.js +32 -0
- package/dist/shared/src/components/Views/ViewsButton/ViewsButton.es.js.map +1 -0
- package/dist/shared/src/components/Views/ViewsMenu/ViewsMenu.cjs.js +31 -0
- package/dist/shared/src/components/Views/ViewsMenu/ViewsMenu.cjs.js.map +1 -0
- package/dist/shared/src/components/Views/ViewsMenu/ViewsMenu.es.js +31 -0
- package/dist/shared/src/components/Views/ViewsMenu/ViewsMenu.es.js.map +1 -0
- package/dist/shared/src/components/Views/ViewsMenu/ViewsMenu.styled.cjs.js +33 -0
- package/dist/shared/src/components/Views/ViewsMenu/ViewsMenu.styled.cjs.js.map +1 -0
- package/dist/shared/src/components/Views/ViewsMenu/ViewsMenu.styled.es.js +33 -0
- package/dist/shared/src/components/Views/ViewsMenu/ViewsMenu.styled.es.js.map +1 -0
- package/dist/shared/src/components/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +132 -0
- package/dist/shared/src/components/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -0
- package/dist/shared/src/components/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +132 -0
- package/dist/shared/src/components/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -0
- package/dist/shared/src/components/Views/context/ViewsContext.cjs.js +145 -0
- package/dist/shared/src/components/Views/context/ViewsContext.cjs.js.map +1 -0
- package/dist/shared/src/components/Views/context/ViewsContext.es.js +145 -0
- package/dist/shared/src/components/Views/context/ViewsContext.es.js.map +1 -0
- package/dist/shared/src/components/Views/hooks/useBuildViewMenuItems.cjs.js +160 -0
- package/dist/shared/src/components/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -0
- package/dist/shared/src/components/Views/hooks/useBuildViewMenuItems.es.js +160 -0
- package/dist/shared/src/components/Views/hooks/useBuildViewMenuItems.es.js.map +1 -0
- package/dist/shared/src/components/Views/utils/generatePersonalView.cjs.js +13 -0
- package/dist/shared/src/components/Views/utils/generatePersonalView.cjs.js.map +1 -0
- package/dist/shared/src/components/Views/utils/generatePersonalView.es.js +13 -0
- package/dist/shared/src/components/Views/utils/generatePersonalView.es.js.map +1 -0
- package/dist/shared/src/components/Views/utils/getCustomViewsFallback.cjs.js +8 -0
- package/dist/shared/src/components/Views/utils/getCustomViewsFallback.cjs.js.map +1 -0
- package/dist/shared/src/components/Views/utils/getCustomViewsFallback.es.js +8 -0
- package/dist/shared/src/components/Views/utils/getCustomViewsFallback.es.js.map +1 -0
- package/dist/shared/src/components/Views/utils/portalUtils.cjs.js +11 -0
- package/dist/shared/src/components/Views/utils/portalUtils.cjs.js.map +1 -0
- package/dist/shared/src/components/Views/utils/portalUtils.es.js +11 -0
- package/dist/shared/src/components/Views/utils/portalUtils.es.js.map +1 -0
- package/dist/shared/src/components/Watchers/Watchers.cjs.js +4 -0
- package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
- package/dist/shared/src/components/Watchers/Watchers.es.js +4 -0
- package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +10 -0
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +10 -0
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.cjs.js +4 -0
- package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.es.js +4 -0
- package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +10 -0
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +10 -0
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +10 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +10 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +10 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +10 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +10 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +10 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +10 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +10 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +4 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +4 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +4 -0
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +4 -0
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +4 -0
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js +4 -0
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +4 -0
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +4 -0
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +10 -2
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +10 -2
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +10 -0
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +10 -0
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +4 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +10 -0
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +10 -0
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
- package/dist/shared/src/context/AddonProjectContext.cjs.js +4 -0
- package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
- package/dist/shared/src/context/AddonProjectContext.es.js +4 -0
- package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js +4 -0
- package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.es.js +4 -0
- package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
- package/dist/shared/src/context/PowerpackContext.cjs.js +9 -0
- package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
- package/dist/shared/src/context/PowerpackContext.es.js +9 -0
- package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.cjs.js +4 -0
- package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.es.js +4 -0
- package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
- package/dist/shared/src/hooks/useActionTriggers.cjs.js +4 -0
- package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useActionTriggers.es.js +4 -0
- package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js +4 -0
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.es.js +4 -0
- package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
- package/dist/shared/src/hooks/useScopedStatuses.cjs.js +4 -0
- package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useScopedStatuses.es.js +4 -0
- package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +4 -0
- package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.es.js +4 -0
- package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
- package/dist/types/api/generated/actions.d.ts +11 -4
- package/dist/types/api/generated/activityFeed.d.ts +3 -0
- package/dist/types/api/generated/addons.d.ts +1 -0
- package/dist/types/api/generated/anatomy.d.ts +0 -2
- package/dist/types/api/generated/authentication.d.ts +0 -1
- package/dist/types/api/generated/configuration.d.ts +6 -0
- package/dist/types/api/generated/index.d.ts +2 -0
- package/dist/types/api/generated/links.d.ts +7 -5
- package/dist/types/api/generated/onboarding.d.ts +0 -1
- package/dist/types/api/generated/operations.d.ts +2 -0
- package/dist/types/api/generated/projects.d.ts +0 -35
- package/dist/types/api/generated/system.d.ts +2 -0
- package/dist/types/api/generated/tasks.d.ts +0 -14
- package/dist/types/api/generated/views.d.ts +122 -0
- package/dist/types/api/queries/cloud/cloud.d.ts +593 -0
- package/dist/types/api/queries/cloud/index.d.ts +1 -0
- package/dist/types/api/queries/index.d.ts +2 -0
- package/dist/types/api/queries/project/getProject.d.ts +0 -2
- package/dist/types/api/queries/views/getViews.d.ts +412 -0
- package/dist/types/api/queries/views/index.d.ts +2 -0
- package/dist/types/api/queries/views/updateViews.d.ts +177 -0
- package/dist/types/components/Feedback/FeedbackContext.d.ts +17 -0
- package/dist/types/components/Feedback/SupportBubble.d.ts +4 -0
- package/dist/types/components/Feedback/index.d.ts +2 -0
- package/dist/types/components/Powerpack/CTAButton.d.ts +4 -0
- package/dist/types/components/Powerpack/PowerpackDialog.d.ts +8 -0
- package/dist/types/components/Views/ViewForm/ViewForm.d.ts +14 -0
- package/dist/types/components/Views/ViewForm/ViewForm.styled.d.ts +9 -0
- package/dist/types/components/Views/ViewForm/ViewFormContainer.d.ts +15 -0
- package/dist/types/components/Views/ViewItem/ViewItem.d.ts +15 -0
- package/dist/types/components/Views/ViewItem/ViewItem.styled.d.ts +4 -0
- package/dist/types/components/Views/Views.d.ts +8 -0
- package/dist/types/components/Views/Views.styled.d.ts +4 -0
- package/dist/types/components/Views/ViewsButton/ViewsButton.d.ts +2 -0
- package/dist/types/components/Views/ViewsMenu/ViewsMenu.d.ts +11 -0
- package/dist/types/components/Views/ViewsMenu/ViewsMenu.styled.d.ts +4 -0
- package/dist/types/components/Views/ViewsMenuContainer/ViewsMenuContainer.d.ts +4 -0
- package/dist/types/components/Views/context/ViewsContext.d.ts +31 -0
- package/dist/types/components/Views/hooks/useBuildViewMenuItems.d.ts +14 -0
- package/dist/types/components/Views/index.d.ts +11 -0
- package/dist/types/components/Views/utils/generatePersonalView.d.ts +3 -0
- package/dist/types/components/Views/utils/getCustomViewsFallback.d.ts +12 -0
- package/dist/types/components/Views/utils/portalUtils.d.ts +9 -0
- package/dist/types/components/index.d.ts +2 -0
- package/dist/types/context/PowerpackContext.d.ts +5 -5
- package/package.json +1 -1
package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectionCellsProvider.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/SelectionCellsProvider.tsx"],"sourcesContent":["import React, { useState, useCallback, useMemo, ReactNode, useRef } from 'react'\nimport {\n CellId,\n RowId,\n ColId,\n CellPosition,\n getCellId,\n parseCellId,\n BorderPosition,\n getBorderClasses,\n} from '../utils/cellUtils'\nimport { DRAG_HANDLE_COLUMN_ID } from '../ProjectTreeTable'\nimport { SelectionCellsContext, GridMap, ROW_SELECTION_COLUMN_ID } from './SelectionCellsContext'\nimport { useCheckSelectedCellsVisible } from '../hooks'\n\nexport const SelectionCellsProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [selectedCells, setSelectedCells] = useState<Set<CellId>>(new Set())\n const [focusedCellId, setFocusedCellId] = useState<CellId | null>(null)\n const [selectionInProgress, setSelectionInProgress] = useState<boolean>(false)\n const [anchorCell, setAnchorCell] = useState<CellPosition | null>(null)\n const [gridMap, setGridMap] = useState<GridMap>({\n rowIdToIndex: new Map(),\n colIdToIndex: new Map(),\n indexToRowId: new Map(),\n indexToColId: new Map(),\n })\n const mapToString = (map: Map<any, any>) => {\n return JSON.stringify(Array.from(map.entries()))\n }\n\n const stableGridMap = useMemo(\n () => gridMap,\n [\n mapToString(gridMap.rowIdToIndex),\n mapToString(gridMap.colIdToIndex),\n mapToString(gridMap.indexToRowId),\n mapToString(gridMap.indexToColId),\n ],\n )\n // Track whether we're selecting or unselecting during drag\n const initialCellSelected = useRef<boolean>(false)\n\n const selectedRows = useMemo(\n () =>\n Array.from(selectedCells)\n .filter(\n (cellId) =>\n parseCellId(cellId)?.colId === ROW_SELECTION_COLUMN_ID && parseCellId(cellId)?.rowId,\n )\n .map((cellId) => parseCellId(cellId)?.rowId) as string[],\n [selectedCells],\n )\n\n useCheckSelectedCellsVisible({\n selectedCells,\n setSelectedCells,\n focusedCellId,\n setFocusedCellId,\n })\n\n // Register grid structure for range selections\n const registerGrid = useCallback((rows: RowId[], columns: ColId[]) => {\n const rowIdToIndex = new Map<RowId, number>()\n const colIdToIndex = new Map<ColId, number>()\n const indexToRowId = new Map<number, RowId>()\n const indexToColId = new Map<number, ColId>()\n\n rows.forEach((rowId, index) => {\n rowIdToIndex.set(rowId, index)\n indexToRowId.set(index, rowId)\n })\n\n columns.forEach((colId, index) => {\n colIdToIndex.set(colId, index)\n indexToColId.set(index, colId)\n })\n\n setGridMap({ rowIdToIndex, colIdToIndex, indexToRowId, indexToColId })\n }, [])\n\n // update the selection whilst properly handling the row-selection column\n const updateSelection = useCallback((selection: Set<CellId>, position: CellPosition) => {\n setSelectedCells((prevSelectedCells) => {\n let newSelection = new Set(selection)\n if (position.colId !== ROW_SELECTION_COLUMN_ID && position.colId !== DRAG_HANDLE_COLUMN_ID) {\n const rowSelection = Array.from(prevSelectedCells).filter(\n (id) => parseCellId(id)?.colId === ROW_SELECTION_COLUMN_ID,\n )\n if (rowSelection.length) {\n newSelection = new Set([...newSelection, ...rowSelection])\n }\n }\n return newSelection\n })\n }, [])\n\n // Select cells between two points in the grid\n const selectCellRange = useCallback(\n (start: CellPosition, end: CellPosition, additive: boolean): Set<CellId> => {\n if (!additive) {\n // Clear existing selection if not additive\n updateSelection(new Set(), start)\n }\n\n const startRowIdx = stableGridMap.rowIdToIndex.get(start.rowId) ?? 0\n const startColIdx = stableGridMap.colIdToIndex.get(start.colId) ?? 0\n const endRowIdx = stableGridMap.rowIdToIndex.get(end.rowId) ?? 0\n const endColIdx = stableGridMap.colIdToIndex.get(end.colId) ?? 0\n\n const minRowIdx = Math.min(startRowIdx, endRowIdx)\n const maxRowIdx = Math.max(startRowIdx, endRowIdx)\n const minColIdx = Math.min(startColIdx, endColIdx)\n const maxColIdx = Math.max(startColIdx, endColIdx)\n\n const newSelection = new Set(additive ? selectedCells : [])\n\n for (let r = minRowIdx; r <= maxRowIdx; r++) {\n const rowId = stableGridMap.indexToRowId.get(r)\n if (!rowId) continue\n\n for (let c = minColIdx; c <= maxColIdx; c++) {\n const colId = stableGridMap.indexToColId.get(c)\n if (!colId) continue\n\n newSelection.add(getCellId(rowId, colId))\n }\n }\n\n return newSelection\n },\n [stableGridMap, selectedCells, updateSelection],\n )\n\n // Start a selection operation\n const startSelection = useCallback(\n (cellId: CellId, additive: boolean) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n setSelectionInProgress(true)\n // Store whether the initial cell was selected to determine drag behavior\n initialCellSelected.current = selectedCells.has(cellId)\n\n if (additive) {\n // Toggle this cell in multi-select mode\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n if (newSelection.has(cellId)) {\n newSelection.delete(cellId)\n // If this was the focused cell, set focus to another cell in the selection or null\n if (focusedCellId === cellId) {\n if (newSelection.size > 0) {\n setFocusedCellId(Array.from(newSelection)[Array.from(newSelection).length - 1])\n } else {\n setFocusedCellId(null)\n }\n }\n } else {\n newSelection.add(cellId)\n setFocusedCellId(cellId)\n setAnchorCell(position)\n }\n return newSelection\n })\n } else {\n // Single cell selection\n // If this cell is already the only selected cell, deselect it\n // and it is from name column\n if (\n selectedCells.size === 1 &&\n selectedCells.has(cellId) &&\n [ROW_SELECTION_COLUMN_ID, 'name'].includes(position.colId)\n ) {\n setSelectedCells(new Set())\n setAnchorCell(null)\n setFocusedCellId(null)\n } else {\n updateSelection(new Set([cellId]), position)\n setAnchorCell(position)\n setFocusedCellId(cellId)\n }\n }\n },\n [selectedCells, focusedCellId, updateSelection],\n )\n\n // Extend the current selection during drag\n const extendSelection = useCallback(\n (cellId: CellId, isRowSelectionColumn?: boolean) => {\n if (!selectionInProgress || !anchorCell) return\n\n const currentPosition = parseCellId(cellId)\n if (!currentPosition) return\n\n if (isRowSelectionColumn) {\n // Handle row selection column differently during drag\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n const position = parseCellId(cellId)\n\n if (!position) return newSelection\n\n // We're either selecting or unselecting based on the initial cell's state\n if (initialCellSelected.current) {\n // If we started on a selected cell, we're removing cells during drag\n newSelection.delete(cellId)\n } else {\n // If we started on an unselected cell, we're adding cells during drag\n newSelection.add(cellId)\n }\n\n return newSelection\n })\n } else {\n // For normal cells, use the range selection behavior\n const newSelection = selectCellRange(anchorCell, currentPosition, false)\n updateSelection(newSelection, currentPosition)\n }\n },\n [selectionInProgress, anchorCell, selectCellRange, updateSelection],\n )\n\n // End a selection operation\n const endSelection = useCallback(() => {\n setSelectionInProgress(false)\n }, [])\n\n // Select a cell (click or programmatically)\n const selectCell = useCallback(\n (cellId: CellId, additive: boolean, range: boolean) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n if (range && anchorCell) {\n // Shift+click for range selection - select cells between anchor and current\n const newSelection = selectCellRange(anchorCell, position, additive)\n updateSelection(newSelection, position)\n } else if (additive) {\n // Ctrl/Cmd+click for toggling selection\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n if (newSelection.has(cellId)) {\n newSelection.delete(cellId)\n } else {\n newSelection.add(cellId)\n }\n return newSelection\n })\n } else {\n // Normal click - select just this cell and set as new anchor\n updateSelection(new Set([cellId]), position)\n setAnchorCell(position)\n }\n },\n [anchorCell, selectCellRange, updateSelection],\n )\n\n // Focus a cell without changing selection\n const focusCell = useCallback((cellId: CellId | null) => {\n setFocusedCellId(cellId)\n }, [])\n\n // Clear all selections\n const clearSelection = useCallback(() => {\n setSelectedCells(new Set())\n setAnchorCell(null)\n setFocusedCellId(null)\n }, [])\n\n // Check if a cell is selected\n const isCellSelected = useCallback((cellId: CellId) => selectedCells.has(cellId), [selectedCells])\n\n // Check if a cell is focused\n const isCellFocused = useCallback((cellId: CellId) => cellId === focusedCellId, [focusedCellId])\n\n // Get position from cell ID - using shared utility\n const getCellPositionFromId = useCallback((cellId: CellId) => parseCellId(cellId), [])\n\n // Get border classes for a cell based on its selection state and neighbors\n const getCellBorderClasses = useCallback(\n (cellId: CellId): string[] => {\n if (!isCellSelected(cellId)) return []\n\n const position = parseCellId(cellId)\n if (!position) return []\n\n const rowIndex = stableGridMap.rowIdToIndex.get(position.rowId)\n const colIndex = stableGridMap.colIdToIndex.get(position.colId)\n\n if (rowIndex === undefined || colIndex === undefined) return []\n\n // Check if the cell's neighbors in all four directions are selected\n const top = stableGridMap.indexToRowId.get(rowIndex - 1)\n const right = stableGridMap.indexToColId.get(colIndex + 1)\n const bottom = stableGridMap.indexToRowId.get(rowIndex + 1)\n const left = stableGridMap.indexToColId.get(colIndex - 1)\n\n // Default to no borders\n let borderPos = BorderPosition.None\n\n // Top edge check: show border if we're at the top of the grid or the cell above is not selected\n if (!top || !selectedCells.has(getCellId(top, position.colId))) {\n borderPos |= BorderPosition.Top\n }\n\n // Right edge check: show border if we're at the right edge of the grid or the cell to the right is not selected\n if (!right || !selectedCells.has(getCellId(position.rowId, right))) {\n borderPos |= BorderPosition.Right\n }\n\n // Bottom edge check: show border if we're at the bottom of the grid or the cell below is not selected\n if (!bottom || !selectedCells.has(getCellId(bottom, position.colId))) {\n borderPos |= BorderPosition.Bottom\n }\n\n // Left edge check: show border if we're at the left edge of the grid or the cell to the left is not selected\n if (!left || !selectedCells.has(getCellId(position.rowId, left))) {\n borderPos |= BorderPosition.Left\n }\n\n return getBorderClasses(borderPos)\n },\n [selectedCells, stableGridMap, isCellSelected],\n )\n\n // Memoize context value to prevent unnecessary re-renders\n const value = useMemo(\n () => ({\n selectedCells,\n selectedRows,\n focusedCellId,\n selectionInProgress,\n anchorCell,\n gridMap: stableGridMap,\n setSelectedCells,\n setFocusedCellId,\n setAnchorCell,\n registerGrid,\n selectCell,\n startSelection,\n extendSelection,\n endSelection,\n focusCell,\n clearSelection,\n isCellSelected,\n isCellFocused,\n getCellPositionFromId,\n getCellBorderClasses,\n }),\n [\n selectedCells,\n selectedRows,\n focusedCellId,\n selectionInProgress,\n anchorCell,\n stableGridMap,\n setSelectedCells,\n setFocusedCellId,\n setAnchorCell,\n registerGrid,\n selectCell,\n startSelection,\n extendSelection,\n endSelection,\n focusCell,\n clearSelection,\n isCellSelected,\n isCellFocused,\n getCellPositionFromId,\n getCellBorderClasses,\n ],\n )\n\n return <SelectionCellsContext.Provider value={value}>{children}</SelectionCellsContext.Provider>\n}\n"],"names":["jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SelectionCellsProvider.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/SelectionCellsProvider.tsx"],"sourcesContent":["import React, { useState, useCallback, useMemo, ReactNode, useRef } from 'react'\nimport {\n CellId,\n RowId,\n ColId,\n CellPosition,\n getCellId,\n parseCellId,\n BorderPosition,\n getBorderClasses,\n} from '../utils/cellUtils'\nimport { DRAG_HANDLE_COLUMN_ID } from '../ProjectTreeTable'\nimport { SelectionCellsContext, GridMap, ROW_SELECTION_COLUMN_ID } from './SelectionCellsContext'\nimport { useCheckSelectedCellsVisible } from '../hooks'\n\nexport const SelectionCellsProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [selectedCells, setSelectedCells] = useState<Set<CellId>>(new Set())\n const [focusedCellId, setFocusedCellId] = useState<CellId | null>(null)\n const [selectionInProgress, setSelectionInProgress] = useState<boolean>(false)\n const [anchorCell, setAnchorCell] = useState<CellPosition | null>(null)\n const [gridMap, setGridMap] = useState<GridMap>({\n rowIdToIndex: new Map(),\n colIdToIndex: new Map(),\n indexToRowId: new Map(),\n indexToColId: new Map(),\n })\n const mapToString = (map: Map<any, any>) => {\n return JSON.stringify(Array.from(map.entries()))\n }\n\n const stableGridMap = useMemo(\n () => gridMap,\n [\n mapToString(gridMap.rowIdToIndex),\n mapToString(gridMap.colIdToIndex),\n mapToString(gridMap.indexToRowId),\n mapToString(gridMap.indexToColId),\n ],\n )\n // Track whether we're selecting or unselecting during drag\n const initialCellSelected = useRef<boolean>(false)\n\n const selectedRows = useMemo(\n () =>\n Array.from(selectedCells)\n .filter(\n (cellId) =>\n parseCellId(cellId)?.colId === ROW_SELECTION_COLUMN_ID && parseCellId(cellId)?.rowId,\n )\n .map((cellId) => parseCellId(cellId)?.rowId) as string[],\n [selectedCells],\n )\n\n useCheckSelectedCellsVisible({\n selectedCells,\n setSelectedCells,\n focusedCellId,\n setFocusedCellId,\n })\n\n // Register grid structure for range selections\n const registerGrid = useCallback((rows: RowId[], columns: ColId[]) => {\n const rowIdToIndex = new Map<RowId, number>()\n const colIdToIndex = new Map<ColId, number>()\n const indexToRowId = new Map<number, RowId>()\n const indexToColId = new Map<number, ColId>()\n\n rows.forEach((rowId, index) => {\n rowIdToIndex.set(rowId, index)\n indexToRowId.set(index, rowId)\n })\n\n columns.forEach((colId, index) => {\n colIdToIndex.set(colId, index)\n indexToColId.set(index, colId)\n })\n\n setGridMap({ rowIdToIndex, colIdToIndex, indexToRowId, indexToColId })\n }, [])\n\n // update the selection whilst properly handling the row-selection column\n const updateSelection = useCallback((selection: Set<CellId>, position: CellPosition) => {\n setSelectedCells((prevSelectedCells) => {\n let newSelection = new Set(selection)\n if (position.colId !== ROW_SELECTION_COLUMN_ID && position.colId !== DRAG_HANDLE_COLUMN_ID) {\n const rowSelection = Array.from(prevSelectedCells).filter(\n (id) => parseCellId(id)?.colId === ROW_SELECTION_COLUMN_ID,\n )\n if (rowSelection.length) {\n newSelection = new Set([...newSelection, ...rowSelection])\n }\n }\n return newSelection\n })\n }, [])\n\n // Select cells between two points in the grid\n const selectCellRange = useCallback(\n (start: CellPosition, end: CellPosition, additive: boolean): Set<CellId> => {\n if (!additive) {\n // Clear existing selection if not additive\n updateSelection(new Set(), start)\n }\n\n const startRowIdx = stableGridMap.rowIdToIndex.get(start.rowId) ?? 0\n const startColIdx = stableGridMap.colIdToIndex.get(start.colId) ?? 0\n const endRowIdx = stableGridMap.rowIdToIndex.get(end.rowId) ?? 0\n const endColIdx = stableGridMap.colIdToIndex.get(end.colId) ?? 0\n\n const minRowIdx = Math.min(startRowIdx, endRowIdx)\n const maxRowIdx = Math.max(startRowIdx, endRowIdx)\n const minColIdx = Math.min(startColIdx, endColIdx)\n const maxColIdx = Math.max(startColIdx, endColIdx)\n\n const newSelection = new Set(additive ? selectedCells : [])\n\n for (let r = minRowIdx; r <= maxRowIdx; r++) {\n const rowId = stableGridMap.indexToRowId.get(r)\n if (!rowId) continue\n\n for (let c = minColIdx; c <= maxColIdx; c++) {\n const colId = stableGridMap.indexToColId.get(c)\n if (!colId) continue\n\n newSelection.add(getCellId(rowId, colId))\n }\n }\n\n return newSelection\n },\n [stableGridMap, selectedCells, updateSelection],\n )\n\n // Start a selection operation\n const startSelection = useCallback(\n (cellId: CellId, additive: boolean) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n setSelectionInProgress(true)\n // Store whether the initial cell was selected to determine drag behavior\n initialCellSelected.current = selectedCells.has(cellId)\n\n if (additive) {\n // Toggle this cell in multi-select mode\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n if (newSelection.has(cellId)) {\n newSelection.delete(cellId)\n // If this was the focused cell, set focus to another cell in the selection or null\n if (focusedCellId === cellId) {\n if (newSelection.size > 0) {\n setFocusedCellId(Array.from(newSelection)[Array.from(newSelection).length - 1])\n } else {\n setFocusedCellId(null)\n }\n }\n } else {\n newSelection.add(cellId)\n setFocusedCellId(cellId)\n setAnchorCell(position)\n }\n return newSelection\n })\n } else {\n // Single cell selection\n // If this cell is already the only selected cell, deselect it\n // and it is from name column\n if (\n selectedCells.size === 1 &&\n selectedCells.has(cellId) &&\n [ROW_SELECTION_COLUMN_ID, 'name'].includes(position.colId)\n ) {\n setSelectedCells(new Set())\n setAnchorCell(null)\n setFocusedCellId(null)\n } else {\n updateSelection(new Set([cellId]), position)\n setAnchorCell(position)\n setFocusedCellId(cellId)\n }\n }\n },\n [selectedCells, focusedCellId, updateSelection],\n )\n\n // Extend the current selection during drag\n const extendSelection = useCallback(\n (cellId: CellId, isRowSelectionColumn?: boolean) => {\n if (!selectionInProgress || !anchorCell) return\n\n const currentPosition = parseCellId(cellId)\n if (!currentPosition) return\n\n if (isRowSelectionColumn) {\n // Handle row selection column differently during drag\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n const position = parseCellId(cellId)\n\n if (!position) return newSelection\n\n // We're either selecting or unselecting based on the initial cell's state\n if (initialCellSelected.current) {\n // If we started on a selected cell, we're removing cells during drag\n newSelection.delete(cellId)\n } else {\n // If we started on an unselected cell, we're adding cells during drag\n newSelection.add(cellId)\n }\n\n return newSelection\n })\n } else {\n // For normal cells, use the range selection behavior\n const newSelection = selectCellRange(anchorCell, currentPosition, false)\n updateSelection(newSelection, currentPosition)\n }\n },\n [selectionInProgress, anchorCell, selectCellRange, updateSelection],\n )\n\n // End a selection operation\n const endSelection = useCallback(() => {\n setSelectionInProgress(false)\n }, [])\n\n // Select a cell (click or programmatically)\n const selectCell = useCallback(\n (cellId: CellId, additive: boolean, range: boolean) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n if (range && anchorCell) {\n // Shift+click for range selection - select cells between anchor and current\n const newSelection = selectCellRange(anchorCell, position, additive)\n updateSelection(newSelection, position)\n } else if (additive) {\n // Ctrl/Cmd+click for toggling selection\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n if (newSelection.has(cellId)) {\n newSelection.delete(cellId)\n } else {\n newSelection.add(cellId)\n }\n return newSelection\n })\n } else {\n // Normal click - select just this cell and set as new anchor\n updateSelection(new Set([cellId]), position)\n setAnchorCell(position)\n }\n },\n [anchorCell, selectCellRange, updateSelection],\n )\n\n // Focus a cell without changing selection\n const focusCell = useCallback((cellId: CellId | null) => {\n setFocusedCellId(cellId)\n }, [])\n\n // Clear all selections\n const clearSelection = useCallback(() => {\n setSelectedCells(new Set())\n setAnchorCell(null)\n setFocusedCellId(null)\n }, [])\n\n // Check if a cell is selected\n const isCellSelected = useCallback((cellId: CellId) => selectedCells.has(cellId), [selectedCells])\n\n // Check if a cell is focused\n const isCellFocused = useCallback((cellId: CellId) => cellId === focusedCellId, [focusedCellId])\n\n // Get position from cell ID - using shared utility\n const getCellPositionFromId = useCallback((cellId: CellId) => parseCellId(cellId), [])\n\n // Get border classes for a cell based on its selection state and neighbors\n const getCellBorderClasses = useCallback(\n (cellId: CellId): string[] => {\n if (!isCellSelected(cellId)) return []\n\n const position = parseCellId(cellId)\n if (!position) return []\n\n const rowIndex = stableGridMap.rowIdToIndex.get(position.rowId)\n const colIndex = stableGridMap.colIdToIndex.get(position.colId)\n\n if (rowIndex === undefined || colIndex === undefined) return []\n\n // Check if the cell's neighbors in all four directions are selected\n const top = stableGridMap.indexToRowId.get(rowIndex - 1)\n const right = stableGridMap.indexToColId.get(colIndex + 1)\n const bottom = stableGridMap.indexToRowId.get(rowIndex + 1)\n const left = stableGridMap.indexToColId.get(colIndex - 1)\n\n // Default to no borders\n let borderPos = BorderPosition.None\n\n // Top edge check: show border if we're at the top of the grid or the cell above is not selected\n if (!top || !selectedCells.has(getCellId(top, position.colId))) {\n borderPos |= BorderPosition.Top\n }\n\n // Right edge check: show border if we're at the right edge of the grid or the cell to the right is not selected\n if (!right || !selectedCells.has(getCellId(position.rowId, right))) {\n borderPos |= BorderPosition.Right\n }\n\n // Bottom edge check: show border if we're at the bottom of the grid or the cell below is not selected\n if (!bottom || !selectedCells.has(getCellId(bottom, position.colId))) {\n borderPos |= BorderPosition.Bottom\n }\n\n // Left edge check: show border if we're at the left edge of the grid or the cell to the left is not selected\n if (!left || !selectedCells.has(getCellId(position.rowId, left))) {\n borderPos |= BorderPosition.Left\n }\n\n return getBorderClasses(borderPos)\n },\n [selectedCells, stableGridMap, isCellSelected],\n )\n\n // Memoize context value to prevent unnecessary re-renders\n const value = useMemo(\n () => ({\n selectedCells,\n selectedRows,\n focusedCellId,\n selectionInProgress,\n anchorCell,\n gridMap: stableGridMap,\n setSelectedCells,\n setFocusedCellId,\n setAnchorCell,\n registerGrid,\n selectCell,\n startSelection,\n extendSelection,\n endSelection,\n focusCell,\n clearSelection,\n isCellSelected,\n isCellFocused,\n getCellPositionFromId,\n getCellBorderClasses,\n }),\n [\n selectedCells,\n selectedRows,\n focusedCellId,\n selectionInProgress,\n anchorCell,\n stableGridMap,\n setSelectedCells,\n setFocusedCellId,\n setAnchorCell,\n registerGrid,\n selectCell,\n startSelection,\n extendSelection,\n endSelection,\n focusCell,\n clearSelection,\n isCellSelected,\n isCellFocused,\n getCellPositionFromId,\n getCellBorderClasses,\n ],\n )\n\n return <SelectionCellsContext.Provider value={value}>{children}</SelectionCellsContext.Provider>\n}\n"],"names":["jsx"],"mappings":"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"}
|
|
@@ -35,6 +35,7 @@ require("../../../api/generated/versions.cjs.js");
|
|
|
35
35
|
require("../../../api/generated/workfiles.cjs.js");
|
|
36
36
|
require("../../../api/generated/ynputCloud.cjs.js");
|
|
37
37
|
require("../../../api/generated/grouping.cjs.js");
|
|
38
|
+
require("../../../api/generated/views.cjs.js");
|
|
38
39
|
require("../../../api/queries/actions/getActions.cjs.js");
|
|
39
40
|
require("../../../api/queries/activities/getActivities.cjs.js");
|
|
40
41
|
require("../../../api/queries/activities/updateActivities.cjs.js");
|
|
@@ -68,6 +69,9 @@ const getPermissions = require("../../../api/queries/permissions/getPermissions.
|
|
|
68
69
|
require("../../../api/queries/grouping/getGrouping.cjs.js");
|
|
69
70
|
require("../../../api/queries/versions/updateVersions.cjs.js");
|
|
70
71
|
require("../../../api/queries/products/createProduct.cjs.js");
|
|
72
|
+
require("../../../api/queries/cloud/cloud.cjs.js");
|
|
73
|
+
require("../../../api/queries/views/getViews.cjs.js");
|
|
74
|
+
require("../../../api/queries/views/updateViews.cjs.js");
|
|
71
75
|
const useAttributeFields = ({ projectName }) => {
|
|
72
76
|
const { data: info, isSuccess, isFetching } = getSystem.useGetSiteInfoQuery({ full: true });
|
|
73
77
|
const { attributes = [] } = info || {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAttributesList.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useAttributesList.ts"],"sourcesContent":["import { useGetSiteInfoQuery, useGetMyProjectPermissionsQuery, AttributeModel } from '@shared/api'\n\nexport interface ProjectTableAttribute extends AttributeModel {\n readOnly?: boolean\n}\n\nconst useAttributeFields = ({ projectName }: { projectName: string }) => {\n const { data: info, isSuccess, isFetching } = useGetSiteInfoQuery({ full: true })\n const { attributes = [] } = info || {}\n\n const { data: projectPermissions } = useGetMyProjectPermissionsQuery(\n { projectName },\n { skip: !projectName },\n )\n const { attrib_read, attrib_write } = projectPermissions || {}\n const { enabled: attribReadEnabled, attributes: attribReadAttributes } = attrib_read || {}\n const { enabled: attribWriteEnabled, attributes: attribWriteAttributes } = attrib_write || {}\n\n // filter out scopes and filter out attributes that do not have read access\n const attribFields: ProjectTableAttribute[] = attributes\n .filter((a) => !attribReadEnabled || attribReadAttributes?.includes(a.name))\n .map((a) => ({\n ...a,\n readOnly: attribWriteEnabled ? !attribWriteAttributes?.includes(a.name) : false,\n }))\n\n return { attribFields, isSuccess, isFetching }\n}\n\nexport default useAttributeFields\n"],"names":["useGetSiteInfoQuery","useGetMyProjectPermissionsQuery"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAttributesList.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useAttributesList.ts"],"sourcesContent":["import { useGetSiteInfoQuery, useGetMyProjectPermissionsQuery, AttributeModel } from '@shared/api'\n\nexport interface ProjectTableAttribute extends AttributeModel {\n readOnly?: boolean\n}\n\nconst useAttributeFields = ({ projectName }: { projectName: string }) => {\n const { data: info, isSuccess, isFetching } = useGetSiteInfoQuery({ full: true })\n const { attributes = [] } = info || {}\n\n const { data: projectPermissions } = useGetMyProjectPermissionsQuery(\n { projectName },\n { skip: !projectName },\n )\n const { attrib_read, attrib_write } = projectPermissions || {}\n const { enabled: attribReadEnabled, attributes: attribReadAttributes } = attrib_read || {}\n const { enabled: attribWriteEnabled, attributes: attribWriteAttributes } = attrib_write || {}\n\n // filter out scopes and filter out attributes that do not have read access\n const attribFields: ProjectTableAttribute[] = attributes\n .filter((a) => !attribReadEnabled || attribReadAttributes?.includes(a.name))\n .map((a) => ({\n ...a,\n readOnly: attribWriteEnabled ? !attribWriteAttributes?.includes(a.name) : false,\n }))\n\n return { attribFields, isSuccess, isFetching }\n}\n\nexport default useAttributeFields\n"],"names":["useGetSiteInfoQuery","useGetMyProjectPermissionsQuery"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,qBAAqB,CAAC,EAAE,kBAA2C;AACjE,QAAA,EAAE,MAAM,MAAM,WAAW,eAAeA,8BAAoB,EAAE,MAAM,MAAM;AAChF,QAAM,EAAE,aAAa,GAAG,IAAI,QAAQ,CAAC;AAE/B,QAAA,EAAE,MAAM,mBAAA,IAAuBC,eAAA;AAAA,IACnC,EAAE,YAAY;AAAA,IACd,EAAE,MAAM,CAAC,YAAY;AAAA,EACvB;AACA,QAAM,EAAE,aAAa,aAAa,IAAI,sBAAsB,CAAC;AAC7D,QAAM,EAAE,SAAS,mBAAmB,YAAY,qBAAqB,IAAI,eAAe,CAAC;AACzF,QAAM,EAAE,SAAS,oBAAoB,YAAY,sBAAsB,IAAI,gBAAgB,CAAC;AAG5F,QAAM,eAAwC,WAC3C,OAAO,CAAC,MAAM,CAAC,sBAAqB,6DAAsB,SAAS,EAAE,MAAK,EAC1E,IAAI,CAAC,OAAO;AAAA,IACX,GAAG;AAAA,IACH,UAAU,qBAAqB,EAAC,+DAAuB,SAAS,EAAE,SAAQ;AAAA,EAAA,EAC1E;AAEG,SAAA,EAAE,cAAc,WAAW,WAAW;AAC/C;;"}
|
|
@@ -34,6 +34,7 @@ import "../../../api/generated/versions.es.js";
|
|
|
34
34
|
import "../../../api/generated/workfiles.es.js";
|
|
35
35
|
import "../../../api/generated/ynputCloud.es.js";
|
|
36
36
|
import "../../../api/generated/grouping.es.js";
|
|
37
|
+
import "../../../api/generated/views.es.js";
|
|
37
38
|
import "../../../api/queries/actions/getActions.es.js";
|
|
38
39
|
import "../../../api/queries/activities/getActivities.es.js";
|
|
39
40
|
import "../../../api/queries/activities/updateActivities.es.js";
|
|
@@ -67,6 +68,9 @@ import { useGetMyProjectPermissionsQuery } from "../../../api/queries/permission
|
|
|
67
68
|
import "../../../api/queries/grouping/getGrouping.es.js";
|
|
68
69
|
import "../../../api/queries/versions/updateVersions.es.js";
|
|
69
70
|
import "../../../api/queries/products/createProduct.es.js";
|
|
71
|
+
import "../../../api/queries/cloud/cloud.es.js";
|
|
72
|
+
import "../../../api/queries/views/getViews.es.js";
|
|
73
|
+
import "../../../api/queries/views/updateViews.es.js";
|
|
70
74
|
const useAttributeFields = ({ projectName }) => {
|
|
71
75
|
const { data: info, isSuccess, isFetching } = useGetSiteInfoQuery({ full: true });
|
|
72
76
|
const { attributes = [] } = info || {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAttributesList.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useAttributesList.ts"],"sourcesContent":["import { useGetSiteInfoQuery, useGetMyProjectPermissionsQuery, AttributeModel } from '@shared/api'\n\nexport interface ProjectTableAttribute extends AttributeModel {\n readOnly?: boolean\n}\n\nconst useAttributeFields = ({ projectName }: { projectName: string }) => {\n const { data: info, isSuccess, isFetching } = useGetSiteInfoQuery({ full: true })\n const { attributes = [] } = info || {}\n\n const { data: projectPermissions } = useGetMyProjectPermissionsQuery(\n { projectName },\n { skip: !projectName },\n )\n const { attrib_read, attrib_write } = projectPermissions || {}\n const { enabled: attribReadEnabled, attributes: attribReadAttributes } = attrib_read || {}\n const { enabled: attribWriteEnabled, attributes: attribWriteAttributes } = attrib_write || {}\n\n // filter out scopes and filter out attributes that do not have read access\n const attribFields: ProjectTableAttribute[] = attributes\n .filter((a) => !attribReadEnabled || attribReadAttributes?.includes(a.name))\n .map((a) => ({\n ...a,\n readOnly: attribWriteEnabled ? !attribWriteAttributes?.includes(a.name) : false,\n }))\n\n return { attribFields, isSuccess, isFetching }\n}\n\nexport default useAttributeFields\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAttributesList.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useAttributesList.ts"],"sourcesContent":["import { useGetSiteInfoQuery, useGetMyProjectPermissionsQuery, AttributeModel } from '@shared/api'\n\nexport interface ProjectTableAttribute extends AttributeModel {\n readOnly?: boolean\n}\n\nconst useAttributeFields = ({ projectName }: { projectName: string }) => {\n const { data: info, isSuccess, isFetching } = useGetSiteInfoQuery({ full: true })\n const { attributes = [] } = info || {}\n\n const { data: projectPermissions } = useGetMyProjectPermissionsQuery(\n { projectName },\n { skip: !projectName },\n )\n const { attrib_read, attrib_write } = projectPermissions || {}\n const { enabled: attribReadEnabled, attributes: attribReadAttributes } = attrib_read || {}\n const { enabled: attribWriteEnabled, attributes: attribWriteAttributes } = attrib_write || {}\n\n // filter out scopes and filter out attributes that do not have read access\n const attribFields: ProjectTableAttribute[] = attributes\n .filter((a) => !attribReadEnabled || attribReadAttributes?.includes(a.name))\n .map((a) => ({\n ...a,\n readOnly: attribWriteEnabled ? !attribWriteAttributes?.includes(a.name) : false,\n }))\n\n return { attribFields, isSuccess, isFetching }\n}\n\nexport default useAttributeFields\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,qBAAqB,CAAC,EAAE,kBAA2C;AACjE,QAAA,EAAE,MAAM,MAAM,WAAW,eAAe,oBAAoB,EAAE,MAAM,MAAM;AAChF,QAAM,EAAE,aAAa,GAAG,IAAI,QAAQ,CAAC;AAE/B,QAAA,EAAE,MAAM,mBAAA,IAAuB;AAAA,IACnC,EAAE,YAAY;AAAA,IACd,EAAE,MAAM,CAAC,YAAY;AAAA,EACvB;AACA,QAAM,EAAE,aAAa,aAAa,IAAI,sBAAsB,CAAC;AAC7D,QAAM,EAAE,SAAS,mBAAmB,YAAY,qBAAqB,IAAI,eAAe,CAAC;AACzF,QAAM,EAAE,SAAS,oBAAoB,YAAY,sBAAsB,IAAI,gBAAgB,CAAC;AAG5F,QAAM,eAAwC,WAC3C,OAAO,CAAC,MAAM,CAAC,sBAAqB,6DAAsB,SAAS,EAAE,MAAK,EAC1E,IAAI,CAAC,OAAO;AAAA,IACX,GAAG;AAAA,IACH,UAAU,qBAAqB,EAAC,+DAAuB,SAAS,EAAE,SAAQ;AAAA,EAAA,EAC1E;AAEG,SAAA,EAAE,cAAc,WAAW,WAAW;AAC/C;"}
|
package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js
CHANGED
|
@@ -55,6 +55,7 @@ require("../../../api/generated/versions.cjs.js");
|
|
|
55
55
|
require("../../../api/generated/workfiles.cjs.js");
|
|
56
56
|
require("../../../api/generated/ynputCloud.cjs.js");
|
|
57
57
|
require("../../../api/generated/grouping.cjs.js");
|
|
58
|
+
require("../../../api/generated/views.cjs.js");
|
|
58
59
|
require("../../../api/queries/actions/getActions.cjs.js");
|
|
59
60
|
require("../../../api/queries/activities/getActivities.cjs.js");
|
|
60
61
|
require("../../../api/queries/activities/updateActivities.cjs.js");
|
|
@@ -88,6 +89,9 @@ require("../../../api/queries/permissions/getPermissions.cjs.js");
|
|
|
88
89
|
require("../../../api/queries/grouping/getGrouping.cjs.js");
|
|
89
90
|
require("../../../api/queries/versions/updateVersions.cjs.js");
|
|
90
91
|
require("../../../api/queries/products/createProduct.cjs.js");
|
|
92
|
+
require("../../../api/queries/cloud/cloud.cjs.js");
|
|
93
|
+
require("../../../api/queries/views/getViews.cjs.js");
|
|
94
|
+
require("../../../api/queries/views/updateViews.cjs.js");
|
|
91
95
|
require("../../../context/RemoteModulesContext.cjs.js");
|
|
92
96
|
require("../../../../../_virtual/runtime.cjs.js");
|
|
93
97
|
require("../../../../../_virtual/semver.cjs.js");
|
package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCheckSelectedCellsVisible.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.ts"],"sourcesContent":["// This hooks checks the current selection of cells is actually visible in the current viewport of the table\n// If they are not visible, they will be removed from the selection\n// This can happen when the user changes the slicer selection or filters (combined filters changes)\n\nimport { useEffect } from 'react'\nimport { CellId, parseCellId } from '../utils'\nimport { useProjectTableContext } from '../context'\n\ntype CheckSelectedCellsVisibleProps = {\n selectedCells: Set<CellId>\n setSelectedCells: (cells: Set<CellId>) => void\n focusedCellId: CellId | null\n setFocusedCellId: (cellId: CellId | null) => void\n}\n\nexport const useCheckSelectedCellsVisible = ({\n selectedCells,\n setSelectedCells,\n focusedCellId,\n setFocusedCellId,\n}: CheckSelectedCellsVisibleProps): void => {\n const { getEntityById } = useProjectTableContext()\n\n // checks that all of the selected cells are in the tableData\n // if they are not, they will be removed from the selection\n useEffect(() => {\n const missingCells = new Set<CellId>()\n for (const cellId of selectedCells) {\n // check if the cell rowId is in\n if (!getEntityById(parseCellId(cellId || '')?.rowId || '')) {\n missingCells.add(cellId)\n }\n }\n\n if (missingCells.size > 0) {\n // remove the missing cells from the selection\n const newSelection = new Set<CellId>(selectedCells)\n for (const cellId of missingCells) {\n newSelection.delete(cellId)\n }\n\n setSelectedCells(newSelection)\n\n // if the focused cell is one of the missing cells, clear it\n if (missingCells.has(focusedCellId || '')) {\n setFocusedCellId(null)\n }\n }\n }, [getEntityById, selectedCells, focusedCellId, setSelectedCells, setFocusedCellId])\n}\n"],"names":["useProjectTableContext","useEffect","parseCellId"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useCheckSelectedCellsVisible.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.ts"],"sourcesContent":["// This hooks checks the current selection of cells is actually visible in the current viewport of the table\n// If they are not visible, they will be removed from the selection\n// This can happen when the user changes the slicer selection or filters (combined filters changes)\n\nimport { useEffect } from 'react'\nimport { CellId, parseCellId } from '../utils'\nimport { useProjectTableContext } from '../context'\n\ntype CheckSelectedCellsVisibleProps = {\n selectedCells: Set<CellId>\n setSelectedCells: (cells: Set<CellId>) => void\n focusedCellId: CellId | null\n setFocusedCellId: (cellId: CellId | null) => void\n}\n\nexport const useCheckSelectedCellsVisible = ({\n selectedCells,\n setSelectedCells,\n focusedCellId,\n setFocusedCellId,\n}: CheckSelectedCellsVisibleProps): void => {\n const { getEntityById } = useProjectTableContext()\n\n // checks that all of the selected cells are in the tableData\n // if they are not, they will be removed from the selection\n useEffect(() => {\n const missingCells = new Set<CellId>()\n for (const cellId of selectedCells) {\n // check if the cell rowId is in\n if (!getEntityById(parseCellId(cellId || '')?.rowId || '')) {\n missingCells.add(cellId)\n }\n }\n\n if (missingCells.size > 0) {\n // remove the missing cells from the selection\n const newSelection = new Set<CellId>(selectedCells)\n for (const cellId of missingCells) {\n newSelection.delete(cellId)\n }\n\n setSelectedCells(newSelection)\n\n // if the focused cell is one of the missing cells, clear it\n if (missingCells.has(focusedCellId || '')) {\n setFocusedCellId(null)\n }\n }\n }, [getEntityById, selectedCells, focusedCellId, setSelectedCells, setFocusedCellId])\n}\n"],"names":["useProjectTableContext","useEffect","parseCellId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeO,MAAM,+BAA+B,CAAC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA4C;AACpC,QAAA,EAAE,cAAc,IAAIA,2CAAuB;AAIjDC,QAAAA,UAAU,MAAM;;AACR,UAAA,mCAAmB,IAAY;AACrC,eAAW,UAAU,eAAe;AAE9B,UAAA,CAAC,gBAAcC,2BAAY,UAAU,EAAE,MAAxBA,mBAA2B,UAAS,EAAE,GAAG;AAC1D,qBAAa,IAAI,MAAM;AAAA,MAAA;AAAA,IACzB;AAGE,QAAA,aAAa,OAAO,GAAG;AAEnB,YAAA,eAAe,IAAI,IAAY,aAAa;AAClD,iBAAW,UAAU,cAAc;AACjC,qBAAa,OAAO,MAAM;AAAA,MAAA;AAG5B,uBAAiB,YAAY;AAG7B,UAAI,aAAa,IAAI,iBAAiB,EAAE,GAAG;AACzC,yBAAiB,IAAI;AAAA,MAAA;AAAA,IACvB;AAAA,EACF,GACC,CAAC,eAAe,eAAe,eAAe,kBAAkB,gBAAgB,CAAC;AACtF;;"}
|
package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js
CHANGED
|
@@ -53,6 +53,7 @@ import "../../../api/generated/versions.es.js";
|
|
|
53
53
|
import "../../../api/generated/workfiles.es.js";
|
|
54
54
|
import "../../../api/generated/ynputCloud.es.js";
|
|
55
55
|
import "../../../api/generated/grouping.es.js";
|
|
56
|
+
import "../../../api/generated/views.es.js";
|
|
56
57
|
import "../../../api/queries/actions/getActions.es.js";
|
|
57
58
|
import "../../../api/queries/activities/getActivities.es.js";
|
|
58
59
|
import "../../../api/queries/activities/updateActivities.es.js";
|
|
@@ -86,6 +87,9 @@ import "../../../api/queries/permissions/getPermissions.es.js";
|
|
|
86
87
|
import "../../../api/queries/grouping/getGrouping.es.js";
|
|
87
88
|
import "../../../api/queries/versions/updateVersions.es.js";
|
|
88
89
|
import "../../../api/queries/products/createProduct.es.js";
|
|
90
|
+
import "../../../api/queries/cloud/cloud.es.js";
|
|
91
|
+
import "../../../api/queries/views/getViews.es.js";
|
|
92
|
+
import "../../../api/queries/views/updateViews.es.js";
|
|
89
93
|
import "../../../context/RemoteModulesContext.es.js";
|
|
90
94
|
import "../../../../../_virtual/runtime.es.js";
|
|
91
95
|
import "../../../../../_virtual/semver.es.js";
|
package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCheckSelectedCellsVisible.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.ts"],"sourcesContent":["// This hooks checks the current selection of cells is actually visible in the current viewport of the table\n// If they are not visible, they will be removed from the selection\n// This can happen when the user changes the slicer selection or filters (combined filters changes)\n\nimport { useEffect } from 'react'\nimport { CellId, parseCellId } from '../utils'\nimport { useProjectTableContext } from '../context'\n\ntype CheckSelectedCellsVisibleProps = {\n selectedCells: Set<CellId>\n setSelectedCells: (cells: Set<CellId>) => void\n focusedCellId: CellId | null\n setFocusedCellId: (cellId: CellId | null) => void\n}\n\nexport const useCheckSelectedCellsVisible = ({\n selectedCells,\n setSelectedCells,\n focusedCellId,\n setFocusedCellId,\n}: CheckSelectedCellsVisibleProps): void => {\n const { getEntityById } = useProjectTableContext()\n\n // checks that all of the selected cells are in the tableData\n // if they are not, they will be removed from the selection\n useEffect(() => {\n const missingCells = new Set<CellId>()\n for (const cellId of selectedCells) {\n // check if the cell rowId is in\n if (!getEntityById(parseCellId(cellId || '')?.rowId || '')) {\n missingCells.add(cellId)\n }\n }\n\n if (missingCells.size > 0) {\n // remove the missing cells from the selection\n const newSelection = new Set<CellId>(selectedCells)\n for (const cellId of missingCells) {\n newSelection.delete(cellId)\n }\n\n setSelectedCells(newSelection)\n\n // if the focused cell is one of the missing cells, clear it\n if (missingCells.has(focusedCellId || '')) {\n setFocusedCellId(null)\n }\n }\n }, [getEntityById, selectedCells, focusedCellId, setSelectedCells, setFocusedCellId])\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useCheckSelectedCellsVisible.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.ts"],"sourcesContent":["// This hooks checks the current selection of cells is actually visible in the current viewport of the table\n// If they are not visible, they will be removed from the selection\n// This can happen when the user changes the slicer selection or filters (combined filters changes)\n\nimport { useEffect } from 'react'\nimport { CellId, parseCellId } from '../utils'\nimport { useProjectTableContext } from '../context'\n\ntype CheckSelectedCellsVisibleProps = {\n selectedCells: Set<CellId>\n setSelectedCells: (cells: Set<CellId>) => void\n focusedCellId: CellId | null\n setFocusedCellId: (cellId: CellId | null) => void\n}\n\nexport const useCheckSelectedCellsVisible = ({\n selectedCells,\n setSelectedCells,\n focusedCellId,\n setFocusedCellId,\n}: CheckSelectedCellsVisibleProps): void => {\n const { getEntityById } = useProjectTableContext()\n\n // checks that all of the selected cells are in the tableData\n // if they are not, they will be removed from the selection\n useEffect(() => {\n const missingCells = new Set<CellId>()\n for (const cellId of selectedCells) {\n // check if the cell rowId is in\n if (!getEntityById(parseCellId(cellId || '')?.rowId || '')) {\n missingCells.add(cellId)\n }\n }\n\n if (missingCells.size > 0) {\n // remove the missing cells from the selection\n const newSelection = new Set<CellId>(selectedCells)\n for (const cellId of missingCells) {\n newSelection.delete(cellId)\n }\n\n setSelectedCells(newSelection)\n\n // if the focused cell is one of the missing cells, clear it\n if (missingCells.has(focusedCellId || '')) {\n setFocusedCellId(null)\n }\n }\n }, [getEntityById, selectedCells, focusedCellId, setSelectedCells, setFocusedCellId])\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeO,MAAM,+BAA+B,CAAC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA4C;AACpC,QAAA,EAAE,cAAc,IAAI,uBAAuB;AAIjD,YAAU,MAAM;;AACR,UAAA,mCAAmB,IAAY;AACrC,eAAW,UAAU,eAAe;AAE9B,UAAA,CAAC,gBAAc,iBAAY,UAAU,EAAE,MAAxB,mBAA2B,UAAS,EAAE,GAAG;AAC1D,qBAAa,IAAI,MAAM;AAAA,MAAA;AAAA,IACzB;AAGE,QAAA,aAAa,OAAO,GAAG;AAEnB,YAAA,eAAe,IAAI,IAAY,aAAa;AAClD,iBAAW,UAAU,cAAc;AACjC,qBAAa,OAAO,MAAM;AAAA,MAAA;AAG5B,uBAAiB,YAAY;AAG7B,UAAI,aAAa,IAAI,iBAAiB,EAAE,GAAG;AACzC,yBAAiB,IAAI;AAAA,MAAA;AAAA,IACvB;AAAA,EACF,GACC,CAAC,eAAe,eAAe,eAAe,kBAAkB,gBAAgB,CAAC;AACtF;"}
|
|
@@ -36,6 +36,7 @@ require("../../../api/generated/versions.cjs.js");
|
|
|
36
36
|
require("../../../api/generated/workfiles.cjs.js");
|
|
37
37
|
require("../../../api/generated/ynputCloud.cjs.js");
|
|
38
38
|
require("../../../api/generated/grouping.cjs.js");
|
|
39
|
+
require("../../../api/generated/views.cjs.js");
|
|
39
40
|
require("../../../api/queries/actions/getActions.cjs.js");
|
|
40
41
|
require("../../../api/queries/activities/getActivities.cjs.js");
|
|
41
42
|
require("../../../api/queries/activities/updateActivities.cjs.js");
|
|
@@ -69,6 +70,9 @@ require("../../../api/queries/permissions/getPermissions.cjs.js");
|
|
|
69
70
|
require("../../../api/queries/grouping/getGrouping.cjs.js");
|
|
70
71
|
require("../../../api/queries/versions/updateVersions.cjs.js");
|
|
71
72
|
require("../../../api/queries/products/createProduct.cjs.js");
|
|
73
|
+
require("../../../api/queries/cloud/cloud.cjs.js");
|
|
74
|
+
require("../../../api/queries/views/getViews.cjs.js");
|
|
75
|
+
require("../../../api/queries/views/updateViews.cjs.js");
|
|
72
76
|
const React = require("react");
|
|
73
77
|
const loadingUtils = require("../utils/loadingUtils.cjs.js");
|
|
74
78
|
const useBuildGroupByTableData = require("./useBuildGroupByTableData.cjs.js");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFetchOverviewData.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useFetchOverviewData.ts"],"sourcesContent":["import {\n useGetFolderListQuery,\n useGetGroupedTasksListQuery,\n useGetOverviewTasksByFoldersQuery,\n useGetQueryTasksFoldersQuery,\n useGetTasksListInfiniteInfiniteQuery,\n} from '@shared/api'\nimport type {\n FolderListItem,\n GetGroupedTasksListArgs,\n EntityGroup,\n QueryTasksFoldersApiArg,\n} from '@shared/api'\nimport { EditorTaskNode, FolderNodeMap, MatchingFolder, TaskNodeMap } from '../types/table'\nimport { useEffect, useMemo, useState } from 'react'\nimport { ExpandedState, SortingState } from '@tanstack/react-table'\nimport { determineLoadingTaskFolders } from '../utils/loadingUtils'\nimport { LoadingTasks } from '../types'\nimport { TasksByFolderMap } from '../utils'\nimport { TableGroupBy } from '../context'\nimport { Filter } from '@ynput/ayon-react-components'\nimport { isGroupId } from '../hooks/useBuildGroupByTableData'\nimport { ProjectTableAttribute } from '../hooks/useAttributesList'\nimport { ProjectTableModulesType } from './useProjectTableModules'\n\ntype useFetchOverviewDataData = {\n foldersMap: FolderNodeMap\n tasksMap: TaskNodeMap\n tasksByFolderMap: TasksByFolderMap\n isLoadingAll: boolean // the whole table is a loading state\n isLoadingMore: boolean // loading more tasks\n loadingTasks: LoadingTasks // show number of loading tasks per folder or root\n fetchNextPage: (value?: string) => void\n reloadTableData: () => void\n}\n\ntype Params = {\n projectName: string\n selectedFolders: string[] // folders selected in the slicer (hierarchy)\n filters: Filter[] // RAW filters (including slicer filters)\n queryFilters: {\n filter: QueryTasksFoldersApiArg['tasksFoldersQuery']['filter']\n filterString?: string\n search: QueryTasksFoldersApiArg['tasksFoldersQuery']['search']\n } // filters from the filters bar or slicer (not hierarchy)\n sorting: SortingState\n groupBy: TableGroupBy | undefined\n taskGroups: EntityGroup[]\n expanded: ExpandedState\n showHierarchy: boolean\n attribFields: ProjectTableAttribute[]\n modules: ProjectTableModulesType\n}\n\nexport const useFetchOverviewData = ({\n projectName,\n selectedFolders, // comes from the slicer\n filters,\n queryFilters,\n sorting,\n groupBy,\n taskGroups = [],\n expanded,\n showHierarchy,\n attribFields,\n modules,\n}: Params): useFetchOverviewDataData => {\n const { getGroupQueries, isLoading: isLoadingModules } = modules\n\n const {\n data: { folders = [] } = {},\n isLoading,\n isFetching: isFetchingFolders,\n isUninitialized: isUninitializedFolders,\n refetch: refetchFolders,\n } = useGetFolderListQuery(\n { projectName: projectName || '', attrib: true },\n { skip: !projectName },\n )\n\n // console.log('Folder count:', folders.length)\n const expandedParentIds = Object.entries(expanded)\n .filter(([, isExpanded]) => isExpanded)\n .filter(([id]) => !isGroupId(id)) // filter out the root folder\n .map(([id]) => id)\n\n const {\n data: expandedFoldersTasks = [],\n isFetching: isFetchingExpandedFoldersTasks,\n refetch: refetchExpandedFoldersTasks,\n isUninitialized: isUninitializedExpandedFoldersTasks,\n } = useGetOverviewTasksByFoldersQuery(\n {\n projectName,\n parentIds: expandedParentIds,\n filter: queryFilters.filterString,\n search: queryFilters.search,\n },\n { skip: !expandedParentIds.length || !showHierarchy },\n )\n // get folders that would be left if the filters were applied for tasks\n const {\n data: foldersByTaskFilter,\n isUninitialized,\n isFetching: isFetchingTasksFolders,\n isUninitialized: isUninitializedTasksFolders,\n refetch: refetchTasksFolders,\n } = useGetQueryTasksFoldersQuery(\n {\n projectName,\n tasksFoldersQuery: { filter: queryFilters.filter, search: queryFilters.search },\n },\n {\n skip: !queryFilters.filterString || !folders.length || !showHierarchy,\n },\n )\n\n // create a map of folders by id for efficient lookups\n const foldersMap: FolderNodeMap = useMemo(() => {\n const map = new Map()\n\n const addExtraDataToFolder = (folder: FolderListItem) => {\n // add any extra data to folder\n const folderWithExtraData: MatchingFolder = {\n ...folder,\n entityId: folder.id,\n entityType: 'folder',\n }\n return folderWithExtraData\n }\n\n // If we have task filters and folders to filter\n if (!isUninitialized && foldersByTaskFilter && folders.length) {\n // Create a set for efficient lookups of filtered folder IDs\n const relevantFolderIds = new Set<string>()\n\n // First pass: Add all folders from the task filter\n for (const folderId of foldersByTaskFilter) {\n relevantFolderIds.add(folderId)\n }\n\n // Create a map of folders by ID for parentId lookups\n const foldersByIdMap = new Map<string, (typeof folders)[0]>()\n for (const folder of folders) {\n foldersByIdMap.set(folder.id as string, folder)\n }\n\n // Second pass: Add all parent folders of filtered folders\n const addParents = (folderId: string) => {\n const folder = foldersByIdMap.get(folderId)\n if (folder && folder.parentId) {\n relevantFolderIds.add(folder.parentId as string)\n addParents(folder.parentId as string)\n }\n }\n\n // Process each filtered folder to add its parents\n for (const folderId of foldersByTaskFilter) {\n addParents(folderId)\n }\n\n // Third pass: Build the final map using only relevant folders\n for (const folder of folders) {\n if (relevantFolderIds.has(folder.id as string)) {\n map.set(folder.id as string, addExtraDataToFolder(folder))\n }\n }\n } else {\n // No filtering, include all folders\n for (const folder of folders) {\n map.set(folder.id as string, addExtraDataToFolder(folder))\n }\n }\n\n // Filter by selected folders if needed\n if (selectedFolders.length) {\n const selectedPaths = selectedFolders\n .map((id) => map.get(id)?.path)\n .filter(Boolean) as string[]\n\n // Create a new map that only contains selected folders and their children\n const filteredMap = new Map()\n\n // For each folder, check if it should be included\n map.forEach((folder, folderId) => {\n const folderPath = folder.path as string\n\n // Include if it's a parent or the folder itself\n const folderPathParts = folderPath.split('/')\n let isParentOrSelf = false\n\n for (let i = 0; i < folderPathParts.length; i++) {\n const partialPath = folderPathParts.slice(0, i + 1).join('/')\n if (selectedPaths.some((p) => p === partialPath)) {\n isParentOrSelf = true\n break\n }\n }\n\n // Include if it's a child of any selected folder\n const isChild = selectedPaths.some((selectedPath) =>\n folderPath.startsWith(selectedPath + '/'),\n )\n\n if (isParentOrSelf || isChild) {\n filteredMap.set(folderId, addExtraDataToFolder(folder))\n }\n })\n\n return filteredMap\n }\n\n return map\n }, [folders, foldersByTaskFilter, isUninitialized, selectedFolders])\n\n // calculate partial loading states\n const loadingTasksForParents = useMemo(() => {\n if (isFetchingExpandedFoldersTasks) {\n return determineLoadingTaskFolders({\n expandedFoldersTasks,\n expandedParentIds,\n foldersMap,\n })\n } else return {}\n }, [isFetchingExpandedFoldersTasks, expandedFoldersTasks, expandedParentIds, foldersMap])\n\n const [tasksListCursor, setTasksListCursor] = useState('')\n\n // every time the sorting changes, reset the cursor\n useEffect(() => {\n if (tasksListCursor) setTasksListCursor('')\n }, [sorting, tasksListCursor])\n\n // Create sort params for infinite query\n const singleSort = { ...sorting[0] }\n // if task list and sorting by name, sort by path instead\n const sortByPath = singleSort?.id === 'name' && !showHierarchy\n const sortId = sortByPath ? 'path' : singleSort?.id === 'subType' ? 'taskType' : singleSort?.id\n const tasksFolderIdsParams = selectedFolders.length ? Array.from(foldersMap.keys()) : undefined\n\n // Use the new infinite query hook for tasks list with correct name\n const {\n data: tasksListInfiniteData,\n isFetching: isFetchingTasksList,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage: isFetchingNextPageTasksList,\n isUninitialized: isUninitializedTasksList,\n refetch: refetchTasksList,\n } = useGetTasksListInfiniteInfiniteQuery(\n {\n projectName,\n filter: queryFilters.filterString,\n search: queryFilters.search,\n folderIds: tasksFolderIdsParams,\n sortBy: sortId ? sortId.replace('_', '.') : undefined,\n desc: !!singleSort?.desc,\n },\n {\n skip: showHierarchy,\n initialPageParam: {\n cursor: '',\n desc: !!singleSort?.desc,\n },\n },\n )\n\n // Extract tasks from infinite query data correctly\n const tasksList = useMemo(() => {\n if (!tasksListInfiniteData?.pages) return []\n return tasksListInfiniteData.pages.flatMap((page) => page.tasks || [])\n }, [tasksListInfiniteData?.pages])\n\n const initGroupPageCounts = useMemo(() => {\n return taskGroups.reduce((acc, group) => {\n acc[group.value] = 1 // initialize each group with 1 count\n return acc\n }, {} as Record<string, number>)\n }, [taskGroups])\n const [groupPageCounts, setGroupPageCounts] = useState<Record<string, number>>({})\n\n // when initGroupPageCounts changes, set it to groupPageCounts\n useEffect(() => {\n const hasInitData = Object.keys(initGroupPageCounts).length > 0\n const hasCurrentData = Object.keys(groupPageCounts).length > 0\n\n if (hasInitData && !hasCurrentData) {\n setGroupPageCounts(initGroupPageCounts)\n }\n }, [initGroupPageCounts])\n\n // for grouped tasks, we fetch all tasks for each group\n // we do this by building a list of groups with filters for that group\n\n // get the data type for the groupBy\n const groupByDataType = useMemo(() => {\n if (!groupBy?.id) return 'string'\n\n const groupById = groupBy.id\n\n // Handle special cases for built-in group types\n if (groupById === 'assignees' || groupById === 'tags') {\n return 'list_of_strings'\n }\n\n // Handle attribute-based grouping (format: \"attrib.attributeName\")\n if (groupById.startsWith('attrib.')) {\n const attributeName = groupById.split('.')[1]\n const attribute = attribFields.find((field) => field.name === attributeName)\n return attribute?.data?.type || 'string'\n }\n\n // Default fallback\n return 'string'\n }, [groupBy?.id, attribFields])\n\n const groupQueries: GetGroupedTasksListArgs['groups'] = useMemo(() => {\n return groupBy\n ? getGroupQueries?.({\n taskGroups,\n filters,\n groupBy,\n groupPageCounts,\n dataType: groupByDataType,\n }) ?? []\n : []\n }, [groupBy, taskGroups, filters, groupPageCounts, groupByDataType, getGroupQueries])\n\n const {\n data: { tasks: groupTasks = [] } = {},\n isFetching: isFetchingGroups,\n isUninitialized: isUninitializedGroupedTasks,\n refetch: refetchGroupedTasks,\n } = useGetGroupedTasksListQuery(\n {\n projectName,\n groups: groupQueries,\n sortBy: sortId ? sortId.replace('_', '.') : undefined,\n desc: !!singleSort?.desc,\n search: queryFilters.search,\n folderIds: tasksFolderIdsParams,\n },\n {\n skip: !groupBy || !groupQueries.length || isLoadingModules,\n },\n )\n\n const handleFetchNextPage = (group?: string) => {\n if (groupBy) {\n if (group && group in groupPageCounts) {\n console.log('fetching next page for group:', group)\n // fetch next page for a specific group by increasing the count in groupPageCounts\n setGroupPageCounts((prevCounts) => {\n const newCounts = { ...prevCounts }\n newCounts[group] = (newCounts[group] || 1) + 1 // increment the count for this group\n return newCounts\n })\n }\n } else if (hasNextPage) {\n console.log('fetching next page')\n fetchNextPage()\n }\n }\n\n // tasksMaps is a map of tasks by task ID\n // tasksByFolderMap is a map of tasks by folder ID\n const { tasksMap, tasksByFolderMap } = useMemo(() => {\n const tasksMap: TaskNodeMap = new Map()\n const tasksByFolderMap: TasksByFolderMap = new Map()\n\n const addExtraDataToTask = (task: EditorTaskNode) => ({\n ...task,\n entityId: task.id,\n entityType: 'task' as const,\n })\n\n // either show the hierarchy or the flat list of tasks\n const allTasks = showHierarchy ? expandedFoldersTasks : groupBy ? groupTasks : tasksList\n for (const task of allTasks) {\n const taskId = task.id as string\n const folderId = task.folderId as string\n\n if (tasksMap.has(taskId)) {\n // merge specific data if the task already exists\n const existingTask = tasksMap.get(taskId) as EditorTaskNode\n const currentTask = addExtraDataToTask(task)\n const mergedTask = {\n ...existingTask,\n ...currentTask,\n groups: [...(existingTask.groups || []), ...(currentTask.groups || [])],\n }\n\n tasksMap.set(taskId, mergedTask)\n } else {\n tasksMap.set(taskId, addExtraDataToTask(task))\n }\n\n if (tasksByFolderMap.has(folderId)) {\n tasksByFolderMap.get(folderId)!.push(taskId)\n } else {\n tasksByFolderMap.set(folderId, [taskId])\n }\n }\n\n return { tasksMap, tasksByFolderMap }\n }, [expandedFoldersTasks, showHierarchy, tasksList, groupTasks])\n\n // reload all data for all queries\n const reloadTableData = () => {\n // only reload if there is data\n if (!isUninitializedFolders) refetchFolders()\n if (!isUninitializedExpandedFoldersTasks) refetchExpandedFoldersTasks()\n if (!isUninitializedTasksFolders) refetchTasksFolders()\n if (!isUninitializedTasksList) refetchTasksList()\n if (!isUninitializedGroupedTasks) refetchGroupedTasks()\n }\n\n return {\n foldersMap: foldersMap,\n tasksMap: tasksMap,\n tasksByFolderMap: tasksByFolderMap,\n isLoadingAll:\n isLoading ||\n isFetchingFolders ||\n (isFetchingTasksList && !isFetchingNextPageTasksList) ||\n isFetchingTasksFolders ||\n isFetchingGroups ||\n isLoadingModules, // these all show a full loading state\n isLoadingMore: isFetchingNextPageTasksList,\n loadingTasks: loadingTasksForParents,\n fetchNextPage: handleFetchNextPage,\n reloadTableData,\n }\n}\n"],"names":["useGetFolderListQuery","isGroupId","useGetOverviewTasksByFoldersQuery","useGetQueryTasksFoldersQuery","useMemo","determineLoadingTaskFolders","useState","useEffect","useGetTasksListInfiniteInfiniteQuery","useGetGroupedTasksListQuery","tasksMap","tasksByFolderMap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useFetchOverviewData.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useFetchOverviewData.ts"],"sourcesContent":["import {\n useGetFolderListQuery,\n useGetGroupedTasksListQuery,\n useGetOverviewTasksByFoldersQuery,\n useGetQueryTasksFoldersQuery,\n useGetTasksListInfiniteInfiniteQuery,\n} from '@shared/api'\nimport type {\n FolderListItem,\n GetGroupedTasksListArgs,\n EntityGroup,\n QueryTasksFoldersApiArg,\n} from '@shared/api'\nimport { EditorTaskNode, FolderNodeMap, MatchingFolder, TaskNodeMap } from '../types/table'\nimport { useEffect, useMemo, useState } from 'react'\nimport { ExpandedState, SortingState } from '@tanstack/react-table'\nimport { determineLoadingTaskFolders } from '../utils/loadingUtils'\nimport { LoadingTasks } from '../types'\nimport { TasksByFolderMap } from '../utils'\nimport { TableGroupBy } from '../context'\nimport { Filter } from '@ynput/ayon-react-components'\nimport { isGroupId } from '../hooks/useBuildGroupByTableData'\nimport { ProjectTableAttribute } from '../hooks/useAttributesList'\nimport { ProjectTableModulesType } from './useProjectTableModules'\n\ntype useFetchOverviewDataData = {\n foldersMap: FolderNodeMap\n tasksMap: TaskNodeMap\n tasksByFolderMap: TasksByFolderMap\n isLoadingAll: boolean // the whole table is a loading state\n isLoadingMore: boolean // loading more tasks\n loadingTasks: LoadingTasks // show number of loading tasks per folder or root\n fetchNextPage: (value?: string) => void\n reloadTableData: () => void\n}\n\ntype Params = {\n projectName: string\n selectedFolders: string[] // folders selected in the slicer (hierarchy)\n filters: Filter[] // RAW filters (including slicer filters)\n queryFilters: {\n filter: QueryTasksFoldersApiArg['tasksFoldersQuery']['filter']\n filterString?: string\n search: QueryTasksFoldersApiArg['tasksFoldersQuery']['search']\n } // filters from the filters bar or slicer (not hierarchy)\n sorting: SortingState\n groupBy: TableGroupBy | undefined\n taskGroups: EntityGroup[]\n expanded: ExpandedState\n showHierarchy: boolean\n attribFields: ProjectTableAttribute[]\n modules: ProjectTableModulesType\n}\n\nexport const useFetchOverviewData = ({\n projectName,\n selectedFolders, // comes from the slicer\n filters,\n queryFilters,\n sorting,\n groupBy,\n taskGroups = [],\n expanded,\n showHierarchy,\n attribFields,\n modules,\n}: Params): useFetchOverviewDataData => {\n const { getGroupQueries, isLoading: isLoadingModules } = modules\n\n const {\n data: { folders = [] } = {},\n isLoading,\n isFetching: isFetchingFolders,\n isUninitialized: isUninitializedFolders,\n refetch: refetchFolders,\n } = useGetFolderListQuery(\n { projectName: projectName || '', attrib: true },\n { skip: !projectName },\n )\n\n // console.log('Folder count:', folders.length)\n const expandedParentIds = Object.entries(expanded)\n .filter(([, isExpanded]) => isExpanded)\n .filter(([id]) => !isGroupId(id)) // filter out the root folder\n .map(([id]) => id)\n\n const {\n data: expandedFoldersTasks = [],\n isFetching: isFetchingExpandedFoldersTasks,\n refetch: refetchExpandedFoldersTasks,\n isUninitialized: isUninitializedExpandedFoldersTasks,\n } = useGetOverviewTasksByFoldersQuery(\n {\n projectName,\n parentIds: expandedParentIds,\n filter: queryFilters.filterString,\n search: queryFilters.search,\n },\n { skip: !expandedParentIds.length || !showHierarchy },\n )\n // get folders that would be left if the filters were applied for tasks\n const {\n data: foldersByTaskFilter,\n isUninitialized,\n isFetching: isFetchingTasksFolders,\n isUninitialized: isUninitializedTasksFolders,\n refetch: refetchTasksFolders,\n } = useGetQueryTasksFoldersQuery(\n {\n projectName,\n tasksFoldersQuery: { filter: queryFilters.filter, search: queryFilters.search },\n },\n {\n skip: !queryFilters.filterString || !folders.length || !showHierarchy,\n },\n )\n\n // create a map of folders by id for efficient lookups\n const foldersMap: FolderNodeMap = useMemo(() => {\n const map = new Map()\n\n const addExtraDataToFolder = (folder: FolderListItem) => {\n // add any extra data to folder\n const folderWithExtraData: MatchingFolder = {\n ...folder,\n entityId: folder.id,\n entityType: 'folder',\n }\n return folderWithExtraData\n }\n\n // If we have task filters and folders to filter\n if (!isUninitialized && foldersByTaskFilter && folders.length) {\n // Create a set for efficient lookups of filtered folder IDs\n const relevantFolderIds = new Set<string>()\n\n // First pass: Add all folders from the task filter\n for (const folderId of foldersByTaskFilter) {\n relevantFolderIds.add(folderId)\n }\n\n // Create a map of folders by ID for parentId lookups\n const foldersByIdMap = new Map<string, (typeof folders)[0]>()\n for (const folder of folders) {\n foldersByIdMap.set(folder.id as string, folder)\n }\n\n // Second pass: Add all parent folders of filtered folders\n const addParents = (folderId: string) => {\n const folder = foldersByIdMap.get(folderId)\n if (folder && folder.parentId) {\n relevantFolderIds.add(folder.parentId as string)\n addParents(folder.parentId as string)\n }\n }\n\n // Process each filtered folder to add its parents\n for (const folderId of foldersByTaskFilter) {\n addParents(folderId)\n }\n\n // Third pass: Build the final map using only relevant folders\n for (const folder of folders) {\n if (relevantFolderIds.has(folder.id as string)) {\n map.set(folder.id as string, addExtraDataToFolder(folder))\n }\n }\n } else {\n // No filtering, include all folders\n for (const folder of folders) {\n map.set(folder.id as string, addExtraDataToFolder(folder))\n }\n }\n\n // Filter by selected folders if needed\n if (selectedFolders.length) {\n const selectedPaths = selectedFolders\n .map((id) => map.get(id)?.path)\n .filter(Boolean) as string[]\n\n // Create a new map that only contains selected folders and their children\n const filteredMap = new Map()\n\n // For each folder, check if it should be included\n map.forEach((folder, folderId) => {\n const folderPath = folder.path as string\n\n // Include if it's a parent or the folder itself\n const folderPathParts = folderPath.split('/')\n let isParentOrSelf = false\n\n for (let i = 0; i < folderPathParts.length; i++) {\n const partialPath = folderPathParts.slice(0, i + 1).join('/')\n if (selectedPaths.some((p) => p === partialPath)) {\n isParentOrSelf = true\n break\n }\n }\n\n // Include if it's a child of any selected folder\n const isChild = selectedPaths.some((selectedPath) =>\n folderPath.startsWith(selectedPath + '/'),\n )\n\n if (isParentOrSelf || isChild) {\n filteredMap.set(folderId, addExtraDataToFolder(folder))\n }\n })\n\n return filteredMap\n }\n\n return map\n }, [folders, foldersByTaskFilter, isUninitialized, selectedFolders])\n\n // calculate partial loading states\n const loadingTasksForParents = useMemo(() => {\n if (isFetchingExpandedFoldersTasks) {\n return determineLoadingTaskFolders({\n expandedFoldersTasks,\n expandedParentIds,\n foldersMap,\n })\n } else return {}\n }, [isFetchingExpandedFoldersTasks, expandedFoldersTasks, expandedParentIds, foldersMap])\n\n const [tasksListCursor, setTasksListCursor] = useState('')\n\n // every time the sorting changes, reset the cursor\n useEffect(() => {\n if (tasksListCursor) setTasksListCursor('')\n }, [sorting, tasksListCursor])\n\n // Create sort params for infinite query\n const singleSort = { ...sorting[0] }\n // if task list and sorting by name, sort by path instead\n const sortByPath = singleSort?.id === 'name' && !showHierarchy\n const sortId = sortByPath ? 'path' : singleSort?.id === 'subType' ? 'taskType' : singleSort?.id\n const tasksFolderIdsParams = selectedFolders.length ? Array.from(foldersMap.keys()) : undefined\n\n // Use the new infinite query hook for tasks list with correct name\n const {\n data: tasksListInfiniteData,\n isFetching: isFetchingTasksList,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage: isFetchingNextPageTasksList,\n isUninitialized: isUninitializedTasksList,\n refetch: refetchTasksList,\n } = useGetTasksListInfiniteInfiniteQuery(\n {\n projectName,\n filter: queryFilters.filterString,\n search: queryFilters.search,\n folderIds: tasksFolderIdsParams,\n sortBy: sortId ? sortId.replace('_', '.') : undefined,\n desc: !!singleSort?.desc,\n },\n {\n skip: showHierarchy,\n initialPageParam: {\n cursor: '',\n desc: !!singleSort?.desc,\n },\n },\n )\n\n // Extract tasks from infinite query data correctly\n const tasksList = useMemo(() => {\n if (!tasksListInfiniteData?.pages) return []\n return tasksListInfiniteData.pages.flatMap((page) => page.tasks || [])\n }, [tasksListInfiniteData?.pages])\n\n const initGroupPageCounts = useMemo(() => {\n return taskGroups.reduce((acc, group) => {\n acc[group.value] = 1 // initialize each group with 1 count\n return acc\n }, {} as Record<string, number>)\n }, [taskGroups])\n const [groupPageCounts, setGroupPageCounts] = useState<Record<string, number>>({})\n\n // when initGroupPageCounts changes, set it to groupPageCounts\n useEffect(() => {\n const hasInitData = Object.keys(initGroupPageCounts).length > 0\n const hasCurrentData = Object.keys(groupPageCounts).length > 0\n\n if (hasInitData && !hasCurrentData) {\n setGroupPageCounts(initGroupPageCounts)\n }\n }, [initGroupPageCounts])\n\n // for grouped tasks, we fetch all tasks for each group\n // we do this by building a list of groups with filters for that group\n\n // get the data type for the groupBy\n const groupByDataType = useMemo(() => {\n if (!groupBy?.id) return 'string'\n\n const groupById = groupBy.id\n\n // Handle special cases for built-in group types\n if (groupById === 'assignees' || groupById === 'tags') {\n return 'list_of_strings'\n }\n\n // Handle attribute-based grouping (format: \"attrib.attributeName\")\n if (groupById.startsWith('attrib.')) {\n const attributeName = groupById.split('.')[1]\n const attribute = attribFields.find((field) => field.name === attributeName)\n return attribute?.data?.type || 'string'\n }\n\n // Default fallback\n return 'string'\n }, [groupBy?.id, attribFields])\n\n const groupQueries: GetGroupedTasksListArgs['groups'] = useMemo(() => {\n return groupBy\n ? getGroupQueries?.({\n taskGroups,\n filters,\n groupBy,\n groupPageCounts,\n dataType: groupByDataType,\n }) ?? []\n : []\n }, [groupBy, taskGroups, filters, groupPageCounts, groupByDataType, getGroupQueries])\n\n const {\n data: { tasks: groupTasks = [] } = {},\n isFetching: isFetchingGroups,\n isUninitialized: isUninitializedGroupedTasks,\n refetch: refetchGroupedTasks,\n } = useGetGroupedTasksListQuery(\n {\n projectName,\n groups: groupQueries,\n sortBy: sortId ? sortId.replace('_', '.') : undefined,\n desc: !!singleSort?.desc,\n search: queryFilters.search,\n folderIds: tasksFolderIdsParams,\n },\n {\n skip: !groupBy || !groupQueries.length || isLoadingModules,\n },\n )\n\n const handleFetchNextPage = (group?: string) => {\n if (groupBy) {\n if (group && group in groupPageCounts) {\n console.log('fetching next page for group:', group)\n // fetch next page for a specific group by increasing the count in groupPageCounts\n setGroupPageCounts((prevCounts) => {\n const newCounts = { ...prevCounts }\n newCounts[group] = (newCounts[group] || 1) + 1 // increment the count for this group\n return newCounts\n })\n }\n } else if (hasNextPage) {\n console.log('fetching next page')\n fetchNextPage()\n }\n }\n\n // tasksMaps is a map of tasks by task ID\n // tasksByFolderMap is a map of tasks by folder ID\n const { tasksMap, tasksByFolderMap } = useMemo(() => {\n const tasksMap: TaskNodeMap = new Map()\n const tasksByFolderMap: TasksByFolderMap = new Map()\n\n const addExtraDataToTask = (task: EditorTaskNode) => ({\n ...task,\n entityId: task.id,\n entityType: 'task' as const,\n })\n\n // either show the hierarchy or the flat list of tasks\n const allTasks = showHierarchy ? expandedFoldersTasks : groupBy ? groupTasks : tasksList\n for (const task of allTasks) {\n const taskId = task.id as string\n const folderId = task.folderId as string\n\n if (tasksMap.has(taskId)) {\n // merge specific data if the task already exists\n const existingTask = tasksMap.get(taskId) as EditorTaskNode\n const currentTask = addExtraDataToTask(task)\n const mergedTask = {\n ...existingTask,\n ...currentTask,\n groups: [...(existingTask.groups || []), ...(currentTask.groups || [])],\n }\n\n tasksMap.set(taskId, mergedTask)\n } else {\n tasksMap.set(taskId, addExtraDataToTask(task))\n }\n\n if (tasksByFolderMap.has(folderId)) {\n tasksByFolderMap.get(folderId)!.push(taskId)\n } else {\n tasksByFolderMap.set(folderId, [taskId])\n }\n }\n\n return { tasksMap, tasksByFolderMap }\n }, [expandedFoldersTasks, showHierarchy, tasksList, groupTasks])\n\n // reload all data for all queries\n const reloadTableData = () => {\n // only reload if there is data\n if (!isUninitializedFolders) refetchFolders()\n if (!isUninitializedExpandedFoldersTasks) refetchExpandedFoldersTasks()\n if (!isUninitializedTasksFolders) refetchTasksFolders()\n if (!isUninitializedTasksList) refetchTasksList()\n if (!isUninitializedGroupedTasks) refetchGroupedTasks()\n }\n\n return {\n foldersMap: foldersMap,\n tasksMap: tasksMap,\n tasksByFolderMap: tasksByFolderMap,\n isLoadingAll:\n isLoading ||\n isFetchingFolders ||\n (isFetchingTasksList && !isFetchingNextPageTasksList) ||\n isFetchingTasksFolders ||\n isFetchingGroups ||\n isLoadingModules, // these all show a full loading state\n isLoadingMore: isFetchingNextPageTasksList,\n loadingTasks: loadingTasksForParents,\n fetchNextPage: handleFetchNextPage,\n reloadTableData,\n }\n}\n"],"names":["useGetFolderListQuery","isGroupId","useGetOverviewTasksByFoldersQuery","useGetQueryTasksFoldersQuery","useMemo","determineLoadingTaskFolders","useState","useEffect","useGetTasksListInfiniteInfiniteQuery","useGetGroupedTasksListQuery","tasksMap","tasksByFolderMap"],"mappings":"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"}
|
|
@@ -34,6 +34,7 @@ import "../../../api/generated/versions.es.js";
|
|
|
34
34
|
import "../../../api/generated/workfiles.es.js";
|
|
35
35
|
import "../../../api/generated/ynputCloud.es.js";
|
|
36
36
|
import "../../../api/generated/grouping.es.js";
|
|
37
|
+
import "../../../api/generated/views.es.js";
|
|
37
38
|
import "../../../api/queries/actions/getActions.es.js";
|
|
38
39
|
import "../../../api/queries/activities/getActivities.es.js";
|
|
39
40
|
import "../../../api/queries/activities/updateActivities.es.js";
|
|
@@ -67,6 +68,9 @@ import "../../../api/queries/permissions/getPermissions.es.js";
|
|
|
67
68
|
import "../../../api/queries/grouping/getGrouping.es.js";
|
|
68
69
|
import "../../../api/queries/versions/updateVersions.es.js";
|
|
69
70
|
import "../../../api/queries/products/createProduct.es.js";
|
|
71
|
+
import "../../../api/queries/cloud/cloud.es.js";
|
|
72
|
+
import "../../../api/queries/views/getViews.es.js";
|
|
73
|
+
import "../../../api/queries/views/updateViews.es.js";
|
|
70
74
|
import { useMemo, useState, useEffect } from "react";
|
|
71
75
|
import { determineLoadingTaskFolders } from "../utils/loadingUtils.es.js";
|
|
72
76
|
import { isGroupId } from "./useBuildGroupByTableData.es.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFetchOverviewData.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useFetchOverviewData.ts"],"sourcesContent":["import {\n useGetFolderListQuery,\n useGetGroupedTasksListQuery,\n useGetOverviewTasksByFoldersQuery,\n useGetQueryTasksFoldersQuery,\n useGetTasksListInfiniteInfiniteQuery,\n} from '@shared/api'\nimport type {\n FolderListItem,\n GetGroupedTasksListArgs,\n EntityGroup,\n QueryTasksFoldersApiArg,\n} from '@shared/api'\nimport { EditorTaskNode, FolderNodeMap, MatchingFolder, TaskNodeMap } from '../types/table'\nimport { useEffect, useMemo, useState } from 'react'\nimport { ExpandedState, SortingState } from '@tanstack/react-table'\nimport { determineLoadingTaskFolders } from '../utils/loadingUtils'\nimport { LoadingTasks } from '../types'\nimport { TasksByFolderMap } from '../utils'\nimport { TableGroupBy } from '../context'\nimport { Filter } from '@ynput/ayon-react-components'\nimport { isGroupId } from '../hooks/useBuildGroupByTableData'\nimport { ProjectTableAttribute } from '../hooks/useAttributesList'\nimport { ProjectTableModulesType } from './useProjectTableModules'\n\ntype useFetchOverviewDataData = {\n foldersMap: FolderNodeMap\n tasksMap: TaskNodeMap\n tasksByFolderMap: TasksByFolderMap\n isLoadingAll: boolean // the whole table is a loading state\n isLoadingMore: boolean // loading more tasks\n loadingTasks: LoadingTasks // show number of loading tasks per folder or root\n fetchNextPage: (value?: string) => void\n reloadTableData: () => void\n}\n\ntype Params = {\n projectName: string\n selectedFolders: string[] // folders selected in the slicer (hierarchy)\n filters: Filter[] // RAW filters (including slicer filters)\n queryFilters: {\n filter: QueryTasksFoldersApiArg['tasksFoldersQuery']['filter']\n filterString?: string\n search: QueryTasksFoldersApiArg['tasksFoldersQuery']['search']\n } // filters from the filters bar or slicer (not hierarchy)\n sorting: SortingState\n groupBy: TableGroupBy | undefined\n taskGroups: EntityGroup[]\n expanded: ExpandedState\n showHierarchy: boolean\n attribFields: ProjectTableAttribute[]\n modules: ProjectTableModulesType\n}\n\nexport const useFetchOverviewData = ({\n projectName,\n selectedFolders, // comes from the slicer\n filters,\n queryFilters,\n sorting,\n groupBy,\n taskGroups = [],\n expanded,\n showHierarchy,\n attribFields,\n modules,\n}: Params): useFetchOverviewDataData => {\n const { getGroupQueries, isLoading: isLoadingModules } = modules\n\n const {\n data: { folders = [] } = {},\n isLoading,\n isFetching: isFetchingFolders,\n isUninitialized: isUninitializedFolders,\n refetch: refetchFolders,\n } = useGetFolderListQuery(\n { projectName: projectName || '', attrib: true },\n { skip: !projectName },\n )\n\n // console.log('Folder count:', folders.length)\n const expandedParentIds = Object.entries(expanded)\n .filter(([, isExpanded]) => isExpanded)\n .filter(([id]) => !isGroupId(id)) // filter out the root folder\n .map(([id]) => id)\n\n const {\n data: expandedFoldersTasks = [],\n isFetching: isFetchingExpandedFoldersTasks,\n refetch: refetchExpandedFoldersTasks,\n isUninitialized: isUninitializedExpandedFoldersTasks,\n } = useGetOverviewTasksByFoldersQuery(\n {\n projectName,\n parentIds: expandedParentIds,\n filter: queryFilters.filterString,\n search: queryFilters.search,\n },\n { skip: !expandedParentIds.length || !showHierarchy },\n )\n // get folders that would be left if the filters were applied for tasks\n const {\n data: foldersByTaskFilter,\n isUninitialized,\n isFetching: isFetchingTasksFolders,\n isUninitialized: isUninitializedTasksFolders,\n refetch: refetchTasksFolders,\n } = useGetQueryTasksFoldersQuery(\n {\n projectName,\n tasksFoldersQuery: { filter: queryFilters.filter, search: queryFilters.search },\n },\n {\n skip: !queryFilters.filterString || !folders.length || !showHierarchy,\n },\n )\n\n // create a map of folders by id for efficient lookups\n const foldersMap: FolderNodeMap = useMemo(() => {\n const map = new Map()\n\n const addExtraDataToFolder = (folder: FolderListItem) => {\n // add any extra data to folder\n const folderWithExtraData: MatchingFolder = {\n ...folder,\n entityId: folder.id,\n entityType: 'folder',\n }\n return folderWithExtraData\n }\n\n // If we have task filters and folders to filter\n if (!isUninitialized && foldersByTaskFilter && folders.length) {\n // Create a set for efficient lookups of filtered folder IDs\n const relevantFolderIds = new Set<string>()\n\n // First pass: Add all folders from the task filter\n for (const folderId of foldersByTaskFilter) {\n relevantFolderIds.add(folderId)\n }\n\n // Create a map of folders by ID for parentId lookups\n const foldersByIdMap = new Map<string, (typeof folders)[0]>()\n for (const folder of folders) {\n foldersByIdMap.set(folder.id as string, folder)\n }\n\n // Second pass: Add all parent folders of filtered folders\n const addParents = (folderId: string) => {\n const folder = foldersByIdMap.get(folderId)\n if (folder && folder.parentId) {\n relevantFolderIds.add(folder.parentId as string)\n addParents(folder.parentId as string)\n }\n }\n\n // Process each filtered folder to add its parents\n for (const folderId of foldersByTaskFilter) {\n addParents(folderId)\n }\n\n // Third pass: Build the final map using only relevant folders\n for (const folder of folders) {\n if (relevantFolderIds.has(folder.id as string)) {\n map.set(folder.id as string, addExtraDataToFolder(folder))\n }\n }\n } else {\n // No filtering, include all folders\n for (const folder of folders) {\n map.set(folder.id as string, addExtraDataToFolder(folder))\n }\n }\n\n // Filter by selected folders if needed\n if (selectedFolders.length) {\n const selectedPaths = selectedFolders\n .map((id) => map.get(id)?.path)\n .filter(Boolean) as string[]\n\n // Create a new map that only contains selected folders and their children\n const filteredMap = new Map()\n\n // For each folder, check if it should be included\n map.forEach((folder, folderId) => {\n const folderPath = folder.path as string\n\n // Include if it's a parent or the folder itself\n const folderPathParts = folderPath.split('/')\n let isParentOrSelf = false\n\n for (let i = 0; i < folderPathParts.length; i++) {\n const partialPath = folderPathParts.slice(0, i + 1).join('/')\n if (selectedPaths.some((p) => p === partialPath)) {\n isParentOrSelf = true\n break\n }\n }\n\n // Include if it's a child of any selected folder\n const isChild = selectedPaths.some((selectedPath) =>\n folderPath.startsWith(selectedPath + '/'),\n )\n\n if (isParentOrSelf || isChild) {\n filteredMap.set(folderId, addExtraDataToFolder(folder))\n }\n })\n\n return filteredMap\n }\n\n return map\n }, [folders, foldersByTaskFilter, isUninitialized, selectedFolders])\n\n // calculate partial loading states\n const loadingTasksForParents = useMemo(() => {\n if (isFetchingExpandedFoldersTasks) {\n return determineLoadingTaskFolders({\n expandedFoldersTasks,\n expandedParentIds,\n foldersMap,\n })\n } else return {}\n }, [isFetchingExpandedFoldersTasks, expandedFoldersTasks, expandedParentIds, foldersMap])\n\n const [tasksListCursor, setTasksListCursor] = useState('')\n\n // every time the sorting changes, reset the cursor\n useEffect(() => {\n if (tasksListCursor) setTasksListCursor('')\n }, [sorting, tasksListCursor])\n\n // Create sort params for infinite query\n const singleSort = { ...sorting[0] }\n // if task list and sorting by name, sort by path instead\n const sortByPath = singleSort?.id === 'name' && !showHierarchy\n const sortId = sortByPath ? 'path' : singleSort?.id === 'subType' ? 'taskType' : singleSort?.id\n const tasksFolderIdsParams = selectedFolders.length ? Array.from(foldersMap.keys()) : undefined\n\n // Use the new infinite query hook for tasks list with correct name\n const {\n data: tasksListInfiniteData,\n isFetching: isFetchingTasksList,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage: isFetchingNextPageTasksList,\n isUninitialized: isUninitializedTasksList,\n refetch: refetchTasksList,\n } = useGetTasksListInfiniteInfiniteQuery(\n {\n projectName,\n filter: queryFilters.filterString,\n search: queryFilters.search,\n folderIds: tasksFolderIdsParams,\n sortBy: sortId ? sortId.replace('_', '.') : undefined,\n desc: !!singleSort?.desc,\n },\n {\n skip: showHierarchy,\n initialPageParam: {\n cursor: '',\n desc: !!singleSort?.desc,\n },\n },\n )\n\n // Extract tasks from infinite query data correctly\n const tasksList = useMemo(() => {\n if (!tasksListInfiniteData?.pages) return []\n return tasksListInfiniteData.pages.flatMap((page) => page.tasks || [])\n }, [tasksListInfiniteData?.pages])\n\n const initGroupPageCounts = useMemo(() => {\n return taskGroups.reduce((acc, group) => {\n acc[group.value] = 1 // initialize each group with 1 count\n return acc\n }, {} as Record<string, number>)\n }, [taskGroups])\n const [groupPageCounts, setGroupPageCounts] = useState<Record<string, number>>({})\n\n // when initGroupPageCounts changes, set it to groupPageCounts\n useEffect(() => {\n const hasInitData = Object.keys(initGroupPageCounts).length > 0\n const hasCurrentData = Object.keys(groupPageCounts).length > 0\n\n if (hasInitData && !hasCurrentData) {\n setGroupPageCounts(initGroupPageCounts)\n }\n }, [initGroupPageCounts])\n\n // for grouped tasks, we fetch all tasks for each group\n // we do this by building a list of groups with filters for that group\n\n // get the data type for the groupBy\n const groupByDataType = useMemo(() => {\n if (!groupBy?.id) return 'string'\n\n const groupById = groupBy.id\n\n // Handle special cases for built-in group types\n if (groupById === 'assignees' || groupById === 'tags') {\n return 'list_of_strings'\n }\n\n // Handle attribute-based grouping (format: \"attrib.attributeName\")\n if (groupById.startsWith('attrib.')) {\n const attributeName = groupById.split('.')[1]\n const attribute = attribFields.find((field) => field.name === attributeName)\n return attribute?.data?.type || 'string'\n }\n\n // Default fallback\n return 'string'\n }, [groupBy?.id, attribFields])\n\n const groupQueries: GetGroupedTasksListArgs['groups'] = useMemo(() => {\n return groupBy\n ? getGroupQueries?.({\n taskGroups,\n filters,\n groupBy,\n groupPageCounts,\n dataType: groupByDataType,\n }) ?? []\n : []\n }, [groupBy, taskGroups, filters, groupPageCounts, groupByDataType, getGroupQueries])\n\n const {\n data: { tasks: groupTasks = [] } = {},\n isFetching: isFetchingGroups,\n isUninitialized: isUninitializedGroupedTasks,\n refetch: refetchGroupedTasks,\n } = useGetGroupedTasksListQuery(\n {\n projectName,\n groups: groupQueries,\n sortBy: sortId ? sortId.replace('_', '.') : undefined,\n desc: !!singleSort?.desc,\n search: queryFilters.search,\n folderIds: tasksFolderIdsParams,\n },\n {\n skip: !groupBy || !groupQueries.length || isLoadingModules,\n },\n )\n\n const handleFetchNextPage = (group?: string) => {\n if (groupBy) {\n if (group && group in groupPageCounts) {\n console.log('fetching next page for group:', group)\n // fetch next page for a specific group by increasing the count in groupPageCounts\n setGroupPageCounts((prevCounts) => {\n const newCounts = { ...prevCounts }\n newCounts[group] = (newCounts[group] || 1) + 1 // increment the count for this group\n return newCounts\n })\n }\n } else if (hasNextPage) {\n console.log('fetching next page')\n fetchNextPage()\n }\n }\n\n // tasksMaps is a map of tasks by task ID\n // tasksByFolderMap is a map of tasks by folder ID\n const { tasksMap, tasksByFolderMap } = useMemo(() => {\n const tasksMap: TaskNodeMap = new Map()\n const tasksByFolderMap: TasksByFolderMap = new Map()\n\n const addExtraDataToTask = (task: EditorTaskNode) => ({\n ...task,\n entityId: task.id,\n entityType: 'task' as const,\n })\n\n // either show the hierarchy or the flat list of tasks\n const allTasks = showHierarchy ? expandedFoldersTasks : groupBy ? groupTasks : tasksList\n for (const task of allTasks) {\n const taskId = task.id as string\n const folderId = task.folderId as string\n\n if (tasksMap.has(taskId)) {\n // merge specific data if the task already exists\n const existingTask = tasksMap.get(taskId) as EditorTaskNode\n const currentTask = addExtraDataToTask(task)\n const mergedTask = {\n ...existingTask,\n ...currentTask,\n groups: [...(existingTask.groups || []), ...(currentTask.groups || [])],\n }\n\n tasksMap.set(taskId, mergedTask)\n } else {\n tasksMap.set(taskId, addExtraDataToTask(task))\n }\n\n if (tasksByFolderMap.has(folderId)) {\n tasksByFolderMap.get(folderId)!.push(taskId)\n } else {\n tasksByFolderMap.set(folderId, [taskId])\n }\n }\n\n return { tasksMap, tasksByFolderMap }\n }, [expandedFoldersTasks, showHierarchy, tasksList, groupTasks])\n\n // reload all data for all queries\n const reloadTableData = () => {\n // only reload if there is data\n if (!isUninitializedFolders) refetchFolders()\n if (!isUninitializedExpandedFoldersTasks) refetchExpandedFoldersTasks()\n if (!isUninitializedTasksFolders) refetchTasksFolders()\n if (!isUninitializedTasksList) refetchTasksList()\n if (!isUninitializedGroupedTasks) refetchGroupedTasks()\n }\n\n return {\n foldersMap: foldersMap,\n tasksMap: tasksMap,\n tasksByFolderMap: tasksByFolderMap,\n isLoadingAll:\n isLoading ||\n isFetchingFolders ||\n (isFetchingTasksList && !isFetchingNextPageTasksList) ||\n isFetchingTasksFolders ||\n isFetchingGroups ||\n isLoadingModules, // these all show a full loading state\n isLoadingMore: isFetchingNextPageTasksList,\n loadingTasks: loadingTasksForParents,\n fetchNextPage: handleFetchNextPage,\n reloadTableData,\n }\n}\n"],"names":["tasksMap","tasksByFolderMap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useFetchOverviewData.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useFetchOverviewData.ts"],"sourcesContent":["import {\n useGetFolderListQuery,\n useGetGroupedTasksListQuery,\n useGetOverviewTasksByFoldersQuery,\n useGetQueryTasksFoldersQuery,\n useGetTasksListInfiniteInfiniteQuery,\n} from '@shared/api'\nimport type {\n FolderListItem,\n GetGroupedTasksListArgs,\n EntityGroup,\n QueryTasksFoldersApiArg,\n} from '@shared/api'\nimport { EditorTaskNode, FolderNodeMap, MatchingFolder, TaskNodeMap } from '../types/table'\nimport { useEffect, useMemo, useState } from 'react'\nimport { ExpandedState, SortingState } from '@tanstack/react-table'\nimport { determineLoadingTaskFolders } from '../utils/loadingUtils'\nimport { LoadingTasks } from '../types'\nimport { TasksByFolderMap } from '../utils'\nimport { TableGroupBy } from '../context'\nimport { Filter } from '@ynput/ayon-react-components'\nimport { isGroupId } from '../hooks/useBuildGroupByTableData'\nimport { ProjectTableAttribute } from '../hooks/useAttributesList'\nimport { ProjectTableModulesType } from './useProjectTableModules'\n\ntype useFetchOverviewDataData = {\n foldersMap: FolderNodeMap\n tasksMap: TaskNodeMap\n tasksByFolderMap: TasksByFolderMap\n isLoadingAll: boolean // the whole table is a loading state\n isLoadingMore: boolean // loading more tasks\n loadingTasks: LoadingTasks // show number of loading tasks per folder or root\n fetchNextPage: (value?: string) => void\n reloadTableData: () => void\n}\n\ntype Params = {\n projectName: string\n selectedFolders: string[] // folders selected in the slicer (hierarchy)\n filters: Filter[] // RAW filters (including slicer filters)\n queryFilters: {\n filter: QueryTasksFoldersApiArg['tasksFoldersQuery']['filter']\n filterString?: string\n search: QueryTasksFoldersApiArg['tasksFoldersQuery']['search']\n } // filters from the filters bar or slicer (not hierarchy)\n sorting: SortingState\n groupBy: TableGroupBy | undefined\n taskGroups: EntityGroup[]\n expanded: ExpandedState\n showHierarchy: boolean\n attribFields: ProjectTableAttribute[]\n modules: ProjectTableModulesType\n}\n\nexport const useFetchOverviewData = ({\n projectName,\n selectedFolders, // comes from the slicer\n filters,\n queryFilters,\n sorting,\n groupBy,\n taskGroups = [],\n expanded,\n showHierarchy,\n attribFields,\n modules,\n}: Params): useFetchOverviewDataData => {\n const { getGroupQueries, isLoading: isLoadingModules } = modules\n\n const {\n data: { folders = [] } = {},\n isLoading,\n isFetching: isFetchingFolders,\n isUninitialized: isUninitializedFolders,\n refetch: refetchFolders,\n } = useGetFolderListQuery(\n { projectName: projectName || '', attrib: true },\n { skip: !projectName },\n )\n\n // console.log('Folder count:', folders.length)\n const expandedParentIds = Object.entries(expanded)\n .filter(([, isExpanded]) => isExpanded)\n .filter(([id]) => !isGroupId(id)) // filter out the root folder\n .map(([id]) => id)\n\n const {\n data: expandedFoldersTasks = [],\n isFetching: isFetchingExpandedFoldersTasks,\n refetch: refetchExpandedFoldersTasks,\n isUninitialized: isUninitializedExpandedFoldersTasks,\n } = useGetOverviewTasksByFoldersQuery(\n {\n projectName,\n parentIds: expandedParentIds,\n filter: queryFilters.filterString,\n search: queryFilters.search,\n },\n { skip: !expandedParentIds.length || !showHierarchy },\n )\n // get folders that would be left if the filters were applied for tasks\n const {\n data: foldersByTaskFilter,\n isUninitialized,\n isFetching: isFetchingTasksFolders,\n isUninitialized: isUninitializedTasksFolders,\n refetch: refetchTasksFolders,\n } = useGetQueryTasksFoldersQuery(\n {\n projectName,\n tasksFoldersQuery: { filter: queryFilters.filter, search: queryFilters.search },\n },\n {\n skip: !queryFilters.filterString || !folders.length || !showHierarchy,\n },\n )\n\n // create a map of folders by id for efficient lookups\n const foldersMap: FolderNodeMap = useMemo(() => {\n const map = new Map()\n\n const addExtraDataToFolder = (folder: FolderListItem) => {\n // add any extra data to folder\n const folderWithExtraData: MatchingFolder = {\n ...folder,\n entityId: folder.id,\n entityType: 'folder',\n }\n return folderWithExtraData\n }\n\n // If we have task filters and folders to filter\n if (!isUninitialized && foldersByTaskFilter && folders.length) {\n // Create a set for efficient lookups of filtered folder IDs\n const relevantFolderIds = new Set<string>()\n\n // First pass: Add all folders from the task filter\n for (const folderId of foldersByTaskFilter) {\n relevantFolderIds.add(folderId)\n }\n\n // Create a map of folders by ID for parentId lookups\n const foldersByIdMap = new Map<string, (typeof folders)[0]>()\n for (const folder of folders) {\n foldersByIdMap.set(folder.id as string, folder)\n }\n\n // Second pass: Add all parent folders of filtered folders\n const addParents = (folderId: string) => {\n const folder = foldersByIdMap.get(folderId)\n if (folder && folder.parentId) {\n relevantFolderIds.add(folder.parentId as string)\n addParents(folder.parentId as string)\n }\n }\n\n // Process each filtered folder to add its parents\n for (const folderId of foldersByTaskFilter) {\n addParents(folderId)\n }\n\n // Third pass: Build the final map using only relevant folders\n for (const folder of folders) {\n if (relevantFolderIds.has(folder.id as string)) {\n map.set(folder.id as string, addExtraDataToFolder(folder))\n }\n }\n } else {\n // No filtering, include all folders\n for (const folder of folders) {\n map.set(folder.id as string, addExtraDataToFolder(folder))\n }\n }\n\n // Filter by selected folders if needed\n if (selectedFolders.length) {\n const selectedPaths = selectedFolders\n .map((id) => map.get(id)?.path)\n .filter(Boolean) as string[]\n\n // Create a new map that only contains selected folders and their children\n const filteredMap = new Map()\n\n // For each folder, check if it should be included\n map.forEach((folder, folderId) => {\n const folderPath = folder.path as string\n\n // Include if it's a parent or the folder itself\n const folderPathParts = folderPath.split('/')\n let isParentOrSelf = false\n\n for (let i = 0; i < folderPathParts.length; i++) {\n const partialPath = folderPathParts.slice(0, i + 1).join('/')\n if (selectedPaths.some((p) => p === partialPath)) {\n isParentOrSelf = true\n break\n }\n }\n\n // Include if it's a child of any selected folder\n const isChild = selectedPaths.some((selectedPath) =>\n folderPath.startsWith(selectedPath + '/'),\n )\n\n if (isParentOrSelf || isChild) {\n filteredMap.set(folderId, addExtraDataToFolder(folder))\n }\n })\n\n return filteredMap\n }\n\n return map\n }, [folders, foldersByTaskFilter, isUninitialized, selectedFolders])\n\n // calculate partial loading states\n const loadingTasksForParents = useMemo(() => {\n if (isFetchingExpandedFoldersTasks) {\n return determineLoadingTaskFolders({\n expandedFoldersTasks,\n expandedParentIds,\n foldersMap,\n })\n } else return {}\n }, [isFetchingExpandedFoldersTasks, expandedFoldersTasks, expandedParentIds, foldersMap])\n\n const [tasksListCursor, setTasksListCursor] = useState('')\n\n // every time the sorting changes, reset the cursor\n useEffect(() => {\n if (tasksListCursor) setTasksListCursor('')\n }, [sorting, tasksListCursor])\n\n // Create sort params for infinite query\n const singleSort = { ...sorting[0] }\n // if task list and sorting by name, sort by path instead\n const sortByPath = singleSort?.id === 'name' && !showHierarchy\n const sortId = sortByPath ? 'path' : singleSort?.id === 'subType' ? 'taskType' : singleSort?.id\n const tasksFolderIdsParams = selectedFolders.length ? Array.from(foldersMap.keys()) : undefined\n\n // Use the new infinite query hook for tasks list with correct name\n const {\n data: tasksListInfiniteData,\n isFetching: isFetchingTasksList,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage: isFetchingNextPageTasksList,\n isUninitialized: isUninitializedTasksList,\n refetch: refetchTasksList,\n } = useGetTasksListInfiniteInfiniteQuery(\n {\n projectName,\n filter: queryFilters.filterString,\n search: queryFilters.search,\n folderIds: tasksFolderIdsParams,\n sortBy: sortId ? sortId.replace('_', '.') : undefined,\n desc: !!singleSort?.desc,\n },\n {\n skip: showHierarchy,\n initialPageParam: {\n cursor: '',\n desc: !!singleSort?.desc,\n },\n },\n )\n\n // Extract tasks from infinite query data correctly\n const tasksList = useMemo(() => {\n if (!tasksListInfiniteData?.pages) return []\n return tasksListInfiniteData.pages.flatMap((page) => page.tasks || [])\n }, [tasksListInfiniteData?.pages])\n\n const initGroupPageCounts = useMemo(() => {\n return taskGroups.reduce((acc, group) => {\n acc[group.value] = 1 // initialize each group with 1 count\n return acc\n }, {} as Record<string, number>)\n }, [taskGroups])\n const [groupPageCounts, setGroupPageCounts] = useState<Record<string, number>>({})\n\n // when initGroupPageCounts changes, set it to groupPageCounts\n useEffect(() => {\n const hasInitData = Object.keys(initGroupPageCounts).length > 0\n const hasCurrentData = Object.keys(groupPageCounts).length > 0\n\n if (hasInitData && !hasCurrentData) {\n setGroupPageCounts(initGroupPageCounts)\n }\n }, [initGroupPageCounts])\n\n // for grouped tasks, we fetch all tasks for each group\n // we do this by building a list of groups with filters for that group\n\n // get the data type for the groupBy\n const groupByDataType = useMemo(() => {\n if (!groupBy?.id) return 'string'\n\n const groupById = groupBy.id\n\n // Handle special cases for built-in group types\n if (groupById === 'assignees' || groupById === 'tags') {\n return 'list_of_strings'\n }\n\n // Handle attribute-based grouping (format: \"attrib.attributeName\")\n if (groupById.startsWith('attrib.')) {\n const attributeName = groupById.split('.')[1]\n const attribute = attribFields.find((field) => field.name === attributeName)\n return attribute?.data?.type || 'string'\n }\n\n // Default fallback\n return 'string'\n }, [groupBy?.id, attribFields])\n\n const groupQueries: GetGroupedTasksListArgs['groups'] = useMemo(() => {\n return groupBy\n ? getGroupQueries?.({\n taskGroups,\n filters,\n groupBy,\n groupPageCounts,\n dataType: groupByDataType,\n }) ?? []\n : []\n }, [groupBy, taskGroups, filters, groupPageCounts, groupByDataType, getGroupQueries])\n\n const {\n data: { tasks: groupTasks = [] } = {},\n isFetching: isFetchingGroups,\n isUninitialized: isUninitializedGroupedTasks,\n refetch: refetchGroupedTasks,\n } = useGetGroupedTasksListQuery(\n {\n projectName,\n groups: groupQueries,\n sortBy: sortId ? sortId.replace('_', '.') : undefined,\n desc: !!singleSort?.desc,\n search: queryFilters.search,\n folderIds: tasksFolderIdsParams,\n },\n {\n skip: !groupBy || !groupQueries.length || isLoadingModules,\n },\n )\n\n const handleFetchNextPage = (group?: string) => {\n if (groupBy) {\n if (group && group in groupPageCounts) {\n console.log('fetching next page for group:', group)\n // fetch next page for a specific group by increasing the count in groupPageCounts\n setGroupPageCounts((prevCounts) => {\n const newCounts = { ...prevCounts }\n newCounts[group] = (newCounts[group] || 1) + 1 // increment the count for this group\n return newCounts\n })\n }\n } else if (hasNextPage) {\n console.log('fetching next page')\n fetchNextPage()\n }\n }\n\n // tasksMaps is a map of tasks by task ID\n // tasksByFolderMap is a map of tasks by folder ID\n const { tasksMap, tasksByFolderMap } = useMemo(() => {\n const tasksMap: TaskNodeMap = new Map()\n const tasksByFolderMap: TasksByFolderMap = new Map()\n\n const addExtraDataToTask = (task: EditorTaskNode) => ({\n ...task,\n entityId: task.id,\n entityType: 'task' as const,\n })\n\n // either show the hierarchy or the flat list of tasks\n const allTasks = showHierarchy ? expandedFoldersTasks : groupBy ? groupTasks : tasksList\n for (const task of allTasks) {\n const taskId = task.id as string\n const folderId = task.folderId as string\n\n if (tasksMap.has(taskId)) {\n // merge specific data if the task already exists\n const existingTask = tasksMap.get(taskId) as EditorTaskNode\n const currentTask = addExtraDataToTask(task)\n const mergedTask = {\n ...existingTask,\n ...currentTask,\n groups: [...(existingTask.groups || []), ...(currentTask.groups || [])],\n }\n\n tasksMap.set(taskId, mergedTask)\n } else {\n tasksMap.set(taskId, addExtraDataToTask(task))\n }\n\n if (tasksByFolderMap.has(folderId)) {\n tasksByFolderMap.get(folderId)!.push(taskId)\n } else {\n tasksByFolderMap.set(folderId, [taskId])\n }\n }\n\n return { tasksMap, tasksByFolderMap }\n }, [expandedFoldersTasks, showHierarchy, tasksList, groupTasks])\n\n // reload all data for all queries\n const reloadTableData = () => {\n // only reload if there is data\n if (!isUninitializedFolders) refetchFolders()\n if (!isUninitializedExpandedFoldersTasks) refetchExpandedFoldersTasks()\n if (!isUninitializedTasksFolders) refetchTasksFolders()\n if (!isUninitializedTasksList) refetchTasksList()\n if (!isUninitializedGroupedTasks) refetchGroupedTasks()\n }\n\n return {\n foldersMap: foldersMap,\n tasksMap: tasksMap,\n tasksByFolderMap: tasksByFolderMap,\n isLoadingAll:\n isLoading ||\n isFetchingFolders ||\n (isFetchingTasksList && !isFetchingNextPageTasksList) ||\n isFetchingTasksFolders ||\n isFetchingGroups ||\n isLoadingModules, // these all show a full loading state\n isLoadingMore: isFetchingNextPageTasksList,\n loadingTasks: loadingTasksForParents,\n fetchNextPage: handleFetchNextPage,\n reloadTableData,\n }\n}\n"],"names":["tasksMap","tasksByFolderMap"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDO,MAAM,uBAAuB,CAAC;AAAA,EACnC;AAAA,EACA;AAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa,CAAC;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAwC;AACtC,QAAM,EAAE,iBAAiB,WAAW,iBAAqB,IAAA;AAEnD,QAAA;AAAA,IACJ,MAAM,EAAE,UAAU,CAAC,EAAA,IAAM,CAAC;AAAA,IAC1B;AAAA,IACA,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,SAAS;AAAA,EAAA,IACP;AAAA,IACF,EAAE,aAAa,eAAe,IAAI,QAAQ,KAAK;AAAA,IAC/C,EAAE,MAAM,CAAC,YAAY;AAAA,EACvB;AAGA,QAAM,oBAAoB,OAAO,QAAQ,QAAQ,EAC9C,OAAO,CAAC,CAAG,EAAA,UAAU,MAAM,UAAU,EACrC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,EAC/B,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE;AAEb,QAAA;AAAA,IACJ,MAAM,uBAAuB,CAAC;AAAA,IAC9B,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,iBAAiB;AAAA,EAAA,IACf;AAAA,IACF;AAAA,MACE;AAAA,MACA,WAAW;AAAA,MACX,QAAQ,aAAa;AAAA,MACrB,QAAQ,aAAa;AAAA,IACvB;AAAA,IACA,EAAE,MAAM,CAAC,kBAAkB,UAAU,CAAC,cAAc;AAAA,EACtD;AAEM,QAAA;AAAA,IACJ,MAAM;AAAA,IACN;AAAA,IACA,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,SAAS;AAAA,EAAA,IACP;AAAA,IACF;AAAA,MACE;AAAA,MACA,mBAAmB,EAAE,QAAQ,aAAa,QAAQ,QAAQ,aAAa,OAAO;AAAA,IAChF;AAAA,IACA;AAAA,MACE,MAAM,CAAC,aAAa,gBAAgB,CAAC,QAAQ,UAAU,CAAC;AAAA,IAAA;AAAA,EAE5D;AAGM,QAAA,aAA4B,QAAQ,MAAM;AACxC,UAAA,0BAAU,IAAI;AAEd,UAAA,uBAAuB,CAAC,WAA2B;AAEvD,YAAM,sBAAsC;AAAA,QAC1C,GAAG;AAAA,QACH,UAAU,OAAO;AAAA,QACjB,YAAY;AAAA,MACd;AACO,aAAA;AAAA,IACT;AAGA,QAAI,CAAC,mBAAmB,uBAAuB,QAAQ,QAAQ;AAEvD,YAAA,wCAAwB,IAAY;AAG1C,iBAAW,YAAY,qBAAqB;AAC1C,0BAAkB,IAAI,QAAQ;AAAA,MAAA;AAI1B,YAAA,qCAAqB,IAAiC;AAC5D,iBAAW,UAAU,SAAS;AACb,uBAAA,IAAI,OAAO,IAAc,MAAM;AAAA,MAAA;AAI1C,YAAA,aAAa,CAAC,aAAqB;AACjC,cAAA,SAAS,eAAe,IAAI,QAAQ;AACtC,YAAA,UAAU,OAAO,UAAU;AACX,4BAAA,IAAI,OAAO,QAAkB;AAC/C,qBAAW,OAAO,QAAkB;AAAA,QAAA;AAAA,MAExC;AAGA,iBAAW,YAAY,qBAAqB;AAC1C,mBAAW,QAAQ;AAAA,MAAA;AAIrB,iBAAW,UAAU,SAAS;AAC5B,YAAI,kBAAkB,IAAI,OAAO,EAAY,GAAG;AAC9C,cAAI,IAAI,OAAO,IAAc,qBAAqB,MAAM,CAAC;AAAA,QAAA;AAAA,MAC3D;AAAA,IACF,OACK;AAEL,iBAAW,UAAU,SAAS;AAC5B,YAAI,IAAI,OAAO,IAAc,qBAAqB,MAAM,CAAC;AAAA,MAAA;AAAA,IAC3D;AAIF,QAAI,gBAAgB,QAAQ;AAC1B,YAAM,gBAAgB,gBACnB,IAAI,CAAC,OAAO;;AAAA,yBAAI,IAAI,EAAE,MAAV,mBAAa;AAAA,OAAI,EAC7B,OAAO,OAAO;AAGX,YAAA,kCAAkB,IAAI;AAGxB,UAAA,QAAQ,CAAC,QAAQ,aAAa;AAChC,cAAM,aAAa,OAAO;AAGpB,cAAA,kBAAkB,WAAW,MAAM,GAAG;AAC5C,YAAI,iBAAiB;AAErB,iBAAS,IAAI,GAAG,IAAI,gBAAgB,QAAQ,KAAK;AACzC,gBAAA,cAAc,gBAAgB,MAAM,GAAG,IAAI,CAAC,EAAE,KAAK,GAAG;AAC5D,cAAI,cAAc,KAAK,CAAC,MAAM,MAAM,WAAW,GAAG;AAC/B,6BAAA;AACjB;AAAA,UAAA;AAAA,QACF;AAIF,cAAM,UAAU,cAAc;AAAA,UAAK,CAAC,iBAClC,WAAW,WAAW,eAAe,GAAG;AAAA,QAC1C;AAEA,YAAI,kBAAkB,SAAS;AAC7B,sBAAY,IAAI,UAAU,qBAAqB,MAAM,CAAC;AAAA,QAAA;AAAA,MACxD,CACD;AAEM,aAAA;AAAA,IAAA;AAGF,WAAA;AAAA,KACN,CAAC,SAAS,qBAAqB,iBAAiB,eAAe,CAAC;AAG7D,QAAA,yBAAyB,QAAQ,MAAM;AAC3C,QAAI,gCAAgC;AAClC,aAAO,4BAA4B;AAAA,QACjC;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACD;AAAA,IACH,cAAc,CAAC;AAAA,KACd,CAAC,gCAAgC,sBAAsB,mBAAmB,UAAU,CAAC;AAExF,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,EAAE;AAGzD,YAAU,MAAM;AACV,QAAA,oCAAoC,EAAE;AAAA,EAAA,GACzC,CAAC,SAAS,eAAe,CAAC;AAG7B,QAAM,aAAa,EAAE,GAAG,QAAQ,CAAC,EAAE;AAEnC,QAAM,cAAa,yCAAY,QAAO,UAAU,CAAC;AACjD,QAAM,SAAS,aAAa,UAAS,yCAAY,QAAO,YAAY,aAAa,yCAAY;AACvF,QAAA,uBAAuB,gBAAgB,SAAS,MAAM,KAAK,WAAW,KAAM,CAAA,IAAI;AAGhF,QAAA;AAAA,IACJ,MAAM;AAAA,IACN,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA,oBAAoB;AAAA,IACpB,iBAAiB;AAAA,IACjB,SAAS;AAAA,EAAA,IACP;AAAA,IACF;AAAA,MACE;AAAA,MACA,QAAQ,aAAa;AAAA,MACrB,QAAQ,aAAa;AAAA,MACrB,WAAW;AAAA,MACX,QAAQ,SAAS,OAAO,QAAQ,KAAK,GAAG,IAAI;AAAA,MAC5C,MAAM,CAAC,EAAC,yCAAY;AAAA,IACtB;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,kBAAkB;AAAA,QAChB,QAAQ;AAAA,QACR,MAAM,CAAC,EAAC,yCAAY;AAAA,MAAA;AAAA,IACtB;AAAA,EAEJ;AAGM,QAAA,YAAY,QAAQ,MAAM;AAC9B,QAAI,EAAC,+DAAuB,OAAO,QAAO,CAAC;AACpC,WAAA,sBAAsB,MAAM,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE;AAAA,EAAA,GACpE,CAAC,+DAAuB,KAAK,CAAC;AAE3B,QAAA,sBAAsB,QAAQ,MAAM;AACxC,WAAO,WAAW,OAAO,CAAC,KAAK,UAAU;AACnC,UAAA,MAAM,KAAK,IAAI;AACZ,aAAA;AAAA,IACT,GAAG,EAA4B;AAAA,EAAA,GAC9B,CAAC,UAAU,CAAC;AACf,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAiC,CAAA,CAAE;AAGjF,YAAU,MAAM;AACd,UAAM,cAAc,OAAO,KAAK,mBAAmB,EAAE,SAAS;AAC9D,UAAM,iBAAiB,OAAO,KAAK,eAAe,EAAE,SAAS;AAEzD,QAAA,eAAe,CAAC,gBAAgB;AAClC,yBAAmB,mBAAmB;AAAA,IAAA;AAAA,EACxC,GACC,CAAC,mBAAmB,CAAC;AAMlB,QAAA,kBAAkB,QAAQ,MAAM;;AAChC,QAAA,EAAC,mCAAS,IAAW,QAAA;AAEzB,UAAM,YAAY,QAAQ;AAGtB,QAAA,cAAc,eAAe,cAAc,QAAQ;AAC9C,aAAA;AAAA,IAAA;AAIL,QAAA,UAAU,WAAW,SAAS,GAAG;AACnC,YAAM,gBAAgB,UAAU,MAAM,GAAG,EAAE,CAAC;AAC5C,YAAM,YAAY,aAAa,KAAK,CAAC,UAAU,MAAM,SAAS,aAAa;AACpE,eAAA,4CAAW,SAAX,mBAAiB,SAAQ;AAAA,IAAA;AAI3B,WAAA;AAAA,EACN,GAAA,CAAC,mCAAS,IAAI,YAAY,CAAC;AAExB,QAAA,eAAkD,QAAQ,MAAM;AACpE,WAAO,WACH,mDAAkB;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,IAAA,OACN,CAAC,IACP,CAAC;AAAA,EAAA,GACJ,CAAC,SAAS,YAAY,SAAS,iBAAiB,iBAAiB,eAAe,CAAC;AAE9E,QAAA;AAAA,IACJ,MAAM,EAAE,OAAO,aAAa,CAAA,MAAO,CAAC;AAAA,IACpC,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,SAAS;AAAA,EAAA,IACP;AAAA,IACF;AAAA,MACE;AAAA,MACA,QAAQ;AAAA,MACR,QAAQ,SAAS,OAAO,QAAQ,KAAK,GAAG,IAAI;AAAA,MAC5C,MAAM,CAAC,EAAC,yCAAY;AAAA,MACpB,QAAQ,aAAa;AAAA,MACrB,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,MAAM,CAAC,WAAW,CAAC,aAAa,UAAU;AAAA,IAAA;AAAA,EAE9C;AAEM,QAAA,sBAAsB,CAAC,UAAmB;AAC9C,QAAI,SAAS;AACP,UAAA,SAAS,SAAS,iBAAiB;AAC7B,gBAAA,IAAI,iCAAiC,KAAK;AAElD,2BAAmB,CAAC,eAAe;AAC3B,gBAAA,YAAY,EAAE,GAAG,WAAW;AAClC,oBAAU,KAAK,KAAK,UAAU,KAAK,KAAK,KAAK;AACtC,iBAAA;AAAA,QAAA,CACR;AAAA,MAAA;AAAA,eAEM,aAAa;AACtB,cAAQ,IAAI,oBAAoB;AAClB,oBAAA;AAAA,IAAA;AAAA,EAElB;AAIA,QAAM,EAAE,UAAU,iBAAiB,IAAI,QAAQ,MAAM;AAC7CA,UAAAA,gCAA4B,IAAI;AAChCC,UAAAA,wCAAyC,IAAI;AAE7C,UAAA,qBAAqB,CAAC,UAA0B;AAAA,MACpD,GAAG;AAAA,MACH,UAAU,KAAK;AAAA,MACf,YAAY;AAAA,IAAA;AAId,UAAM,WAAW,gBAAgB,uBAAuB,UAAU,aAAa;AAC/E,eAAW,QAAQ,UAAU;AAC3B,YAAM,SAAS,KAAK;AACpB,YAAM,WAAW,KAAK;AAElBD,UAAAA,UAAS,IAAI,MAAM,GAAG;AAElB,cAAA,eAAeA,UAAS,IAAI,MAAM;AAClC,cAAA,cAAc,mBAAmB,IAAI;AAC3C,cAAM,aAAa;AAAA,UACjB,GAAG;AAAA,UACH,GAAG;AAAA,UACH,QAAQ,CAAC,GAAI,aAAa,UAAU,CAAA,GAAK,GAAI,YAAY,UAAU,CAAG,CAAA;AAAA,QACxE;AAEAA,kBAAS,IAAI,QAAQ,UAAU;AAAA,MAAA,OAC1B;AACLA,kBAAS,IAAI,QAAQ,mBAAmB,IAAI,CAAC;AAAA,MAAA;AAG3CC,UAAAA,kBAAiB,IAAI,QAAQ,GAAG;AAClCA,0BAAiB,IAAI,QAAQ,EAAG,KAAK,MAAM;AAAA,MAAA,OACtC;AACLA,0BAAiB,IAAI,UAAU,CAAC,MAAM,CAAC;AAAA,MAAA;AAAA,IACzC;AAGF,WAAO,EAAE,UAAAD,WAAU,kBAAAC,kBAAiB;AAAA,KACnC,CAAC,sBAAsB,eAAe,WAAW,UAAU,CAAC;AAG/D,QAAM,kBAAkB,MAAM;AAExB,QAAA,CAAC,uBAAuC,gBAAA;AACxC,QAAA,CAAC,oCAAiE,6BAAA;AAClE,QAAA,CAAC,4BAAiD,qBAAA;AAClD,QAAA,CAAC,yBAA2C,kBAAA;AAC5C,QAAA,CAAC,4BAAiD,qBAAA;AAAA,EACxD;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,cACE,aACA,qBACC,uBAAuB,CAAC,+BACzB,0BACA,oBACA;AAAA;AAAA,IACF,eAAe;AAAA,IACf,cAAc;AAAA,IACd,eAAe;AAAA,IACf;AAAA,EACF;AACF;"}
|
|
@@ -55,6 +55,7 @@ require("../../../api/generated/versions.cjs.js");
|
|
|
55
55
|
require("../../../api/generated/workfiles.cjs.js");
|
|
56
56
|
require("../../../api/generated/ynputCloud.cjs.js");
|
|
57
57
|
require("../../../api/generated/grouping.cjs.js");
|
|
58
|
+
require("../../../api/generated/views.cjs.js");
|
|
58
59
|
require("../../../api/queries/actions/getActions.cjs.js");
|
|
59
60
|
require("../../../api/queries/activities/getActivities.cjs.js");
|
|
60
61
|
require("../../../api/queries/activities/updateActivities.cjs.js");
|
|
@@ -88,6 +89,9 @@ require("../../../api/queries/permissions/getPermissions.cjs.js");
|
|
|
88
89
|
require("../../../api/queries/grouping/getGrouping.cjs.js");
|
|
89
90
|
require("../../../api/queries/versions/updateVersions.cjs.js");
|
|
90
91
|
require("../../../api/queries/products/createProduct.cjs.js");
|
|
92
|
+
require("../../../api/queries/cloud/cloud.cjs.js");
|
|
93
|
+
require("../../../api/queries/views/getViews.cjs.js");
|
|
94
|
+
require("../../../api/queries/views/updateViews.cjs.js");
|
|
91
95
|
require("../../../context/RemoteModulesContext.cjs.js");
|
|
92
96
|
require("../../../../../_virtual/runtime.cjs.js");
|
|
93
97
|
require("../../../../../_virtual/semver.cjs.js");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetGroupedFields.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useGetGroupedFields.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport { ProjectTableAttribute } from '../types'\nimport { useColumnSettingsContext, useProjectTableContext } from '../context'\nimport { getAttributeIcon } from '@shared/util'\nimport { EntityGrouping } from '@shared/api'\n\n// @martastain says list_of_* is a pita to implement, so we are not supporting it for now\nexport const allowedGroupByFields = ['string', 'integer', 'float']\nexport const isAttribGroupable = (\n attrib: ProjectTableAttribute,\n entityType: EntityGrouping['entityType'],\n allowedTypes?: ('string' | 'integer' | 'float')[],\n enumOnly?: boolean,\n) => {\n const typesToCheck = allowedTypes || allowedGroupByFields\n const hasValidType = typesToCheck.includes(attrib.data.type) && attrib.scope?.includes(entityType)\n\n if (!hasValidType) return false\n if (enumOnly) return !!attrib.data.enum && attrib.data.enum.length > 0\n\n return true\n}\n\nexport const useGetGroupedFields = (\n allowedTypes?: ('string' | 'integer' | 'float')[],\n enumOnly?: boolean,\n) => {\n const { columnOrder } = useColumnSettingsContext()\n const { attribFields } = useProjectTableContext()\n\n return useMemo(\n () =>\n [\n {\n value: 'taskType',\n label: 'Task Type',\n icon: getAttributeIcon('task'),\n },\n {\n value: 'assignees',\n label: 'Assignees',\n icon: getAttributeIcon('assignees'),\n },\n {\n value: 'status',\n label: 'Status',\n icon: getAttributeIcon('status'),\n },\n {\n value: 'tags',\n label: 'Tags',\n icon: getAttributeIcon('tags'),\n },\n ...attribFields\n .filter((attrib) => isAttribGroupable(attrib, 'task', allowedTypes, enumOnly))\n .map((field) => ({\n value: 'attrib.' + field.name,\n label: field.data.title || field.name,\n icon: getAttributeIcon(field.name),\n })),\n ].sort((a, b) => {\n const indexA = columnOrder.indexOf(a.value)\n const indexB = columnOrder.indexOf(b.value)\n if (indexA === -1 && indexB === -1) return 0\n if (indexA === -1) return 1\n if (indexB === -1) return -1\n return indexA - indexB\n }),\n [attribFields, columnOrder, allowedTypes, enumOnly],\n )\n}\n"],"names":["useColumnSettingsContext","useProjectTableContext","useMemo","getAttributeIcon"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useGetGroupedFields.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useGetGroupedFields.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport { ProjectTableAttribute } from '../types'\nimport { useColumnSettingsContext, useProjectTableContext } from '../context'\nimport { getAttributeIcon } from '@shared/util'\nimport { EntityGrouping } from '@shared/api'\n\n// @martastain says list_of_* is a pita to implement, so we are not supporting it for now\nexport const allowedGroupByFields = ['string', 'integer', 'float']\nexport const isAttribGroupable = (\n attrib: ProjectTableAttribute,\n entityType: EntityGrouping['entityType'],\n allowedTypes?: ('string' | 'integer' | 'float')[],\n enumOnly?: boolean,\n) => {\n const typesToCheck = allowedTypes || allowedGroupByFields\n const hasValidType = typesToCheck.includes(attrib.data.type) && attrib.scope?.includes(entityType)\n\n if (!hasValidType) return false\n if (enumOnly) return !!attrib.data.enum && attrib.data.enum.length > 0\n\n return true\n}\n\nexport const useGetGroupedFields = (\n allowedTypes?: ('string' | 'integer' | 'float')[],\n enumOnly?: boolean,\n) => {\n const { columnOrder } = useColumnSettingsContext()\n const { attribFields } = useProjectTableContext()\n\n return useMemo(\n () =>\n [\n {\n value: 'taskType',\n label: 'Task Type',\n icon: getAttributeIcon('task'),\n },\n {\n value: 'assignees',\n label: 'Assignees',\n icon: getAttributeIcon('assignees'),\n },\n {\n value: 'status',\n label: 'Status',\n icon: getAttributeIcon('status'),\n },\n {\n value: 'tags',\n label: 'Tags',\n icon: getAttributeIcon('tags'),\n },\n ...attribFields\n .filter((attrib) => isAttribGroupable(attrib, 'task', allowedTypes, enumOnly))\n .map((field) => ({\n value: 'attrib.' + field.name,\n label: field.data.title || field.name,\n icon: getAttributeIcon(field.name),\n })),\n ].sort((a, b) => {\n const indexA = columnOrder.indexOf(a.value)\n const indexB = columnOrder.indexOf(b.value)\n if (indexA === -1 && indexB === -1) return 0\n if (indexA === -1) return 1\n if (indexB === -1) return -1\n return indexA - indexB\n }),\n [attribFields, columnOrder, allowedTypes, enumOnly],\n )\n}\n"],"names":["useColumnSettingsContext","useProjectTableContext","useMemo","getAttributeIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,MAAM,uBAAuB,CAAC,UAAU,WAAW,OAAO;AAC1D,MAAM,oBAAoB,CAC/B,QACA,YACA,cACA,aACG;;AACH,QAAM,eAAe,gBAAgB;AAC/B,QAAA,eAAe,aAAa,SAAS,OAAO,KAAK,IAAI,OAAK,YAAO,UAAP,mBAAc,SAAS;AAEnF,MAAA,CAAC,aAAqB,QAAA;AACtB,MAAA,SAAiB,QAAA,CAAC,CAAC,OAAO,KAAK,QAAQ,OAAO,KAAK,KAAK,SAAS;AAE9D,SAAA;AACT;AAEa,MAAA,sBAAsB,CACjC,cACA,aACG;AACG,QAAA,EAAE,YAAY,IAAIA,+CAAyB;AAC3C,QAAA,EAAE,aAAa,IAAIC,2CAAuB;AAEzC,SAAAC,MAAA;AAAA,IACL,MACE;AAAA,MACE;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAMC,kCAAiB,MAAM;AAAA,MAC/B;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAMA,kCAAiB,WAAW;AAAA,MACpC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAMA,kCAAiB,QAAQ;AAAA,MACjC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAMA,kCAAiB,MAAM;AAAA,MAC/B;AAAA,MACA,GAAG,aACA,OAAO,CAAC,WAAW,kBAAkB,QAAQ,QAAQ,cAAc,QAAQ,CAAC,EAC5E,IAAI,CAAC,WAAW;AAAA,QACf,OAAO,YAAY,MAAM;AAAA,QACzB,OAAO,MAAM,KAAK,SAAS,MAAM;AAAA,QACjC,MAAMA,iBAAAA,iBAAiB,MAAM,IAAI;AAAA,MAAA,EACjC;AAAA,IAAA,EACJ,KAAK,CAAC,GAAG,MAAM;AACf,YAAM,SAAS,YAAY,QAAQ,EAAE,KAAK;AAC1C,YAAM,SAAS,YAAY,QAAQ,EAAE,KAAK;AAC1C,UAAI,WAAW,MAAM,WAAW,GAAW,QAAA;AACvC,UAAA,WAAW,GAAW,QAAA;AACtB,UAAA,WAAW,GAAW,QAAA;AAC1B,aAAO,SAAS;AAAA,IAAA,CACjB;AAAA,IACH,CAAC,cAAc,aAAa,cAAc,QAAQ;AAAA,EACpD;AACF;;;;"}
|
|
@@ -53,6 +53,7 @@ import "../../../api/generated/versions.es.js";
|
|
|
53
53
|
import "../../../api/generated/workfiles.es.js";
|
|
54
54
|
import "../../../api/generated/ynputCloud.es.js";
|
|
55
55
|
import "../../../api/generated/grouping.es.js";
|
|
56
|
+
import "../../../api/generated/views.es.js";
|
|
56
57
|
import "../../../api/queries/actions/getActions.es.js";
|
|
57
58
|
import "../../../api/queries/activities/getActivities.es.js";
|
|
58
59
|
import "../../../api/queries/activities/updateActivities.es.js";
|
|
@@ -86,6 +87,9 @@ import "../../../api/queries/permissions/getPermissions.es.js";
|
|
|
86
87
|
import "../../../api/queries/grouping/getGrouping.es.js";
|
|
87
88
|
import "../../../api/queries/versions/updateVersions.es.js";
|
|
88
89
|
import "../../../api/queries/products/createProduct.es.js";
|
|
90
|
+
import "../../../api/queries/cloud/cloud.es.js";
|
|
91
|
+
import "../../../api/queries/views/getViews.es.js";
|
|
92
|
+
import "../../../api/queries/views/updateViews.es.js";
|
|
89
93
|
import "../../../context/RemoteModulesContext.es.js";
|
|
90
94
|
import "../../../../../_virtual/runtime.es.js";
|
|
91
95
|
import "../../../../../_virtual/semver.es.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetGroupedFields.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useGetGroupedFields.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport { ProjectTableAttribute } from '../types'\nimport { useColumnSettingsContext, useProjectTableContext } from '../context'\nimport { getAttributeIcon } from '@shared/util'\nimport { EntityGrouping } from '@shared/api'\n\n// @martastain says list_of_* is a pita to implement, so we are not supporting it for now\nexport const allowedGroupByFields = ['string', 'integer', 'float']\nexport const isAttribGroupable = (\n attrib: ProjectTableAttribute,\n entityType: EntityGrouping['entityType'],\n allowedTypes?: ('string' | 'integer' | 'float')[],\n enumOnly?: boolean,\n) => {\n const typesToCheck = allowedTypes || allowedGroupByFields\n const hasValidType = typesToCheck.includes(attrib.data.type) && attrib.scope?.includes(entityType)\n\n if (!hasValidType) return false\n if (enumOnly) return !!attrib.data.enum && attrib.data.enum.length > 0\n\n return true\n}\n\nexport const useGetGroupedFields = (\n allowedTypes?: ('string' | 'integer' | 'float')[],\n enumOnly?: boolean,\n) => {\n const { columnOrder } = useColumnSettingsContext()\n const { attribFields } = useProjectTableContext()\n\n return useMemo(\n () =>\n [\n {\n value: 'taskType',\n label: 'Task Type',\n icon: getAttributeIcon('task'),\n },\n {\n value: 'assignees',\n label: 'Assignees',\n icon: getAttributeIcon('assignees'),\n },\n {\n value: 'status',\n label: 'Status',\n icon: getAttributeIcon('status'),\n },\n {\n value: 'tags',\n label: 'Tags',\n icon: getAttributeIcon('tags'),\n },\n ...attribFields\n .filter((attrib) => isAttribGroupable(attrib, 'task', allowedTypes, enumOnly))\n .map((field) => ({\n value: 'attrib.' + field.name,\n label: field.data.title || field.name,\n icon: getAttributeIcon(field.name),\n })),\n ].sort((a, b) => {\n const indexA = columnOrder.indexOf(a.value)\n const indexB = columnOrder.indexOf(b.value)\n if (indexA === -1 && indexB === -1) return 0\n if (indexA === -1) return 1\n if (indexB === -1) return -1\n return indexA - indexB\n }),\n [attribFields, columnOrder, allowedTypes, enumOnly],\n )\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useGetGroupedFields.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useGetGroupedFields.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport { ProjectTableAttribute } from '../types'\nimport { useColumnSettingsContext, useProjectTableContext } from '../context'\nimport { getAttributeIcon } from '@shared/util'\nimport { EntityGrouping } from '@shared/api'\n\n// @martastain says list_of_* is a pita to implement, so we are not supporting it for now\nexport const allowedGroupByFields = ['string', 'integer', 'float']\nexport const isAttribGroupable = (\n attrib: ProjectTableAttribute,\n entityType: EntityGrouping['entityType'],\n allowedTypes?: ('string' | 'integer' | 'float')[],\n enumOnly?: boolean,\n) => {\n const typesToCheck = allowedTypes || allowedGroupByFields\n const hasValidType = typesToCheck.includes(attrib.data.type) && attrib.scope?.includes(entityType)\n\n if (!hasValidType) return false\n if (enumOnly) return !!attrib.data.enum && attrib.data.enum.length > 0\n\n return true\n}\n\nexport const useGetGroupedFields = (\n allowedTypes?: ('string' | 'integer' | 'float')[],\n enumOnly?: boolean,\n) => {\n const { columnOrder } = useColumnSettingsContext()\n const { attribFields } = useProjectTableContext()\n\n return useMemo(\n () =>\n [\n {\n value: 'taskType',\n label: 'Task Type',\n icon: getAttributeIcon('task'),\n },\n {\n value: 'assignees',\n label: 'Assignees',\n icon: getAttributeIcon('assignees'),\n },\n {\n value: 'status',\n label: 'Status',\n icon: getAttributeIcon('status'),\n },\n {\n value: 'tags',\n label: 'Tags',\n icon: getAttributeIcon('tags'),\n },\n ...attribFields\n .filter((attrib) => isAttribGroupable(attrib, 'task', allowedTypes, enumOnly))\n .map((field) => ({\n value: 'attrib.' + field.name,\n label: field.data.title || field.name,\n icon: getAttributeIcon(field.name),\n })),\n ].sort((a, b) => {\n const indexA = columnOrder.indexOf(a.value)\n const indexB = columnOrder.indexOf(b.value)\n if (indexA === -1 && indexB === -1) return 0\n if (indexA === -1) return 1\n if (indexB === -1) return -1\n return indexA - indexB\n }),\n [attribFields, columnOrder, allowedTypes, enumOnly],\n )\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,MAAM,uBAAuB,CAAC,UAAU,WAAW,OAAO;AAC1D,MAAM,oBAAoB,CAC/B,QACA,YACA,cACA,aACG;;AACH,QAAM,eAAe,gBAAgB;AAC/B,QAAA,eAAe,aAAa,SAAS,OAAO,KAAK,IAAI,OAAK,YAAO,UAAP,mBAAc,SAAS;AAEnF,MAAA,CAAC,aAAqB,QAAA;AACtB,MAAA,SAAiB,QAAA,CAAC,CAAC,OAAO,KAAK,QAAQ,OAAO,KAAK,KAAK,SAAS;AAE9D,SAAA;AACT;AAEa,MAAA,sBAAsB,CACjC,cACA,aACG;AACG,QAAA,EAAE,YAAY,IAAI,yBAAyB;AAC3C,QAAA,EAAE,aAAa,IAAI,uBAAuB;AAEzC,SAAA;AAAA,IACL,MACE;AAAA,MACE;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM,iBAAiB,MAAM;AAAA,MAC/B;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM,iBAAiB,WAAW;AAAA,MACpC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM,iBAAiB,QAAQ;AAAA,MACjC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM,iBAAiB,MAAM;AAAA,MAC/B;AAAA,MACA,GAAG,aACA,OAAO,CAAC,WAAW,kBAAkB,QAAQ,QAAQ,cAAc,QAAQ,CAAC,EAC5E,IAAI,CAAC,WAAW;AAAA,QACf,OAAO,YAAY,MAAM;AAAA,QACzB,OAAO,MAAM,KAAK,SAAS,MAAM;AAAA,QACjC,MAAM,iBAAiB,MAAM,IAAI;AAAA,MAAA,EACjC;AAAA,IAAA,EACJ,KAAK,CAAC,GAAG,MAAM;AACf,YAAM,SAAS,YAAY,QAAQ,EAAE,KAAK;AAC1C,YAAM,SAAS,YAAY,QAAQ,EAAE,KAAK;AAC1C,UAAI,WAAW,MAAM,WAAW,GAAW,QAAA;AACvC,UAAA,WAAW,GAAW,QAAA;AACtB,UAAA,WAAW,GAAW,QAAA;AAC1B,aAAO,SAAS;AAAA,IAAA,CACjB;AAAA,IACH,CAAC,cAAc,aAAa,cAAc,QAAQ;AAAA,EACpD;AACF;"}
|