@ynput/ayon-frontend-shared 0.2.15 → 0.2.17
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 +12 -10
- package/dist/DetailsPanel.cjs.js.map +1 -1
- package/dist/DetailsPanel.es.js +12 -10
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/ProjectTreeTable.cjs.js +71 -34
- package/dist/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/ProjectTreeTable.es.js +55 -18
- package/dist/ProjectTreeTable.es.js.map +1 -1
- package/dist/_virtual/index.cjs10.js +5 -3
- package/dist/_virtual/index.cjs10.js.map +1 -1
- package/dist/_virtual/index.cjs4.js +4 -4
- package/dist/_virtual/index.cjs5.js +4 -4
- package/dist/_virtual/index.cjs6.js +2 -2
- package/dist/_virtual/index.cjs7.js +3 -5
- package/dist/_virtual/index.cjs7.js.map +1 -1
- package/dist/_virtual/index.es10.js +5 -2
- package/dist/_virtual/index.es10.js.map +1 -1
- package/dist/_virtual/index.es4.js +4 -4
- package/dist/_virtual/index.es5.js +4 -4
- package/dist/_virtual/index.es6.js +2 -2
- package/dist/_virtual/index.es7.js +2 -5
- package/dist/_virtual/index.es7.js.map +1 -1
- package/dist/api.cjs.js +6 -1
- package/dist/api.cjs.js.map +1 -1
- package/dist/api.es.js +8 -3
- package/dist/api.es.js.map +1 -1
- package/dist/components.cjs.js +3 -0
- package/dist/components.cjs.js.map +1 -1
- package/dist/components.es.js +3 -0
- package/dist/components.es.js.map +1 -1
- package/dist/index.cjs.js +9 -7
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +9 -7
- package/dist/index.es.js.map +1 -1
- package/dist/node_modules/graphql-request/build/legacy/helpers/analyzeDocument.cjs.js +1 -2
- package/dist/node_modules/graphql-request/build/legacy/helpers/analyzeDocument.cjs.js.map +1 -1
- package/dist/node_modules/graphql-request/build/legacy/helpers/analyzeDocument.es.js +1 -2
- package/dist/node_modules/graphql-request/build/legacy/helpers/analyzeDocument.es.js.map +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
- package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
- package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
- package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
- package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/index.es.js +1 -1
- package/dist/shared/src/api/generated/graphql.cjs.js +24 -0
- package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.es.js +24 -0
- package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
- package/dist/shared/src/api/generated/grouping.cjs.js +18 -0
- package/dist/shared/src/api/generated/grouping.cjs.js.map +1 -0
- package/dist/shared/src/api/generated/grouping.es.js +18 -0
- package/dist/shared/src/api/generated/grouping.es.js.map +1 -0
- package/dist/shared/src/api/generated/tasks.cjs.js +0 -8
- package/dist/shared/src/api/generated/tasks.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/tasks.es.js +0 -8
- package/dist/shared/src/api/generated/tasks.es.js.map +1 -1
- 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/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 +2 -0
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +2 -0
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +2 -0
- package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/updateEntity.es.js +2 -0
- 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 +47 -0
- package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js.map +1 -0
- package/dist/shared/src/api/queries/grouping/getGrouping.es.js +47 -0
- package/dist/shared/src/api/queries/grouping/getGrouping.es.js.map +1 -0
- package/dist/shared/src/api/queries/overview/getOverview.cjs.js +4 -5
- package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/overview/getOverview.es.js +4 -5
- package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +2 -0
- package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.es.js +2 -0
- 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/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 +2 -0
- package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/users/getUsers.es.js +2 -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/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/AttributeEditor/AttributeEditor.cjs.js +2 -2
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +2 -2
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
- package/dist/shared/src/components/Badge/Badge.cjs.js +31 -0
- package/dist/shared/src/components/Badge/Badge.cjs.js.map +1 -0
- package/dist/shared/src/components/Badge/Badge.es.js +31 -0
- package/dist/shared/src/components/Badge/Badge.es.js.map +1 -0
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +2 -0
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +2 -0
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js +2 -0
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js +2 -0
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js.map +1 -1
- package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js +9 -7
- package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js +9 -7
- package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnItem.cjs.js +2 -0
- package/dist/shared/src/components/ProjectTableSettings/ColumnItem.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnItem.es.js +2 -0
- package/dist/shared/src/components/ProjectTableSettings/ColumnItem.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +5 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +5 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +83 -13
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +83 -13
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.cjs.js +2 -0
- package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.es.js +2 -0
- package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.es.js.map +1 -1
- package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.cjs.js +5 -1
- package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.es.js +5 -1
- package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.es.js.map +1 -1
- package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js +5 -5
- package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.styled.es.js +5 -5
- package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.styled.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +2 -0
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +2 -0
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +99 -86
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +99 -86
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +93 -24
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +94 -25
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.styled.cjs.js +4 -0
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.styled.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.styled.es.js +4 -0
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.styled.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +9 -7
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +9 -7
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +2 -0
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +2 -0
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js +27 -6
- package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js.map +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js +27 -6
- package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +222 -19
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +223 -20
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
- package/dist/shared/src/components/Watchers/Watchers.cjs.js +2 -0
- package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
- package/dist/shared/src/components/Watchers/Watchers.es.js +2 -0
- package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +9 -7
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +9 -7
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.cjs.js +2 -0
- package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.es.js +2 -0
- package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +9 -7
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +9 -7
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
- package/dist/shared/src/containers/ContextMenu/ContextMenuItem.cjs.js +22 -0
- package/dist/shared/src/containers/ContextMenu/ContextMenuItem.cjs.js.map +1 -1
- package/dist/shared/src/containers/ContextMenu/ContextMenuItem.es.js +22 -0
- package/dist/shared/src/containers/ContextMenu/ContextMenuItem.es.js.map +1 -1
- package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.cjs.js +26 -7
- package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.es.js +26 -7
- package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +12 -10
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +12 -10
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +19 -17
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +19 -17
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +9 -7
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +9 -7
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +8 -6
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +8 -6
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +2 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +2 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +2 -0
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +2 -0
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.cjs.js +8 -1
- package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.es.js +9 -2
- package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js +9 -0
- package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.es.js +10 -1
- package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +2 -0
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js +2 -0
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +2 -0
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +2 -0
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +40 -34
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +41 -35
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +7 -0
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +7 -0
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +9 -8
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +9 -8
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +8 -7
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +8 -7
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +11 -6
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +11 -6
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js +1 -174
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js +2 -175
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +212 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +212 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +2 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +2 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +1 -161
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +2 -162
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +191 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +191 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js +1 -79
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.es.js +2 -80
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js +84 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js +84 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js +1 -277
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js +2 -278
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +282 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +282 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +2 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +2 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +85 -34
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +86 -35
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +26 -13
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +26 -13
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.cjs.js +24 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.es.js +24 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +16 -9
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +16 -9
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useEntitiesMap.cjs.js +17 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useEntitiesMap.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useEntitiesMap.es.js +17 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useEntitiesMap.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useExpandedState.cjs.js +30 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useExpandedState.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useExpandedState.es.js +30 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useExpandedState.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +363 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +363 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js +16 -12
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js +16 -13
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +72 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +72 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js +82 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js +82 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/{context/ProjectTableModulesContext.cjs.js → hooks/useProjectTableModules.cjs.js} +22 -23
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/{context/ProjectTableModulesContext.es.js → hooks/useProjectTableModules.es.js} +22 -23
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +41 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +41 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useScopedAttributeFields.cjs.js +19 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useScopedAttributeFields.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useScopedAttributeFields.es.js +19 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useScopedAttributeFields.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.cjs.js +26 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.es.js +26 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +7 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +7 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +15 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +15 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/errorExtraction.cjs.js +8 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/errorExtraction.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/errorExtraction.es.js +8 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/errorExtraction.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/localStorageKeys.cjs.js +7 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/localStorageKeys.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/localStorageKeys.es.js +7 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/localStorageKeys.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.cjs.js +0 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.es.js +0 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js +2 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.es.js +2 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +0 -8
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +0 -8
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +10 -8
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +10 -8
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
- package/dist/shared/src/context/AddonProjectContext.cjs.js +2 -0
- package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
- package/dist/shared/src/context/AddonProjectContext.es.js +2 -0
- package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js +2 -0
- package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.es.js +2 -0
- package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
- package/dist/shared/src/context/PowerpackContext.cjs.js +122 -17
- package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
- package/dist/shared/src/context/PowerpackContext.es.js +123 -18
- package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.cjs.js +7 -1
- package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.es.js +7 -1
- package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
- package/dist/shared/src/hooks/useActionTriggers.cjs.js +2 -0
- package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useActionTriggers.es.js +2 -0
- package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js +2 -0
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.es.js +2 -0
- package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
- package/dist/shared/src/hooks/useLoadModule.cjs.js +11 -5
- package/dist/shared/src/hooks/useLoadModule.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useLoadModule.es.js +11 -5
- package/dist/shared/src/hooks/useLoadModule.es.js.map +1 -1
- package/dist/shared/src/hooks/useScopedStatuses.cjs.js +2 -0
- package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useScopedStatuses.es.js +2 -0
- package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +2 -0
- package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.es.js +2 -0
- package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
- package/dist/types/api/generated/graphql.d.ts +33 -38
- package/dist/types/api/generated/grouping.d.ts +40 -0
- package/dist/types/api/generated/index.d.ts +3 -1
- package/dist/types/api/generated/tasks.d.ts +8 -33
- package/dist/types/api/queries/activities/getActivities.d.ts +4 -0
- package/dist/types/api/queries/activities/updateActivities.d.ts +8 -0
- package/dist/types/api/queries/entities/getEntity.d.ts +4 -0
- package/dist/types/api/queries/entities/getEntityPanel.d.ts +4 -0
- package/dist/types/api/queries/entities/updateEntity.d.ts +4 -0
- package/dist/types/api/queries/entityLists/getLists.d.ts +4 -0
- package/dist/types/api/queries/grouping/getGrouping.d.ts +137 -0
- package/dist/types/api/queries/grouping/index.d.ts +1 -0
- package/dist/types/api/queries/index.d.ts +1 -0
- package/dist/types/api/queries/overview/getOverview.d.ts +5 -133
- package/dist/types/api/queries/project/getProject.d.ts +2 -2
- package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +4 -0
- package/dist/types/api/queries/users/getUsers.d.ts +4 -0
- package/dist/types/components/Badge/Badge.d.ts +10 -0
- package/dist/types/components/Badge/index.d.ts +1 -0
- package/dist/types/components/ProjectTableSettings/ColumnItem.d.ts +1 -0
- package/dist/types/components/ProjectTableSettings/ProjectTableSettings.d.ts +1 -1
- package/dist/types/components/ProjectTableSettings/SortableColumnItem.d.ts +1 -0
- package/dist/types/components/ReviewableProgressCard/ReviewableProgressCard.d.ts +1 -1
- package/dist/types/components/ReviewablesList/ReviewablesUpload.d.ts +19 -3
- package/dist/types/components/SettingsPanel/SettingsPanelItemTemplate.d.ts +1 -0
- package/dist/types/components/index.d.ts +1 -0
- package/dist/types/containers/ContextMenu/ContextMenuItem.d.ts +4 -0
- package/dist/types/containers/ContextMenu/useCreateContextMenu.d.ts +2 -1
- package/dist/types/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +1 -5
- package/dist/types/containers/ProjectTreeTable/components/GroupSettingsFallback.d.ts +9 -2
- package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +16 -16
- package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsProvider.d.ts +9 -0
- package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +7 -52
- package/dist/types/containers/ProjectTreeTable/context/ProjectTableProvider.d.ts +59 -0
- package/dist/types/containers/ProjectTreeTable/context/SelectedRowsContext.d.ts +3 -8
- package/dist/types/containers/ProjectTreeTable/context/SelectedRowsProvider.d.ts +6 -0
- package/dist/types/containers/ProjectTreeTable/context/SelectionCellsContext.d.ts +2 -4
- package/dist/types/containers/ProjectTreeTable/context/SelectionCellsProvider.d.ts +4 -0
- package/dist/types/containers/ProjectTreeTable/context/index.d.ts +4 -2
- package/dist/types/containers/ProjectTreeTable/hooks/index.d.ts +14 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.d.ts +7 -3
- package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +13 -2
- package/dist/types/containers/ProjectTreeTable/hooks/useColumnSorting.d.ts +12 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useEntitiesMap.d.ts +7 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useExpandedState.d.ts +11 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +38 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useGetEntityTypeData.d.ts +2 -2
- package/dist/types/containers/ProjectTreeTable/hooks/useGetGroupedFields.d.ts +9 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useGetTaskGroups.d.ts +10 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useProjectTableModules.d.ts +25 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useQueryFilters.d.ts +14 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useScopedAttributeFields.d.ts +10 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useSelectedFolders.d.ts +10 -0
- package/dist/types/containers/ProjectTreeTable/index.d.ts +2 -14
- package/dist/types/containers/ProjectTreeTable/types/index.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +46 -0
- package/dist/types/containers/ProjectTreeTable/utils/errorExtraction.d.ts +4 -0
- package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +2 -0
- package/dist/types/containers/ProjectTreeTable/utils/localStorageKeys.d.ts +4 -0
- package/dist/types/containers/ProjectTreeTable/widgets/GroupHeaderWidget.d.ts +2 -1
- package/dist/types/context/PowerpackContext.d.ts +2 -1
- package/dist/types/hooks/useLoadModule.d.ts +2 -1
- package/dist/types/utils/extractVersionFromFilename.d.ts +5 -0
- package/package.json +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.cjs.js.map +0 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.es.js.map +0 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableSelectionContext.cjs.js +0 -33
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableSelectionContext.cjs.js.map +0 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableSelectionContext.es.js +0 -33
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableSelectionContext.es.js.map +0 -1
- package/dist/types/containers/ProjectTreeTable/context/ProjectTableModulesContext.d.ts +0 -12
- package/dist/types/containers/ProjectTreeTable/context/ProjectTableSelectionContext.d.ts +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleFormDialog.es.js","sources":["../../../../../src/components/SimpleFormDialog/SimpleFormDialog.tsx"],"sourcesContent":["import styled from 'styled-components'\nimport React, { useState, useEffect } from 'react'\nimport ReactMarkdown from 'react-markdown'\nimport {\n ScrollPanel,\n Button,\n Spacer,\n Dialog,\n FormLayout,\n FormRow,\n InputNumber,\n InputText,\n InputSwitch,\n Dropdown,\n} from '@ynput/ayon-react-components'\n\nimport type { SimpleFormField } from '@shared/api'\n\nexport type SimpleFormValue = string | number | boolean | string[] | null | undefined\nexport type SimpleFormValueDict = Record<string, SimpleFormValue>\n\nconst getDefaults = (fields: SimpleFormField[], values: SimpleFormValueDict) => {\n const defaults: SimpleFormValueDict = {}\n fields.forEach((field) => {\n if (field.name in values) {\n defaults[field.name] = values[field.name]\n } else if (field.value) {\n defaults[field.name] = field.value\n } else if (field.type === 'boolean') {\n defaults[field.name] = false\n } else if (field.type === 'integer') {\n defaults[field.name] = 0\n } else if (field.type === 'float') {\n defaults[field.name] = 0.0\n } else if (field.type === 'text') {\n defaults[field.name] = ''\n } else if (field.type === 'multiselect') {\n defaults[field.name] = []\n }\n })\n return defaults\n}\n\nconst LabelContainer = styled.div`\n &.normal {\n // maybe something here\n }\n\n &.info,\n &.warning,\n &.error {\n padding: 0.5rem;\n text-align: center;\n font-weight: bold;\n margin: 1rem 0;\n }\n\n &.info {\n background-color: var(--md-sys-color-on-secondary-dark);\n }\n &.warning {\n background-color: var(--md-sys-color-warning-container-dark);\n }\n &.error {\n background-color: var(--md-sys-color-on-error-dark);\n }\n`\n\ntype FormLabelProps = {\n field: SimpleFormField\n}\n\nconst FormLabel = ({ field }: FormLabelProps) => {\n const text = typeof field.value === 'string' ? field.value : 'Invalid label value'\n\n return (\n <LabelContainer className={field.highlight || 'normal'}>\n <ReactMarkdown>{text}</ReactMarkdown>\n </LabelContainer>\n )\n}\n\ntype FormFieldProps = {\n field: SimpleFormField\n value: SimpleFormValue\n onChange: (value: SimpleFormValue) => void\n}\n\nconst FormField = ({ field, value, onChange }: FormFieldProps) => {\n if (field.type === 'text') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <InputText\n value={parsedValue}\n onChange={(e) => onChange(e.target.value)}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'boolean') {\n const parsedValue = typeof value === 'boolean' ? value : false\n\n const handleCheckboxEvent = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement>,\n ) => {\n if ('target' in event && 'checked' in event.target) {\n onChange((event.target as HTMLInputElement).checked)\n }\n }\n\n return <InputSwitch checked={parsedValue} onChange={handleCheckboxEvent} />\n }\n if (field.type === 'integer') {\n const parsedValue = typeof value === 'number' ? value : 0\n return (\n <InputNumber\n value={parsedValue}\n onChange={(e) => onChange(parseInt(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'float') {\n const parsedValue = typeof value === 'number' ? value : 0.0\n return (\n <InputNumber\n type=\"number\"\n value={parsedValue}\n onChange={(e) => onChange(parseFloat(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n\n if (field.type === 'select') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <Dropdown\n widthExpand\n options={field.options || []}\n value={parsedValue ? [parsedValue] : []}\n onSelectionChange={(e) => onChange(e[0])}\n className={`form-field`}\n multiSelect={false}\n />\n )\n } // Handle select\n\n if (field.type === 'multiselect') {\n const parsedValue = Array.isArray(value) ? value : []\n return (\n <Dropdown\n widthExpand\n options={field.options || []}\n value={parsedValue}\n onSelectionChange={(e) => onChange(e)}\n className={`form-field`}\n multiSelect={true}\n />\n )\n }\n\n}\n\nexport interface SimpleFormDialogProps {\n title: string\n fields: SimpleFormField[]\n values?: SimpleFormValueDict\n submitLabel?: string\n cancelLabel?: string\n submitIcon?: string\n cancelIcon?: string\n onClose: () => void\n onSubmit: (values: SimpleFormValueDict) => void\n isOpen: boolean\n}\n\nexport const SimpleFormDialog = ({\n fields,\n values,\n onClose,\n onSubmit,\n isOpen,\n title,\n submitLabel,\n cancelLabel,\n submitIcon,\n cancelIcon,\n}: SimpleFormDialogProps) => {\n const [formData, setFormData] = useState<SimpleFormValueDict | null>(null)\n\n useEffect(() => {\n if (isOpen) {\n const defaults = getDefaults(fields, values || {})\n setFormData(defaults)\n }\n }, [isOpen, fields, values])\n\n if (!isOpen) return null\n if (!formData) return null\n\n const footer = (\n <div style={{ display: 'flex', flexDirection: 'row', gap: 8 }}>\n <Spacer />\n {cancelLabel && (\n <Button onClick={() => onClose()} label={cancelLabel} icon={cancelIcon} />\n )}\n {submitLabel && (\n <Button\n onClick={() => onSubmit(formData)}\n label={submitLabel}\n icon={submitIcon}\n variant=\"filled\"\n />\n )}\n </div>\n )\n\n return (\n <Dialog\n isOpen={isOpen}\n onClose={onClose}\n header={title}\n footer={footer}\n style={{ minHeight: 500, minWidth: 600 }}\n >\n <FormLayout style={{ width: '95%' }}>\n {fields.map((field: SimpleFormField) => {\n if (field.type === 'label') {\n return <FormLabel key={field.name} field={field} />\n }\n\n return (\n <FormRow key={field.name} label={field.label || ''}>\n <FormField\n field={field}\n value={formData[field.name]}\n onChange={(value) => {\n setFormData((prev) => ({\n ...prev,\n [field.name]: value,\n }))\n }}\n />\n </FormRow>\n )\n })}\n </FormLayout>\n </Dialog>\n )\n}\n"],"names":["jsx","jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SimpleFormDialog.es.js","sources":["../../../../../src/components/SimpleFormDialog/SimpleFormDialog.tsx"],"sourcesContent":["import styled from 'styled-components'\nimport React, { useState, useEffect } from 'react'\nimport ReactMarkdown from 'react-markdown'\nimport {\n Button,\n Spacer,\n Dialog,\n FormLayout,\n FormRow,\n InputNumber,\n InputText,\n InputSwitch,\n Dropdown,\n DefaultItemTemplate,\n} from '@ynput/ayon-react-components'\nimport { Badge } from '@shared/components'\n\nimport type { FormSelectOption, SimpleFormField } from '@shared/api'\n\nexport type SimpleFormValue = string | number | boolean | string[] | null | undefined\nexport type SimpleFormValueDict = Record<string, SimpleFormValue>\n\nconst getDefaults = (fields: SimpleFormField[], values: SimpleFormValueDict) => {\n const defaults: SimpleFormValueDict = {}\n fields.forEach((field) => {\n if (field.name in values) {\n defaults[field.name] = values[field.name]\n } else if (field.value) {\n defaults[field.name] = field.value\n } else if (field.type === 'boolean') {\n defaults[field.name] = false\n } else if (field.type === 'integer') {\n defaults[field.name] = 0\n } else if (field.type === 'float') {\n defaults[field.name] = 0.0\n } else if (field.type === 'text') {\n defaults[field.name] = ''\n } else if (field.type === 'multiselect') {\n defaults[field.name] = []\n }\n })\n return defaults\n}\n\nconst LabelContainer = styled.div`\n &.normal {\n // maybe something here\n }\n\n &.info,\n &.warning,\n &.error {\n padding: 0.5rem;\n text-align: center;\n font-weight: bold;\n margin: 1rem 0;\n }\n\n &.info {\n background-color: var(--md-sys-color-on-secondary-dark);\n }\n &.warning {\n background-color: var(--md-sys-color-warning-container-dark);\n }\n &.error {\n background-color: var(--md-sys-color-on-error-dark);\n }\n`\n\ntype FormLabelProps = {\n field: SimpleFormField\n}\n\nconst FormLabel = ({ field }: FormLabelProps) => {\n const text = typeof field.value === 'string' ? field.value : 'Invalid label value'\n\n return (\n <LabelContainer className={field.highlight || 'normal'}>\n <ReactMarkdown>{text}</ReactMarkdown>\n </LabelContainer>\n )\n}\n\ntype FormFieldProps = {\n field: SimpleFormField\n value: SimpleFormValue\n onChange: (value: SimpleFormValue) => void\n}\n\nconst DropdownItemTemplate = (option: FormSelectOption) => {\n const endContent = (\n <>\n <div style={{ flex: 1 }} />\n {option.badges && option.badges.map((badge, index) => <Badge key={index}>{badge}</Badge>)}\n </>\n )\n return (\n <DefaultItemTemplate\n option={option}\n dataKey={'value'}\n labelKey={'label'}\n value={[option.value]}\n endContent={endContent}\n />\n )\n}\n\nconst FormField = ({ field, value, onChange }: FormFieldProps) => {\n if (field.type === 'text') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <InputText\n value={parsedValue}\n onChange={(e) => onChange(e.target.value)}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'boolean') {\n const parsedValue = typeof value === 'boolean' ? value : false\n\n const handleCheckboxEvent = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement>,\n ) => {\n if ('target' in event && 'checked' in event.target) {\n onChange((event.target as HTMLInputElement).checked)\n }\n }\n\n return <InputSwitch checked={parsedValue} onChange={handleCheckboxEvent} />\n }\n if (field.type === 'integer') {\n const parsedValue = typeof value === 'number' ? value : 0\n return (\n <InputNumber\n value={parsedValue}\n onChange={(e) => onChange(parseInt(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'float') {\n const parsedValue = typeof value === 'number' ? value : 0.0\n return (\n <InputNumber\n type=\"number\"\n value={parsedValue}\n onChange={(e) => onChange(parseFloat(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n\n if (field.type === 'select') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <Dropdown\n widthExpand\n options={field.options || []}\n value={parsedValue ? [parsedValue] : []}\n onSelectionChange={(e) => onChange(e[0])}\n className={`form-field`}\n multiSelect={false}\n itemTemplate={DropdownItemTemplate}\n />\n )\n } // Handle select\n\n if (field.type === 'multiselect') {\n const parsedValue = Array.isArray(value) ? value : []\n return (\n <Dropdown\n widthExpand\n options={field.options || []}\n value={parsedValue}\n onSelectionChange={(e) => onChange(e)}\n className={`form-field`}\n multiSelect={true}\n itemTemplate={DropdownItemTemplate}\n />\n )\n }\n}\n\nexport interface SimpleFormDialogProps {\n title: string\n fields: SimpleFormField[]\n values?: SimpleFormValueDict\n submitLabel?: string\n cancelLabel?: string\n submitIcon?: string\n cancelIcon?: string\n onClose: () => void\n onSubmit: (values: SimpleFormValueDict) => void\n isOpen: boolean\n}\n\nexport const SimpleFormDialog = ({\n fields,\n values,\n onClose,\n onSubmit,\n isOpen,\n title,\n submitLabel,\n cancelLabel,\n submitIcon,\n cancelIcon,\n}: SimpleFormDialogProps) => {\n const [formData, setFormData] = useState<SimpleFormValueDict | null>(null)\n\n useEffect(() => {\n if (isOpen) {\n const defaults = getDefaults(fields, values || {})\n setFormData(defaults)\n }\n }, [isOpen, fields, values])\n\n if (!isOpen) return null\n if (!formData) return null\n\n const footer = (\n <div style={{ display: 'flex', flexDirection: 'row', gap: 8 }}>\n <Spacer />\n {cancelLabel && <Button onClick={() => onClose()} label={cancelLabel} icon={cancelIcon} />}\n {submitLabel && (\n <Button\n onClick={() => onSubmit(formData)}\n label={submitLabel}\n icon={submitIcon}\n variant=\"filled\"\n />\n )}\n </div>\n )\n\n return (\n <Dialog\n isOpen={isOpen}\n onClose={onClose}\n header={title}\n footer={footer}\n style={{ minHeight: 500, minWidth: 600 }}\n >\n <FormLayout\n style={{ width: '95%' }}\n onKeyDown={(e) => {\n e.stopPropagation()\n }}\n >\n {fields.map((field: SimpleFormField) => {\n if (field.type === 'label') {\n return <FormLabel key={field.name} field={field} />\n }\n\n return (\n <FormRow key={field.name} label={field.label || ''}>\n <FormField\n field={field}\n value={formData[field.name]}\n onChange={(value) => {\n setFormData((prev) => ({\n ...prev,\n [field.name]: value,\n }))\n }}\n />\n </FormRow>\n )\n })}\n </FormLayout>\n </Dialog>\n )\n}\n"],"names":["jsx","jsxs","Fragment"],"mappings":"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"}
|
|
@@ -36,6 +36,7 @@ require("../../api/generated/users.cjs.js");
|
|
|
36
36
|
require("../../api/generated/versions.cjs.js");
|
|
37
37
|
require("../../api/generated/workfiles.cjs.js");
|
|
38
38
|
require("../../api/generated/ynputCloud.cjs.js");
|
|
39
|
+
require("../../api/generated/grouping.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");
|
|
@@ -66,6 +67,7 @@ require("../../api/queries/users/getUsers.cjs.js");
|
|
|
66
67
|
require("../../api/queries/users/updateUsers.cjs.js");
|
|
67
68
|
const getWatchers = require("../../api/queries/watchers/getWatchers.cjs.js");
|
|
68
69
|
require("../../api/queries/permissions/getPermissions.cjs.js");
|
|
70
|
+
require("../../api/queries/grouping/getGrouping.cjs.js");
|
|
69
71
|
const ayonReactComponents = require("@ynput/ayon-react-components");
|
|
70
72
|
const React = require("react");
|
|
71
73
|
const reactToastify = require("react-toastify");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Watchers.cjs.js","sources":["../../../../../src/components/Watchers/Watchers.tsx"],"sourcesContent":["import { useGetEntitiesWatchersQuery, useSetEntitiesWatchersMutation } from '@shared/api'\nimport { DropdownRef, WatcherSelect, WatcherSelectProps } from '@ynput/ayon-react-components'\nimport { forwardRef } from 'react'\nimport { toast } from 'react-toastify'\n\ninterface WatchersProps extends Omit<WatcherSelectProps, 'currentUser' | 'value'> {\n entities: { id: string; projectName: string }[]\n entityType: string\n onWatchersUpdate?: (added: any[], removed: any[]) => void\n userName: string\n}\n\nexport const Watchers = forwardRef<DropdownRef, WatchersProps>(\n ({ entities, entityType, onWatchersUpdate, userName, ...props }, ref) => {\n const entitiesQuery = entities.map((entity) => ({\n entityId: entity.id,\n entityType,\n projectName: entity.projectName,\n }))\n\n const { data: watchers = [] } = useGetEntitiesWatchersQuery(\n {\n entities: entitiesQuery,\n },\n { skip: !entities.length },\n )\n\n // merge all watchers into a single unique array\n const uniqueWatchers = Array.from(new Set(watchers.flatMap((watcher) => watcher.watchers)))\n\n const [setEntitiesWatchers] = useSetEntitiesWatchersMutation()\n\n const handleChange = async (value: string[]) => {\n // find the difference between the current watchers and the new watchers\n // which users were added and which were removed\n const added = value.filter((watcher) => !uniqueWatchers.includes(watcher))\n const removed = uniqueWatchers.filter((watcher) => !value.includes(watcher))\n\n // for each entity, add or remove the watchers\n // we do this to preserve the unique watchers for each entity (rather than setting the same watchers for all entities)\n const updatedEntities = watchers.map((entity) => {\n // first remove\n const newWatchers = entity.watchers.filter((watcher) => !removed.includes(watcher))\n // then add\n newWatchers.push(...added)\n\n return {\n ...entity,\n watchers: newWatchers,\n }\n })\n\n // update\n try {\n await setEntitiesWatchers({ entities: updatedEntities }).unwrap()\n onWatchersUpdate && onWatchersUpdate(added, removed)\n } catch (error) {\n toast.error('Failed to update watchers')\n }\n }\n\n return (\n <WatcherSelect\n align=\"right\"\n {...props}\n value={uniqueWatchers}\n currentUser={userName}\n onChange={handleChange}\n ref={ref}\n // @ts-expect-error\n buttonProps={{ 'data-tooltip': 'Watchers' }}\n />\n )\n },\n)\n"],"names":["forwardRef","useGetEntitiesWatchersQuery","useSetEntitiesWatchersMutation","toast","jsx","WatcherSelect"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Watchers.cjs.js","sources":["../../../../../src/components/Watchers/Watchers.tsx"],"sourcesContent":["import { useGetEntitiesWatchersQuery, useSetEntitiesWatchersMutation } from '@shared/api'\nimport { DropdownRef, WatcherSelect, WatcherSelectProps } from '@ynput/ayon-react-components'\nimport { forwardRef } from 'react'\nimport { toast } from 'react-toastify'\n\ninterface WatchersProps extends Omit<WatcherSelectProps, 'currentUser' | 'value'> {\n entities: { id: string; projectName: string }[]\n entityType: string\n onWatchersUpdate?: (added: any[], removed: any[]) => void\n userName: string\n}\n\nexport const Watchers = forwardRef<DropdownRef, WatchersProps>(\n ({ entities, entityType, onWatchersUpdate, userName, ...props }, ref) => {\n const entitiesQuery = entities.map((entity) => ({\n entityId: entity.id,\n entityType,\n projectName: entity.projectName,\n }))\n\n const { data: watchers = [] } = useGetEntitiesWatchersQuery(\n {\n entities: entitiesQuery,\n },\n { skip: !entities.length },\n )\n\n // merge all watchers into a single unique array\n const uniqueWatchers = Array.from(new Set(watchers.flatMap((watcher) => watcher.watchers)))\n\n const [setEntitiesWatchers] = useSetEntitiesWatchersMutation()\n\n const handleChange = async (value: string[]) => {\n // find the difference between the current watchers and the new watchers\n // which users were added and which were removed\n const added = value.filter((watcher) => !uniqueWatchers.includes(watcher))\n const removed = uniqueWatchers.filter((watcher) => !value.includes(watcher))\n\n // for each entity, add or remove the watchers\n // we do this to preserve the unique watchers for each entity (rather than setting the same watchers for all entities)\n const updatedEntities = watchers.map((entity) => {\n // first remove\n const newWatchers = entity.watchers.filter((watcher) => !removed.includes(watcher))\n // then add\n newWatchers.push(...added)\n\n return {\n ...entity,\n watchers: newWatchers,\n }\n })\n\n // update\n try {\n await setEntitiesWatchers({ entities: updatedEntities }).unwrap()\n onWatchersUpdate && onWatchersUpdate(added, removed)\n } catch (error) {\n toast.error('Failed to update watchers')\n }\n }\n\n return (\n <WatcherSelect\n align=\"right\"\n {...props}\n value={uniqueWatchers}\n currentUser={userName}\n onChange={handleChange}\n ref={ref}\n // @ts-expect-error\n buttonProps={{ 'data-tooltip': 'Watchers' }}\n />\n )\n },\n)\n"],"names":["forwardRef","useGetEntitiesWatchersQuery","useSetEntitiesWatchersMutation","toast","jsx","WatcherSelect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,MAAM,WAAWA,MAAA;AAAA,EACtB,CAAC,EAAE,UAAU,YAAY,kBAAkB,UAAU,GAAG,MAAM,GAAG,QAAQ;AACvE,UAAM,gBAAgB,SAAS,IAAI,CAAC,YAAY;AAAA,MAC9C,UAAU,OAAO;AAAA,MACjB;AAAA,MACA,aAAa,OAAO;AAAA,IAAA,EACpB;AAEF,UAAM,EAAE,MAAM,WAAW,CAAA,EAAO,IAAAC,YAAA;AAAA,MAC9B;AAAA,QACE,UAAU;AAAA,MACZ;AAAA,MACA,EAAE,MAAM,CAAC,SAAS,OAAO;AAAA,IAC3B;AAGA,UAAM,iBAAiB,MAAM,KAAK,IAAI,IAAI,SAAS,QAAQ,CAAC,YAAY,QAAQ,QAAQ,CAAC,CAAC;AAEpF,UAAA,CAAC,mBAAmB,IAAIC,2CAA+B;AAEvD,UAAA,eAAe,OAAO,UAAoB;AAGxC,YAAA,QAAQ,MAAM,OAAO,CAAC,YAAY,CAAC,eAAe,SAAS,OAAO,CAAC;AACnE,YAAA,UAAU,eAAe,OAAO,CAAC,YAAY,CAAC,MAAM,SAAS,OAAO,CAAC;AAI3E,YAAM,kBAAkB,SAAS,IAAI,CAAC,WAAW;AAEzC,cAAA,cAAc,OAAO,SAAS,OAAO,CAAC,YAAY,CAAC,QAAQ,SAAS,OAAO,CAAC;AAEtE,oBAAA,KAAK,GAAG,KAAK;AAElB,eAAA;AAAA,UACL,GAAG;AAAA,UACH,UAAU;AAAA,QACZ;AAAA,MAAA,CACD;AAGG,UAAA;AACF,cAAM,oBAAoB,EAAE,UAAU,gBAAiB,CAAA,EAAE,OAAO;AAC5C,4BAAA,iBAAiB,OAAO,OAAO;AAAA,eAC5C,OAAO;AACdC,sBAAA,MAAM,MAAM,2BAA2B;AAAA,MAAA;AAAA,IAE3C;AAGE,WAAAC,2BAAA,kBAAA;AAAA,MAACC,oBAAA;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACL,GAAG;AAAA,QACJ,OAAO;AAAA,QACP,aAAa;AAAA,QACb,UAAU;AAAA,QACV;AAAA,QAEA,aAAa,EAAE,gBAAgB,WAAW;AAAA,MAAA;AAAA,IAC5C;AAAA,EAAA;AAGN;;"}
|
|
@@ -34,6 +34,7 @@ import "../../api/generated/users.es.js";
|
|
|
34
34
|
import "../../api/generated/versions.es.js";
|
|
35
35
|
import "../../api/generated/workfiles.es.js";
|
|
36
36
|
import "../../api/generated/ynputCloud.es.js";
|
|
37
|
+
import "../../api/generated/grouping.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";
|
|
@@ -64,6 +65,7 @@ import "../../api/queries/users/getUsers.es.js";
|
|
|
64
65
|
import "../../api/queries/users/updateUsers.es.js";
|
|
65
66
|
import { useGetEntitiesWatchersQuery, useSetEntitiesWatchersMutation } from "../../api/queries/watchers/getWatchers.es.js";
|
|
66
67
|
import "../../api/queries/permissions/getPermissions.es.js";
|
|
68
|
+
import "../../api/queries/grouping/getGrouping.es.js";
|
|
67
69
|
import { WatcherSelect } from "@ynput/ayon-react-components";
|
|
68
70
|
import { forwardRef } from "react";
|
|
69
71
|
import { toast } from "react-toastify";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Watchers.es.js","sources":["../../../../../src/components/Watchers/Watchers.tsx"],"sourcesContent":["import { useGetEntitiesWatchersQuery, useSetEntitiesWatchersMutation } from '@shared/api'\nimport { DropdownRef, WatcherSelect, WatcherSelectProps } from '@ynput/ayon-react-components'\nimport { forwardRef } from 'react'\nimport { toast } from 'react-toastify'\n\ninterface WatchersProps extends Omit<WatcherSelectProps, 'currentUser' | 'value'> {\n entities: { id: string; projectName: string }[]\n entityType: string\n onWatchersUpdate?: (added: any[], removed: any[]) => void\n userName: string\n}\n\nexport const Watchers = forwardRef<DropdownRef, WatchersProps>(\n ({ entities, entityType, onWatchersUpdate, userName, ...props }, ref) => {\n const entitiesQuery = entities.map((entity) => ({\n entityId: entity.id,\n entityType,\n projectName: entity.projectName,\n }))\n\n const { data: watchers = [] } = useGetEntitiesWatchersQuery(\n {\n entities: entitiesQuery,\n },\n { skip: !entities.length },\n )\n\n // merge all watchers into a single unique array\n const uniqueWatchers = Array.from(new Set(watchers.flatMap((watcher) => watcher.watchers)))\n\n const [setEntitiesWatchers] = useSetEntitiesWatchersMutation()\n\n const handleChange = async (value: string[]) => {\n // find the difference between the current watchers and the new watchers\n // which users were added and which were removed\n const added = value.filter((watcher) => !uniqueWatchers.includes(watcher))\n const removed = uniqueWatchers.filter((watcher) => !value.includes(watcher))\n\n // for each entity, add or remove the watchers\n // we do this to preserve the unique watchers for each entity (rather than setting the same watchers for all entities)\n const updatedEntities = watchers.map((entity) => {\n // first remove\n const newWatchers = entity.watchers.filter((watcher) => !removed.includes(watcher))\n // then add\n newWatchers.push(...added)\n\n return {\n ...entity,\n watchers: newWatchers,\n }\n })\n\n // update\n try {\n await setEntitiesWatchers({ entities: updatedEntities }).unwrap()\n onWatchersUpdate && onWatchersUpdate(added, removed)\n } catch (error) {\n toast.error('Failed to update watchers')\n }\n }\n\n return (\n <WatcherSelect\n align=\"right\"\n {...props}\n value={uniqueWatchers}\n currentUser={userName}\n onChange={handleChange}\n ref={ref}\n // @ts-expect-error\n buttonProps={{ 'data-tooltip': 'Watchers' }}\n />\n )\n },\n)\n"],"names":["jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Watchers.es.js","sources":["../../../../../src/components/Watchers/Watchers.tsx"],"sourcesContent":["import { useGetEntitiesWatchersQuery, useSetEntitiesWatchersMutation } from '@shared/api'\nimport { DropdownRef, WatcherSelect, WatcherSelectProps } from '@ynput/ayon-react-components'\nimport { forwardRef } from 'react'\nimport { toast } from 'react-toastify'\n\ninterface WatchersProps extends Omit<WatcherSelectProps, 'currentUser' | 'value'> {\n entities: { id: string; projectName: string }[]\n entityType: string\n onWatchersUpdate?: (added: any[], removed: any[]) => void\n userName: string\n}\n\nexport const Watchers = forwardRef<DropdownRef, WatchersProps>(\n ({ entities, entityType, onWatchersUpdate, userName, ...props }, ref) => {\n const entitiesQuery = entities.map((entity) => ({\n entityId: entity.id,\n entityType,\n projectName: entity.projectName,\n }))\n\n const { data: watchers = [] } = useGetEntitiesWatchersQuery(\n {\n entities: entitiesQuery,\n },\n { skip: !entities.length },\n )\n\n // merge all watchers into a single unique array\n const uniqueWatchers = Array.from(new Set(watchers.flatMap((watcher) => watcher.watchers)))\n\n const [setEntitiesWatchers] = useSetEntitiesWatchersMutation()\n\n const handleChange = async (value: string[]) => {\n // find the difference between the current watchers and the new watchers\n // which users were added and which were removed\n const added = value.filter((watcher) => !uniqueWatchers.includes(watcher))\n const removed = uniqueWatchers.filter((watcher) => !value.includes(watcher))\n\n // for each entity, add or remove the watchers\n // we do this to preserve the unique watchers for each entity (rather than setting the same watchers for all entities)\n const updatedEntities = watchers.map((entity) => {\n // first remove\n const newWatchers = entity.watchers.filter((watcher) => !removed.includes(watcher))\n // then add\n newWatchers.push(...added)\n\n return {\n ...entity,\n watchers: newWatchers,\n }\n })\n\n // update\n try {\n await setEntitiesWatchers({ entities: updatedEntities }).unwrap()\n onWatchersUpdate && onWatchersUpdate(added, removed)\n } catch (error) {\n toast.error('Failed to update watchers')\n }\n }\n\n return (\n <WatcherSelect\n align=\"right\"\n {...props}\n value={uniqueWatchers}\n currentUser={userName}\n onChange={handleChange}\n ref={ref}\n // @ts-expect-error\n buttonProps={{ 'data-tooltip': 'Watchers' }}\n />\n )\n },\n)\n"],"names":["jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,MAAM,WAAW;AAAA,EACtB,CAAC,EAAE,UAAU,YAAY,kBAAkB,UAAU,GAAG,MAAM,GAAG,QAAQ;AACvE,UAAM,gBAAgB,SAAS,IAAI,CAAC,YAAY;AAAA,MAC9C,UAAU,OAAO;AAAA,MACjB;AAAA,MACA,aAAa,OAAO;AAAA,IAAA,EACpB;AAEF,UAAM,EAAE,MAAM,WAAW,CAAA,EAAO,IAAA;AAAA,MAC9B;AAAA,QACE,UAAU;AAAA,MACZ;AAAA,MACA,EAAE,MAAM,CAAC,SAAS,OAAO;AAAA,IAC3B;AAGA,UAAM,iBAAiB,MAAM,KAAK,IAAI,IAAI,SAAS,QAAQ,CAAC,YAAY,QAAQ,QAAQ,CAAC,CAAC;AAEpF,UAAA,CAAC,mBAAmB,IAAI,+BAA+B;AAEvD,UAAA,eAAe,OAAO,UAAoB;AAGxC,YAAA,QAAQ,MAAM,OAAO,CAAC,YAAY,CAAC,eAAe,SAAS,OAAO,CAAC;AACnE,YAAA,UAAU,eAAe,OAAO,CAAC,YAAY,CAAC,MAAM,SAAS,OAAO,CAAC;AAI3E,YAAM,kBAAkB,SAAS,IAAI,CAAC,WAAW;AAEzC,cAAA,cAAc,OAAO,SAAS,OAAO,CAAC,YAAY,CAAC,QAAQ,SAAS,OAAO,CAAC;AAEtE,oBAAA,KAAK,GAAG,KAAK;AAElB,eAAA;AAAA,UACL,GAAG;AAAA,UACH,UAAU;AAAA,QACZ;AAAA,MAAA,CACD;AAGG,UAAA;AACF,cAAM,oBAAoB,EAAE,UAAU,gBAAiB,CAAA,EAAE,OAAO;AAC5C,4BAAA,iBAAiB,OAAO,OAAO;AAAA,eAC5C,OAAO;AACd,cAAM,MAAM,2BAA2B;AAAA,MAAA;AAAA,IAE3C;AAGE,WAAAA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACL,GAAG;AAAA,QACJ,OAAO;AAAA,QACP,aAAa;AAAA,QACb,UAAU;AAAA,QACV;AAAA,QAEA,aAAa,EAAE,gBAAgB,WAAW;AAAA,MAAA;AAAA,IAC5C;AAAA,EAAA;AAGN;"}
|
|
@@ -43,6 +43,7 @@ require("../../api/generated/users.cjs.js");
|
|
|
43
43
|
require("../../api/generated/versions.cjs.js");
|
|
44
44
|
require("../../api/generated/workfiles.cjs.js");
|
|
45
45
|
require("../../api/generated/ynputCloud.cjs.js");
|
|
46
|
+
require("../../api/generated/grouping.cjs.js");
|
|
46
47
|
const getActions = require("../../api/queries/actions/getActions.cjs.js");
|
|
47
48
|
require("../../api/queries/activities/getActivities.cjs.js");
|
|
48
49
|
require("../../api/queries/activities/updateActivities.cjs.js");
|
|
@@ -73,6 +74,7 @@ require("../../api/queries/users/getUsers.cjs.js");
|
|
|
73
74
|
require("../../api/queries/users/updateUsers.cjs.js");
|
|
74
75
|
require("../../api/queries/watchers/getWatchers.cjs.js");
|
|
75
76
|
require("../../api/queries/permissions/getPermissions.cjs.js");
|
|
77
|
+
require("../../api/queries/grouping/getGrouping.cjs.js");
|
|
76
78
|
require("@dnd-kit/core");
|
|
77
79
|
require("@dnd-kit/sortable");
|
|
78
80
|
require("../../components/ReviewablesList/ReviewablesList.styled.cjs.js");
|
|
@@ -126,17 +128,15 @@ require("../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");
|
|
|
126
128
|
require("../Feed/Feed.styled.cjs.js");
|
|
127
129
|
require("date-fns");
|
|
128
130
|
require("../ProjectTreeTable/ProjectTreeTable.cjs.js");
|
|
131
|
+
require("../ProjectTreeTable/context/CellEditingContext.cjs.js");
|
|
132
|
+
require("../ProjectTreeTable/context/ClipboardContext.cjs.js");
|
|
133
|
+
require("@tanstack/react-table");
|
|
129
134
|
require("../ProjectTreeTable/context/SelectionCellsContext.cjs.js");
|
|
135
|
+
require("../ProjectTreeTable/context/ColumnSettingsContext.cjs.js");
|
|
130
136
|
require("../ProjectTreeTable/context/ProjectTableContext.cjs.js");
|
|
131
137
|
require("../ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");
|
|
132
138
|
require("../ProjectTreeTable/context/SelectedRowsContext.cjs.js");
|
|
133
|
-
require("../ProjectTreeTable/context/ColumnSettingsContext.cjs.js");
|
|
134
|
-
require("../ProjectTreeTable/context/CellEditingContext.cjs.js");
|
|
135
|
-
require("../ProjectTreeTable/context/ClipboardContext.cjs.js");
|
|
136
|
-
require("../ProjectTreeTable/context/ProjectTableSelectionContext.cjs.js");
|
|
137
139
|
require("../ProjectTreeTable/context/ProjectDataContext.cjs.js");
|
|
138
|
-
require("../ProjectTreeTable/context/ProjectTableModulesContext.cjs.js");
|
|
139
|
-
require("@tanstack/react-table");
|
|
140
140
|
require("../ProjectTreeTable/widgets/CollapsedWidget.cjs.js");
|
|
141
141
|
require("../ProjectTreeTable/widgets/DateWidget.cjs.js");
|
|
142
142
|
require("../ProjectTreeTable/widgets/EnumWidget.cjs.js");
|
|
@@ -150,11 +150,12 @@ require("../ProjectTreeTable/ProjectTreeTable.styled.cjs.js");
|
|
|
150
150
|
require("../ProjectTreeTable/components/SelectionCell.cjs.js");
|
|
151
151
|
require("../ProjectTreeTable/components/RowSelectionHeader.cjs.js");
|
|
152
152
|
require("../ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");
|
|
153
|
-
require("../DetailsPanel/DetailsPanel.styled.cjs.js");
|
|
154
153
|
require("../../../../_virtual/runtime.cjs.js");
|
|
155
154
|
require("../../../../_virtual/semver.cjs.js");
|
|
156
155
|
require("react-redux");
|
|
157
156
|
require("custom-protocol-check");
|
|
157
|
+
require("../ProjectTreeTable/components/GroupSettingsFallback.cjs.js");
|
|
158
|
+
require("../DetailsPanel/DetailsPanel.styled.cjs.js");
|
|
158
159
|
require("../DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");
|
|
159
160
|
require("../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");
|
|
160
161
|
require("../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");
|
|
@@ -179,6 +180,7 @@ require("../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");
|
|
|
179
180
|
require("../../components/AttributeEditor/components/MinMaxField.cjs.js");
|
|
180
181
|
require("../../components/EnumEditor/EnumEditor.styled.cjs.js");
|
|
181
182
|
require("../../components/SearchFilter/filterDates.cjs.js");
|
|
183
|
+
require("../../components/Badge/Badge.cjs.js");
|
|
182
184
|
const ActionConfigDialog = ({ action, onClose, context }) => {
|
|
183
185
|
const requestParams = React.useMemo(() => {
|
|
184
186
|
if (!action) return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionConfigDialog.cjs.js","sources":["../../../../../src/containers/Actions/ActionConfigDialog.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { toast } from 'react-toastify'\nimport { SimpleFormDialog } from '@shared/components'\nimport type { SimpleFormValueDict } from '@shared/components'\n\nimport { useGetActionConfigQuery, useSetActionConfigMutation } from '@shared/api'\nimport type { ActionContext, BaseActionManifest } from '@shared/api'\n\ntype ConfigData = Record<string, any>\n\ninterface ActionConfigDialogProps {\n action: BaseActionManifest\n context: ActionContext\n onClose: () => void\n}\n\ninterface ActionConfigRequestQueryParams {\n addonName: string\n addonVersion: string\n variant?: string\n identifier: string\n}\n\nexport const ActionConfigDialog = ({ action, onClose, context }: ActionConfigDialogProps) => {\n const requestParams: ActionConfigRequestQueryParams | null =\n useMemo<ActionConfigRequestQueryParams | null>(() => {\n if (!action) return null\n if (!(action.addonName && action.addonVersion)) return null // this should never happen\n return {\n addonName: action.addonName,\n addonVersion: action.addonVersion,\n variant: action.variant,\n identifier: action.identifier,\n }\n }, [action])\n\n const [configureAction] = useSetActionConfigMutation()\n\n // make typescript happily unknowing about the type\n // because even if we pass skip, arguments are still required in the right type. that's cursed\n const qp: any = { actionConfig: context, ...(requestParams || {}) }\n const { data: initValues } = useGetActionConfigQuery(qp, { skip: !requestParams })\n\n // it would be sooo cool if i could do this BEFORE the query and ommit that\n // qp thing, but i can't. because it would change the hook order. ffs\n if (!(initValues && action?.configFields && action && requestParams)) {\n return null\n }\n\n const handleSubmit = async (data: ConfigData) => {\n try {\n await configureAction({\n actionConfig: { ...context, value: data },\n ...requestParams,\n }).unwrap()\n onClose()\n } catch (error) {\n console.warn('Error configuring action', error)\n toast.error('Unable to set the action configuration')\n }\n }\n\n return (\n <SimpleFormDialog\n isOpen\n title={`Configure action ${action.label}`}\n fields={action.configFields}\n values={initValues as SimpleFormValueDict}\n onClose={onClose}\n onSubmit={handleSubmit}\n submitLabel=\"Save action config\"\n cancelLabel=\"Cancel\"\n submitIcon=\"check\"\n cancelIcon=\"close\"\n />\n )\n}\n"],"names":["useMemo","useSetActionConfigMutation","useGetActionConfigQuery","toast","jsx","SimpleFormDialog"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ActionConfigDialog.cjs.js","sources":["../../../../../src/containers/Actions/ActionConfigDialog.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { toast } from 'react-toastify'\nimport { SimpleFormDialog } from '@shared/components'\nimport type { SimpleFormValueDict } from '@shared/components'\n\nimport { useGetActionConfigQuery, useSetActionConfigMutation } from '@shared/api'\nimport type { ActionContext, BaseActionManifest } from '@shared/api'\n\ntype ConfigData = Record<string, any>\n\ninterface ActionConfigDialogProps {\n action: BaseActionManifest\n context: ActionContext\n onClose: () => void\n}\n\ninterface ActionConfigRequestQueryParams {\n addonName: string\n addonVersion: string\n variant?: string\n identifier: string\n}\n\nexport const ActionConfigDialog = ({ action, onClose, context }: ActionConfigDialogProps) => {\n const requestParams: ActionConfigRequestQueryParams | null =\n useMemo<ActionConfigRequestQueryParams | null>(() => {\n if (!action) return null\n if (!(action.addonName && action.addonVersion)) return null // this should never happen\n return {\n addonName: action.addonName,\n addonVersion: action.addonVersion,\n variant: action.variant,\n identifier: action.identifier,\n }\n }, [action])\n\n const [configureAction] = useSetActionConfigMutation()\n\n // make typescript happily unknowing about the type\n // because even if we pass skip, arguments are still required in the right type. that's cursed\n const qp: any = { actionConfig: context, ...(requestParams || {}) }\n const { data: initValues } = useGetActionConfigQuery(qp, { skip: !requestParams })\n\n // it would be sooo cool if i could do this BEFORE the query and ommit that\n // qp thing, but i can't. because it would change the hook order. ffs\n if (!(initValues && action?.configFields && action && requestParams)) {\n return null\n }\n\n const handleSubmit = async (data: ConfigData) => {\n try {\n await configureAction({\n actionConfig: { ...context, value: data },\n ...requestParams,\n }).unwrap()\n onClose()\n } catch (error) {\n console.warn('Error configuring action', error)\n toast.error('Unable to set the action configuration')\n }\n }\n\n return (\n <SimpleFormDialog\n isOpen\n title={`Configure action ${action.label}`}\n fields={action.configFields}\n values={initValues as SimpleFormValueDict}\n onClose={onClose}\n onSubmit={handleSubmit}\n submitLabel=\"Save action config\"\n cancelLabel=\"Cancel\"\n submitIcon=\"check\"\n cancelIcon=\"close\"\n />\n )\n}\n"],"names":["useMemo","useSetActionConfigMutation","useGetActionConfigQuery","toast","jsx","SimpleFormDialog"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,MAAM,qBAAqB,CAAC,EAAE,QAAQ,SAAS,cAAuC;AACrF,QAAA,gBACJA,MAAAA,QAA+C,MAAM;AAC/C,QAAA,CAAC,OAAe,QAAA;AACpB,QAAI,EAAE,OAAO,aAAa,OAAO,cAAsB,QAAA;AAChD,WAAA;AAAA,MACL,WAAW,OAAO;AAAA,MAClB,cAAc,OAAO;AAAA,MACrB,SAAS,OAAO;AAAA,MAChB,YAAY,OAAO;AAAA,IACrB;AAAA,EAAA,GACC,CAAC,MAAM,CAAC;AAEP,QAAA,CAAC,eAAe,IAAIC,sCAA2B;AAIrD,QAAM,KAAU,EAAE,cAAc,SAAS,GAAI,iBAAiB,CAAA,EAAI;AAC5D,QAAA,EAAE,MAAM,eAAeC,WAAAA,wBAAwB,IAAI,EAAE,MAAM,CAAC,eAAe;AAIjF,MAAI,EAAE,eAAc,iCAAQ,iBAAgB,UAAU,gBAAgB;AAC7D,WAAA;AAAA,EAAA;AAGH,QAAA,eAAe,OAAO,SAAqB;AAC3C,QAAA;AACF,YAAM,gBAAgB;AAAA,QACpB,cAAc,EAAE,GAAG,SAAS,OAAO,KAAK;AAAA,QACxC,GAAG;AAAA,MACJ,CAAA,EAAE,OAAO;AACF,cAAA;AAAA,aACD,OAAO;AACN,cAAA,KAAK,4BAA4B,KAAK;AAC9CC,oBAAA,MAAM,MAAM,wCAAwC;AAAA,IAAA;AAAA,EAExD;AAGE,SAAAC,2BAAA,kBAAA;AAAA,IAACC,iBAAA;AAAA,IAAA;AAAA,MACC,QAAM;AAAA,MACN,OAAO,oBAAoB,OAAO,KAAK;AAAA,MACvC,QAAQ,OAAO;AAAA,MACf,QAAQ;AAAA,MACR;AAAA,MACA,UAAU;AAAA,MACV,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,YAAW;AAAA,MACX,YAAW;AAAA,IAAA;AAAA,EACb;AAEJ;;"}
|
|
@@ -41,6 +41,7 @@ import "../../api/generated/users.es.js";
|
|
|
41
41
|
import "../../api/generated/versions.es.js";
|
|
42
42
|
import "../../api/generated/workfiles.es.js";
|
|
43
43
|
import "../../api/generated/ynputCloud.es.js";
|
|
44
|
+
import "../../api/generated/grouping.es.js";
|
|
44
45
|
import { useSetActionConfigMutation, useGetActionConfigQuery } from "../../api/queries/actions/getActions.es.js";
|
|
45
46
|
import "../../api/queries/activities/getActivities.es.js";
|
|
46
47
|
import "../../api/queries/activities/updateActivities.es.js";
|
|
@@ -71,6 +72,7 @@ import "../../api/queries/users/getUsers.es.js";
|
|
|
71
72
|
import "../../api/queries/users/updateUsers.es.js";
|
|
72
73
|
import "../../api/queries/watchers/getWatchers.es.js";
|
|
73
74
|
import "../../api/queries/permissions/getPermissions.es.js";
|
|
75
|
+
import "../../api/queries/grouping/getGrouping.es.js";
|
|
74
76
|
import "@dnd-kit/core";
|
|
75
77
|
import "@dnd-kit/sortable";
|
|
76
78
|
import "../../components/ReviewablesList/ReviewablesList.styled.es.js";
|
|
@@ -124,17 +126,15 @@ import "../Feed/components/ActivityGroup/ActivityGroup.styled.es.js";
|
|
|
124
126
|
import "../Feed/Feed.styled.es.js";
|
|
125
127
|
import "date-fns";
|
|
126
128
|
import "../ProjectTreeTable/ProjectTreeTable.es.js";
|
|
129
|
+
import "../ProjectTreeTable/context/CellEditingContext.es.js";
|
|
130
|
+
import "../ProjectTreeTable/context/ClipboardContext.es.js";
|
|
131
|
+
import "@tanstack/react-table";
|
|
127
132
|
import "../ProjectTreeTable/context/SelectionCellsContext.es.js";
|
|
133
|
+
import "../ProjectTreeTable/context/ColumnSettingsContext.es.js";
|
|
128
134
|
import "../ProjectTreeTable/context/ProjectTableContext.es.js";
|
|
129
135
|
import "../ProjectTreeTable/context/ProjectTableQueriesContext.es.js";
|
|
130
136
|
import "../ProjectTreeTable/context/SelectedRowsContext.es.js";
|
|
131
|
-
import "../ProjectTreeTable/context/ColumnSettingsContext.es.js";
|
|
132
|
-
import "../ProjectTreeTable/context/CellEditingContext.es.js";
|
|
133
|
-
import "../ProjectTreeTable/context/ClipboardContext.es.js";
|
|
134
|
-
import "../ProjectTreeTable/context/ProjectTableSelectionContext.es.js";
|
|
135
137
|
import "../ProjectTreeTable/context/ProjectDataContext.es.js";
|
|
136
|
-
import "../ProjectTreeTable/context/ProjectTableModulesContext.es.js";
|
|
137
|
-
import "@tanstack/react-table";
|
|
138
138
|
import "../ProjectTreeTable/widgets/CollapsedWidget.es.js";
|
|
139
139
|
import "../ProjectTreeTable/widgets/DateWidget.es.js";
|
|
140
140
|
import "../ProjectTreeTable/widgets/EnumWidget.es.js";
|
|
@@ -148,11 +148,12 @@ import "../ProjectTreeTable/ProjectTreeTable.styled.es.js";
|
|
|
148
148
|
import "../ProjectTreeTable/components/SelectionCell.es.js";
|
|
149
149
|
import "../ProjectTreeTable/components/RowSelectionHeader.es.js";
|
|
150
150
|
import "../ProjectTreeTable/widgets/LoadMoreWidget.es.js";
|
|
151
|
-
import "../DetailsPanel/DetailsPanel.styled.es.js";
|
|
152
151
|
import "../../../../_virtual/runtime.es.js";
|
|
153
152
|
import "../../../../_virtual/semver.es.js";
|
|
154
153
|
import "react-redux";
|
|
155
154
|
import "custom-protocol-check";
|
|
155
|
+
import "../ProjectTreeTable/components/GroupSettingsFallback.es.js";
|
|
156
|
+
import "../DetailsPanel/DetailsPanel.styled.es.js";
|
|
156
157
|
import "../DetailsPanel/FeedFilters/FeedFilters.styled.es.js";
|
|
157
158
|
import "../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.es.js";
|
|
158
159
|
import "../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js";
|
|
@@ -177,6 +178,7 @@ import "../../components/SettingsPanel/SettingsPanelItemTemplate.es.js";
|
|
|
177
178
|
import "../../components/AttributeEditor/components/MinMaxField.es.js";
|
|
178
179
|
import "../../components/EnumEditor/EnumEditor.styled.es.js";
|
|
179
180
|
import "../../components/SearchFilter/filterDates.es.js";
|
|
181
|
+
import "../../components/Badge/Badge.es.js";
|
|
180
182
|
const ActionConfigDialog = ({ action, onClose, context }) => {
|
|
181
183
|
const requestParams = useMemo(() => {
|
|
182
184
|
if (!action) return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionConfigDialog.es.js","sources":["../../../../../src/containers/Actions/ActionConfigDialog.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { toast } from 'react-toastify'\nimport { SimpleFormDialog } from '@shared/components'\nimport type { SimpleFormValueDict } from '@shared/components'\n\nimport { useGetActionConfigQuery, useSetActionConfigMutation } from '@shared/api'\nimport type { ActionContext, BaseActionManifest } from '@shared/api'\n\ntype ConfigData = Record<string, any>\n\ninterface ActionConfigDialogProps {\n action: BaseActionManifest\n context: ActionContext\n onClose: () => void\n}\n\ninterface ActionConfigRequestQueryParams {\n addonName: string\n addonVersion: string\n variant?: string\n identifier: string\n}\n\nexport const ActionConfigDialog = ({ action, onClose, context }: ActionConfigDialogProps) => {\n const requestParams: ActionConfigRequestQueryParams | null =\n useMemo<ActionConfigRequestQueryParams | null>(() => {\n if (!action) return null\n if (!(action.addonName && action.addonVersion)) return null // this should never happen\n return {\n addonName: action.addonName,\n addonVersion: action.addonVersion,\n variant: action.variant,\n identifier: action.identifier,\n }\n }, [action])\n\n const [configureAction] = useSetActionConfigMutation()\n\n // make typescript happily unknowing about the type\n // because even if we pass skip, arguments are still required in the right type. that's cursed\n const qp: any = { actionConfig: context, ...(requestParams || {}) }\n const { data: initValues } = useGetActionConfigQuery(qp, { skip: !requestParams })\n\n // it would be sooo cool if i could do this BEFORE the query and ommit that\n // qp thing, but i can't. because it would change the hook order. ffs\n if (!(initValues && action?.configFields && action && requestParams)) {\n return null\n }\n\n const handleSubmit = async (data: ConfigData) => {\n try {\n await configureAction({\n actionConfig: { ...context, value: data },\n ...requestParams,\n }).unwrap()\n onClose()\n } catch (error) {\n console.warn('Error configuring action', error)\n toast.error('Unable to set the action configuration')\n }\n }\n\n return (\n <SimpleFormDialog\n isOpen\n title={`Configure action ${action.label}`}\n fields={action.configFields}\n values={initValues as SimpleFormValueDict}\n onClose={onClose}\n onSubmit={handleSubmit}\n submitLabel=\"Save action config\"\n cancelLabel=\"Cancel\"\n submitIcon=\"check\"\n cancelIcon=\"close\"\n />\n )\n}\n"],"names":["jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ActionConfigDialog.es.js","sources":["../../../../../src/containers/Actions/ActionConfigDialog.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { toast } from 'react-toastify'\nimport { SimpleFormDialog } from '@shared/components'\nimport type { SimpleFormValueDict } from '@shared/components'\n\nimport { useGetActionConfigQuery, useSetActionConfigMutation } from '@shared/api'\nimport type { ActionContext, BaseActionManifest } from '@shared/api'\n\ntype ConfigData = Record<string, any>\n\ninterface ActionConfigDialogProps {\n action: BaseActionManifest\n context: ActionContext\n onClose: () => void\n}\n\ninterface ActionConfigRequestQueryParams {\n addonName: string\n addonVersion: string\n variant?: string\n identifier: string\n}\n\nexport const ActionConfigDialog = ({ action, onClose, context }: ActionConfigDialogProps) => {\n const requestParams: ActionConfigRequestQueryParams | null =\n useMemo<ActionConfigRequestQueryParams | null>(() => {\n if (!action) return null\n if (!(action.addonName && action.addonVersion)) return null // this should never happen\n return {\n addonName: action.addonName,\n addonVersion: action.addonVersion,\n variant: action.variant,\n identifier: action.identifier,\n }\n }, [action])\n\n const [configureAction] = useSetActionConfigMutation()\n\n // make typescript happily unknowing about the type\n // because even if we pass skip, arguments are still required in the right type. that's cursed\n const qp: any = { actionConfig: context, ...(requestParams || {}) }\n const { data: initValues } = useGetActionConfigQuery(qp, { skip: !requestParams })\n\n // it would be sooo cool if i could do this BEFORE the query and ommit that\n // qp thing, but i can't. because it would change the hook order. ffs\n if (!(initValues && action?.configFields && action && requestParams)) {\n return null\n }\n\n const handleSubmit = async (data: ConfigData) => {\n try {\n await configureAction({\n actionConfig: { ...context, value: data },\n ...requestParams,\n }).unwrap()\n onClose()\n } catch (error) {\n console.warn('Error configuring action', error)\n toast.error('Unable to set the action configuration')\n }\n }\n\n return (\n <SimpleFormDialog\n isOpen\n title={`Configure action ${action.label}`}\n fields={action.configFields}\n values={initValues as SimpleFormValueDict}\n onClose={onClose}\n onSubmit={handleSubmit}\n submitLabel=\"Save action config\"\n cancelLabel=\"Cancel\"\n submitIcon=\"check\"\n cancelIcon=\"close\"\n />\n )\n}\n"],"names":["jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,MAAM,qBAAqB,CAAC,EAAE,QAAQ,SAAS,cAAuC;AACrF,QAAA,gBACJ,QAA+C,MAAM;AAC/C,QAAA,CAAC,OAAe,QAAA;AACpB,QAAI,EAAE,OAAO,aAAa,OAAO,cAAsB,QAAA;AAChD,WAAA;AAAA,MACL,WAAW,OAAO;AAAA,MAClB,cAAc,OAAO;AAAA,MACrB,SAAS,OAAO;AAAA,MAChB,YAAY,OAAO;AAAA,IACrB;AAAA,EAAA,GACC,CAAC,MAAM,CAAC;AAEP,QAAA,CAAC,eAAe,IAAI,2BAA2B;AAIrD,QAAM,KAAU,EAAE,cAAc,SAAS,GAAI,iBAAiB,CAAA,EAAI;AAC5D,QAAA,EAAE,MAAM,eAAe,wBAAwB,IAAI,EAAE,MAAM,CAAC,eAAe;AAIjF,MAAI,EAAE,eAAc,iCAAQ,iBAAgB,UAAU,gBAAgB;AAC7D,WAAA;AAAA,EAAA;AAGH,QAAA,eAAe,OAAO,SAAqB;AAC3C,QAAA;AACF,YAAM,gBAAgB;AAAA,QACpB,cAAc,EAAE,GAAG,SAAS,OAAO,KAAK;AAAA,QACxC,GAAG;AAAA,MACJ,CAAA,EAAE,OAAO;AACF,cAAA;AAAA,aACD,OAAO;AACN,cAAA,KAAK,4BAA4B,KAAK;AAC9C,YAAM,MAAM,wCAAwC;AAAA,IAAA;AAAA,EAExD;AAGE,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,QAAM;AAAA,MACN,OAAO,oBAAoB,OAAO,KAAK;AAAA,MACvC,QAAQ,OAAO;AAAA,MACf,QAAQ;AAAA,MACR;AAAA,MACA,UAAU;AAAA,MACV,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,YAAW;AAAA,MACX,YAAW;AAAA,IAAA;AAAA,EACb;AAEJ;"}
|
|
@@ -40,6 +40,7 @@ require("../../api/generated/users.cjs.js");
|
|
|
40
40
|
require("../../api/generated/versions.cjs.js");
|
|
41
41
|
require("../../api/generated/workfiles.cjs.js");
|
|
42
42
|
require("../../api/generated/ynputCloud.cjs.js");
|
|
43
|
+
require("../../api/generated/grouping.cjs.js");
|
|
43
44
|
const getActions = require("../../api/queries/actions/getActions.cjs.js");
|
|
44
45
|
require("../../api/queries/activities/getActivities.cjs.js");
|
|
45
46
|
require("../../api/queries/activities/updateActivities.cjs.js");
|
|
@@ -70,6 +71,7 @@ require("../../api/queries/users/getUsers.cjs.js");
|
|
|
70
71
|
require("../../api/queries/users/updateUsers.cjs.js");
|
|
71
72
|
require("../../api/queries/watchers/getWatchers.cjs.js");
|
|
72
73
|
require("../../api/queries/permissions/getPermissions.cjs.js");
|
|
74
|
+
require("../../api/queries/grouping/getGrouping.cjs.js");
|
|
73
75
|
const ActionsDropdown = require("./ActionsDropdown/ActionsDropdown.cjs.js");
|
|
74
76
|
const ActionIcon = require("./ActionIcon.cjs.js");
|
|
75
77
|
require("../../context/RemoteModulesContext.cjs.js");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Actions.cjs.js","sources":["../../../../../src/containers/Actions/Actions.tsx"],"sourcesContent":["import * as Styled from './Actions.styled'\nimport { MouseEvent, useState } from 'react'\nimport clsx from 'clsx'\nimport { toast } from 'react-toastify'\nimport { useMemo, useEffect } from 'react'\nimport { ActionContext, useExecuteActionMutation, useGetActionsFromContextQuery } from '@shared/api'\nimport { ActionsDropdown } from './ActionsDropdown'\nimport ActionIcon from './ActionIcon'\nimport { ActionTriggersProps, useActionTriggers } from '@shared/hooks'\nimport { ActionConfigDialog } from './ActionConfigDialog'\nimport { InteractiveActionDialog, InteractiveForm } from './InteractiveActionDialog'\n\nconst placeholder = {\n identifier: 'placeholder',\n label: 'Featured action slot',\n isPlaceholder: true,\n icon: { type: 'material-symbols', name: 'sync' },\n groupLabel: '',\n}\n\ninterface ActionsProps extends ActionTriggersProps {\n entities: { id: string; projectName: string; entitySubType?: string }[]\n entityType: ActionContext['entityType']\n entitySubTypes?: string[]\n isLoadingEntity: boolean\n projectActionsProjectName?: string\n featuredCount?: number\n}\n\nexport const Actions = ({\n entities,\n entityType,\n entitySubTypes,\n isLoadingEntity,\n projectActionsProjectName,\n searchParams,\n featuredCount = 2,\n onNavigate,\n onSetSearchParams,\n}: ActionsProps) => {\n // special triggers the actions can make to perform stuff on the client\n const { handleActionPayload } = useActionTriggers({ onNavigate, onSetSearchParams, searchParams })\n const [actionBeingConfigured, setActionBeingConfigured] = useState<any>(null)\n const [interactiveForm, setInteractiveForm] = useState<any>(null)\n\n const context: ActionContext | null = useMemo(() => {\n if (projectActionsProjectName){\n return {\n entityType: 'project',\n projectName: projectActionsProjectName,\n }\n }\n if (!entities.length) return null\n if (!entities[0].projectName) return null\n\n // get a list of unique entity subtypes from loaded data\n const entitySubtypesLoaded = entities\n .filter((entity) => entity.entitySubType)\n .map((entity) => entity.entitySubType as string)\n .filter((value, index, self) => self.indexOf(value) === index && value)\n\n // try and use the passed in entitySubTypes, if not use the loaded ones\n const entitySubTypesToUse = entitySubTypes?.length ? entitySubTypes : entitySubtypesLoaded\n\n // all types except version/representation should have subtypes\n if (\n !entitySubTypesToUse?.length &&\n entityType !== 'version' &&\n entityType !== 'representation'\n ) {\n console.warn('No entity subtypes found')\n return null\n }\n\n return {\n projectName: entities[0].projectName,\n entityType: entityType,\n entityIds: entities.map((entity) => entity.id),\n entitySubtypes: entitySubTypesToUse,\n }\n }, [entities, entityType])\n\n useEffect(() => {\n setInteractiveForm(null)\n }, [context])\n\n const { data, isFetching: isFetchingActions } = useGetActionsFromContextQuery(\n { mode: 'simple', actionContext: context as ActionContext },\n { skip: !context },\n )\n\n const actions = data?.actions || []\n\n const categoryOrder = ['application', 'admin', 'workflow']\n // group actions by category\n // sort by hardcoded category, this will changing the future\n const groupedActions = useMemo(() => {\n // Step 1: Group actions by category\n const grouped = actions.reduce((acc: { [key: string]: any[] }, action) => {\n const category = action.category || 'uncategorized'\n if (!acc[category]) {\n acc[category] = []\n }\n acc[category].push(action)\n return acc\n }, {})\n\n // Step 5: Return the ordered groups\n return grouped\n }, [actions])\n\n // get categories that don't have a specific order (not in categoryOrder)\n // then sort them alphabetically\n const unorderedCategories = useMemo(\n () => [\n ...new Set(\n Object.keys(groupedActions)\n .filter((category) => !categoryOrder.includes(category))\n .sort((a, b) => a.localeCompare(b)),\n ),\n ],\n [groupedActions],\n )\n\n const categories = [...categoryOrder, ...unorderedCategories]\n\n // create the options for the dropdown, each category is separated by a divider and a title\n // for the divider we will use a custom dropdown item template\n const dropdownOptions = useMemo(() => {\n const options = []\n\n categories.forEach((category) => {\n if (!groupedActions[category] || !groupedActions[category].length) return\n\n options.push({\n label: category,\n header: true,\n value: category,\n disabled: true,\n })\n\n const groupOptions = groupedActions[category].map((action) => ({\n value: action.identifier,\n label: action.groupLabel ? action.groupLabel + ' ' + action.label : action.label,\n icon: action.icon,\n hasConfig: !!action.configFields,\n }))\n\n options.push(...groupOptions)\n })\n\n // if no actions, add placeholder\n if (!options.length) {\n options.push({\n label: 'No actions available',\n value: 'no-actions',\n disabled: true,\n header: true,\n })\n }\n\n return options\n }, [groupedActions, unorderedCategories, categoryOrder])\n\n const featuredActions = useMemo(() => {\n // Filter and sort to get initial featured actions\n let tempFeaturedActions = actions\n .filter((action) => action.featured)\n .sort((a, b) => (a.order || 0) - (b.order || 0))\n .slice(0, featuredCount)\n\n // Check if we need to add more actions to reach featuredCount\n if (tempFeaturedActions.length < featuredCount) {\n categories.forEach((category) => {\n if (tempFeaturedActions.length >= featuredCount) return\n const actions = groupedActions[category]\n if (!actions || !actions.length) return\n\n for (let i = tempFeaturedActions.length; i < featuredCount; i++) {\n const action = actions[i]\n if (!action) break\n if (!action.icon) continue\n tempFeaturedActions.push(action)\n }\n })\n }\n\n return tempFeaturedActions\n }, [actions, groupedActions, placeholder])\n\n const [executeAction, { isLoading: isLoadingExecution, originalArgs }] =\n useExecuteActionMutation()\n const executingAction = isLoadingExecution && originalArgs?.identifier\n\n const handleExecuteAction = async (\n identifier: string,\n e?: MouseEvent<HTMLElement> | null,\n formData?: InteractiveForm,\n ) => {\n e?.preventDefault()\n const action = actions.find((option) => option.identifier === identifier)\n\n if (!action) {\n toast.error('Action not found')\n console.warn('Action not found', identifier)\n return\n }\n\n const params = {\n addonName: action.addonName as string,\n addonVersion: action.addonVersion as string,\n variant: action.variant,\n identifier: action.identifier,\n }\n\n const actionContext = { ...context }\n if (formData) {\n actionContext.formData = formData\n }\n\n let response = null\n\n try {\n response = await executeAction({ actionContext, ...params }).unwrap()\n } catch (error: any) {\n console.error('Error executing action', error)\n toast.error(error?.data?.detail || 'Error executing action')\n return\n }\n\n try {\n // Toast the message if it is available\n if (response?.message) {\n if (response?.success) {\n toast.success(response.message, { autoClose: 2000 })\n } else {\n toast.error(response.message, { autoClose: 2000 })\n }\n }\n\n // Even if response?.success is false, we still want to handle the payload\n // as it may contain useful information - complex error messages in form,\n // redirect to another page etc. If the action just needs to abort,\n // it raises exception instead of returning a response with success: false\n\n // Use the new hook to handle payload\n if (response?.payload) {\n if (response.type === 'form') {\n // action requests additional information from the user.\n // we show a dialog with the form and when the user submits it we call the action again\n\n // It probably does not make sense to move to the useActionTriggers hook\n // as it need contexts and the dialog\n const intf = {\n identifier,\n // @ts-expect-error\n title: response.payload['title'],\n // @ts-expect-error\n fields: response.payload['fields'],\n // @ts-expect-error\n submitLabel: response.payload['submit_label'],\n // @ts-expect-error\n cancelLabel: response.payload['cancel_label'],\n // @ts-expect-error\n submitIcon: response.payload['submit_icon'],\n // @ts-expect-error\n cancelIcon: response.payload['cancel_icon'],\n }\n setInteractiveForm(intf)\n } else {\n handleActionPayload(response.type as string, response.payload)\n }\n }\n } catch (error) {\n // got response, but failed to process it\n console.warn('Error during action response processing', error)\n toast.error('Error occured during action processing')\n }\n }\n\n const handleConfigureAction = (identifier: string) => {\n const action = actions.find((data) => data.identifier === identifier)\n if (!action) return\n setActionBeingConfigured(action)\n }\n\n const handleSubmitInteractiveForm = async (identifier: string, formData: InteractiveForm) => {\n handleExecuteAction(identifier, null, formData)\n }\n\n const loadingActions = useMemo(\n () => Array(featuredCount).fill(placeholder),\n [featuredCount, placeholder],\n )\n\n const isLoading = isFetchingActions || isLoadingEntity\n const featuredActionsToDisplay = isLoading ? loadingActions : featuredActions\n\n return (\n <Styled.Actions className=\"actions\">\n {featuredActionsToDisplay.map((action, i) => (\n <Styled.FeaturedAction\n key={action.identifier + '-' + i}\n className={clsx('action', {\n loading: isLoading,\n isPlaceholder: action.isPlaceholder,\n })}\n data-tooltip={action.groupLabel ? action.groupLabel + ' ' + action.label : action.label}\n disabled={action.isPlaceholder}\n onClick={(e) => handleExecuteAction(action.identifier, e)}\n >\n {/* @ts-ignore */}\n <ActionIcon icon={action.icon} isExecuting={executingAction === action.identifier} />\n </Styled.FeaturedAction>\n ))}\n <ActionsDropdown\n options={dropdownOptions}\n isLoading={isLoading && featuredCount > 0}\n onAction={handleExecuteAction}\n onConfig={handleConfigureAction}\n />\n <ActionConfigDialog\n action={actionBeingConfigured}\n // @ts-expect-error\n context={context}\n onClose={() => setActionBeingConfigured(null)}\n />\n <InteractiveActionDialog\n interactiveForm={interactiveForm}\n onClose={() => setInteractiveForm(null)}\n // @ts-expect-error\n onSubmit={handleSubmitInteractiveForm}\n />\n </Styled.Actions>\n )\n}\n"],"names":["useActionTriggers","useState","useMemo","useEffect","useGetActionsFromContextQuery","actions","useExecuteActionMutation","toast","data","jsxs","Styled.Actions","jsx","Styled.FeaturedAction","ActionsDropdown","ActionConfigDialog","InteractiveActionDialog"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Actions.cjs.js","sources":["../../../../../src/containers/Actions/Actions.tsx"],"sourcesContent":["import * as Styled from './Actions.styled'\nimport { MouseEvent, useState } from 'react'\nimport clsx from 'clsx'\nimport { toast } from 'react-toastify'\nimport { useMemo, useEffect } from 'react'\nimport { ActionContext, useExecuteActionMutation, useGetActionsFromContextQuery } from '@shared/api'\nimport { ActionsDropdown } from './ActionsDropdown'\nimport ActionIcon from './ActionIcon'\nimport { ActionTriggersProps, useActionTriggers } from '@shared/hooks'\nimport { ActionConfigDialog } from './ActionConfigDialog'\nimport { InteractiveActionDialog, InteractiveForm } from './InteractiveActionDialog'\n\nconst placeholder = {\n identifier: 'placeholder',\n label: 'Featured action slot',\n isPlaceholder: true,\n icon: { type: 'material-symbols', name: 'sync' },\n groupLabel: '',\n}\n\ninterface ActionsProps extends ActionTriggersProps {\n entities: { id: string; projectName: string; entitySubType?: string }[]\n entityType: ActionContext['entityType']\n entitySubTypes?: string[]\n isLoadingEntity: boolean\n projectActionsProjectName?: string\n featuredCount?: number\n}\n\nexport const Actions = ({\n entities,\n entityType,\n entitySubTypes,\n isLoadingEntity,\n projectActionsProjectName,\n searchParams,\n featuredCount = 2,\n onNavigate,\n onSetSearchParams,\n}: ActionsProps) => {\n // special triggers the actions can make to perform stuff on the client\n const { handleActionPayload } = useActionTriggers({ onNavigate, onSetSearchParams, searchParams })\n const [actionBeingConfigured, setActionBeingConfigured] = useState<any>(null)\n const [interactiveForm, setInteractiveForm] = useState<any>(null)\n\n const context: ActionContext | null = useMemo(() => {\n if (projectActionsProjectName){\n return {\n entityType: 'project',\n projectName: projectActionsProjectName,\n }\n }\n if (!entities.length) return null\n if (!entities[0].projectName) return null\n\n // get a list of unique entity subtypes from loaded data\n const entitySubtypesLoaded = entities\n .filter((entity) => entity.entitySubType)\n .map((entity) => entity.entitySubType as string)\n .filter((value, index, self) => self.indexOf(value) === index && value)\n\n // try and use the passed in entitySubTypes, if not use the loaded ones\n const entitySubTypesToUse = entitySubTypes?.length ? entitySubTypes : entitySubtypesLoaded\n\n // all types except version/representation should have subtypes\n if (\n !entitySubTypesToUse?.length &&\n entityType !== 'version' &&\n entityType !== 'representation'\n ) {\n console.warn('No entity subtypes found')\n return null\n }\n\n return {\n projectName: entities[0].projectName,\n entityType: entityType,\n entityIds: entities.map((entity) => entity.id),\n entitySubtypes: entitySubTypesToUse,\n }\n }, [entities, entityType])\n\n useEffect(() => {\n setInteractiveForm(null)\n }, [context])\n\n const { data, isFetching: isFetchingActions } = useGetActionsFromContextQuery(\n { mode: 'simple', actionContext: context as ActionContext },\n { skip: !context },\n )\n\n const actions = data?.actions || []\n\n const categoryOrder = ['application', 'admin', 'workflow']\n // group actions by category\n // sort by hardcoded category, this will changing the future\n const groupedActions = useMemo(() => {\n // Step 1: Group actions by category\n const grouped = actions.reduce((acc: { [key: string]: any[] }, action) => {\n const category = action.category || 'uncategorized'\n if (!acc[category]) {\n acc[category] = []\n }\n acc[category].push(action)\n return acc\n }, {})\n\n // Step 5: Return the ordered groups\n return grouped\n }, [actions])\n\n // get categories that don't have a specific order (not in categoryOrder)\n // then sort them alphabetically\n const unorderedCategories = useMemo(\n () => [\n ...new Set(\n Object.keys(groupedActions)\n .filter((category) => !categoryOrder.includes(category))\n .sort((a, b) => a.localeCompare(b)),\n ),\n ],\n [groupedActions],\n )\n\n const categories = [...categoryOrder, ...unorderedCategories]\n\n // create the options for the dropdown, each category is separated by a divider and a title\n // for the divider we will use a custom dropdown item template\n const dropdownOptions = useMemo(() => {\n const options = []\n\n categories.forEach((category) => {\n if (!groupedActions[category] || !groupedActions[category].length) return\n\n options.push({\n label: category,\n header: true,\n value: category,\n disabled: true,\n })\n\n const groupOptions = groupedActions[category].map((action) => ({\n value: action.identifier,\n label: action.groupLabel ? action.groupLabel + ' ' + action.label : action.label,\n icon: action.icon,\n hasConfig: !!action.configFields,\n }))\n\n options.push(...groupOptions)\n })\n\n // if no actions, add placeholder\n if (!options.length) {\n options.push({\n label: 'No actions available',\n value: 'no-actions',\n disabled: true,\n header: true,\n })\n }\n\n return options\n }, [groupedActions, unorderedCategories, categoryOrder])\n\n const featuredActions = useMemo(() => {\n // Filter and sort to get initial featured actions\n let tempFeaturedActions = actions\n .filter((action) => action.featured)\n .sort((a, b) => (a.order || 0) - (b.order || 0))\n .slice(0, featuredCount)\n\n // Check if we need to add more actions to reach featuredCount\n if (tempFeaturedActions.length < featuredCount) {\n categories.forEach((category) => {\n if (tempFeaturedActions.length >= featuredCount) return\n const actions = groupedActions[category]\n if (!actions || !actions.length) return\n\n for (let i = tempFeaturedActions.length; i < featuredCount; i++) {\n const action = actions[i]\n if (!action) break\n if (!action.icon) continue\n tempFeaturedActions.push(action)\n }\n })\n }\n\n return tempFeaturedActions\n }, [actions, groupedActions, placeholder])\n\n const [executeAction, { isLoading: isLoadingExecution, originalArgs }] =\n useExecuteActionMutation()\n const executingAction = isLoadingExecution && originalArgs?.identifier\n\n const handleExecuteAction = async (\n identifier: string,\n e?: MouseEvent<HTMLElement> | null,\n formData?: InteractiveForm,\n ) => {\n e?.preventDefault()\n const action = actions.find((option) => option.identifier === identifier)\n\n if (!action) {\n toast.error('Action not found')\n console.warn('Action not found', identifier)\n return\n }\n\n const params = {\n addonName: action.addonName as string,\n addonVersion: action.addonVersion as string,\n variant: action.variant,\n identifier: action.identifier,\n }\n\n const actionContext = { ...context }\n if (formData) {\n actionContext.formData = formData\n }\n\n let response = null\n\n try {\n response = await executeAction({ actionContext, ...params }).unwrap()\n } catch (error: any) {\n console.error('Error executing action', error)\n toast.error(error?.data?.detail || 'Error executing action')\n return\n }\n\n try {\n // Toast the message if it is available\n if (response?.message) {\n if (response?.success) {\n toast.success(response.message, { autoClose: 2000 })\n } else {\n toast.error(response.message, { autoClose: 2000 })\n }\n }\n\n // Even if response?.success is false, we still want to handle the payload\n // as it may contain useful information - complex error messages in form,\n // redirect to another page etc. If the action just needs to abort,\n // it raises exception instead of returning a response with success: false\n\n // Use the new hook to handle payload\n if (response?.payload) {\n if (response.type === 'form') {\n // action requests additional information from the user.\n // we show a dialog with the form and when the user submits it we call the action again\n\n // It probably does not make sense to move to the useActionTriggers hook\n // as it need contexts and the dialog\n const intf = {\n identifier,\n // @ts-expect-error\n title: response.payload['title'],\n // @ts-expect-error\n fields: response.payload['fields'],\n // @ts-expect-error\n submitLabel: response.payload['submit_label'],\n // @ts-expect-error\n cancelLabel: response.payload['cancel_label'],\n // @ts-expect-error\n submitIcon: response.payload['submit_icon'],\n // @ts-expect-error\n cancelIcon: response.payload['cancel_icon'],\n }\n setInteractiveForm(intf)\n } else {\n handleActionPayload(response.type as string, response.payload)\n }\n }\n } catch (error) {\n // got response, but failed to process it\n console.warn('Error during action response processing', error)\n toast.error('Error occured during action processing')\n }\n }\n\n const handleConfigureAction = (identifier: string) => {\n const action = actions.find((data) => data.identifier === identifier)\n if (!action) return\n setActionBeingConfigured(action)\n }\n\n const handleSubmitInteractiveForm = async (identifier: string, formData: InteractiveForm) => {\n handleExecuteAction(identifier, null, formData)\n }\n\n const loadingActions = useMemo(\n () => Array(featuredCount).fill(placeholder),\n [featuredCount, placeholder],\n )\n\n const isLoading = isFetchingActions || isLoadingEntity\n const featuredActionsToDisplay = isLoading ? loadingActions : featuredActions\n\n return (\n <Styled.Actions className=\"actions\">\n {featuredActionsToDisplay.map((action, i) => (\n <Styled.FeaturedAction\n key={action.identifier + '-' + i}\n className={clsx('action', {\n loading: isLoading,\n isPlaceholder: action.isPlaceholder,\n })}\n data-tooltip={action.groupLabel ? action.groupLabel + ' ' + action.label : action.label}\n disabled={action.isPlaceholder}\n onClick={(e) => handleExecuteAction(action.identifier, e)}\n >\n {/* @ts-ignore */}\n <ActionIcon icon={action.icon} isExecuting={executingAction === action.identifier} />\n </Styled.FeaturedAction>\n ))}\n <ActionsDropdown\n options={dropdownOptions}\n isLoading={isLoading && featuredCount > 0}\n onAction={handleExecuteAction}\n onConfig={handleConfigureAction}\n />\n <ActionConfigDialog\n action={actionBeingConfigured}\n // @ts-expect-error\n context={context}\n onClose={() => setActionBeingConfigured(null)}\n />\n <InteractiveActionDialog\n interactiveForm={interactiveForm}\n onClose={() => setInteractiveForm(null)}\n // @ts-expect-error\n onSubmit={handleSubmitInteractiveForm}\n />\n </Styled.Actions>\n )\n}\n"],"names":["useActionTriggers","useState","useMemo","useEffect","useGetActionsFromContextQuery","actions","useExecuteActionMutation","toast","data","jsxs","Styled.Actions","jsx","Styled.FeaturedAction","ActionsDropdown","ActionConfigDialog","InteractiveActionDialog"],"mappings":"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"}
|
|
@@ -38,6 +38,7 @@ import "../../api/generated/users.es.js";
|
|
|
38
38
|
import "../../api/generated/versions.es.js";
|
|
39
39
|
import "../../api/generated/workfiles.es.js";
|
|
40
40
|
import "../../api/generated/ynputCloud.es.js";
|
|
41
|
+
import "../../api/generated/grouping.es.js";
|
|
41
42
|
import { useGetActionsFromContextQuery, useExecuteActionMutation } from "../../api/queries/actions/getActions.es.js";
|
|
42
43
|
import "../../api/queries/activities/getActivities.es.js";
|
|
43
44
|
import "../../api/queries/activities/updateActivities.es.js";
|
|
@@ -68,6 +69,7 @@ import "../../api/queries/users/getUsers.es.js";
|
|
|
68
69
|
import "../../api/queries/users/updateUsers.es.js";
|
|
69
70
|
import "../../api/queries/watchers/getWatchers.es.js";
|
|
70
71
|
import "../../api/queries/permissions/getPermissions.es.js";
|
|
72
|
+
import "../../api/queries/grouping/getGrouping.es.js";
|
|
71
73
|
import { ActionsDropdown } from "./ActionsDropdown/ActionsDropdown.es.js";
|
|
72
74
|
import ActionIcon from "./ActionIcon.es.js";
|
|
73
75
|
import "../../context/RemoteModulesContext.es.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Actions.es.js","sources":["../../../../../src/containers/Actions/Actions.tsx"],"sourcesContent":["import * as Styled from './Actions.styled'\nimport { MouseEvent, useState } from 'react'\nimport clsx from 'clsx'\nimport { toast } from 'react-toastify'\nimport { useMemo, useEffect } from 'react'\nimport { ActionContext, useExecuteActionMutation, useGetActionsFromContextQuery } from '@shared/api'\nimport { ActionsDropdown } from './ActionsDropdown'\nimport ActionIcon from './ActionIcon'\nimport { ActionTriggersProps, useActionTriggers } from '@shared/hooks'\nimport { ActionConfigDialog } from './ActionConfigDialog'\nimport { InteractiveActionDialog, InteractiveForm } from './InteractiveActionDialog'\n\nconst placeholder = {\n identifier: 'placeholder',\n label: 'Featured action slot',\n isPlaceholder: true,\n icon: { type: 'material-symbols', name: 'sync' },\n groupLabel: '',\n}\n\ninterface ActionsProps extends ActionTriggersProps {\n entities: { id: string; projectName: string; entitySubType?: string }[]\n entityType: ActionContext['entityType']\n entitySubTypes?: string[]\n isLoadingEntity: boolean\n projectActionsProjectName?: string\n featuredCount?: number\n}\n\nexport const Actions = ({\n entities,\n entityType,\n entitySubTypes,\n isLoadingEntity,\n projectActionsProjectName,\n searchParams,\n featuredCount = 2,\n onNavigate,\n onSetSearchParams,\n}: ActionsProps) => {\n // special triggers the actions can make to perform stuff on the client\n const { handleActionPayload } = useActionTriggers({ onNavigate, onSetSearchParams, searchParams })\n const [actionBeingConfigured, setActionBeingConfigured] = useState<any>(null)\n const [interactiveForm, setInteractiveForm] = useState<any>(null)\n\n const context: ActionContext | null = useMemo(() => {\n if (projectActionsProjectName){\n return {\n entityType: 'project',\n projectName: projectActionsProjectName,\n }\n }\n if (!entities.length) return null\n if (!entities[0].projectName) return null\n\n // get a list of unique entity subtypes from loaded data\n const entitySubtypesLoaded = entities\n .filter((entity) => entity.entitySubType)\n .map((entity) => entity.entitySubType as string)\n .filter((value, index, self) => self.indexOf(value) === index && value)\n\n // try and use the passed in entitySubTypes, if not use the loaded ones\n const entitySubTypesToUse = entitySubTypes?.length ? entitySubTypes : entitySubtypesLoaded\n\n // all types except version/representation should have subtypes\n if (\n !entitySubTypesToUse?.length &&\n entityType !== 'version' &&\n entityType !== 'representation'\n ) {\n console.warn('No entity subtypes found')\n return null\n }\n\n return {\n projectName: entities[0].projectName,\n entityType: entityType,\n entityIds: entities.map((entity) => entity.id),\n entitySubtypes: entitySubTypesToUse,\n }\n }, [entities, entityType])\n\n useEffect(() => {\n setInteractiveForm(null)\n }, [context])\n\n const { data, isFetching: isFetchingActions } = useGetActionsFromContextQuery(\n { mode: 'simple', actionContext: context as ActionContext },\n { skip: !context },\n )\n\n const actions = data?.actions || []\n\n const categoryOrder = ['application', 'admin', 'workflow']\n // group actions by category\n // sort by hardcoded category, this will changing the future\n const groupedActions = useMemo(() => {\n // Step 1: Group actions by category\n const grouped = actions.reduce((acc: { [key: string]: any[] }, action) => {\n const category = action.category || 'uncategorized'\n if (!acc[category]) {\n acc[category] = []\n }\n acc[category].push(action)\n return acc\n }, {})\n\n // Step 5: Return the ordered groups\n return grouped\n }, [actions])\n\n // get categories that don't have a specific order (not in categoryOrder)\n // then sort them alphabetically\n const unorderedCategories = useMemo(\n () => [\n ...new Set(\n Object.keys(groupedActions)\n .filter((category) => !categoryOrder.includes(category))\n .sort((a, b) => a.localeCompare(b)),\n ),\n ],\n [groupedActions],\n )\n\n const categories = [...categoryOrder, ...unorderedCategories]\n\n // create the options for the dropdown, each category is separated by a divider and a title\n // for the divider we will use a custom dropdown item template\n const dropdownOptions = useMemo(() => {\n const options = []\n\n categories.forEach((category) => {\n if (!groupedActions[category] || !groupedActions[category].length) return\n\n options.push({\n label: category,\n header: true,\n value: category,\n disabled: true,\n })\n\n const groupOptions = groupedActions[category].map((action) => ({\n value: action.identifier,\n label: action.groupLabel ? action.groupLabel + ' ' + action.label : action.label,\n icon: action.icon,\n hasConfig: !!action.configFields,\n }))\n\n options.push(...groupOptions)\n })\n\n // if no actions, add placeholder\n if (!options.length) {\n options.push({\n label: 'No actions available',\n value: 'no-actions',\n disabled: true,\n header: true,\n })\n }\n\n return options\n }, [groupedActions, unorderedCategories, categoryOrder])\n\n const featuredActions = useMemo(() => {\n // Filter and sort to get initial featured actions\n let tempFeaturedActions = actions\n .filter((action) => action.featured)\n .sort((a, b) => (a.order || 0) - (b.order || 0))\n .slice(0, featuredCount)\n\n // Check if we need to add more actions to reach featuredCount\n if (tempFeaturedActions.length < featuredCount) {\n categories.forEach((category) => {\n if (tempFeaturedActions.length >= featuredCount) return\n const actions = groupedActions[category]\n if (!actions || !actions.length) return\n\n for (let i = tempFeaturedActions.length; i < featuredCount; i++) {\n const action = actions[i]\n if (!action) break\n if (!action.icon) continue\n tempFeaturedActions.push(action)\n }\n })\n }\n\n return tempFeaturedActions\n }, [actions, groupedActions, placeholder])\n\n const [executeAction, { isLoading: isLoadingExecution, originalArgs }] =\n useExecuteActionMutation()\n const executingAction = isLoadingExecution && originalArgs?.identifier\n\n const handleExecuteAction = async (\n identifier: string,\n e?: MouseEvent<HTMLElement> | null,\n formData?: InteractiveForm,\n ) => {\n e?.preventDefault()\n const action = actions.find((option) => option.identifier === identifier)\n\n if (!action) {\n toast.error('Action not found')\n console.warn('Action not found', identifier)\n return\n }\n\n const params = {\n addonName: action.addonName as string,\n addonVersion: action.addonVersion as string,\n variant: action.variant,\n identifier: action.identifier,\n }\n\n const actionContext = { ...context }\n if (formData) {\n actionContext.formData = formData\n }\n\n let response = null\n\n try {\n response = await executeAction({ actionContext, ...params }).unwrap()\n } catch (error: any) {\n console.error('Error executing action', error)\n toast.error(error?.data?.detail || 'Error executing action')\n return\n }\n\n try {\n // Toast the message if it is available\n if (response?.message) {\n if (response?.success) {\n toast.success(response.message, { autoClose: 2000 })\n } else {\n toast.error(response.message, { autoClose: 2000 })\n }\n }\n\n // Even if response?.success is false, we still want to handle the payload\n // as it may contain useful information - complex error messages in form,\n // redirect to another page etc. If the action just needs to abort,\n // it raises exception instead of returning a response with success: false\n\n // Use the new hook to handle payload\n if (response?.payload) {\n if (response.type === 'form') {\n // action requests additional information from the user.\n // we show a dialog with the form and when the user submits it we call the action again\n\n // It probably does not make sense to move to the useActionTriggers hook\n // as it need contexts and the dialog\n const intf = {\n identifier,\n // @ts-expect-error\n title: response.payload['title'],\n // @ts-expect-error\n fields: response.payload['fields'],\n // @ts-expect-error\n submitLabel: response.payload['submit_label'],\n // @ts-expect-error\n cancelLabel: response.payload['cancel_label'],\n // @ts-expect-error\n submitIcon: response.payload['submit_icon'],\n // @ts-expect-error\n cancelIcon: response.payload['cancel_icon'],\n }\n setInteractiveForm(intf)\n } else {\n handleActionPayload(response.type as string, response.payload)\n }\n }\n } catch (error) {\n // got response, but failed to process it\n console.warn('Error during action response processing', error)\n toast.error('Error occured during action processing')\n }\n }\n\n const handleConfigureAction = (identifier: string) => {\n const action = actions.find((data) => data.identifier === identifier)\n if (!action) return\n setActionBeingConfigured(action)\n }\n\n const handleSubmitInteractiveForm = async (identifier: string, formData: InteractiveForm) => {\n handleExecuteAction(identifier, null, formData)\n }\n\n const loadingActions = useMemo(\n () => Array(featuredCount).fill(placeholder),\n [featuredCount, placeholder],\n )\n\n const isLoading = isFetchingActions || isLoadingEntity\n const featuredActionsToDisplay = isLoading ? loadingActions : featuredActions\n\n return (\n <Styled.Actions className=\"actions\">\n {featuredActionsToDisplay.map((action, i) => (\n <Styled.FeaturedAction\n key={action.identifier + '-' + i}\n className={clsx('action', {\n loading: isLoading,\n isPlaceholder: action.isPlaceholder,\n })}\n data-tooltip={action.groupLabel ? action.groupLabel + ' ' + action.label : action.label}\n disabled={action.isPlaceholder}\n onClick={(e) => handleExecuteAction(action.identifier, e)}\n >\n {/* @ts-ignore */}\n <ActionIcon icon={action.icon} isExecuting={executingAction === action.identifier} />\n </Styled.FeaturedAction>\n ))}\n <ActionsDropdown\n options={dropdownOptions}\n isLoading={isLoading && featuredCount > 0}\n onAction={handleExecuteAction}\n onConfig={handleConfigureAction}\n />\n <ActionConfigDialog\n action={actionBeingConfigured}\n // @ts-expect-error\n context={context}\n onClose={() => setActionBeingConfigured(null)}\n />\n <InteractiveActionDialog\n interactiveForm={interactiveForm}\n onClose={() => setInteractiveForm(null)}\n // @ts-expect-error\n onSubmit={handleSubmitInteractiveForm}\n />\n </Styled.Actions>\n )\n}\n"],"names":["actions","data","jsxs","Styled.Actions","jsx","Styled.FeaturedAction"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Actions.es.js","sources":["../../../../../src/containers/Actions/Actions.tsx"],"sourcesContent":["import * as Styled from './Actions.styled'\nimport { MouseEvent, useState } from 'react'\nimport clsx from 'clsx'\nimport { toast } from 'react-toastify'\nimport { useMemo, useEffect } from 'react'\nimport { ActionContext, useExecuteActionMutation, useGetActionsFromContextQuery } from '@shared/api'\nimport { ActionsDropdown } from './ActionsDropdown'\nimport ActionIcon from './ActionIcon'\nimport { ActionTriggersProps, useActionTriggers } from '@shared/hooks'\nimport { ActionConfigDialog } from './ActionConfigDialog'\nimport { InteractiveActionDialog, InteractiveForm } from './InteractiveActionDialog'\n\nconst placeholder = {\n identifier: 'placeholder',\n label: 'Featured action slot',\n isPlaceholder: true,\n icon: { type: 'material-symbols', name: 'sync' },\n groupLabel: '',\n}\n\ninterface ActionsProps extends ActionTriggersProps {\n entities: { id: string; projectName: string; entitySubType?: string }[]\n entityType: ActionContext['entityType']\n entitySubTypes?: string[]\n isLoadingEntity: boolean\n projectActionsProjectName?: string\n featuredCount?: number\n}\n\nexport const Actions = ({\n entities,\n entityType,\n entitySubTypes,\n isLoadingEntity,\n projectActionsProjectName,\n searchParams,\n featuredCount = 2,\n onNavigate,\n onSetSearchParams,\n}: ActionsProps) => {\n // special triggers the actions can make to perform stuff on the client\n const { handleActionPayload } = useActionTriggers({ onNavigate, onSetSearchParams, searchParams })\n const [actionBeingConfigured, setActionBeingConfigured] = useState<any>(null)\n const [interactiveForm, setInteractiveForm] = useState<any>(null)\n\n const context: ActionContext | null = useMemo(() => {\n if (projectActionsProjectName){\n return {\n entityType: 'project',\n projectName: projectActionsProjectName,\n }\n }\n if (!entities.length) return null\n if (!entities[0].projectName) return null\n\n // get a list of unique entity subtypes from loaded data\n const entitySubtypesLoaded = entities\n .filter((entity) => entity.entitySubType)\n .map((entity) => entity.entitySubType as string)\n .filter((value, index, self) => self.indexOf(value) === index && value)\n\n // try and use the passed in entitySubTypes, if not use the loaded ones\n const entitySubTypesToUse = entitySubTypes?.length ? entitySubTypes : entitySubtypesLoaded\n\n // all types except version/representation should have subtypes\n if (\n !entitySubTypesToUse?.length &&\n entityType !== 'version' &&\n entityType !== 'representation'\n ) {\n console.warn('No entity subtypes found')\n return null\n }\n\n return {\n projectName: entities[0].projectName,\n entityType: entityType,\n entityIds: entities.map((entity) => entity.id),\n entitySubtypes: entitySubTypesToUse,\n }\n }, [entities, entityType])\n\n useEffect(() => {\n setInteractiveForm(null)\n }, [context])\n\n const { data, isFetching: isFetchingActions } = useGetActionsFromContextQuery(\n { mode: 'simple', actionContext: context as ActionContext },\n { skip: !context },\n )\n\n const actions = data?.actions || []\n\n const categoryOrder = ['application', 'admin', 'workflow']\n // group actions by category\n // sort by hardcoded category, this will changing the future\n const groupedActions = useMemo(() => {\n // Step 1: Group actions by category\n const grouped = actions.reduce((acc: { [key: string]: any[] }, action) => {\n const category = action.category || 'uncategorized'\n if (!acc[category]) {\n acc[category] = []\n }\n acc[category].push(action)\n return acc\n }, {})\n\n // Step 5: Return the ordered groups\n return grouped\n }, [actions])\n\n // get categories that don't have a specific order (not in categoryOrder)\n // then sort them alphabetically\n const unorderedCategories = useMemo(\n () => [\n ...new Set(\n Object.keys(groupedActions)\n .filter((category) => !categoryOrder.includes(category))\n .sort((a, b) => a.localeCompare(b)),\n ),\n ],\n [groupedActions],\n )\n\n const categories = [...categoryOrder, ...unorderedCategories]\n\n // create the options for the dropdown, each category is separated by a divider and a title\n // for the divider we will use a custom dropdown item template\n const dropdownOptions = useMemo(() => {\n const options = []\n\n categories.forEach((category) => {\n if (!groupedActions[category] || !groupedActions[category].length) return\n\n options.push({\n label: category,\n header: true,\n value: category,\n disabled: true,\n })\n\n const groupOptions = groupedActions[category].map((action) => ({\n value: action.identifier,\n label: action.groupLabel ? action.groupLabel + ' ' + action.label : action.label,\n icon: action.icon,\n hasConfig: !!action.configFields,\n }))\n\n options.push(...groupOptions)\n })\n\n // if no actions, add placeholder\n if (!options.length) {\n options.push({\n label: 'No actions available',\n value: 'no-actions',\n disabled: true,\n header: true,\n })\n }\n\n return options\n }, [groupedActions, unorderedCategories, categoryOrder])\n\n const featuredActions = useMemo(() => {\n // Filter and sort to get initial featured actions\n let tempFeaturedActions = actions\n .filter((action) => action.featured)\n .sort((a, b) => (a.order || 0) - (b.order || 0))\n .slice(0, featuredCount)\n\n // Check if we need to add more actions to reach featuredCount\n if (tempFeaturedActions.length < featuredCount) {\n categories.forEach((category) => {\n if (tempFeaturedActions.length >= featuredCount) return\n const actions = groupedActions[category]\n if (!actions || !actions.length) return\n\n for (let i = tempFeaturedActions.length; i < featuredCount; i++) {\n const action = actions[i]\n if (!action) break\n if (!action.icon) continue\n tempFeaturedActions.push(action)\n }\n })\n }\n\n return tempFeaturedActions\n }, [actions, groupedActions, placeholder])\n\n const [executeAction, { isLoading: isLoadingExecution, originalArgs }] =\n useExecuteActionMutation()\n const executingAction = isLoadingExecution && originalArgs?.identifier\n\n const handleExecuteAction = async (\n identifier: string,\n e?: MouseEvent<HTMLElement> | null,\n formData?: InteractiveForm,\n ) => {\n e?.preventDefault()\n const action = actions.find((option) => option.identifier === identifier)\n\n if (!action) {\n toast.error('Action not found')\n console.warn('Action not found', identifier)\n return\n }\n\n const params = {\n addonName: action.addonName as string,\n addonVersion: action.addonVersion as string,\n variant: action.variant,\n identifier: action.identifier,\n }\n\n const actionContext = { ...context }\n if (formData) {\n actionContext.formData = formData\n }\n\n let response = null\n\n try {\n response = await executeAction({ actionContext, ...params }).unwrap()\n } catch (error: any) {\n console.error('Error executing action', error)\n toast.error(error?.data?.detail || 'Error executing action')\n return\n }\n\n try {\n // Toast the message if it is available\n if (response?.message) {\n if (response?.success) {\n toast.success(response.message, { autoClose: 2000 })\n } else {\n toast.error(response.message, { autoClose: 2000 })\n }\n }\n\n // Even if response?.success is false, we still want to handle the payload\n // as it may contain useful information - complex error messages in form,\n // redirect to another page etc. If the action just needs to abort,\n // it raises exception instead of returning a response with success: false\n\n // Use the new hook to handle payload\n if (response?.payload) {\n if (response.type === 'form') {\n // action requests additional information from the user.\n // we show a dialog with the form and when the user submits it we call the action again\n\n // It probably does not make sense to move to the useActionTriggers hook\n // as it need contexts and the dialog\n const intf = {\n identifier,\n // @ts-expect-error\n title: response.payload['title'],\n // @ts-expect-error\n fields: response.payload['fields'],\n // @ts-expect-error\n submitLabel: response.payload['submit_label'],\n // @ts-expect-error\n cancelLabel: response.payload['cancel_label'],\n // @ts-expect-error\n submitIcon: response.payload['submit_icon'],\n // @ts-expect-error\n cancelIcon: response.payload['cancel_icon'],\n }\n setInteractiveForm(intf)\n } else {\n handleActionPayload(response.type as string, response.payload)\n }\n }\n } catch (error) {\n // got response, but failed to process it\n console.warn('Error during action response processing', error)\n toast.error('Error occured during action processing')\n }\n }\n\n const handleConfigureAction = (identifier: string) => {\n const action = actions.find((data) => data.identifier === identifier)\n if (!action) return\n setActionBeingConfigured(action)\n }\n\n const handleSubmitInteractiveForm = async (identifier: string, formData: InteractiveForm) => {\n handleExecuteAction(identifier, null, formData)\n }\n\n const loadingActions = useMemo(\n () => Array(featuredCount).fill(placeholder),\n [featuredCount, placeholder],\n )\n\n const isLoading = isFetchingActions || isLoadingEntity\n const featuredActionsToDisplay = isLoading ? loadingActions : featuredActions\n\n return (\n <Styled.Actions className=\"actions\">\n {featuredActionsToDisplay.map((action, i) => (\n <Styled.FeaturedAction\n key={action.identifier + '-' + i}\n className={clsx('action', {\n loading: isLoading,\n isPlaceholder: action.isPlaceholder,\n })}\n data-tooltip={action.groupLabel ? action.groupLabel + ' ' + action.label : action.label}\n disabled={action.isPlaceholder}\n onClick={(e) => handleExecuteAction(action.identifier, e)}\n >\n {/* @ts-ignore */}\n <ActionIcon icon={action.icon} isExecuting={executingAction === action.identifier} />\n </Styled.FeaturedAction>\n ))}\n <ActionsDropdown\n options={dropdownOptions}\n isLoading={isLoading && featuredCount > 0}\n onAction={handleExecuteAction}\n onConfig={handleConfigureAction}\n />\n <ActionConfigDialog\n action={actionBeingConfigured}\n // @ts-expect-error\n context={context}\n onClose={() => setActionBeingConfigured(null)}\n />\n <InteractiveActionDialog\n interactiveForm={interactiveForm}\n onClose={() => setInteractiveForm(null)}\n // @ts-expect-error\n onSubmit={handleSubmitInteractiveForm}\n />\n </Styled.Actions>\n )\n}\n"],"names":["actions","data","jsxs","Styled.Actions","jsx","Styled.FeaturedAction"],"mappings":"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"}
|
|
@@ -42,6 +42,7 @@ require("../../api/generated/users.cjs.js");
|
|
|
42
42
|
require("../../api/generated/versions.cjs.js");
|
|
43
43
|
require("../../api/generated/workfiles.cjs.js");
|
|
44
44
|
require("../../api/generated/ynputCloud.cjs.js");
|
|
45
|
+
require("../../api/generated/grouping.cjs.js");
|
|
45
46
|
require("../../api/queries/actions/getActions.cjs.js");
|
|
46
47
|
require("../../api/queries/activities/getActivities.cjs.js");
|
|
47
48
|
require("../../api/queries/activities/updateActivities.cjs.js");
|
|
@@ -72,6 +73,7 @@ require("../../api/queries/users/getUsers.cjs.js");
|
|
|
72
73
|
require("../../api/queries/users/updateUsers.cjs.js");
|
|
73
74
|
require("../../api/queries/watchers/getWatchers.cjs.js");
|
|
74
75
|
require("../../api/queries/permissions/getPermissions.cjs.js");
|
|
76
|
+
require("../../api/queries/grouping/getGrouping.cjs.js");
|
|
75
77
|
require("react");
|
|
76
78
|
require("@dnd-kit/core");
|
|
77
79
|
require("@dnd-kit/sortable");
|
|
@@ -126,17 +128,15 @@ require("../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");
|
|
|
126
128
|
require("../Feed/Feed.styled.cjs.js");
|
|
127
129
|
require("date-fns");
|
|
128
130
|
require("../ProjectTreeTable/ProjectTreeTable.cjs.js");
|
|
131
|
+
require("../ProjectTreeTable/context/CellEditingContext.cjs.js");
|
|
132
|
+
require("../ProjectTreeTable/context/ClipboardContext.cjs.js");
|
|
133
|
+
require("@tanstack/react-table");
|
|
129
134
|
require("../ProjectTreeTable/context/SelectionCellsContext.cjs.js");
|
|
135
|
+
require("../ProjectTreeTable/context/ColumnSettingsContext.cjs.js");
|
|
130
136
|
require("../ProjectTreeTable/context/ProjectTableContext.cjs.js");
|
|
131
137
|
require("../ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");
|
|
132
138
|
require("../ProjectTreeTable/context/SelectedRowsContext.cjs.js");
|
|
133
|
-
require("../ProjectTreeTable/context/ColumnSettingsContext.cjs.js");
|
|
134
|
-
require("../ProjectTreeTable/context/CellEditingContext.cjs.js");
|
|
135
|
-
require("../ProjectTreeTable/context/ClipboardContext.cjs.js");
|
|
136
|
-
require("../ProjectTreeTable/context/ProjectTableSelectionContext.cjs.js");
|
|
137
139
|
require("../ProjectTreeTable/context/ProjectDataContext.cjs.js");
|
|
138
|
-
require("../ProjectTreeTable/context/ProjectTableModulesContext.cjs.js");
|
|
139
|
-
require("@tanstack/react-table");
|
|
140
140
|
require("../ProjectTreeTable/widgets/CollapsedWidget.cjs.js");
|
|
141
141
|
require("../ProjectTreeTable/widgets/DateWidget.cjs.js");
|
|
142
142
|
require("../ProjectTreeTable/widgets/EnumWidget.cjs.js");
|
|
@@ -150,11 +150,12 @@ require("../ProjectTreeTable/ProjectTreeTable.styled.cjs.js");
|
|
|
150
150
|
require("../ProjectTreeTable/components/SelectionCell.cjs.js");
|
|
151
151
|
require("../ProjectTreeTable/components/RowSelectionHeader.cjs.js");
|
|
152
152
|
require("../ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");
|
|
153
|
-
require("../DetailsPanel/DetailsPanel.styled.cjs.js");
|
|
154
153
|
require("../../../../_virtual/runtime.cjs.js");
|
|
155
154
|
require("../../../../_virtual/semver.cjs.js");
|
|
156
155
|
require("react-redux");
|
|
157
156
|
require("custom-protocol-check");
|
|
157
|
+
require("../ProjectTreeTable/components/GroupSettingsFallback.cjs.js");
|
|
158
|
+
require("../DetailsPanel/DetailsPanel.styled.cjs.js");
|
|
158
159
|
require("../DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");
|
|
159
160
|
require("../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");
|
|
160
161
|
require("../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");
|
|
@@ -179,6 +180,7 @@ require("../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");
|
|
|
179
180
|
require("../../components/AttributeEditor/components/MinMaxField.cjs.js");
|
|
180
181
|
require("../../components/EnumEditor/EnumEditor.styled.cjs.js");
|
|
181
182
|
require("../../components/SearchFilter/filterDates.cjs.js");
|
|
183
|
+
require("../../components/Badge/Badge.cjs.js");
|
|
182
184
|
const InteractiveActionDialog = ({
|
|
183
185
|
interactiveForm,
|
|
184
186
|
onClose,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InteractiveActionDialog.cjs.js","sources":["../../../../../src/containers/Actions/InteractiveActionDialog.tsx"],"sourcesContent":["import { SimpleFormDialog } from '@shared/components'\nimport type { SimpleFormField } from '@shared/api'\n\nexport interface InteractiveForm {\n identifier: string\n title: string\n fields: SimpleFormField[]\n submitLabel?: string\n cancelLabel?: string\n submitIcon?: string\n cancelIcon?: string\n}\n\nexport interface InteractiveActionDialogProps {\n interactiveForm: InteractiveForm | null\n onClose: () => void\n onSubmit: (identifier: string, formData: Record<string, any>) => void\n}\n\nexport const InteractiveActionDialog = ({\n interactiveForm,\n onClose,\n onSubmit,\n}: InteractiveActionDialogProps) => {\n if (!interactiveForm) return null\n\n const handleSubmit = (formData: Record<string, any>) => {\n onSubmit(interactiveForm.identifier, formData)\n onClose()\n }\n\n return (\n <SimpleFormDialog\n isOpen\n title={`${interactiveForm.title}`}\n fields={interactiveForm.fields}\n submitLabel={interactiveForm.submitLabel}\n cancelLabel={interactiveForm.cancelLabel}\n submitIcon={interactiveForm.submitIcon}\n cancelIcon={interactiveForm.cancelIcon}\n onClose={onClose}\n onSubmit={handleSubmit}\n />\n )\n}\n"],"names":["jsx","SimpleFormDialog"],"mappings":"
|
|
1
|
+
{"version":3,"file":"InteractiveActionDialog.cjs.js","sources":["../../../../../src/containers/Actions/InteractiveActionDialog.tsx"],"sourcesContent":["import { SimpleFormDialog } from '@shared/components'\nimport type { SimpleFormField } from '@shared/api'\n\nexport interface InteractiveForm {\n identifier: string\n title: string\n fields: SimpleFormField[]\n submitLabel?: string\n cancelLabel?: string\n submitIcon?: string\n cancelIcon?: string\n}\n\nexport interface InteractiveActionDialogProps {\n interactiveForm: InteractiveForm | null\n onClose: () => void\n onSubmit: (identifier: string, formData: Record<string, any>) => void\n}\n\nexport const InteractiveActionDialog = ({\n interactiveForm,\n onClose,\n onSubmit,\n}: InteractiveActionDialogProps) => {\n if (!interactiveForm) return null\n\n const handleSubmit = (formData: Record<string, any>) => {\n onSubmit(interactiveForm.identifier, formData)\n onClose()\n }\n\n return (\n <SimpleFormDialog\n isOpen\n title={`${interactiveForm.title}`}\n fields={interactiveForm.fields}\n submitLabel={interactiveForm.submitLabel}\n cancelLabel={interactiveForm.cancelLabel}\n submitIcon={interactiveForm.submitIcon}\n cancelIcon={interactiveForm.cancelIcon}\n onClose={onClose}\n onSubmit={handleSubmit}\n />\n )\n}\n"],"names":["jsx","SimpleFormDialog"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBO,MAAM,0BAA0B,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AACF,MAAoC;AAC9B,MAAA,CAAC,gBAAwB,QAAA;AAEvB,QAAA,eAAe,CAAC,aAAkC;AAC7C,aAAA,gBAAgB,YAAY,QAAQ;AACrC,YAAA;AAAA,EACV;AAGE,SAAAA,2BAAA,kBAAA;AAAA,IAACC,iBAAA;AAAA,IAAA;AAAA,MACC,QAAM;AAAA,MACN,OAAO,GAAG,gBAAgB,KAAK;AAAA,MAC/B,QAAQ,gBAAgB;AAAA,MACxB,aAAa,gBAAgB;AAAA,MAC7B,aAAa,gBAAgB;AAAA,MAC7B,YAAY,gBAAgB;AAAA,MAC5B,YAAY,gBAAgB;AAAA,MAC5B;AAAA,MACA,UAAU;AAAA,IAAA;AAAA,EACZ;AAEJ;;"}
|