@ynput/ayon-frontend-shared 0.2.15 → 0.2.16
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 +3 -0
- package/dist/DetailsPanel.cjs.js.map +1 -1
- package/dist/DetailsPanel.es.js +3 -0
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/ProjectTreeTable.cjs.js +34 -1
- package/dist/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/ProjectTreeTable.es.js +36 -3
- 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 +3 -5
- package/dist/_virtual/index.cjs5.js.map +1 -1
- package/dist/_virtual/index.cjs6.js +5 -3
- package/dist/_virtual/index.cjs6.js.map +1 -1
- package/dist/_virtual/index.cjs7.js +3 -5
- package/dist/_virtual/index.cjs7.js.map +1 -1
- package/dist/_virtual/index.cjs8.js +4 -4
- package/dist/_virtual/index.cjs9.js +4 -4
- 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 +2 -5
- package/dist/_virtual/index.es5.js.map +1 -1
- package/dist/_virtual/index.es6.js +5 -2
- package/dist/_virtual/index.es6.js.map +1 -1
- package/dist/_virtual/index.es7.js +2 -5
- package/dist/_virtual/index.es7.js.map +1 -1
- package/dist/_virtual/index.es8.js +4 -4
- package/dist/_virtual/index.es9.js +4 -4
- 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 +3 -0
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +3 -0
- package/dist/index.es.js.map +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.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/node_modules/unified/lib/index.cjs.js +2 -2
- package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
- 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/node_modules/vfile/lib/index.cjs.js +1 -1
- package/dist/node_modules/vfile/lib/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 +3 -0
- package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js +3 -0
- package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +138 -3
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +138 -3
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.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 +93 -79
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +93 -79
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +87 -17
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +88 -18
- 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 +3 -0
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +3 -0
- 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/SimpleFormDialog/SimpleFormDialog.cjs.js +223 -19
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +224 -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 +3 -0
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +3 -0
- 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 +3 -0
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +3 -0
- 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 +3 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +3 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +13 -10
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +13 -10
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +3 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +3 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +3 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +3 -0
- 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 +25 -26
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +26 -27
- 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 +3 -0
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +3 -0
- 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/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 +33 -9
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +34 -10
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.cjs.js +37 -16
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.es.js +38 -17
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.es.js.map +1 -1
- 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 +84 -34
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +85 -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 +239 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +239 -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/hooks/useQueryFilters.cjs.js +40 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +40 -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 +12 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +12 -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 +3 -0
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +3 -0
- 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 +8 -2
- 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 +8 -2
- package/dist/shared/src/hooks/useLoadModule.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useLoadModule.es.js +8 -2
- 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/ProjectTableSettings.d.ts +1 -1
- package/dist/types/components/ReviewableProgressCard/ReviewableProgressCard.d.ts +1 -1
- package/dist/types/components/ReviewablesList/ReviewablesUpload.d.ts +19 -3
- 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/context/ProjectTableContext.d.ts +14 -3
- package/dist/types/containers/ProjectTreeTable/context/ProjectTableModulesContext.d.ts +22 -2
- package/dist/types/containers/ProjectTreeTable/hooks/index.d.ts +13 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.d.ts +8 -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 +37 -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/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 +1 -4
- 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
|
@@ -31,7 +31,6 @@ const getReadOnlyLists = require("./utils/getReadOnlyLists.cjs.js");
|
|
|
31
31
|
const core = require("@dnd-kit/core");
|
|
32
32
|
const sortable = require("@dnd-kit/sortable");
|
|
33
33
|
const utilities_esm = require("../../../../node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs.js");
|
|
34
|
-
const useBuildGroupByTableData = require("./hooks/useBuildGroupByTableData.cjs.js");
|
|
35
34
|
const getCommonPinningStyles = (column) => {
|
|
36
35
|
const isPinned = column.getIsPinned();
|
|
37
36
|
const offset = column.id !== SelectionCellsContext.ROW_SELECTION_COLUMN_ID && column.id !== DRAG_HANDLE_COLUMN_ID ? -30 : 0;
|
|
@@ -59,7 +58,6 @@ const ProjectTreeTable = ({
|
|
|
59
58
|
onRowReorder,
|
|
60
59
|
dndActiveId,
|
|
61
60
|
// Destructure new prop
|
|
62
|
-
groupByConfig,
|
|
63
61
|
pt,
|
|
64
62
|
...props
|
|
65
63
|
}) => {
|
|
@@ -77,8 +75,7 @@ const ProjectTreeTable = ({
|
|
|
77
75
|
} = ColumnSettingsContext.useColumnSettingsContext();
|
|
78
76
|
const {
|
|
79
77
|
projectInfo,
|
|
80
|
-
tableData
|
|
81
|
-
taskGroups,
|
|
78
|
+
tableData,
|
|
82
79
|
attribFields,
|
|
83
80
|
entitiesMap,
|
|
84
81
|
users,
|
|
@@ -94,17 +91,6 @@ const ProjectTreeTable = ({
|
|
|
94
91
|
showHierarchy,
|
|
95
92
|
fetchNextPage
|
|
96
93
|
} = ProjectTableContext.useProjectTableContext();
|
|
97
|
-
const buildGroupByTableData = useBuildGroupByTableData.default({
|
|
98
|
-
entities: entitiesMap,
|
|
99
|
-
entityType: groupByConfig == null ? void 0 : groupByConfig.entityType,
|
|
100
|
-
groups: taskGroups,
|
|
101
|
-
project: projectInfo
|
|
102
|
-
});
|
|
103
|
-
const groupedTableData = React.useMemo(
|
|
104
|
-
() => !!groupBy && buildGroupByTableData(groupBy),
|
|
105
|
-
[groupBy, entitiesMap, groupByConfig == null ? void 0 : groupByConfig.entityType]
|
|
106
|
-
);
|
|
107
|
-
const tableData = groupedTableData ? groupedTableData : defaultTableData;
|
|
108
94
|
const isLoading = isLoadingProp || isLoadingData;
|
|
109
95
|
const { statuses = [], folderTypes = [], taskTypes = [], tags = [] } = projectInfo || {};
|
|
110
96
|
const options = React.useMemo(
|
|
@@ -256,6 +242,7 @@ const ProjectTreeTable = ({
|
|
|
256
242
|
tableContainerRef,
|
|
257
243
|
columnPinning
|
|
258
244
|
});
|
|
245
|
+
console.log(columnVirtualizer);
|
|
259
246
|
const columnSizeVars = useCustomColumnWidthVars(table, columnSizing);
|
|
260
247
|
const attribByField = React.useMemo(() => {
|
|
261
248
|
return attribFields.reduce((acc, attrib) => {
|
|
@@ -555,7 +542,19 @@ const TableBody = ({
|
|
|
555
542
|
sortableRows,
|
|
556
543
|
error
|
|
557
544
|
}) => {
|
|
558
|
-
const
|
|
545
|
+
const headerLabels = React.useMemo(() => {
|
|
546
|
+
const allColumns = table.getAllColumns();
|
|
547
|
+
const headers = allColumns.map((col) => {
|
|
548
|
+
const headerId = col.id;
|
|
549
|
+
const header = col.columnDef.header;
|
|
550
|
+
if (typeof header === "string" || typeof header === "number") {
|
|
551
|
+
return { label: header, id: headerId };
|
|
552
|
+
}
|
|
553
|
+
return null;
|
|
554
|
+
}).filter(Boolean);
|
|
555
|
+
return headers;
|
|
556
|
+
}, [table.getAllColumns()]);
|
|
557
|
+
const { handleTableBodyContextMenu } = useCellContextMenu({ attribs, onOpenNew, headerLabels });
|
|
559
558
|
const { handlePreFetchTasks } = usePrefetchFolderTasks.usePrefetchFolderTasks();
|
|
560
559
|
const { rows } = table.getRowModel();
|
|
561
560
|
const rowVirtualizer = reactVirtual.useVirtualizer({
|
|
@@ -589,7 +588,7 @@ const TableBody = ({
|
|
|
589
588
|
onMouseOver: (e) => {
|
|
590
589
|
handlePreFetchTasks(e);
|
|
591
590
|
},
|
|
592
|
-
children: virtualRows.map((virtualRow) => {
|
|
591
|
+
children: virtualRows.map((virtualRow, i) => {
|
|
593
592
|
const row = rows[virtualRow.index];
|
|
594
593
|
if (!row) {
|
|
595
594
|
console.warn("Virtualized row data not found for index:", virtualRow.index);
|
|
@@ -609,7 +608,7 @@ const TableBody = ({
|
|
|
609
608
|
offsetTop: virtualRow.start,
|
|
610
609
|
sortableRows
|
|
611
610
|
},
|
|
612
|
-
row.id
|
|
611
|
+
row.id + i.toString()
|
|
613
612
|
);
|
|
614
613
|
})
|
|
615
614
|
}
|
|
@@ -677,12 +676,13 @@ const TableBodyRow = ({
|
|
|
677
676
|
ref: combinedRef,
|
|
678
677
|
"data-index": dataIndex,
|
|
679
678
|
style,
|
|
679
|
+
className: clsx({ "group-row": row.original.group }),
|
|
680
680
|
children: [
|
|
681
681
|
paddingLeft ? (
|
|
682
682
|
//fake empty column to the left for virtualization scroll padding
|
|
683
683
|
/* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx("td", { style: { display: "flex", width: paddingLeft } })
|
|
684
684
|
) : null,
|
|
685
|
-
virtualColumns.map((vc) => {
|
|
685
|
+
virtualColumns.map((vc, i) => {
|
|
686
686
|
const cell = visibleCells[vc.index];
|
|
687
687
|
if (!cell) return null;
|
|
688
688
|
const cellId = cellUtils.getCellId(row.id, cell.column.id);
|
|
@@ -716,7 +716,7 @@ const TableBodyRow = ({
|
|
|
716
716
|
}
|
|
717
717
|
)
|
|
718
718
|
},
|
|
719
|
-
cell.id
|
|
719
|
+
cell.id + i.toString()
|
|
720
720
|
);
|
|
721
721
|
}
|
|
722
722
|
return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
|
|
@@ -728,7 +728,7 @@ const TableBodyRow = ({
|
|
|
728
728
|
showHierarchy,
|
|
729
729
|
sortableRows
|
|
730
730
|
},
|
|
731
|
-
cell.id
|
|
731
|
+
cell.id + i.toString()
|
|
732
732
|
);
|
|
733
733
|
}),
|
|
734
734
|
paddingRight ? (
|
|
@@ -765,12 +765,11 @@ const TableCell = ({
|
|
|
765
765
|
const isLastLeftPinnedColumn = isPinned === "left" && cell.column.getIsLastColumn("left");
|
|
766
766
|
const isRowSelectionColumn = cell.column.id === SelectionCellsContext.ROW_SELECTION_COLUMN_ID;
|
|
767
767
|
const isGroup = cell.row.original.entityType === "group";
|
|
768
|
-
return /* @__PURE__ */
|
|
768
|
+
return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
|
|
769
769
|
ProjectTreeTable_styled.TableCell,
|
|
770
770
|
{
|
|
771
771
|
...props,
|
|
772
772
|
tabIndex: 0,
|
|
773
|
-
key: cell.id,
|
|
774
773
|
$isLastPinned: isLastLeftPinnedColumn,
|
|
775
774
|
className: clsx(
|
|
776
775
|
cell.column.id,
|
|
@@ -823,9 +822,9 @@ const TableCell = ({
|
|
|
823
822
|
if (!isCellSelected(cellId)) {
|
|
824
823
|
selectCell(cellId, false, false);
|
|
825
824
|
}
|
|
826
|
-
}
|
|
827
|
-
|
|
828
|
-
|
|
825
|
+
},
|
|
826
|
+
children: reactTable.flexRender(cell.column.columnDef.cell, cell.getContext())
|
|
827
|
+
}
|
|
829
828
|
);
|
|
830
829
|
};
|
|
831
830
|
const TableCellMemo = React.memo(TableCell);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectTreeTable.cjs.js","sources":["../../../../../src/containers/ProjectTreeTable/ProjectTreeTable.tsx"],"sourcesContent":["import { useMemo, useRef, useEffect, memo, CSSProperties, useCallback } from 'react' // Added useCallback\nimport { useVirtualizer, VirtualItem, Virtualizer } from '@tanstack/react-virtual'\n// TanStack Table imports\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getExpandedRowModel,\n filterFns,\n flexRender,\n Row,\n getSortedRowModel,\n Cell,\n Column,\n Table,\n Header,\n HeaderGroup,\n RowData,\n} from '@tanstack/react-table'\n\n// Utility imports\nimport clsx from 'clsx'\n\n// Type imports\nimport type { TableRow } from './types/table'\n\n// Component imports\nimport buildTreeTableColumns, {\n DefaultColumns,\n TreeTableExtraColumn,\n} from './buildTreeTableColumns'\nimport * as Styled from './ProjectTreeTable.styled'\nimport HeaderActionButton from './components/HeaderActionButton'\nimport RowDragHandleCellContent from './components/RowDragHandleCellContent' // Added import\nimport EmptyPlaceholder from '../../components/EmptyPlaceholder'\n\n// Context imports\nimport { useCellEditing } from './context/CellEditingContext'\nimport { ROW_SELECTION_COLUMN_ID, useSelectionCellsContext } from './context/SelectionCellsContext'\nimport { ClipboardProvider } from './context/ClipboardContext'\nimport { useSelectedRowsContext } from './context/SelectedRowsContext'\nimport { useColumnSettingsContext } from './context/ColumnSettingsContext'\n\n// Hook imports\nimport useCustomColumnWidthVars from './hooks/useCustomColumnWidthVars'\nimport usePrefetchFolderTasks from './hooks/usePrefetchFolderTasks'\nimport useCellContextMenu from './hooks/useCellContextMenu'\nimport useColumnVirtualization from './hooks/useColumnVirtualization'\nimport useKeyboardNavigation from './hooks/useKeyboardNavigation'\n\n// Utility function imports\nimport { getCellId } from './utils/cellUtils'\nimport { generateLoadingRows, generateDummyAttributes } from './utils/loadingUtils'\nimport { createPortal } from 'react-dom'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { AttributeEnumItem, ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport { ToggleExpandAll, useProjectTableContext } from './context/ProjectTableContext'\nimport { getReadOnlyLists, getTableFieldOptions } from './utils'\nimport { UpdateTableEntities } from './hooks/useUpdateTableData'\n\n// dnd-kit imports\nimport {\n DragOverlay,\n type UniqueIdentifier,\n // Removed: DndContext, KeyboardSensor, MouseSensor, TouchSensor, closestCenter, DragEndEvent, DragStartEvent, Active, Over, useSensor, useSensors\n} from '@dnd-kit/core'\n// import { restrictToVerticalAxis } from '@dnd-kit/modifiers'\nimport { SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport useBuildGroupByTableData, { GroupByEntityType } from './hooks/useBuildGroupByTableData'\n\ndeclare module '@tanstack/react-table' {\n interface TableMeta<TData extends RowData> {\n options?: BuiltInFieldOptions\n readOnly?: ProjectTreeTableProps['readOnly']\n projectName?: string\n updateEntities?: UpdateTableEntities\n toggleExpandAll?: ToggleExpandAll\n }\n}\n\n//These are the important styles to make sticky column pinning work!\n//Apply styles like this using your CSS strategy of choice with this kind of logic to head cells, data cells, footer cells, etc.\n//View the index.css file for more needed styles such as border-collapse: separate\nconst getCommonPinningStyles = (column: Column<TableRow, unknown>): CSSProperties => {\n const isPinned = column.getIsPinned()\n const offset =\n column.id !== ROW_SELECTION_COLUMN_ID && column.id !== DRAG_HANDLE_COLUMN_ID ? -30 : 0\n\n return {\n left: isPinned === 'left' ? `${column.getStart('left') + offset}px` : undefined, // Removed offset\n right: isPinned === 'right' ? `${column.getAfter('right')}px` : undefined,\n position: isPinned ? 'sticky' : 'relative',\n width: column.getSize(),\n zIndex: isPinned ? 100 : 0,\n }\n}\n\nexport const DRAG_HANDLE_COLUMN_ID = 'drag-handle'\n\nexport interface ProjectTreeTableProps extends React.HTMLAttributes<HTMLDivElement> {\n scope: string\n sliceId: string\n fetchMoreOnBottomReached: (element: HTMLDivElement | null) => void\n onOpenNew?: (type: 'folder' | 'task') => void\n readOnly?: (DefaultColumns | string)[]\n excludedColumns?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n isLoading?: boolean\n clientSorting?: boolean\n sortableRows?: boolean\n onRowReorder?: (active: UniqueIdentifier, over: UniqueIdentifier | null) => void // Adjusted type for active/over if needed, or keep as Active, Over\n dndActiveId?: UniqueIdentifier | null // Added prop\n groupByConfig?: {\n entityType?: GroupByEntityType\n }\n pt?: {\n container?: React.HTMLAttributes<HTMLDivElement>\n head?: Partial<TableHeadProps>\n }\n}\n\nexport const ProjectTreeTable = ({\n scope,\n sliceId,\n fetchMoreOnBottomReached,\n onOpenNew,\n readOnly,\n excludedColumns,\n extraColumns,\n isLoading: isLoadingProp,\n clientSorting = false,\n sortableRows = false,\n onRowReorder,\n dndActiveId, // Destructure new prop\n groupByConfig,\n pt,\n ...props\n}: ProjectTreeTableProps) => {\n const {\n columnVisibility,\n columnVisibilityUpdater,\n columnPinning,\n columnPinningUpdater,\n columnOrder,\n columnOrderUpdater,\n columnSizing,\n columnSizingUpdater,\n groupBy,\n } = useColumnSettingsContext()\n\n const {\n projectInfo,\n tableData: defaultTableData,\n taskGroups,\n attribFields,\n entitiesMap,\n users,\n isLoading: isLoadingData,\n error,\n isInitialized,\n expanded,\n projectName,\n updateExpanded,\n toggleExpandAll,\n sorting,\n updateSorting,\n showHierarchy,\n fetchNextPage,\n } = useProjectTableContext()\n\n const buildGroupByTableData = useBuildGroupByTableData({\n entities: entitiesMap,\n entityType: groupByConfig?.entityType,\n groups: taskGroups,\n project: projectInfo,\n })\n\n // if we are grouping by something, we ignore current tableData and format the data based on the groupBy\n const groupedTableData = useMemo(\n () => !!groupBy && buildGroupByTableData(groupBy),\n [groupBy, entitiesMap, groupByConfig?.entityType],\n )\n\n const tableData = groupedTableData ? groupedTableData : defaultTableData\n\n const isLoading = isLoadingProp || isLoadingData\n\n const { statuses = [], folderTypes = [], taskTypes = [], tags = [] } = projectInfo || {}\n const options: BuiltInFieldOptions = useMemo(\n () =>\n getTableFieldOptions({\n users,\n statuses,\n folderTypes,\n taskTypes,\n tags,\n }),\n [users, statuses, folderTypes, taskTypes],\n )\n\n //The virtualizer needs to know the scrollable container element\n const tableContainerRef = useRef<HTMLDivElement>(null)\n // reference of how many rows are currently rendered in the table\n const tableRowsCountRef = useRef(0)\n\n // Selection context\n const { registerGrid } = useSelectionCellsContext()\n\n // generate loading attrib and rows\n const { loadingAttrib, loadingRows } = useMemo(() => {\n // count the number of children in tbody\n const tableRowsCount = tableContainerRef.current?.querySelectorAll('tbody tr').length || 0\n const loadingAttrib = generateDummyAttributes()\n const loadingRows = generateLoadingRows(\n attribFields,\n showHierarchy && tableData.length > 0\n ? Math.min(tableRowsCount, 50)\n : groupBy\n ? Math.max(tableRowsCountRef.current, 50)\n : 50,\n )\n\n return { loadingAttrib, loadingRows }\n }, [])\n\n const showLoadingRows = !isInitialized || isLoading\n\n // Format readonly columns and attributes\n const { readOnlyColumns, readOnlyAttribs } = useMemo(\n () => getReadOnlyLists(attribFields, readOnly),\n [attribFields, readOnly],\n )\n\n const { updateEntities } = useCellEditing()\n\n const columnAttribs = useMemo(\n () => (isInitialized ? attribFields : loadingAttrib),\n [attribFields, loadingAttrib, isInitialized],\n )\n const columns = useMemo(() => {\n const baseColumns = buildTreeTableColumns({\n attribs: columnAttribs,\n showHierarchy,\n options,\n extraColumns,\n excluded: excludedColumns,\n groupBy,\n })\n\n if (sortableRows) {\n return [\n {\n id: DRAG_HANDLE_COLUMN_ID,\n header: () => null,\n cell: () => null, // Content rendered by TableBodyRow\n size: 24,\n minSize: 24,\n maxSize: 24,\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n enablePinning: false, // Programmatically pinned\n },\n ...baseColumns,\n ]\n }\n return baseColumns\n }, [columnAttribs, showHierarchy, options, extraColumns, excludedColumns, sortableRows])\n\n const table = useReactTable({\n data: showLoadingRows ? loadingRows : tableData,\n columns,\n defaultColumn: {\n minSize: 50,\n size: 150,\n },\n enableRowSelection: true, //enable row selection for all rows\n getRowId: (row) => row.id,\n enableSubRowSelection: false, //disable sub row selection\n getSubRows: (row) => row.subRows,\n getRowCanExpand: () => true,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // EXPANDABLE\n onExpandedChange: updateExpanded,\n // SORTING\n getSortedRowModel: clientSorting ? getSortedRowModel() : undefined,\n onSortingChange: updateSorting,\n columnResizeMode: 'onChange',\n onColumnPinningChange: columnPinningUpdater,\n onColumnSizingChange: columnSizingUpdater,\n onColumnVisibilityChange: columnVisibilityUpdater,\n onColumnOrderChange: columnOrderUpdater,\n // @ts-ignore\n filterFns,\n state: {\n expanded,\n sorting,\n columnPinning: (() => {\n const leftPins: string[] = []\n if (sortableRows) {\n leftPins.push(DRAG_HANDLE_COLUMN_ID)\n }\n leftPins.push(ROW_SELECTION_COLUMN_ID)\n\n // Add other unique pins from context, ensuring they are not the programmatic ones\n const contextLeftPins = (columnPinning.left || []).filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n leftPins.push(...contextLeftPins)\n // Remove duplicates just in case, though filter should handle it\n const uniqueLeftPins = [...new Set(leftPins)]\n\n return {\n left: uniqueLeftPins,\n right: columnPinning.right,\n }\n })(),\n columnSizing,\n columnVisibility,\n columnOrder,\n },\n enableSorting: true,\n meta: {\n projectName,\n options,\n readOnly: readOnlyColumns,\n updateEntities,\n toggleExpandAll,\n loadMoreTasks: fetchNextPage,\n },\n })\n\n // TODO: when there is data (like in error) then we have infinite rendering\n\n const { rows } = table.getRowModel()\n\n // update the tableRowsCountRef with the current number of rows\n useEffect(() => {\n tableRowsCountRef.current = rows.length\n }, [rows.length])\n\n // Register grid structure with selection context when rows or columns change\n useEffect(() => {\n if (!rows.length) return\n const rowIds = rows.map((row) => row.id)\n const colIds = table.getAllLeafColumns().map((col) => col.id)\n const colIdsSortedByPinning = [...colIds].sort((a, b) => {\n if (ROW_SELECTION_COLUMN_ID === b) return 1\n const colA = columnPinning.left?.includes(a) ? 0 : 1\n const colB = columnPinning.left?.includes(b) ? 0 : 1\n return colA - colB\n })\n\n registerGrid(rowIds, colIdsSortedByPinning)\n }, [rows, table.getAllLeafColumns(), columnPinning, ROW_SELECTION_COLUMN_ID, registerGrid])\n\n const visibleColumns = table.getVisibleLeafColumns()\n\n // Use the column virtualization hook\n const { columnVirtualizer, virtualPaddingLeft, virtualPaddingRight } = useColumnVirtualization({\n visibleColumns,\n tableContainerRef,\n columnPinning,\n })\n\n const columnSizeVars = useCustomColumnWidthVars(table, columnSizing)\n\n const attribByField = useMemo(() => {\n return attribFields.reduce((acc: Record<string, AttributeEnumItem[]>, attrib) => {\n if (attrib.data?.enum?.length) {\n acc[attrib.name] = attrib.data?.enum\n }\n return acc\n }, {})\n }, [attribFields])\n\n const rowOrderIds = useMemo(() => tableData.map((row) => row.id), [tableData])\n const draggedRowData = useMemo(() => {\n if (!dndActiveId || !sortableRows) return null // Use dndActiveId\n return tableData.find((r) => r.id === dndActiveId) // Use dndActiveId\n }, [dndActiveId, tableData, sortableRows])\n\n const tableUiContent = (\n <ClipboardProvider\n entitiesMap={entitiesMap}\n columnEnums={{ ...options, ...attribByField }}\n columnReadOnly={readOnlyAttribs}\n >\n <Styled.TableWrapper {...props}>\n <Styled.TableContainer\n ref={tableContainerRef}\n style={{ height: '100%', padding: 0 }}\n onScroll={(e) => fetchMoreOnBottomReached(e.currentTarget)}\n {...pt?.container}\n className={clsx('table-container', pt?.container?.className)}\n >\n <table\n style={{\n display: 'grid',\n borderCollapse: 'collapse',\n userSelect: 'none',\n ...columnSizeVars,\n width: table.getTotalSize(),\n }}\n >\n <TableHead\n columnVirtualizer={columnVirtualizer}\n table={table}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n {...pt?.head}\n />\n <TableBody\n columnVirtualizer={columnVirtualizer}\n table={table}\n tableContainerRef={tableContainerRef}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n showHierarchy={showHierarchy}\n attribs={attribFields}\n onOpenNew={onOpenNew}\n rowOrderIds={rowOrderIds}\n sortableRows={sortableRows}\n error={error}\n />\n </table>\n </Styled.TableContainer>\n </Styled.TableWrapper>\n </ClipboardProvider>\n )\n\n // Render DragOverlay if sortableRows and dndActiveId is present\n const dragOverlayPortal =\n sortableRows &&\n dndActiveId &&\n createPortal(\n <DragOverlay dropAnimation={null}>\n {draggedRowData\n ? (() => {\n const overlayRowInstance = table.getRowModel().rows.find((r) => r.id === dndActiveId)\n if (!overlayRowInstance) return null\n\n const tableWidth = table.getTotalSize()\n\n return (\n <table\n style={{\n width: tableWidth,\n borderCollapse: 'collapse',\n backgroundColor: 'var(--md-sys-color-surface-container-high)',\n boxShadow: '0 0 10px rgba(0,0,0,0.2)',\n ...columnSizeVars,\n }}\n >\n <tbody>\n <Styled.TR style={{ display: 'flex', userSelect: 'none' }}>\n {virtualPaddingLeft ? (\n <td style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {columnVirtualizer.getVirtualItems().map((vc) => {\n const cell = overlayRowInstance.getVisibleCells()[vc.index]\n if (!cell) return null\n\n const cellStyleBase: CSSProperties = {\n ...getCommonPinningStyles(cell.column),\n width: `calc(var(--col-${cell.column.id}-size) * 1px)`,\n display: 'flex',\n alignItems: 'center',\n height: 40,\n }\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TableCell\n key={`overlay-drag-${cell.id}`}\n style={{ ...cellStyleBase, justifyContent: 'center' }}\n className={clsx(cell.column.id)}\n >\n <Icon icon=\"drag_handle\" /> {/* Static icon */}\n </Styled.TableCell>\n )\n }\n return (\n <TableCellMemo\n cell={cell}\n cellId={`overlay-${getCellId(overlayRowInstance.id, cell.column.id)}`}\n rowId={overlayRowInstance.id}\n key={`overlay-cell-${cell.id}`}\n showHierarchy={showHierarchy}\n />\n )\n })}\n {virtualPaddingRight ? (\n <td style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.TR>\n </tbody>\n </table>\n )\n })()\n : null}\n </DragOverlay>,\n document.body,\n )\n\n if (sortableRows) {\n return (\n <>\n {tableUiContent}\n {dragOverlayPortal}\n </>\n )\n } else {\n return tableUiContent\n }\n}\n\ninterface TableHeadProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n}\n\nconst TableHead = ({\n columnVirtualizer,\n table,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n ...props\n}: TableHeadProps) => {\n return (\n <Styled.TableHeader {...props}>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableHeadRow\n key={headerGroup.id}\n columnVirtualizer={columnVirtualizer}\n headerGroup={headerGroup}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n />\n ))}\n </Styled.TableHeader>\n )\n}\n\ninterface TableHeadRowProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n headerGroup: HeaderGroup<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n}\n\nconst TableHeadRow = ({\n columnVirtualizer,\n headerGroup,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n}: TableHeadRowProps) => {\n const virtualColumns = columnVirtualizer.getVirtualItems()\n return (\n <Styled.ColumnHeader key={headerGroup.id} style={{ display: 'flex' }}>\n {virtualPaddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {virtualColumns.map((virtualColumn) => {\n const header = headerGroup.headers[virtualColumn.index]\n\n return (\n <TableHeadCell\n key={header.id}\n header={header}\n isLoading={isLoading}\n isReadOnly={readOnlyColumns?.includes(header.id)}\n canSort={header.column.getCanSort()}\n canFilter={header.column.getCanFilter()}\n canHide={header.column.getCanHide()}\n canPin={header.column.getCanPin()}\n canResize={header.column.getCanResize()}\n sortableRows={sortableRows}\n />\n )\n })}\n {virtualPaddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.ColumnHeader>\n )\n}\n\ninterface TableHeadCellProps {\n header: Header<TableRow, unknown>\n isLoading: boolean\n canSort?: boolean\n canFilter?: boolean\n canHide?: boolean\n canPin?: boolean\n canResize?: boolean\n isReadOnly?: boolean\n sortableRows?: boolean\n}\n\nconst TableHeadCell = ({\n header,\n isLoading,\n canFilter,\n canHide,\n canSort,\n canPin,\n canResize,\n isReadOnly,\n sortableRows,\n}: TableHeadCellProps) => {\n const { column } = header\n\n return (\n <Styled.HeaderCell\n className={clsx(header.id, 'shimmer-dark', {\n loading: isLoading,\n 'last-pinned-left': column.getIsPinned() === 'left' && column.getIsLastColumn('left'),\n })}\n key={header.id}\n style={{\n ...getCommonPinningStyles(column),\n width: `calc(var(--header-${header?.id}-size) * 1px)`,\n }}\n >\n {header.isPlaceholder ? null : (\n <Styled.TableCellContent className={clsx('bold', 'header')}>\n {flexRender(column.columnDef.header, header.getContext())}\n {isReadOnly && (\n <Icon icon=\"lock\" data-tooltip={'You only have permission to read this column.'} />\n )}\n\n <Styled.HeaderButtons className=\"actions\">\n {/* COLUMN HIDING */}\n {canHide && (\n <HeaderActionButton\n icon=\"visibility_off\"\n selected={!column.getIsVisible()}\n onClick={column.getToggleVisibilityHandler()}\n />\n )}\n {/* COLUMN PINNING */}\n {canPin && (\n <HeaderActionButton\n icon=\"push_pin\"\n selected={header.column.getIsPinned() === 'left'}\n onClick={() => {\n if (header.column.getIsPinned() === 'left') {\n header.column.pin(false)\n } else {\n header.column.pin('left')\n }\n }}\n />\n )}\n\n {/* COLUMN SORTING */}\n {canSort && (\n <HeaderActionButton\n icon={'sort'}\n style={{\n transform: (column.getIsSorted() as string) === 'asc' ? 'scaleY(-1)' : undefined,\n }}\n onClick={column.getToggleSortingHandler()}\n selected={!!column.getIsSorted()}\n />\n )}\n </Styled.HeaderButtons>\n {canResize && (\n <Styled.ResizedHandler\n {...{\n onDoubleClick: () => column.resetSize(),\n onMouseDown: header.getResizeHandler(),\n onTouchStart: header.getResizeHandler(),\n className: clsx('resize-handle', {\n resizing: column.getIsResizing(),\n }),\n }}\n />\n )}\n </Styled.TableCellContent>\n )}\n </Styled.HeaderCell>\n )\n}\n\ninterface TableBodyProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n tableContainerRef: React.RefObject<HTMLDivElement>\n showHierarchy: boolean\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n attribs: ProjectTableAttribute[]\n onOpenNew?: (type: 'folder' | 'task') => void\n rowOrderIds: UniqueIdentifier[]\n sortableRows: boolean\n error?: string\n}\n\nconst TableBody = ({\n columnVirtualizer,\n table,\n tableContainerRef,\n showHierarchy,\n virtualPaddingLeft,\n virtualPaddingRight,\n attribs,\n onOpenNew,\n rowOrderIds,\n sortableRows,\n error,\n}: TableBodyProps) => {\n const { handleTableBodyContextMenu } = useCellContextMenu({ attribs, onOpenNew })\n\n const { handlePreFetchTasks } = usePrefetchFolderTasks()\n\n const { rows } = table.getRowModel()\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: () => 40, //estimate row height for accurate scrollbar dragging\n getScrollElement: () => tableContainerRef.current,\n //measure dynamic row height, except in firefox because it measures table border height incorrectly\n measureElement:\n typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 5,\n })\n\n const virtualRows = rowVirtualizer.getVirtualItems()\n\n // Memoize the measureElement callback\n const measureRowElement = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (node) {\n rowVirtualizer.measureElement(node)\n }\n },\n [rowVirtualizer],\n )\n\n useKeyboardNavigation()\n\n const tbodyContent = (\n <tbody\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`,\n position: 'relative',\n display: 'grid',\n }}\n onContextMenu={handleTableBodyContextMenu}\n onMouseOver={(e) => {\n handlePreFetchTasks(e)\n }}\n >\n {virtualRows.map((virtualRow) => {\n const row = rows[virtualRow.index] as Row<TableRow>\n // Add a check for row existence to prevent potential errors if data is out of sync\n if (!row) {\n console.warn('Virtualized row data not found for index:', virtualRow.index)\n return null\n }\n return (\n <TableBodyRow\n key={row.id} // dnd-kit needs this key to be stable and match the id in useSortable\n row={row}\n showHierarchy={showHierarchy}\n visibleCells={row.getVisibleCells()}\n virtualColumns={columnVirtualizer.getVirtualItems()}\n paddingLeft={virtualPaddingLeft}\n paddingRight={virtualPaddingRight}\n rowRef={measureRowElement}\n dataIndex={virtualRow.index}\n offsetTop={virtualRow.start}\n sortableRows={sortableRows}\n />\n )\n })}\n </tbody>\n )\n\n if (error) {\n return (\n tableContainerRef.current &&\n createPortal(\n <EmptyPlaceholder message=\"No items found\" error={error} />,\n tableContainerRef.current,\n )\n )\n }\n\n if (sortableRows) {\n return (\n <SortableContext items={rowOrderIds} strategy={verticalListSortingStrategy}>\n {tbodyContent}\n </SortableContext>\n )\n } else {\n return tbodyContent\n }\n}\n\ninterface TableBodyRowProps {\n row: Row<TableRow>\n showHierarchy: boolean\n visibleCells: Cell<TableRow, unknown>[]\n virtualColumns: VirtualItem[]\n paddingLeft: number | undefined\n paddingRight: number | undefined\n rowRef: (node: HTMLTableRowElement | null) => void\n dataIndex: number\n offsetTop: number\n sortableRows: boolean\n}\n\nconst TableBodyRow = ({\n row,\n showHierarchy,\n visibleCells,\n virtualColumns,\n paddingLeft,\n paddingRight,\n rowRef,\n dataIndex,\n offsetTop,\n sortableRows,\n}: TableBodyRowProps) => {\n const sortable = sortableRows ? useSortable({ id: row.id }) : null\n\n const combinedRef = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (sortable) {\n sortable.setNodeRef(node)\n }\n // rowRef for virtualizer measurement\n // only measure if not actively being transformed by dnd-kit\n if (!(sortable && sortable.isDragging)) {\n rowRef(node)\n }\n },\n [sortable, rowRef],\n )\n\n // Attempt to combine dnd-kit transform with virtualizer's offsetTop\n const style: CSSProperties = {\n position: 'absolute', // Use absolute positioning for virtualized items\n top: offsetTop, // Position based on virtualizer's calculation (virtualRow.start)\n left: 0, // Span full width of the relative parent (tbody)\n right: 0, // Span full width\n height: 40, // Explicit height can be beneficial for absolute positioning\n zIndex: sortable && sortable.isDragging ? 0 : 1, // Ensure dragged item is above others\n display: 'flex', // Styled.TR is display:flex\n transform:\n sortable && sortable.transform ? CSS.Transform.toString(sortable.transform) : undefined, // Apply dnd-kit's transform for drag effect\n transition: sortable && sortable.transition ? sortable.transition : undefined,\n visibility: sortable && sortable.isDragging ? 'hidden' : 'visible', // Hide the row being dragged\n }\n\n return (\n <Styled.TR\n ref={combinedRef}\n data-index={dataIndex} //needed for dynamic row height measurement\n style={style}\n >\n {paddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingLeft }} />\n ) : null}\n {virtualColumns.map((vc) => {\n const cell = visibleCells[vc.index]\n if (!cell) return null // Should not happen in normal circumstances\n\n const cellId = getCellId(row.id, cell.column.id)\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TableCell\n key={cell.id}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: `calc(var(--col-${cell.column.id}-size) * 1px)`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: 40,\n }}\n className={clsx(cell.column.id, {\n 'last-pinned-left':\n cell.column.getIsPinned() === 'left' && cell.column.getIsLastColumn('left'),\n })}\n onMouseDown={(e) => e.stopPropagation()} // Prevent selection interference\n onMouseOver={(e) => e.stopPropagation()}\n // Removed onMouseUp stopPropagation to allow dnd-kit to handle it\n onDoubleClick={(e) => e.stopPropagation()}\n onContextMenu={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n <RowDragHandleCellContent\n attributes={sortable?.attributes}\n listeners={sortable?.listeners}\n />\n </Styled.TableCell>\n )\n }\n return (\n <TableCellMemo\n cell={cell}\n cellId={cellId}\n rowId={row.id}\n key={cell.id}\n showHierarchy={showHierarchy}\n sortableRows={sortableRows}\n />\n )\n })}\n\n {paddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingRight }} />\n ) : null}\n </Styled.TR>\n )\n}\n\ninterface TableCellProps {\n cell: Cell<TableRow, unknown>\n cellId: string\n rowId: string\n className?: string\n showHierarchy: boolean\n sortableRows?: boolean\n}\n\nconst TableCell = ({\n cell,\n rowId,\n cellId,\n className,\n showHierarchy,\n sortableRows,\n ...props\n}: TableCellProps) => {\n const {\n isCellSelected,\n isCellFocused,\n startSelection,\n extendSelection,\n endSelection,\n selectCell,\n getCellBorderClasses,\n clearSelection,\n } = useSelectionCellsContext()\n\n const { isRowSelected } = useSelectedRowsContext()\n\n const { isEditing } = useCellEditing()\n\n const borderClasses = getCellBorderClasses(cellId)\n\n const isPinned = cell.column.getIsPinned()\n const isLastLeftPinnedColumn = isPinned === 'left' && cell.column.getIsLastColumn('left')\n const isRowSelectionColumn = cell.column.id === ROW_SELECTION_COLUMN_ID\n const isGroup = cell.row.original.entityType === 'group'\n\n return (\n <Styled.TableCell\n {...props}\n tabIndex={0}\n key={cell.id}\n $isLastPinned={isLastLeftPinnedColumn} // is this column the last pinned column? Custom styling for borders.\n className={clsx(\n cell.column.id,\n {\n selected: isCellSelected(cellId),\n focused: isCellFocused(cellId),\n editing: isEditing(cellId),\n 'last-pinned-left': isLastLeftPinnedColumn,\n 'selected-row': isRowSelected(rowId),\n task: cell.row.original.entityType === 'task',\n },\n className,\n ...borderClasses,\n )}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: `calc(var(--col-${cell.column.id}-size) * 1px)`,\n height: 40,\n }}\n onMouseDown={(e) => {\n // Only process left clicks (button 0), ignore right clicks\n if (e.button !== 0) return\n\n // check we are not clicking on expander\n if ((e.target as HTMLElement).closest('.expander')) return\n\n // only name column can be selected for group rows\n if (isGroup && cell.column.id !== 'name') return clearSelection()\n\n const additive = e.metaKey || e.ctrlKey || isRowSelectionColumn\n if (e.shiftKey) {\n // Shift+click extends selection from anchor cell\n selectCell(cellId, additive, true) // true for range selection\n } else {\n // Normal click starts a new selection\n startSelection(cellId, additive)\n }\n }}\n onMouseOver={(e) => {\n if (e.buttons === 1) {\n // Left button is pressed during mouse move - drag selection\n extendSelection(cellId, isRowSelectionColumn)\n }\n }}\n onMouseUp={() => {\n endSelection(cellId)\n }}\n onDoubleClick={(e) => {\n if (\n cell.column.id === 'name' &&\n !(e.target as HTMLElement).closest('.expander') &&\n !isGroup\n ) {\n // select the row by selecting the row-selection cell\n const rowSelectionCellId = getCellId(cell.row.id, ROW_SELECTION_COLUMN_ID)\n if (!isCellSelected(rowSelectionCellId)) {\n const additive = e.metaKey || e.ctrlKey\n selectCell(rowSelectionCellId, additive, false)\n }\n }\n }}\n onContextMenu={(e) => {\n e.preventDefault()\n // if the cell is not selected, select it and deselect all others\n if (!isCellSelected(cellId)) {\n selectCell(cellId, false, false)\n }\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Styled.TableCell>\n )\n}\n\nconst TableCellMemo = memo(TableCell)\n"],"names":["ROW_SELECTION_COLUMN_ID","useColumnSettingsContext","useProjectTableContext","useBuildGroupByTableData","useMemo","getTableFieldOptions","useRef","useSelectionCellsContext","_a","loadingAttrib","generateDummyAttributes","loadingRows","generateLoadingRows","getReadOnlyLists","useCellEditing","buildTreeTableColumns","useReactTable","getCoreRowModel","getFilteredRowModel","getExpandedRowModel","getSortedRowModel","filterFns","useEffect","jsx","ClipboardProvider","Styled.TableWrapper","Styled.TableContainer","jsxs","createPortal","DragOverlay","Styled.TR","Styled.TableCell","Icon","getCellId","Fragment","Styled.TableHeader","Styled.ColumnHeader","Styled.HeaderCell","Styled.TableCellContent","flexRender","Styled.HeaderButtons","Styled.ResizedHandler","usePrefetchFolderTasks","useVirtualizer","useCallback","EmptyPlaceholder","SortableContext","verticalListSortingStrategy","sortable","useSortable","CSS","useSelectedRowsContext","createElement","memo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProjectTreeTable.cjs.js","sources":["../../../../../src/containers/ProjectTreeTable/ProjectTreeTable.tsx"],"sourcesContent":["import { useMemo, useRef, useEffect, memo, CSSProperties, useCallback } from 'react' // Added useCallback\nimport { useVirtualizer, VirtualItem, Virtualizer } from '@tanstack/react-virtual'\n// TanStack Table imports\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getExpandedRowModel,\n filterFns,\n flexRender,\n Row,\n getSortedRowModel,\n Cell,\n Column,\n Table,\n Header,\n HeaderGroup,\n RowData,\n} from '@tanstack/react-table'\n\n// Utility imports\nimport clsx from 'clsx'\n\n// Type imports\nimport type { TableRow } from './types/table'\n\n// Component imports\nimport buildTreeTableColumns, {\n DefaultColumns,\n TreeTableExtraColumn,\n} from './buildTreeTableColumns'\nimport * as Styled from './ProjectTreeTable.styled'\nimport HeaderActionButton from './components/HeaderActionButton'\nimport RowDragHandleCellContent from './components/RowDragHandleCellContent' // Added import\nimport EmptyPlaceholder from '../../components/EmptyPlaceholder'\n\n// Context imports\nimport { useCellEditing } from './context/CellEditingContext'\nimport { ROW_SELECTION_COLUMN_ID, useSelectionCellsContext } from './context/SelectionCellsContext'\nimport { ClipboardProvider } from './context/ClipboardContext'\nimport { useSelectedRowsContext } from './context/SelectedRowsContext'\nimport { useColumnSettingsContext } from './context/ColumnSettingsContext'\n\n// Hook imports\nimport useCustomColumnWidthVars from './hooks/useCustomColumnWidthVars'\nimport usePrefetchFolderTasks from './hooks/usePrefetchFolderTasks'\nimport useCellContextMenu, { HeaderLabel } from './hooks/useCellContextMenu'\nimport useColumnVirtualization from './hooks/useColumnVirtualization'\nimport useKeyboardNavigation from './hooks/useKeyboardNavigation'\n\n// Utility function imports\nimport { getCellId } from './utils/cellUtils'\nimport { generateLoadingRows, generateDummyAttributes } from './utils/loadingUtils'\nimport { createPortal } from 'react-dom'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { AttributeEnumItem, ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport { ToggleExpandAll, useProjectTableContext } from './context/ProjectTableContext'\nimport { getReadOnlyLists, getTableFieldOptions } from './utils'\nimport { UpdateTableEntities } from './hooks/useUpdateTableData'\n\n// dnd-kit imports\nimport {\n DragOverlay,\n type UniqueIdentifier,\n // Removed: DndContext, KeyboardSensor, MouseSensor, TouchSensor, closestCenter, DragEndEvent, DragStartEvent, Active, Over, useSensor, useSensors\n} from '@dnd-kit/core'\n// import { restrictToVerticalAxis } from '@dnd-kit/modifiers'\nimport { SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\n\ndeclare module '@tanstack/react-table' {\n interface TableMeta<TData extends RowData> {\n options?: BuiltInFieldOptions\n readOnly?: ProjectTreeTableProps['readOnly']\n projectName?: string\n updateEntities?: UpdateTableEntities\n toggleExpandAll?: ToggleExpandAll\n }\n}\n\n//These are the important styles to make sticky column pinning work!\n//Apply styles like this using your CSS strategy of choice with this kind of logic to head cells, data cells, footer cells, etc.\n//View the index.css file for more needed styles such as border-collapse: separate\nconst getCommonPinningStyles = (column: Column<TableRow, unknown>): CSSProperties => {\n const isPinned = column.getIsPinned()\n const offset =\n column.id !== ROW_SELECTION_COLUMN_ID && column.id !== DRAG_HANDLE_COLUMN_ID ? -30 : 0\n\n return {\n left: isPinned === 'left' ? `${column.getStart('left') + offset}px` : undefined, // Removed offset\n right: isPinned === 'right' ? `${column.getAfter('right')}px` : undefined,\n position: isPinned ? 'sticky' : 'relative',\n width: column.getSize(),\n zIndex: isPinned ? 100 : 0,\n }\n}\n\nexport const DRAG_HANDLE_COLUMN_ID = 'drag-handle'\n\nexport interface ProjectTreeTableProps extends React.HTMLAttributes<HTMLDivElement> {\n scope: string\n sliceId: string\n fetchMoreOnBottomReached: (element: HTMLDivElement | null) => void\n onOpenNew?: (type: 'folder' | 'task') => void\n readOnly?: (DefaultColumns | string)[]\n excludedColumns?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n isLoading?: boolean\n clientSorting?: boolean\n sortableRows?: boolean\n onRowReorder?: (active: UniqueIdentifier, over: UniqueIdentifier | null) => void // Adjusted type for active/over if needed, or keep as Active, Over\n dndActiveId?: UniqueIdentifier | null // Added prop\n pt?: {\n container?: React.HTMLAttributes<HTMLDivElement>\n head?: Partial<TableHeadProps>\n }\n}\n\nexport const ProjectTreeTable = ({\n scope,\n sliceId,\n fetchMoreOnBottomReached,\n onOpenNew,\n readOnly,\n excludedColumns,\n extraColumns,\n isLoading: isLoadingProp,\n clientSorting = false,\n sortableRows = false,\n onRowReorder,\n dndActiveId, // Destructure new prop\n pt,\n ...props\n}: ProjectTreeTableProps) => {\n const {\n columnVisibility,\n columnVisibilityUpdater,\n columnPinning,\n columnPinningUpdater,\n columnOrder,\n columnOrderUpdater,\n columnSizing,\n columnSizingUpdater,\n groupBy,\n } = useColumnSettingsContext()\n\n const {\n projectInfo,\n tableData,\n attribFields,\n entitiesMap,\n users,\n isLoading: isLoadingData,\n error,\n isInitialized,\n expanded,\n projectName,\n updateExpanded,\n toggleExpandAll,\n sorting,\n updateSorting,\n showHierarchy,\n fetchNextPage,\n } = useProjectTableContext()\n\n const isLoading = isLoadingProp || isLoadingData\n\n const { statuses = [], folderTypes = [], taskTypes = [], tags = [] } = projectInfo || {}\n const options: BuiltInFieldOptions = useMemo(\n () =>\n getTableFieldOptions({\n users,\n statuses,\n folderTypes,\n taskTypes,\n tags,\n }),\n [users, statuses, folderTypes, taskTypes],\n )\n\n //The virtualizer needs to know the scrollable container element\n const tableContainerRef = useRef<HTMLDivElement>(null)\n // reference of how many rows are currently rendered in the table\n const tableRowsCountRef = useRef(0)\n\n // Selection context\n const { registerGrid } = useSelectionCellsContext()\n\n // generate loading attrib and rows\n const { loadingAttrib, loadingRows } = useMemo(() => {\n // count the number of children in tbody\n const tableRowsCount = tableContainerRef.current?.querySelectorAll('tbody tr').length || 0\n const loadingAttrib = generateDummyAttributes()\n const loadingRows = generateLoadingRows(\n attribFields,\n showHierarchy && tableData.length > 0\n ? Math.min(tableRowsCount, 50)\n : groupBy\n ? Math.max(tableRowsCountRef.current, 50)\n : 50,\n )\n\n return { loadingAttrib, loadingRows }\n }, [])\n\n const showLoadingRows = !isInitialized || isLoading\n\n // Format readonly columns and attributes\n const { readOnlyColumns, readOnlyAttribs } = useMemo(\n () => getReadOnlyLists(attribFields, readOnly),\n [attribFields, readOnly],\n )\n\n const { updateEntities } = useCellEditing()\n\n const columnAttribs = useMemo(\n () => (isInitialized ? attribFields : loadingAttrib),\n [attribFields, loadingAttrib, isInitialized],\n )\n const columns = useMemo(() => {\n const baseColumns = buildTreeTableColumns({\n attribs: columnAttribs,\n showHierarchy,\n options,\n extraColumns,\n excluded: excludedColumns,\n groupBy,\n })\n\n if (sortableRows) {\n return [\n {\n id: DRAG_HANDLE_COLUMN_ID,\n header: () => null,\n cell: () => null, // Content rendered by TableBodyRow\n size: 24,\n minSize: 24,\n maxSize: 24,\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n enablePinning: false, // Programmatically pinned\n },\n ...baseColumns,\n ]\n }\n return baseColumns\n }, [columnAttribs, showHierarchy, options, extraColumns, excludedColumns, sortableRows])\n\n const table = useReactTable({\n data: showLoadingRows ? loadingRows : tableData,\n columns,\n defaultColumn: {\n minSize: 50,\n size: 150,\n },\n enableRowSelection: true, //enable row selection for all rows\n getRowId: (row) => row.id,\n enableSubRowSelection: false, //disable sub row selection\n getSubRows: (row) => row.subRows,\n getRowCanExpand: () => true,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // EXPANDABLE\n onExpandedChange: updateExpanded,\n // SORTING\n getSortedRowModel: clientSorting ? getSortedRowModel() : undefined,\n onSortingChange: updateSorting,\n columnResizeMode: 'onChange',\n onColumnPinningChange: columnPinningUpdater,\n onColumnSizingChange: columnSizingUpdater,\n onColumnVisibilityChange: columnVisibilityUpdater,\n onColumnOrderChange: columnOrderUpdater,\n // @ts-ignore\n filterFns,\n state: {\n expanded,\n sorting,\n columnPinning: (() => {\n const leftPins: string[] = []\n if (sortableRows) {\n leftPins.push(DRAG_HANDLE_COLUMN_ID)\n }\n leftPins.push(ROW_SELECTION_COLUMN_ID)\n\n // Add other unique pins from context, ensuring they are not the programmatic ones\n const contextLeftPins = (columnPinning.left || []).filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n leftPins.push(...contextLeftPins)\n // Remove duplicates just in case, though filter should handle it\n const uniqueLeftPins = [...new Set(leftPins)]\n\n return {\n left: uniqueLeftPins,\n right: columnPinning.right,\n }\n })(),\n columnSizing,\n columnVisibility,\n columnOrder,\n },\n enableSorting: true,\n meta: {\n projectName,\n options,\n readOnly: readOnlyColumns,\n updateEntities,\n toggleExpandAll,\n loadMoreTasks: fetchNextPage,\n },\n })\n\n // TODO: when there is data (like in error) then we have infinite rendering\n\n const { rows } = table.getRowModel()\n\n // update the tableRowsCountRef with the current number of rows\n useEffect(() => {\n tableRowsCountRef.current = rows.length\n }, [rows.length])\n\n // Register grid structure with selection context when rows or columns change\n useEffect(() => {\n if (!rows.length) return\n const rowIds = rows.map((row) => row.id)\n const colIds = table.getAllLeafColumns().map((col) => col.id)\n const colIdsSortedByPinning = [...colIds].sort((a, b) => {\n if (ROW_SELECTION_COLUMN_ID === b) return 1\n const colA = columnPinning.left?.includes(a) ? 0 : 1\n const colB = columnPinning.left?.includes(b) ? 0 : 1\n return colA - colB\n })\n\n registerGrid(rowIds, colIdsSortedByPinning)\n }, [rows, table.getAllLeafColumns(), columnPinning, ROW_SELECTION_COLUMN_ID, registerGrid])\n\n const visibleColumns = table.getVisibleLeafColumns()\n\n // Use the column virtualization hook\n const { columnVirtualizer, virtualPaddingLeft, virtualPaddingRight } = useColumnVirtualization({\n visibleColumns,\n tableContainerRef,\n columnPinning,\n })\n\n console.log(columnVirtualizer)\n\n const columnSizeVars = useCustomColumnWidthVars(table, columnSizing)\n\n const attribByField = useMemo(() => {\n return attribFields.reduce((acc: Record<string, AttributeEnumItem[]>, attrib) => {\n if (attrib.data?.enum?.length) {\n acc[attrib.name] = attrib.data?.enum\n }\n return acc\n }, {})\n }, [attribFields])\n\n const rowOrderIds = useMemo(() => tableData.map((row) => row.id), [tableData])\n const draggedRowData = useMemo(() => {\n if (!dndActiveId || !sortableRows) return null // Use dndActiveId\n return tableData.find((r) => r.id === dndActiveId) // Use dndActiveId\n }, [dndActiveId, tableData, sortableRows])\n\n const tableUiContent = (\n <ClipboardProvider\n entitiesMap={entitiesMap}\n columnEnums={{ ...options, ...attribByField }}\n columnReadOnly={readOnlyAttribs}\n >\n <Styled.TableWrapper {...props}>\n <Styled.TableContainer\n ref={tableContainerRef}\n style={{ height: '100%', padding: 0 }}\n onScroll={(e) => fetchMoreOnBottomReached(e.currentTarget)}\n {...pt?.container}\n className={clsx('table-container', pt?.container?.className)}\n >\n <table\n style={{\n display: 'grid',\n borderCollapse: 'collapse',\n userSelect: 'none',\n ...columnSizeVars,\n width: table.getTotalSize(),\n }}\n >\n <TableHead\n columnVirtualizer={columnVirtualizer}\n table={table}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n {...pt?.head}\n />\n <TableBody\n columnVirtualizer={columnVirtualizer}\n table={table}\n tableContainerRef={tableContainerRef}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n showHierarchy={showHierarchy}\n attribs={attribFields}\n onOpenNew={onOpenNew}\n rowOrderIds={rowOrderIds}\n sortableRows={sortableRows}\n error={error}\n />\n </table>\n </Styled.TableContainer>\n </Styled.TableWrapper>\n </ClipboardProvider>\n )\n\n // Render DragOverlay if sortableRows and dndActiveId is present\n const dragOverlayPortal =\n sortableRows &&\n dndActiveId &&\n createPortal(\n <DragOverlay dropAnimation={null}>\n {draggedRowData\n ? (() => {\n const overlayRowInstance = table.getRowModel().rows.find((r) => r.id === dndActiveId)\n if (!overlayRowInstance) return null\n\n const tableWidth = table.getTotalSize()\n\n return (\n <table\n style={{\n width: tableWidth,\n borderCollapse: 'collapse',\n backgroundColor: 'var(--md-sys-color-surface-container-high)',\n boxShadow: '0 0 10px rgba(0,0,0,0.2)',\n ...columnSizeVars,\n }}\n >\n <tbody>\n <Styled.TR style={{ display: 'flex', userSelect: 'none' }}>\n {virtualPaddingLeft ? (\n <td style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {columnVirtualizer.getVirtualItems().map((vc) => {\n const cell = overlayRowInstance.getVisibleCells()[vc.index]\n if (!cell) return null\n\n const cellStyleBase: CSSProperties = {\n ...getCommonPinningStyles(cell.column),\n width: `calc(var(--col-${cell.column.id}-size) * 1px)`,\n display: 'flex',\n alignItems: 'center',\n height: 40,\n }\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TableCell\n key={`overlay-drag-${cell.id}`}\n style={{ ...cellStyleBase, justifyContent: 'center' }}\n className={clsx(cell.column.id)}\n >\n <Icon icon=\"drag_handle\" /> {/* Static icon */}\n </Styled.TableCell>\n )\n }\n return (\n <TableCellMemo\n cell={cell}\n cellId={`overlay-${getCellId(overlayRowInstance.id, cell.column.id)}`}\n rowId={overlayRowInstance.id}\n key={`overlay-cell-${cell.id}`}\n showHierarchy={showHierarchy}\n />\n )\n })}\n {virtualPaddingRight ? (\n <td style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.TR>\n </tbody>\n </table>\n )\n })()\n : null}\n </DragOverlay>,\n document.body,\n )\n\n if (sortableRows) {\n return (\n <>\n {tableUiContent}\n {dragOverlayPortal}\n </>\n )\n } else {\n return tableUiContent\n }\n}\n\ninterface TableHeadProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n}\n\nconst TableHead = ({\n columnVirtualizer,\n table,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n ...props\n}: TableHeadProps) => {\n return (\n <Styled.TableHeader {...props}>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableHeadRow\n key={headerGroup.id}\n columnVirtualizer={columnVirtualizer}\n headerGroup={headerGroup}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n />\n ))}\n </Styled.TableHeader>\n )\n}\n\ninterface TableHeadRowProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n headerGroup: HeaderGroup<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n}\n\nconst TableHeadRow = ({\n columnVirtualizer,\n headerGroup,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n}: TableHeadRowProps) => {\n const virtualColumns = columnVirtualizer.getVirtualItems()\n return (\n <Styled.ColumnHeader key={headerGroup.id} style={{ display: 'flex' }}>\n {virtualPaddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {virtualColumns.map((virtualColumn) => {\n const header = headerGroup.headers[virtualColumn.index]\n\n return (\n <TableHeadCell\n key={header.id}\n header={header}\n isLoading={isLoading}\n isReadOnly={readOnlyColumns?.includes(header.id)}\n canSort={header.column.getCanSort()}\n canFilter={header.column.getCanFilter()}\n canHide={header.column.getCanHide()}\n canPin={header.column.getCanPin()}\n canResize={header.column.getCanResize()}\n sortableRows={sortableRows}\n />\n )\n })}\n {virtualPaddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.ColumnHeader>\n )\n}\n\ninterface TableHeadCellProps {\n header: Header<TableRow, unknown>\n isLoading: boolean\n canSort?: boolean\n canFilter?: boolean\n canHide?: boolean\n canPin?: boolean\n canResize?: boolean\n isReadOnly?: boolean\n sortableRows?: boolean\n}\n\nconst TableHeadCell = ({\n header,\n isLoading,\n canFilter,\n canHide,\n canSort,\n canPin,\n canResize,\n isReadOnly,\n sortableRows,\n}: TableHeadCellProps) => {\n const { column } = header\n\n return (\n <Styled.HeaderCell\n className={clsx(header.id, 'shimmer-dark', {\n loading: isLoading,\n 'last-pinned-left': column.getIsPinned() === 'left' && column.getIsLastColumn('left'),\n })}\n key={header.id}\n style={{\n ...getCommonPinningStyles(column),\n width: `calc(var(--header-${header?.id}-size) * 1px)`,\n }}\n >\n {header.isPlaceholder ? null : (\n <Styled.TableCellContent className={clsx('bold', 'header')}>\n {flexRender(column.columnDef.header, header.getContext())}\n {isReadOnly && (\n <Icon icon=\"lock\" data-tooltip={'You only have permission to read this column.'} />\n )}\n\n <Styled.HeaderButtons className=\"actions\">\n {/* COLUMN HIDING */}\n {canHide && (\n <HeaderActionButton\n icon=\"visibility_off\"\n selected={!column.getIsVisible()}\n onClick={column.getToggleVisibilityHandler()}\n />\n )}\n {/* COLUMN PINNING */}\n {canPin && (\n <HeaderActionButton\n icon=\"push_pin\"\n selected={header.column.getIsPinned() === 'left'}\n onClick={() => {\n if (header.column.getIsPinned() === 'left') {\n header.column.pin(false)\n } else {\n header.column.pin('left')\n }\n }}\n />\n )}\n\n {/* COLUMN SORTING */}\n {canSort && (\n <HeaderActionButton\n icon={'sort'}\n style={{\n transform: (column.getIsSorted() as string) === 'asc' ? 'scaleY(-1)' : undefined,\n }}\n onClick={column.getToggleSortingHandler()}\n selected={!!column.getIsSorted()}\n />\n )}\n </Styled.HeaderButtons>\n {canResize && (\n <Styled.ResizedHandler\n {...{\n onDoubleClick: () => column.resetSize(),\n onMouseDown: header.getResizeHandler(),\n onTouchStart: header.getResizeHandler(),\n className: clsx('resize-handle', {\n resizing: column.getIsResizing(),\n }),\n }}\n />\n )}\n </Styled.TableCellContent>\n )}\n </Styled.HeaderCell>\n )\n}\n\ninterface TableBodyProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n tableContainerRef: React.RefObject<HTMLDivElement>\n showHierarchy: boolean\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n attribs: ProjectTableAttribute[]\n onOpenNew?: (type: 'folder' | 'task') => void\n rowOrderIds: UniqueIdentifier[]\n sortableRows: boolean\n error?: string\n}\n\nconst TableBody = ({\n columnVirtualizer,\n table,\n tableContainerRef,\n showHierarchy,\n virtualPaddingLeft,\n virtualPaddingRight,\n attribs,\n onOpenNew,\n rowOrderIds,\n sortableRows,\n error,\n}: TableBodyProps) => {\n const headerLabels = useMemo(() => {\n const allColumns = table.getAllColumns()\n const headers = allColumns\n .map((col) => {\n const headerId = col.id\n const header = col.columnDef.header\n if (typeof header === 'string' || typeof header === 'number') {\n return { label: header, id: headerId }\n }\n return null\n })\n .filter(Boolean)\n\n return headers as HeaderLabel[]\n }, [table.getAllColumns()])\n\n const { handleTableBodyContextMenu } = useCellContextMenu({ attribs, onOpenNew, headerLabels })\n\n const { handlePreFetchTasks } = usePrefetchFolderTasks()\n\n const { rows } = table.getRowModel()\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: () => 40, //estimate row height for accurate scrollbar dragging\n getScrollElement: () => tableContainerRef.current,\n //measure dynamic row height, except in firefox because it measures table border height incorrectly\n measureElement:\n typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 5,\n })\n\n const virtualRows = rowVirtualizer.getVirtualItems()\n\n // Memoize the measureElement callback\n const measureRowElement = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (node) {\n rowVirtualizer.measureElement(node)\n }\n },\n [rowVirtualizer],\n )\n\n useKeyboardNavigation()\n\n const tbodyContent = (\n <tbody\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`,\n position: 'relative',\n display: 'grid',\n }}\n onContextMenu={handleTableBodyContextMenu}\n onMouseOver={(e) => {\n handlePreFetchTasks(e)\n }}\n >\n {virtualRows.map((virtualRow, i) => {\n const row = rows[virtualRow.index] as Row<TableRow>\n // Add a check for row existence to prevent potential errors if data is out of sync\n if (!row) {\n console.warn('Virtualized row data not found for index:', virtualRow.index)\n return null\n }\n return (\n <TableBodyRow\n key={row.id + i.toString()} // dnd-kit needs this key to be stable and match the id in useSortable\n row={row}\n showHierarchy={showHierarchy}\n visibleCells={row.getVisibleCells()}\n virtualColumns={columnVirtualizer.getVirtualItems()}\n paddingLeft={virtualPaddingLeft}\n paddingRight={virtualPaddingRight}\n rowRef={measureRowElement}\n dataIndex={virtualRow.index}\n offsetTop={virtualRow.start}\n sortableRows={sortableRows}\n />\n )\n })}\n </tbody>\n )\n\n if (error) {\n return (\n tableContainerRef.current &&\n createPortal(\n <EmptyPlaceholder message=\"No items found\" error={error} />,\n tableContainerRef.current,\n )\n )\n }\n\n if (sortableRows) {\n return (\n <SortableContext items={rowOrderIds} strategy={verticalListSortingStrategy}>\n {tbodyContent}\n </SortableContext>\n )\n } else {\n return tbodyContent\n }\n}\n\ninterface TableBodyRowProps {\n row: Row<TableRow>\n showHierarchy: boolean\n visibleCells: Cell<TableRow, unknown>[]\n virtualColumns: VirtualItem[]\n paddingLeft: number | undefined\n paddingRight: number | undefined\n rowRef: (node: HTMLTableRowElement | null) => void\n dataIndex: number\n offsetTop: number\n sortableRows: boolean\n}\n\nconst TableBodyRow = ({\n row,\n showHierarchy,\n visibleCells,\n virtualColumns,\n paddingLeft,\n paddingRight,\n rowRef,\n dataIndex,\n offsetTop,\n sortableRows,\n}: TableBodyRowProps) => {\n const sortable = sortableRows ? useSortable({ id: row.id }) : null\n\n const combinedRef = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (sortable) {\n sortable.setNodeRef(node)\n }\n // rowRef for virtualizer measurement\n // only measure if not actively being transformed by dnd-kit\n if (!(sortable && sortable.isDragging)) {\n rowRef(node)\n }\n },\n [sortable, rowRef],\n )\n\n // Attempt to combine dnd-kit transform with virtualizer's offsetTop\n const style: CSSProperties = {\n position: 'absolute', // Use absolute positioning for virtualized items\n top: offsetTop, // Position based on virtualizer's calculation (virtualRow.start)\n left: 0, // Span full width of the relative parent (tbody)\n right: 0, // Span full width\n height: 40, // Explicit height can be beneficial for absolute positioning\n zIndex: sortable && sortable.isDragging ? 0 : 1, // Ensure dragged item is above others\n display: 'flex', // Styled.TR is display:flex\n transform:\n sortable && sortable.transform ? CSS.Transform.toString(sortable.transform) : undefined, // Apply dnd-kit's transform for drag effect\n transition: sortable && sortable.transition ? sortable.transition : undefined,\n visibility: sortable && sortable.isDragging ? 'hidden' : 'visible', // Hide the row being dragged\n }\n\n return (\n <Styled.TR\n ref={combinedRef}\n data-index={dataIndex} //needed for dynamic row height measurement\n style={style}\n className={clsx({ 'group-row': row.original.group })}\n >\n {paddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingLeft }} />\n ) : null}\n {virtualColumns.map((vc, i) => {\n const cell = visibleCells[vc.index]\n if (!cell) return null // Should not happen in normal circumstances\n\n const cellId = getCellId(row.id, cell.column.id)\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TableCell\n key={cell.id + i.toString()}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: `calc(var(--col-${cell.column.id}-size) * 1px)`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: 40,\n }}\n className={clsx(cell.column.id, {\n 'last-pinned-left':\n cell.column.getIsPinned() === 'left' && cell.column.getIsLastColumn('left'),\n })}\n onMouseDown={(e) => e.stopPropagation()} // Prevent selection interference\n onMouseOver={(e) => e.stopPropagation()}\n // Removed onMouseUp stopPropagation to allow dnd-kit to handle it\n onDoubleClick={(e) => e.stopPropagation()}\n onContextMenu={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n <RowDragHandleCellContent\n attributes={sortable?.attributes}\n listeners={sortable?.listeners}\n />\n </Styled.TableCell>\n )\n }\n return (\n <TableCellMemo\n cell={cell}\n cellId={cellId}\n rowId={row.id}\n key={cell.id + i.toString()}\n showHierarchy={showHierarchy}\n sortableRows={sortableRows}\n />\n )\n })}\n\n {paddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingRight }} />\n ) : null}\n </Styled.TR>\n )\n}\n\ninterface TableCellProps {\n cell: Cell<TableRow, unknown>\n cellId: string\n rowId: string\n className?: string\n showHierarchy: boolean\n sortableRows?: boolean\n}\n\nconst TableCell = ({\n cell,\n rowId,\n cellId,\n className,\n showHierarchy,\n sortableRows,\n ...props\n}: TableCellProps) => {\n const {\n isCellSelected,\n isCellFocused,\n startSelection,\n extendSelection,\n endSelection,\n selectCell,\n getCellBorderClasses,\n clearSelection,\n } = useSelectionCellsContext()\n\n const { isRowSelected } = useSelectedRowsContext()\n\n const { isEditing } = useCellEditing()\n\n const borderClasses = getCellBorderClasses(cellId)\n\n const isPinned = cell.column.getIsPinned()\n const isLastLeftPinnedColumn = isPinned === 'left' && cell.column.getIsLastColumn('left')\n const isRowSelectionColumn = cell.column.id === ROW_SELECTION_COLUMN_ID\n const isGroup = cell.row.original.entityType === 'group'\n\n return (\n <Styled.TableCell\n {...props}\n tabIndex={0}\n $isLastPinned={isLastLeftPinnedColumn} // is this column the last pinned column? Custom styling for borders.\n className={clsx(\n cell.column.id,\n {\n selected: isCellSelected(cellId),\n focused: isCellFocused(cellId),\n editing: isEditing(cellId),\n 'last-pinned-left': isLastLeftPinnedColumn,\n 'selected-row': isRowSelected(rowId),\n task: cell.row.original.entityType === 'task',\n },\n className,\n ...borderClasses,\n )}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: `calc(var(--col-${cell.column.id}-size) * 1px)`,\n height: 40,\n }}\n onMouseDown={(e) => {\n // Only process left clicks (button 0), ignore right clicks\n if (e.button !== 0) return\n\n // check we are not clicking on expander\n if ((e.target as HTMLElement).closest('.expander')) return\n\n // only name column can be selected for group rows\n if (isGroup && cell.column.id !== 'name') return clearSelection()\n\n const additive = e.metaKey || e.ctrlKey || isRowSelectionColumn\n if (e.shiftKey) {\n // Shift+click extends selection from anchor cell\n selectCell(cellId, additive, true) // true for range selection\n } else {\n // Normal click starts a new selection\n startSelection(cellId, additive)\n }\n }}\n onMouseOver={(e) => {\n if (e.buttons === 1) {\n // Left button is pressed during mouse move - drag selection\n extendSelection(cellId, isRowSelectionColumn)\n }\n }}\n onMouseUp={() => {\n endSelection(cellId)\n }}\n onDoubleClick={(e) => {\n if (\n cell.column.id === 'name' &&\n !(e.target as HTMLElement).closest('.expander') &&\n !isGroup\n ) {\n // select the row by selecting the row-selection cell\n const rowSelectionCellId = getCellId(cell.row.id, ROW_SELECTION_COLUMN_ID)\n if (!isCellSelected(rowSelectionCellId)) {\n const additive = e.metaKey || e.ctrlKey\n selectCell(rowSelectionCellId, additive, false)\n }\n }\n }}\n onContextMenu={(e) => {\n e.preventDefault()\n // if the cell is not selected, select it and deselect all others\n if (!isCellSelected(cellId)) {\n selectCell(cellId, false, false)\n }\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Styled.TableCell>\n )\n}\n\nconst TableCellMemo = memo(TableCell)\n"],"names":["ROW_SELECTION_COLUMN_ID","useColumnSettingsContext","useProjectTableContext","useMemo","getTableFieldOptions","useRef","useSelectionCellsContext","_a","loadingAttrib","generateDummyAttributes","loadingRows","generateLoadingRows","getReadOnlyLists","useCellEditing","buildTreeTableColumns","useReactTable","getCoreRowModel","getFilteredRowModel","getExpandedRowModel","getSortedRowModel","filterFns","useEffect","jsx","ClipboardProvider","Styled.TableWrapper","Styled.TableContainer","jsxs","createPortal","DragOverlay","Styled.TR","Styled.TableCell","Icon","getCellId","Fragment","Styled.TableHeader","Styled.ColumnHeader","Styled.HeaderCell","Styled.TableCellContent","flexRender","Styled.HeaderButtons","Styled.ResizedHandler","usePrefetchFolderTasks","useVirtualizer","useCallback","EmptyPlaceholder","SortableContext","verticalListSortingStrategy","sortable","useSortable","CSS","useSelectedRowsContext","memo"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports } from "../../../../_virtual/jsx-runtime.es.js";
|
|
2
|
-
import { memo,
|
|
2
|
+
import { memo, useMemo, useRef, useEffect, useCallback } from "react";
|
|
3
3
|
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
4
4
|
import { flexRender, useReactTable, filterFns, getSortedRowModel, getExpandedRowModel, getFilteredRowModel, getCoreRowModel } from "@tanstack/react-table";
|
|
5
5
|
import clsx from "clsx";
|
|
@@ -29,7 +29,6 @@ import { getReadOnlyLists } from "./utils/getReadOnlyLists.es.js";
|
|
|
29
29
|
import { DragOverlay } from "@dnd-kit/core";
|
|
30
30
|
import { SortableContext, verticalListSortingStrategy, useSortable } from "@dnd-kit/sortable";
|
|
31
31
|
import { CSS } from "../../../../node_modules/@dnd-kit/utilities/dist/utilities.esm.es.js";
|
|
32
|
-
import useBuildGroupByTableData from "./hooks/useBuildGroupByTableData.es.js";
|
|
33
32
|
const getCommonPinningStyles = (column) => {
|
|
34
33
|
const isPinned = column.getIsPinned();
|
|
35
34
|
const offset = column.id !== ROW_SELECTION_COLUMN_ID && column.id !== DRAG_HANDLE_COLUMN_ID ? -30 : 0;
|
|
@@ -57,7 +56,6 @@ const ProjectTreeTable = ({
|
|
|
57
56
|
onRowReorder,
|
|
58
57
|
dndActiveId,
|
|
59
58
|
// Destructure new prop
|
|
60
|
-
groupByConfig,
|
|
61
59
|
pt,
|
|
62
60
|
...props
|
|
63
61
|
}) => {
|
|
@@ -75,8 +73,7 @@ const ProjectTreeTable = ({
|
|
|
75
73
|
} = useColumnSettingsContext();
|
|
76
74
|
const {
|
|
77
75
|
projectInfo,
|
|
78
|
-
tableData
|
|
79
|
-
taskGroups,
|
|
76
|
+
tableData,
|
|
80
77
|
attribFields,
|
|
81
78
|
entitiesMap,
|
|
82
79
|
users,
|
|
@@ -92,17 +89,6 @@ const ProjectTreeTable = ({
|
|
|
92
89
|
showHierarchy,
|
|
93
90
|
fetchNextPage
|
|
94
91
|
} = useProjectTableContext();
|
|
95
|
-
const buildGroupByTableData = useBuildGroupByTableData({
|
|
96
|
-
entities: entitiesMap,
|
|
97
|
-
entityType: groupByConfig == null ? void 0 : groupByConfig.entityType,
|
|
98
|
-
groups: taskGroups,
|
|
99
|
-
project: projectInfo
|
|
100
|
-
});
|
|
101
|
-
const groupedTableData = useMemo(
|
|
102
|
-
() => !!groupBy && buildGroupByTableData(groupBy),
|
|
103
|
-
[groupBy, entitiesMap, groupByConfig == null ? void 0 : groupByConfig.entityType]
|
|
104
|
-
);
|
|
105
|
-
const tableData = groupedTableData ? groupedTableData : defaultTableData;
|
|
106
92
|
const isLoading = isLoadingProp || isLoadingData;
|
|
107
93
|
const { statuses = [], folderTypes = [], taskTypes = [], tags = [] } = projectInfo || {};
|
|
108
94
|
const options = useMemo(
|
|
@@ -254,6 +240,7 @@ const ProjectTreeTable = ({
|
|
|
254
240
|
tableContainerRef,
|
|
255
241
|
columnPinning
|
|
256
242
|
});
|
|
243
|
+
console.log(columnVirtualizer);
|
|
257
244
|
const columnSizeVars = useCustomColumnWidthVars(table, columnSizing);
|
|
258
245
|
const attribByField = useMemo(() => {
|
|
259
246
|
return attribFields.reduce((acc, attrib) => {
|
|
@@ -553,7 +540,19 @@ const TableBody = ({
|
|
|
553
540
|
sortableRows,
|
|
554
541
|
error
|
|
555
542
|
}) => {
|
|
556
|
-
const
|
|
543
|
+
const headerLabels = useMemo(() => {
|
|
544
|
+
const allColumns = table.getAllColumns();
|
|
545
|
+
const headers = allColumns.map((col) => {
|
|
546
|
+
const headerId = col.id;
|
|
547
|
+
const header = col.columnDef.header;
|
|
548
|
+
if (typeof header === "string" || typeof header === "number") {
|
|
549
|
+
return { label: header, id: headerId };
|
|
550
|
+
}
|
|
551
|
+
return null;
|
|
552
|
+
}).filter(Boolean);
|
|
553
|
+
return headers;
|
|
554
|
+
}, [table.getAllColumns()]);
|
|
555
|
+
const { handleTableBodyContextMenu } = useCellContextMenu({ attribs, onOpenNew, headerLabels });
|
|
557
556
|
const { handlePreFetchTasks } = usePrefetchFolderTasks();
|
|
558
557
|
const { rows } = table.getRowModel();
|
|
559
558
|
const rowVirtualizer = useVirtualizer({
|
|
@@ -587,7 +586,7 @@ const TableBody = ({
|
|
|
587
586
|
onMouseOver: (e) => {
|
|
588
587
|
handlePreFetchTasks(e);
|
|
589
588
|
},
|
|
590
|
-
children: virtualRows.map((virtualRow) => {
|
|
589
|
+
children: virtualRows.map((virtualRow, i) => {
|
|
591
590
|
const row = rows[virtualRow.index];
|
|
592
591
|
if (!row) {
|
|
593
592
|
console.warn("Virtualized row data not found for index:", virtualRow.index);
|
|
@@ -607,7 +606,7 @@ const TableBody = ({
|
|
|
607
606
|
offsetTop: virtualRow.start,
|
|
608
607
|
sortableRows
|
|
609
608
|
},
|
|
610
|
-
row.id
|
|
609
|
+
row.id + i.toString()
|
|
611
610
|
);
|
|
612
611
|
})
|
|
613
612
|
}
|
|
@@ -675,12 +674,13 @@ const TableBodyRow = ({
|
|
|
675
674
|
ref: combinedRef,
|
|
676
675
|
"data-index": dataIndex,
|
|
677
676
|
style,
|
|
677
|
+
className: clsx({ "group-row": row.original.group }),
|
|
678
678
|
children: [
|
|
679
679
|
paddingLeft ? (
|
|
680
680
|
//fake empty column to the left for virtualization scroll padding
|
|
681
681
|
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { style: { display: "flex", width: paddingLeft } })
|
|
682
682
|
) : null,
|
|
683
|
-
virtualColumns.map((vc) => {
|
|
683
|
+
virtualColumns.map((vc, i) => {
|
|
684
684
|
const cell = visibleCells[vc.index];
|
|
685
685
|
if (!cell) return null;
|
|
686
686
|
const cellId = getCellId(row.id, cell.column.id);
|
|
@@ -714,7 +714,7 @@ const TableBodyRow = ({
|
|
|
714
714
|
}
|
|
715
715
|
)
|
|
716
716
|
},
|
|
717
|
-
cell.id
|
|
717
|
+
cell.id + i.toString()
|
|
718
718
|
);
|
|
719
719
|
}
|
|
720
720
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -726,7 +726,7 @@ const TableBodyRow = ({
|
|
|
726
726
|
showHierarchy,
|
|
727
727
|
sortableRows
|
|
728
728
|
},
|
|
729
|
-
cell.id
|
|
729
|
+
cell.id + i.toString()
|
|
730
730
|
);
|
|
731
731
|
}),
|
|
732
732
|
paddingRight ? (
|
|
@@ -763,12 +763,11 @@ const TableCell = ({
|
|
|
763
763
|
const isLastLeftPinnedColumn = isPinned === "left" && cell.column.getIsLastColumn("left");
|
|
764
764
|
const isRowSelectionColumn = cell.column.id === ROW_SELECTION_COLUMN_ID;
|
|
765
765
|
const isGroup = cell.row.original.entityType === "group";
|
|
766
|
-
return /* @__PURE__ */
|
|
766
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
767
767
|
TableCell$1,
|
|
768
768
|
{
|
|
769
769
|
...props,
|
|
770
770
|
tabIndex: 0,
|
|
771
|
-
key: cell.id,
|
|
772
771
|
$isLastPinned: isLastLeftPinnedColumn,
|
|
773
772
|
className: clsx(
|
|
774
773
|
cell.column.id,
|
|
@@ -821,9 +820,9 @@ const TableCell = ({
|
|
|
821
820
|
if (!isCellSelected(cellId)) {
|
|
822
821
|
selectCell(cellId, false, false);
|
|
823
822
|
}
|
|
824
|
-
}
|
|
825
|
-
|
|
826
|
-
|
|
823
|
+
},
|
|
824
|
+
children: flexRender(cell.column.columnDef.cell, cell.getContext())
|
|
825
|
+
}
|
|
827
826
|
);
|
|
828
827
|
};
|
|
829
828
|
const TableCellMemo = memo(TableCell);
|