@ynput/ayon-frontend-shared 0.3.10 → 0.3.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DetailsPanel.cjs.js +1 -1
- package/dist/DetailsPanel.es.js +24 -22
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/ProjectTreeTable.cjs.js +1 -1
- package/dist/ProjectTreeTable.es.js +95 -96
- package/dist/Slicer.cjs.js +1 -1
- package/dist/Slicer.es.js +12 -11
- package/dist/Slicer.es.js.map +1 -1
- package/dist/_virtual/index.cjs3.js +1 -1
- package/dist/_virtual/index.cjs4.js +1 -1
- package/dist/_virtual/index.cjs5.js +1 -1
- package/dist/_virtual/index.es3.js +4 -4
- package/dist/_virtual/index.es4.js +5 -2
- package/dist/_virtual/index.es4.js.map +1 -1
- package/dist/_virtual/index.es5.js +2 -5
- package/dist/_virtual/index.es5.js.map +1 -1
- package/dist/_virtual/index.es6.js +2 -2
- package/dist/api.cjs.js +1 -1
- package/dist/api.es.js +177 -174
- package/dist/api.es.js.map +1 -1
- package/dist/components.cjs.js +1 -1
- package/dist/components.es.js +21 -17
- package/dist/components.es.js.map +1 -1
- package/dist/hooks.cjs.js +1 -1
- package/dist/hooks.es.js +20 -18
- package/dist/hooks.es.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +11 -9
- 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/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/index.es.js +1 -1
- package/dist/shared/node_modules/primereact/skeleton/skeleton.esm.cjs.js +2 -0
- package/dist/shared/node_modules/primereact/skeleton/skeleton.esm.cjs.js.map +1 -0
- package/dist/shared/node_modules/primereact/skeleton/skeleton.esm.es.js +51 -0
- package/dist/shared/node_modules/primereact/skeleton/skeleton.esm.es.js.map +1 -0
- package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
- package/dist/shared/node_modules/prop-types/index.es.js +1 -1
- package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
- package/dist/shared/node_modules/react-is/index.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
- package/dist/shared/src/api/generated/addons.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/addons.es.js.map +1 -1
- package/dist/shared/src/api/generated/projects.cjs.js +1 -1
- package/dist/shared/src/api/generated/projects.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/projects.es.js +36 -1
- package/dist/shared/src/api/generated/projects.es.js.map +1 -1
- package/dist/shared/src/api/generated/views.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/views.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/patchDetailsPanel.cjs.js +1 -1
- package/dist/shared/src/api/queries/entities/patchDetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/patchDetailsPanel.es.js +3 -2
- package/dist/shared/src/api/queries/entities/patchDetailsPanel.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +4 -3
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.es.js +7 -6
- package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
- package/dist/shared/src/api/queries/project/getProject.cjs.js +1 -1
- package/dist/shared/src/api/queries/project/getProject.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/project/getProject.es.js +4 -6
- package/dist/shared/src/api/queries/project/getProject.es.js.map +1 -1
- package/dist/shared/src/api/queries/tasks/getTasks.cjs.js +2 -0
- package/dist/shared/src/api/queries/tasks/getTasks.cjs.js.map +1 -0
- package/dist/shared/src/api/queries/tasks/getTasks.es.js +14 -0
- package/dist/shared/src/api/queries/tasks/getTasks.es.js.map +1 -0
- package/dist/shared/src/api/queries/tasks/updateTasks.cjs.js +1 -1
- package/dist/shared/src/api/queries/tasks/updateTasks.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/tasks/updateTasks.es.js +40 -22
- package/dist/shared/src/api/queries/tasks/updateTasks.es.js.map +1 -1
- package/dist/shared/src/api/queries/users/getUsers.cjs.js +3 -3
- package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/users/getUsers.es.js +19 -18
- package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
- package/dist/shared/src/api/queries/versions/updateVersions.cjs.js +1 -1
- package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/versions/updateVersions.es.js +9 -7
- package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -1
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +1 -1
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +3 -2
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +3 -3
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +76 -71
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +25 -24
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.styles.cjs.js +12 -5
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.styles.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.styles.es.js +9 -2
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.styles.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +3 -2
- package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +3 -2
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
- package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +2 -0
- package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -0
- package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +37 -0
- package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -0
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +30 -27
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
- package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
- package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
- package/dist/shared/src/components/Feedback/FeedbackContext.es.js +5 -4
- package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
- package/dist/shared/src/components/FileThumbnail/FileThumbnail.cjs.js +13 -3
- package/dist/shared/src/components/FileThumbnail/FileThumbnail.cjs.js.map +1 -1
- package/dist/shared/src/components/FileThumbnail/FileThumbnail.es.js +29 -19
- package/dist/shared/src/components/FileThumbnail/FileThumbnail.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +48 -195
- package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +28 -31
- package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +4 -2
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
- package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
- package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
- package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +3 -2
- package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +4 -2
- package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +6 -4
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +4 -2
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +4 -2
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +4 -2
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.es.js +4 -2
- package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +11 -10
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +4 -2
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +5 -3
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +4 -2
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +3 -2
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js +2 -0
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js.map +1 -0
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js +349 -0
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js.map +1 -0
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.cjs.js +74 -0
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.cjs.js.map +1 -0
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.es.js +84 -0
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.es.js.map +1 -0
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +121 -105
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +4 -2
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +3 -2
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +2 -2
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +5 -4
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js +1 -1
- package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/Thumbnail.es.js +27 -26
- package/dist/shared/src/components/Thumbnail/Thumbnail.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.cjs.js +2 -2
- package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.es.js +13 -13
- package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +30 -6
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +190 -95
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +138 -128
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
- package/dist/shared/src/components/Watchers/Watchers.cjs.js +1 -1
- package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
- package/dist/shared/src/components/Watchers/Watchers.es.js +3 -2
- package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +4 -2
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.es.js +39 -39
- package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.styled.cjs.js +12 -16
- package/dist/shared/src/containers/Actions/Actions.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.styled.es.js +15 -19
- package/dist/shared/src/containers/Actions/Actions.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.cjs.js +8 -5
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.es.js +12 -9
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +4 -2
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +4 -2
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +4 -2
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +5 -3
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +122 -125
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +3 -2
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.es.js +29 -25
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +4 -5
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +18 -17
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +4 -2
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +4 -2
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +3 -2
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +3 -2
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +4 -2
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +4 -2
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +4 -2
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +4 -2
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +5 -3
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js +32 -24
- package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.es.js +132 -128
- package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +4 -2
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +89 -86
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +4 -2
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.cjs.js +3 -3
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.es.js +28 -27
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +4 -2
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/InputMarkdownConvert.cjs.js +6 -2
- package/dist/shared/src/containers/Feed/components/CommentInput/InputMarkdownConvert.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/InputMarkdownConvert.es.js +64 -54
- package/dist/shared/src/containers/Feed/components/CommentInput/InputMarkdownConvert.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/quillToMarkdown.cjs.js +5 -5
- package/dist/shared/src/containers/Feed/components/CommentInput/quillToMarkdown.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/quillToMarkdown.es.js +37 -35
- package/dist/shared/src/containers/Feed/components/CommentInput/quillToMarkdown.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentMentionSelect/CommentMentionSelect.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentMentionSelect/CommentMentionSelect.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentMentionSelect/CommentMentionSelect.es.js +21 -21
- package/dist/shared/src/containers/Feed/components/CommentMentionSelect/CommentMentionSelect.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +4 -2
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js +6 -5
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +3 -2
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js +7 -6
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +505 -489
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +235 -218
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +227 -226
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +147 -146
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +60 -57
- 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 +58 -64
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +15 -13
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js +2 -2
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.es.js +24 -38
- package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +25 -22
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +6 -6
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +17 -16
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +8 -8
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +50 -49
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +6 -4
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +4 -2
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +4 -2
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +4 -2
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +5 -4
- package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +10 -8
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js +3 -2
- package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +3 -2
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +4 -2
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js +5 -4
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +3 -2
- package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +4 -3
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js +3 -2
- package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +3 -2
- package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +3 -2
- package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +3 -2
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
- package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
- package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
- package/dist/shared/src/context/AddonProjectContext.es.js +5 -4
- package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.es.js +89 -82
- package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
- package/dist/shared/src/context/GlobalContext.cjs.js +1 -1
- package/dist/shared/src/context/GlobalContext.cjs.js.map +1 -1
- package/dist/shared/src/context/GlobalContext.es.js +5 -4
- package/dist/shared/src/context/GlobalContext.es.js.map +1 -1
- package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
- package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
- package/dist/shared/src/context/PowerpackContext.es.js +7 -6
- package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
- package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
- package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
- package/dist/shared/src/context/ProjectContext.es.js +64 -61
- package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
- package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
- package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
- package/dist/shared/src/context/ProjectFoldersContext.es.js +5 -4
- package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
- package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.es.js +5 -4
- package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
- package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
- package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
- package/dist/shared/src/context/SubtasksModulesContext.es.js +5 -4
- package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
- package/dist/shared/src/context/UriContext.cjs.js +1 -1
- package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
- package/dist/shared/src/context/UriContext.es.js +6 -5
- package/dist/shared/src/context/UriContext.es.js.map +1 -1
- package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
- package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
- package/dist/shared/src/context/WebsocketContext.es.js +6 -4
- package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
- package/dist/shared/src/hooks/useActionTriggers.cjs.js +1 -1
- package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useActionTriggers.es.js +3 -2
- package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.es.js +3 -2
- package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
- package/dist/shared/src/hooks/useGetEntityGroups.cjs.js +1 -1
- package/dist/shared/src/hooks/useGetEntityGroups.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useGetEntityGroups.es.js +3 -2
- package/dist/shared/src/hooks/useGetEntityGroups.es.js.map +1 -1
- package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
- package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +3 -2
- package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
- package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
- package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useHierarchyTable.es.js +25 -24
- package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
- package/dist/shared/src/hooks/useScopedStatuses.cjs.js +1 -1
- package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useScopedStatuses.es.js +5 -4
- package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
- package/dist/shared/src/hooks/useScopedTypes.cjs.js +2 -0
- package/dist/shared/src/hooks/useScopedTypes.cjs.js.map +1 -0
- package/dist/shared/src/hooks/useScopedTypes.es.js +109 -0
- package/dist/shared/src/hooks/useScopedTypes.es.js.map +1 -0
- package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.es.js +3 -2
- package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
- package/dist/shared/src/util/columnConfigConverter.cjs.js +1 -1
- package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
- package/dist/shared/src/util/columnConfigConverter.es.js +61 -60
- package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
- package/dist/shared/src/util/iconUtils.cjs.js +2 -0
- package/dist/shared/src/util/iconUtils.cjs.js.map +1 -0
- package/dist/shared/src/util/iconUtils.es.js +18 -0
- package/dist/shared/src/util/iconUtils.es.js.map +1 -0
- package/dist/shared/src/util/isHTMLElement.cjs.js +2 -0
- package/dist/shared/src/util/isHTMLElement.cjs.js.map +1 -0
- package/dist/shared/src/util/isHTMLElement.es.js +5 -0
- package/dist/shared/src/util/isHTMLElement.es.js.map +1 -0
- package/dist/shared/src/util/versionUploadHelpers.cjs.js.map +1 -1
- package/dist/shared/src/util/versionUploadHelpers.es.js.map +1 -1
- package/dist/types/api/generated/addons.d.ts +4 -0
- package/dist/types/api/generated/enums.d.ts +2 -0
- package/dist/types/api/generated/projects.d.ts +71 -3
- package/dist/types/api/generated/views.d.ts +2 -0
- package/dist/types/api/queries/entityLists/types.d.ts +1 -0
- package/dist/types/api/queries/project/getProject.d.ts +4 -185
- package/dist/types/api/queries/project/updateProject.d.ts +11 -11
- package/dist/types/api/queries/tasks/getTasks.d.ts +185 -0
- package/dist/types/api/queries/tasks/index.d.ts +1 -0
- package/dist/types/api/queries/tasks/updateTasks.d.ts +7 -0
- package/dist/types/api/queries/versions/updateVersions.d.ts +185 -1
- package/dist/types/components/EntityIcon/EntityIcon.d.ts +10 -0
- package/dist/types/components/EntityIcon/index.d.ts +1 -0
- package/dist/types/components/LinksManager/LinksManager.d.ts +1 -0
- package/dist/types/components/ReviewablesSelector/ReviewablesSelector.d.ts +12 -0
- package/dist/types/components/ReviewablesSelector/ReviewablesSelector.styled.d.ts +8 -0
- package/dist/types/components/ReviewablesSelector/index.d.ts +2 -0
- package/dist/types/components/Thumbnail/StackedThumbnails.d.ts +1 -0
- package/dist/types/components/Thumbnail/Thumbnail.d.ts +3 -2
- package/dist/types/components/VersionUploader/context/VersionUploadContext.d.ts +14 -2
- package/dist/types/components/index.d.ts +2 -0
- package/dist/types/containers/EntityPickerDialog/util/buildEntityPickerTableData.d.ts +1 -0
- package/dist/types/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.d.ts +2 -1
- package/dist/types/containers/Feed/components/CommentMentionSelect/CommentMentionSelect.d.ts +1 -0
- package/dist/types/containers/Feed/mentionHelpers/getMentionTasks.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/types/project.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/utils/linksToTableData.d.ts +2 -12
- package/dist/types/containers/ProjectTreeTable/widgets/EntityNameWidget.d.ts +3 -3
- package/dist/types/containers/ProjectTreeTable/widgets/EnumCellValue.d.ts +2 -1
- package/dist/types/containers/Slicer/hooks/useProjectAnatomySlices.d.ts +0 -1
- package/dist/types/context/ProjectContext.d.ts +1 -2
- package/dist/types/hooks/index.d.ts +1 -0
- package/dist/types/hooks/useHierarchyTable.d.ts +2 -1
- package/dist/types/hooks/useScopedTypes.d.ts +4 -0
- package/dist/types/util/iconUtils.d.ts +4 -0
- package/dist/types/util/index.d.ts +2 -0
- package/dist/types/util/isHTMLElement.d.ts +2 -0
- package/dist/types/util/versionUploadHelpers.d.ts +1 -0
- package/dist/util.cjs.js +1 -1
- package/dist/util.es.js +20 -18
- package/dist/util.es.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectTreeTable.cjs.js","sources":["../../../../../src/containers/ProjectTreeTable/ProjectTreeTable.tsx"],"sourcesContent":["import { useMemo, useRef, useEffect, memo, CSSProperties, useCallback, UIEventHandler } 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 ExpandedState,\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 isEntityExpandable,\n TreeTableExtraColumn,\n} from './buildTreeTableColumns'\nimport * as Styled from './ProjectTreeTable.styled'\nimport { RowDragHandleCellContent, ColumnHeaderMenu } from './components'\nimport EmptyPlaceholder from '../../components/EmptyPlaceholder'\nimport HeaderActionButton from './components/HeaderActionButton'\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'\nimport { useMenuContext } from '../../context/MenuContext'\n\n// Hook imports\nimport useCustomColumnWidthVars from './hooks/useCustomColumnWidthVars'\nimport usePrefetchFolderTasks from './hooks/usePrefetchFolderTasks'\nimport useCellContextMenu, {\n HeaderLabel,\n ContextMenuItemConstructors,\n} from './hooks/useCellContextMenu'\nimport useColumnVirtualization from './hooks/useColumnVirtualization'\nimport useKeyboardNavigation from './hooks/useKeyboardNavigation'\nimport useDynamicRowHeight from './hooks/useDynamicRowHeight'\n\n// EntityPickerDialog import\nimport { EntityPickerDialog } from '../EntityPickerDialog/EntityPickerDialog'\n// Move entity hook\nimport { useMoveEntities } from './hooks/useMoveEntities'\nimport { useProjectDataContext } from '@shared/containers'\n\n// Utility function imports\nimport { getCellId, parseCellId } from './utils/cellUtils'\nimport { generateLoadingRows, generateDummyAttributes } from './utils/loadingUtils'\nimport { isEntityRestricted, isTargetReadOnly } from './utils/restrictedEntity'\nimport { createPortal } from 'react-dom'\nimport { Button, Icon } from '@ynput/ayon-react-components'\nimport { AttributeEnumItem, ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport { ToggleExpandAll, useProjectTableContext } from './context/ProjectTableContext'\nimport { getEntityViewierIds, getReadOnlyLists, getTableFieldOptions } from './utils'\nimport { EntityUpdate } from './hooks/useUpdateTableData'\n\n// dnd-kit imports\nimport {\n DragOverlay,\n useDndContext,\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, horizontalListSortingStrategy, } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\n\nimport { useProjectContext } from '@shared/context'\nimport { EDIT_TRIGGER_CLASS } from './widgets/CellWidget'\nimport { toast } from 'react-toastify'\nimport { EntityMoveData } from '@shared/context/MoveEntityContext'\nimport { upperFirst } from 'lodash'\nimport { ColumnsConfig } from './types/columnConfig'\n\ntype CellUpdate = (\n entity: Omit<EntityUpdate, 'id'>,\n config?: { selection?: string[] },\n) => Promise<void>\n\ndeclare module '@tanstack/react-table' {\n interface TableMeta<TData extends RowData> {\n options?: BuiltInFieldOptions\n readOnly?: ProjectTreeTableProps['readOnly']\n projectName?: string\n updateEntities?: CellUpdate\n toggleExpandAll?: ToggleExpandAll\n selection?: string[]\n columnsConfig?: ColumnsConfig\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\nconst getColumnWidth = (rowId: string, columnId: string) => {\n return `calc(var(--col-${columnId}-size) * 1px)`\n}\n// test\n\nexport const DRAG_HANDLE_COLUMN_ID = 'drag-handle'\n\nexport interface ProjectTreeTableProps extends React.HTMLAttributes<HTMLDivElement> {\n scope: string\n sliceId: string\n onScrollBottom?: React.HTMLAttributes<HTMLDivElement>['onScroll']\n onOpenNew?: (type: 'folder' | 'task') => void\n readOnly?: (DefaultColumns | string)[]\n excludedColumns?: (DefaultColumns | string)[]\n excludedSorting?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n includeLinks?: boolean\n isLoading?: boolean\n isExpandable?: boolean // if true, show the expand/collapse icons\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 columnsConfig?: ColumnsConfig // Configure column behavior (display, styling, etc.)\n onScrollBottomGroupBy?: (groupValue: string) => void // Handle scroll to bottom for grouped data\n contextMenuItems?: ContextMenuItemConstructors // Additional context menu items to merge with defaults\n pt?: {\n container?: React.HTMLAttributes<HTMLDivElement>\n head?: Partial<TableHeadProps>\n }\n}\n\nexport const ProjectTreeTable = ({\n scope,\n sliceId,\n onScroll,\n onScrollBottom, // when the user scrolls to the bottom of the table, this callback is called\n onOpenNew,\n readOnly,\n excludedColumns,\n excludedSorting,\n extraColumns,\n includeLinks,\n isLoading: isLoadingProp,\n isExpandable,\n clientSorting = false,\n sortableRows = false,\n onRowReorder,\n dndActiveId, // Destructure new prop\n columnsConfig,\n onScrollBottomGroupBy, // Destructure new prop for group-by load more\n contextMenuItems: propsContextMenuItems, // Additional context menu items from props\n pt,\n ...props\n}: ProjectTreeTableProps) => {\n const {\n columnVisibility,\n columnPinning,\n columnOrder,\n columnSizing,\n setAllColumns,\n sorting,\n sortingOnChange,\n columnPinningOnChange,\n columnSizingOnChange,\n columnVisibilityOnChange,\n columnOrderOnChange,\n groupBy,\n } = useColumnSettingsContext()\n const isGrouping = !!groupBy\n const { productTypes, projectName, ...projectInfo } = useProjectContext()\n\n const {\n tableData,\n attribFields,\n entitiesMap,\n users,\n isLoading: isLoadingData,\n error,\n isInitialized,\n expanded,\n updateExpanded,\n toggleExpandAll,\n showHierarchy,\n fetchNextPage,\n scopes, // or entityTypes\n getEntityById,\n onResetView,\n } = useProjectTableContext()\n\n const { writableFields } = useProjectDataContext()\n\n const isLoading = isLoadingProp || isLoadingData\n\n const {\n statuses = [],\n folderTypes = [],\n taskTypes = [],\n tags = [],\n linkTypes = [],\n } = projectInfo || {}\n const options: BuiltInFieldOptions = useMemo(\n () =>\n getTableFieldOptions({\n users,\n statuses,\n folderTypes,\n taskTypes,\n productTypes,\n tags,\n scopes,\n }),\n [users, statuses, folderTypes, taskTypes, scopes, tags],\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 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, writableFields, readOnly),\n [attribFields, writableFields, readOnly],\n )\n\n const { selectedCells } = useSelectionCellsContext()\n const { updateEntities } = useCellEditing()\n\n const handleCellUpdate: CellUpdate = useCallback(\n async (entity, config) => {\n const { selection = [] } = config || {}\n const entitiesToUpdate: EntityUpdate[] = []\n if (!selection?.length) {\n entitiesToUpdate.push({ ...entity, id: entity.rowId })\n } else {\n // if includeSelection is true, update all the selected cells with the same columnId\n const { field, value, isAttrib } = entity\n for (const cellId of selectedCells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n\n // ignore row selection column\n if (colId === ROW_SELECTION_COLUMN_ID) continue\n\n const entity = getEntityById(rowId || '')\n if (!entity) {\n console.warn(`Entity with ID ${rowId} not found for cell update.`)\n continue\n }\n\n if ((!colId?.includes('attrib_') || colId?.replace('attrib_', '') === field) && rowId) {\n entitiesToUpdate.push({\n field: field,\n rowId: rowId,\n id: entity.entityId,\n value: value,\n isAttrib: isAttrib,\n type: entity.entityType,\n })\n }\n }\n }\n\n if (!entitiesToUpdate.length) {\n console.warn('No entities to update, skipping updateEntities call.')\n toast.warn('No entities to update.')\n return\n }\n\n await updateEntities(entitiesToUpdate, true)\n },\n [updateEntities, getEntityById, selectedCells],\n )\n\n const columnAttribs = useMemo(\n () => (isInitialized ? attribFields : loadingAttrib),\n [attribFields, loadingAttrib, isInitialized],\n )\n\n const getNameLabelHeader = () => {\n if (scopes.includes('version')) return 'Product / Version'\n return scopes.map((s) => upperFirst(s)).join(' / ')\n }\n\n const columns = useMemo(() => {\n const baseColumns = buildTreeTableColumns({\n scopes,\n attribs: columnAttribs,\n links: linkTypes,\n includeLinks,\n showHierarchy,\n options,\n extraColumns,\n excluded: excludedColumns,\n excludedSorting,\n groupBy,\n nameLabel: getNameLabelHeader(),\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 }, [\n scopes,\n columnAttribs,\n showHierarchy,\n isExpandable,\n options,\n linkTypes,\n includeLinks,\n extraColumns,\n excludedColumns,\n excludedSorting,\n sortableRows,\n ])\n\n // Keep ColumnSettingsProvider's allColumns ref up to date\n useEffect(() => {\n const ids = columns.map((c) => c.id!).filter(Boolean)\n setAllColumns(ids)\n }, [columns, setAllColumns])\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: () => !!isExpandable || showHierarchy || isGrouping,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // EXPANDABLE\n onExpandedChange: updateExpanded,\n // SORTING\n enableSorting: true,\n getSortedRowModel: getSortedRowModel(),\n sortDescFirst: false,\n manualSorting: !clientSorting,\n onSortingChange: sortingOnChange,\n columnResizeMode: 'onChange',\n onColumnPinningChange: columnPinningOnChange,\n onColumnSizingChange: columnSizingOnChange,\n onColumnVisibilityChange: columnVisibilityOnChange,\n onColumnOrderChange: columnOrderOnChange,\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 meta: {\n projectName,\n options,\n readOnly: readOnlyColumns,\n updateEntities: handleCellUpdate,\n toggleExpandAll,\n loadMoreRows: fetchNextPage,\n selection: Array.from(selectedCells),\n columnsConfig,\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 columnSizing,\n columnOrder,\n })\n\n const columnSizeVars = useCustomColumnWidthVars(table, columnSizing)\n\n // Calculate dynamic row height based on user setting from Customize panel\n const { getRowHeight, defaultRowHeight } = useDynamicRowHeight()\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 // Get column IDs for drag-and-drop from context columnOrder (exclude non-draggable columns)\n // This ensures SortableContext items match what the drag handlers use\n const columnOrderIds = useMemo(() => {\n return columnOrder.filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID\n )\n }, [columnOrder])\n\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 combinedScrollHandler: UIEventHandler<HTMLDivElement> = useCallback(\n (e) => {\n // Call the original onScroll if provided\n onScroll?.(e)\n\n if (onScrollBottom) {\n const containerRefElement = e.currentTarget\n if (containerRefElement && !showHierarchy && !groupBy) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement\n //once the user has scrolled within 500px of the bottom of the table, fetch more data if we can\n if (scrollHeight - scrollTop - clientHeight < 500 && !isLoading) {\n onScrollBottom(e)\n }\n }\n }\n\n // Handle scroll-to-bottom for grouped data\n if (onScrollBottomGroupBy && groupBy) {\n const containerRefElement = e.currentTarget\n // look for a load more button\n const loadMoreButton = containerRefElement?.querySelector('.load-more')\n // get load more button id\n const loadMoreButtonId = loadMoreButton?.getAttribute('id')\n const groupValue = loadMoreButtonId?.split('-')[2] // assuming the id is in the format 'load-more-groupValue'\n if (groupValue) {\n onScrollBottomGroupBy(groupValue)\n }\n }\n },\n [onScroll, onScrollBottom, onScrollBottomGroupBy, showHierarchy, groupBy, isLoading],\n )\n\n // Get move entity functions for the dialog\n const {\n isEntityPickerOpen,\n handleMoveSubmit,\n closeMoveDialog,\n movingEntities,\n handleMoveToRoot,\n getDisabledFolderIds,\n getDisabledMessage,\n } = useMoveEntities({\n projectName,\n })\n\n const handleMoveSubmitWithExpand = (selection: string[]) => {\n handleMoveSubmit(selection)\n const folderIdToExpand = selection[0]\n\n updateExpanded((prevExpanded: ExpandedState) => {\n if (typeof prevExpanded === 'boolean') {\n if (prevExpanded) {\n return prevExpanded\n }\n return { [folderIdToExpand]: true }\n }\n\n if (prevExpanded[folderIdToExpand]) {\n return prevExpanded\n }\n\n return {\n ...prevExpanded,\n [folderIdToExpand]: true,\n }\n })\n }\n\n const tableUiContent = (\n <ClipboardProvider\n entitiesMap={entitiesMap}\n columnEnums={{ ...options, ...attribByField }}\n columnReadOnly={readOnlyAttribs}\n visibleColumns={visibleColumns}\n >\n <Styled.TableWrapper {...props}>\n <Styled.TableContainer\n ref={tableContainerRef}\n style={{ height: '100%', padding: 0 }}\n onScroll={combinedScrollHandler}\n {...pt?.container}\n data-column-dnd-container\n className={clsx(\n 'table-container',\n {\n resizing: table.getState().columnSizingInfo.isResizingColumn,\n },\n pt?.container?.className,\n )}\n >\n <table\n style={{\n display: 'grid',\n borderCollapse: 'collapse',\n userSelect: 'none',\n ...columnSizeVars,\n width: table.getTotalSize(),\n cursor: table.getState().columnSizingInfo.isResizingColumn ? 'col-resize' : undefined,\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 columnOrderIds={columnOrderIds}\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 isLoading={isLoading}\n isGrouping={isGrouping}\n getRowHeight={getRowHeight}\n defaultRowHeight={defaultRowHeight}\n onResetView={onResetView}\n contextMenuItems={propsContextMenuItems}\n />\n </table>\n </Styled.TableContainer>\n </Styled.TableWrapper>\n {/* Render EntityPickerDialog alongside table content */}\n {isEntityPickerOpen &&\n projectName &&\n movingEntities?.entities &&\n movingEntities.entities.length > 0 && (\n <EntityPickerDialog\n projectName={projectName}\n entityType=\"folder\"\n onSubmit={handleMoveSubmitWithExpand}\n onClose={closeMoveDialog}\n showMoveToRoot={movingEntities.entities.every(\n (entity: EntityMoveData) => entity.entityType === 'folder',\n )}\n onMoveToRoot={handleMoveToRoot}\n disabledIds={getDisabledFolderIds()}\n getDisabledMessage={getDisabledMessage}\n />\n )}\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: getColumnWidth(overlayRowInstance.id, cell.column.id),\n display: 'flex',\n alignItems: 'center',\n height: defaultRowHeight,\n }\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TD\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.TD>\n )\n }\n return (\n <TD\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 <ColumnDragOverlay table={table} />\n </>\n )\n } else {\n return (\n <>\n {tableUiContent}\n <ColumnDragOverlay table={table} />\n </>\n )\n }\n}\n\n/**\n * Isolated component for column drag overlay.\n * This prevents the entire table from re-rendering on every drag frame.\n */\ninterface ColumnDragOverlayProps {\n table: Table<TableRow>\n}\n\nconst ColumnDragOverlay = ({ table }: ColumnDragOverlayProps) => {\n const { active } = useDndContext()\n\n // Only process if dragging a column\n const isColumnDrag = active?.data?.current?.type === 'column'\n const activeColumnId = isColumnDrag ? (active?.id as string) : null\n\n const draggedColumnHeader = useMemo(() => {\n if (!activeColumnId) return null\n return table.getHeaderGroups()[0]?.headers.find((h) => h.id === activeColumnId) || null\n }, [activeColumnId, table])\n\n if (!activeColumnId || !draggedColumnHeader) return null\n\n return createPortal(\n <DragOverlay dropAnimation={null}>\n <Styled.HeaderCell\n style={{\n width: draggedColumnHeader.column.getSize(),\n backgroundColor: 'var(--md-sys-color-surface-container-high)',\n boxShadow: '0 0 10px rgba(0,0,0,0.2)',\n display: 'flex',\n alignItems: 'center',\n minHeight: 34,\n }}\n >\n <Styled.TableCellContent className=\"bold header\">\n {flexRender(\n draggedColumnHeader.column.columnDef.header,\n draggedColumnHeader.getContext(),\n )}\n </Styled.TableCellContent>\n </Styled.HeaderCell>\n </DragOverlay>,\n document.body,\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 columnOrderIds: string[]\n}\n\nconst TableHead = ({\n columnVirtualizer,\n table,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n columnOrderIds,\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 columnOrderIds={columnOrderIds}\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 columnOrderIds: string[]\n}\n\nconst TableHeadRow = ({\n columnVirtualizer,\n headerGroup,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n columnOrderIds,\n}: TableHeadRowProps) => {\n const virtualColumns = columnVirtualizer.getVirtualItems()\n const { active } = useDndContext()\n const isColumnDrag = active?.data?.current?.type === 'column'\n const isDraggedColumnPinned = isColumnDrag && (active?.data?.current?.isPinned ?? false)\n\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 <SortableContext items={columnOrderIds} strategy={horizontalListSortingStrategy}>\n {virtualColumns.map((virtualColumn) => {\n const header = headerGroup.headers[virtualColumn.index]\n // Exclude certain columns from being draggable\n const isDraggable =\n header.id !== DRAG_HANDLE_COLUMN_ID && header.id !== ROW_SELECTION_COLUMN_ID\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 isDraggable={isDraggable}\n isColumnDrag={isColumnDrag}\n isDraggedColumnPinned={isDraggedColumnPinned}\n />\n )\n })}\n </SortableContext>\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 isDraggable?: boolean\n isColumnDrag?: boolean\n isDraggedColumnPinned?: boolean\n}\n\nconst TableHeadCell = ({\n header,\n isLoading,\n canFilter,\n canHide,\n canSort,\n canPin,\n canResize,\n isReadOnly,\n sortableRows,\n isDraggable = true,\n isColumnDrag,\n isDraggedColumnPinned,\n}: TableHeadCellProps) => {\n const { column } = header\n const sorting = column.getIsSorted()\n const menuId = `column-header-menu-${column.id}`\n const { menuOpen } = useMenuContext()\n const isOpen = menuOpen === menuId\n const { columnPinning } = useColumnSettingsContext()\n\n // Check if this column is pinned\n const isThisColumnPinned = columnPinning.left?.includes(column.id) || false\n\n // useSortable for column drag-and-drop\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: column.id,\n data: { type: 'column', isPinned: isThisColumnPinned },\n disabled: !isDraggable,\n })\n\n const isDraggingInSameSection = isColumnDrag && isDraggedColumnPinned === isThisColumnPinned\n\n // Build drag styles\n const getDragStyle = (): CSSProperties => {\n if (isDragging) {\n return { transform: CSS.Translate.toString(transform!), transition, visibility: 'hidden', zIndex: 200 }\n }\n if (isDraggingInSameSection && transform) {\n // For pinned columns, temporarily remove sticky positioning during drag animation\n const pinnedOverride = isThisColumnPinned ? { position: 'relative' as const, left: 'auto' } : {}\n return { transform: CSS.Translate.toString(transform), transition, ...pinnedOverride }\n }\n return {}\n }\n\n // Prevent drag when clicking action buttons\n const preventDragFromActions = {\n onPointerDown: (e: React.PointerEvent) => e.stopPropagation(),\n onMouseDown: (e: React.MouseEvent) => e.stopPropagation(),\n }\n\n return (\n <Styled.HeaderCell\n ref={setNodeRef}\n className={clsx(header.id, 'shimmer-dark', {\n loading: isLoading,\n 'last-pinned-left': column.getIsPinned() === 'left' && column.getIsLastColumn('left'),\n resizing: column.getIsResizing(),\n dragging: isDragging,\n draggable: isDraggable,\n })}\n key={header.id}\n style={{\n ...getCommonPinningStyles(column),\n width: getColumnWidth('', column.id),\n ...getDragStyle(),\n }}\n >\n {header.isPlaceholder ? null : (\n <Styled.TableCellContent className={clsx('bold', 'header')} {...(isDraggable ? { ...attributes, ...listeners } : {})}>\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\" $isOpen={isOpen} {...preventDragFromActions}>\n {/* Column drag handle */}\n\n {(canHide || canPin || canSort) && (\n <ColumnHeaderMenu\n className=\"header-menu\"\n header={header}\n canHide={canHide}\n canPin={canPin}\n canSort={canSort}\n isResizing={column.getIsResizing()}\n menuId={menuId}\n isOpen={isOpen}\n />\n )}\n\n {/* COLUMN SORTING */}\n {canSort && (\n <HeaderActionButton\n icon=\"sort\"\n className={clsx('sort-button', { visible: sorting })}\n style={{\n transform: sorting === 'asc' ? 'rotate(180deg) scaleX(-1)' : 'none',\n }}\n onClick={column.getToggleSortingHandler()}\n selected={!!column.getIsSorted()}\n />\n )}\n\n {/* COLUMN PINNING - only show on pinned columns (exclude selection column) */}\n {column.getIsPinned() && column.id !== ROW_SELECTION_COLUMN_ID && (\n <HeaderActionButton\n icon=\"push_pin\"\n className={clsx('pin-button', 'visible')}\n onClick={() => column.pin(false)}\n selected\n />\n )}\n </Styled.HeaderButtons>\n {canResize && (\n <Styled.ResizedHandler\n {...{\n onDoubleClick: () => column.resetSize(),\n onMouseDown: (e: React.MouseEvent) => {\n e.stopPropagation()\n header.getResizeHandler()(e)\n },\n onTouchStart: header.getResizeHandler(),\n onPointerDown: (e: React.PointerEvent) => e.stopPropagation(),\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 isLoading: boolean\n isGrouping: boolean\n getRowHeight: (row: TableRow) => number\n defaultRowHeight: number\n onResetView?: () => void\n contextMenuItems?: ContextMenuItemConstructors\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 isLoading,\n isGrouping,\n getRowHeight,\n defaultRowHeight,\n onResetView,\n contextMenuItems,\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 cellContextMenuHook = useCellContextMenu({\n attribs,\n onOpenNew,\n headerLabels,\n contextMenuItems,\n })\n\n const handleTableBodyContextMenu = cellContextMenuHook.handleTableBodyContextMenu\n\n const { handlePreFetchTasks } = usePrefetchFolderTasks()\n\n const { rows } = table.getRowModel()\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: (index) => {\n // Calculate dynamic row height based on specific row data\n const row = rows[index]\n return row ? getRowHeight(row.original) : defaultRowHeight\n },\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 isGrouping={isGrouping}\n rowHeight={getRowHeight(row.original)}\n />\n )\n })}\n </tbody>\n )\n\n if (error) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n <EmptyPlaceholder message=\"No items found\" error={error}>\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset working view\"\n icon=\"restart_alt\"\n onClick={onResetView}\n />\n )}\n </EmptyPlaceholder>\n </Styled.AnimatedEmptyPlaceholder>,\n tableContainerRef.current,\n )\n )\n }\n\n if (!rows.length && !isLoading) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n <EmptyPlaceholder message=\"No items found\">\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset working view\"\n icon=\"restart_alt\"\n onClick={onResetView}\n />\n )}\n </EmptyPlaceholder>\n </Styled.AnimatedEmptyPlaceholder>,\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 isGrouping: boolean\n rowHeight: number\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 isGrouping = false,\n rowHeight,\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: rowHeight, // Use dynamic row height\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.TD\n key={cell.id + i.toString()}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(row.id, cell.column.id),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: rowHeight,\n pointerEvents: 'all',\n cursor: 'grab',\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 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.TD>\n )\n }\n return (\n <TD\n cell={cell}\n cellId={cellId}\n rowId={row.id}\n key={cell.id + i.toString()}\n showHierarchy={showHierarchy}\n sortableRows={sortableRows}\n rowHeight={rowHeight}\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 rowHeight?: number\n}\n\nconst TD = ({\n cell,\n rowId,\n cellId,\n className,\n showHierarchy,\n sortableRows,\n rowHeight,\n ...props\n}: TableCellProps) => {\n const { getEntityById, onOpenPlayer } = useProjectTableContext()\n\n const {\n isCellSelected,\n isCellFocused,\n startSelection,\n extendSelection,\n endSelection,\n selectCell,\n focusCell,\n getCellBorderClasses,\n clearSelection,\n selectedCells,\n } = useSelectionCellsContext()\n\n const { isRowSelected } = useSelectedRowsContext()\n\n const { isEditing, setEditingCellId, editingCellId } = 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 const isMultipleSelected = selectedCells.size > 1\n\n return (\n <Styled.TD\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 expandable:\n !!cell.row.originalSubRows && isEntityExpandable(cell.row.original.entityType),\n 'multiple-selected': isMultipleSelected,\n },\n className,\n ...borderClasses,\n )}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.row.id, cell.column.id),\n height: rowHeight,\n }}\n onMouseDown={(e) => {\n // Only process left clicks (button 0), ignore right clicks\n if (e.button !== 0) return\n\n const target = e.target as HTMLElement\n\n // check we are not clicking on expander\n if (target.closest('.expander')) return\n\n // check we are not clicking in a dropdown\n if (target.closest('.options')) return\n\n // only name column can be selected for group rows\n if (isGroup && cell.column.id !== 'name') return clearSelection()\n\n // check if this is a restricted entity - prevent editing\n const isRestricted = isEntityRestricted(cell.row.original.entityType)\n\n // if clicking on an edit trigger, start editing\n if (target.closest('.' + EDIT_TRIGGER_CLASS) && !isRestricted) {\n // Select the cell first if not already selected\n if (!isCellSelected(cellId)) {\n selectCell(cellId, false, false)\n focusCell(cellId)\n }\n setEditingCellId(cellId)\n return\n }\n\n // If there's an active edit on a different cell, blur it first to save changes\n if (editingCellId && editingCellId !== cellId) {\n // Find the currently editing input and blur it\n const editingInput = document.querySelector(\n `#${editingCellId} input, #${editingCellId} [role=\"textbox\"]`,\n ) as HTMLElement\n if (editingInput) {\n editingInput.blur()\n // Wait a tick for the blur event to process and save\n setTimeout(() => {\n proceedWithSelection()\n }, 0)\n return\n }\n }\n\n proceedWithSelection()\n\n function proceedWithSelection() {\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 startSelection(cellId, additive)\n }\n\n // Prevent default browser behavior to ensure focus stays on the cell\n e.preventDefault()\n }\n }}\n onMouseOver={(e) => {\n if (e.buttons === 1) {\n // check not selecting am edit trigger\n const target = e.target as HTMLElement\n if (target.closest('.' + EDIT_TRIGGER_CLASS)) return\n\n // Left button is pressed during mouse move - drag selection\n // Note: extendSelection is always called to allow drag to continue through cells\n // Restricted cells will be filtered out later\n extendSelection(cellId, isRowSelectionColumn)\n }\n }}\n onMouseUp={() => {\n endSelection(cellId)\n }}\n onDoubleClick={(e) => {\n const isReadOnly = isTargetReadOnly(e)\n if (isReadOnly) return\n\n // check if this is a restricted entity - prevent opening details/viewer\n const isRestricted = isEntityRestricted(cell.row.original.entityType)\n\n // do nothing for restricted entities\n if (isRestricted) return\n\n // do nothing for groups\n if (isGroup) return\n\n // row selection on name column double click\n // making sure it's not the expander that was clicked\n if (cell.column.id === 'name' && !(e.target as HTMLElement).closest('.expander')) {\n // select the row by selecting the row-selection cell\n const rowSelectionCellId = getCellId(cell.row.id, ROW_SELECTION_COLUMN_ID)\n const additive = e.metaKey || e.ctrlKey\n\n // Select both the row-selection cell and the name cell\n if (!isCellSelected(rowSelectionCellId)) {\n selectCell(rowSelectionCellId, additive, false)\n }\n selectCell(cellId, true, false) // additive=true to keep row-selection\n }\n // open the viewer on thumbnail double click\n else if (cell.column.id === 'thumbnail') {\n if (onOpenPlayer) {\n const entity = getEntityById(cell.row.original.entityId || cell.row.id)\n if (entity) {\n const targetIds = getEntityViewierIds(entity)\n onOpenPlayer(targetIds, { quickView: true })\n }\n }\n }\n // Double click on editable cell triggers edit mode\n else {\n setEditingCellId(cellId)\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 onKeyDown={() => {\n // keyboard events are handled in useKeyboardNavigation hook\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Styled.TD>\n )\n}\n"],"names":["getCommonPinningStyles","column","isPinned","offset","ROW_SELECTION_COLUMN_ID","DRAG_HANDLE_COLUMN_ID","getColumnWidth","rowId","columnId","ProjectTreeTable","scope","sliceId","onScroll","onScrollBottom","onOpenNew","readOnly","excludedColumns","excludedSorting","extraColumns","includeLinks","isLoadingProp","isExpandable","clientSorting","sortableRows","onRowReorder","dndActiveId","columnsConfig","onScrollBottomGroupBy","propsContextMenuItems","pt","props","columnVisibility","columnPinning","columnOrder","columnSizing","setAllColumns","sorting","sortingOnChange","columnPinningOnChange","columnSizingOnChange","columnVisibilityOnChange","columnOrderOnChange","groupBy","useColumnSettingsContext","isGrouping","productTypes","projectName","projectInfo","useProjectContext","tableData","attribFields","entitiesMap","users","isLoadingData","error","isInitialized","expanded","updateExpanded","toggleExpandAll","showHierarchy","fetchNextPage","scopes","getEntityById","onResetView","useProjectTableContext","writableFields","useProjectDataContext","isLoading","statuses","folderTypes","taskTypes","tags","linkTypes","options","useMemo","getTableFieldOptions","tableContainerRef","useRef","tableRowsCountRef","registerGrid","useSelectionCellsContext","loadingAttrib","loadingRows","tableRowsCount","generateDummyAttributes","generateLoadingRows","showLoadingRows","readOnlyColumns","readOnlyAttribs","getReadOnlyLists","selectedCells","updateEntities","useCellEditing","handleCellUpdate","useCallback","entity","config","selection","entitiesToUpdate","field","value","isAttrib","cellId","colId","parseCellId","toast","columnAttribs","getNameLabelHeader","s","upperFirst","columns","baseColumns","buildTreeTableColumns","useEffect","ids","c","table","useReactTable","row","getCoreRowModel","getFilteredRowModel","getExpandedRowModel","getSortedRowModel","filterFns","leftPins","contextLeftPins","id","rows","rowIds","colIdsSortedByPinning","col","a","b","colA","colB","visibleColumns","columnVirtualizer","virtualPaddingLeft","virtualPaddingRight","useColumnVirtualization","columnSizeVars","useCustomColumnWidthVars","getRowHeight","defaultRowHeight","useDynamicRowHeight","attribByField","acc","attrib","rowOrderIds","columnOrderIds","draggedRowData","r","combinedScrollHandler","e","containerRefElement","scrollHeight","scrollTop","clientHeight","groupValue","isEntityPickerOpen","handleMoveSubmit","closeMoveDialog","movingEntities","handleMoveToRoot","getDisabledFolderIds","getDisabledMessage","useMoveEntities","handleMoveSubmitWithExpand","folderIdToExpand","prevExpanded","tableUiContent","jsxs","ClipboardProvider","jsx","Styled.TableWrapper","Styled.TableContainer","clsx","TableHead","TableBody","EntityPickerDialog","dragOverlayPortal","createPortal","DragOverlay","overlayRowInstance","tableWidth","Styled.TR","vc","cell","cellStyleBase","Styled.TD","Icon","TD","getCellId","Fragment","ColumnDragOverlay","active","useDndContext","activeColumnId","draggedColumnHeader","h","Styled.HeaderCell","Styled.TableCellContent","flexRender","Styled.TableHeader","headerGroup","TableHeadRow","virtualColumns","isColumnDrag","isDraggedColumnPinned","Styled.ColumnHeader","SortableContext","horizontalListSortingStrategy","virtualColumn","header","isDraggable","TableHeadCell","canFilter","canHide","canSort","canPin","canResize","isReadOnly","menuId","menuOpen","useMenuContext","isOpen","isThisColumnPinned","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","isDraggingInSameSection","getDragStyle","CSS","pinnedOverride","preventDragFromActions","Styled.HeaderButtons","ColumnHeaderMenu","HeaderActionButton","Styled.ResizedHandler","attribs","contextMenuItems","headerLabels","headerId","handleTableBodyContextMenu","useCellContextMenu","handlePreFetchTasks","usePrefetchFolderTasks","rowVirtualizer","useVirtualizer","index","element","virtualRows","measureRowElement","node","useKeyboardNavigation","tbodyContent","virtualRow","i","TableBodyRow","Styled.AnimatedEmptyPlaceholder","EmptyPlaceholder","Button","verticalListSortingStrategy","visibleCells","paddingLeft","paddingRight","rowRef","dataIndex","offsetTop","rowHeight","sortable","combinedRef","style","RowDragHandleCellContent","className","onOpenPlayer","isCellSelected","isCellFocused","startSelection","extendSelection","endSelection","selectCell","focusCell","getCellBorderClasses","clearSelection","isRowSelected","useSelectedRowsContext","isEditing","setEditingCellId","editingCellId","borderClasses","isLastLeftPinnedColumn","isRowSelectionColumn","isGroup","isMultipleSelected","isEntityExpandable","target","isRestricted","isEntityRestricted","EDIT_TRIGGER_CLASS","editingInput","proceedWithSelection","additive","isTargetReadOnly","rowSelectionCellId","targetIds","getEntityViewierIds"],"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, UIEventHandler } 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 ExpandedState,\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 isEntityExpandable,\n TreeTableExtraColumn,\n} from './buildTreeTableColumns'\nimport * as Styled from './ProjectTreeTable.styled'\nimport { RowDragHandleCellContent, ColumnHeaderMenu } from './components'\nimport EmptyPlaceholder from '../../components/EmptyPlaceholder'\nimport HeaderActionButton from './components/HeaderActionButton'\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'\nimport { useMenuContext } from '../../context/MenuContext'\n\n// Hook imports\nimport useCustomColumnWidthVars from './hooks/useCustomColumnWidthVars'\nimport usePrefetchFolderTasks from './hooks/usePrefetchFolderTasks'\nimport useCellContextMenu, {\n HeaderLabel,\n ContextMenuItemConstructors,\n} from './hooks/useCellContextMenu'\nimport useColumnVirtualization from './hooks/useColumnVirtualization'\nimport useKeyboardNavigation from './hooks/useKeyboardNavigation'\nimport useDynamicRowHeight from './hooks/useDynamicRowHeight'\n\n// EntityPickerDialog import\nimport { EntityPickerDialog } from '../EntityPickerDialog/EntityPickerDialog'\n// Move entity hook\nimport { useMoveEntities } from './hooks/useMoveEntities'\nimport { useProjectDataContext } from '@shared/containers'\n\n// Utility function imports\nimport { CellId, getCellId, parseCellId } from './utils/cellUtils'\nimport { generateLoadingRows, generateDummyAttributes } from './utils/loadingUtils'\nimport { isEntityRestricted, isTargetReadOnly } from './utils/restrictedEntity'\nimport { createPortal } from 'react-dom'\nimport { Button, Icon } from '@ynput/ayon-react-components'\nimport { AttributeEnumItem, ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport { ToggleExpandAll, useProjectTableContext } from './context/ProjectTableContext'\nimport { getEntityViewierIds, getReadOnlyLists, getTableFieldOptions } from './utils'\nimport { EntityUpdate } from './hooks/useUpdateTableData'\n\n// dnd-kit imports\nimport {\n DragOverlay,\n useDndContext,\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, horizontalListSortingStrategy, } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\n\nimport { useProjectContext } from '@shared/context'\nimport { EDIT_TRIGGER_CLASS } from './widgets/CellWidget'\nimport { toast } from 'react-toastify'\nimport { EntityMoveData } from '@shared/context/MoveEntityContext'\nimport { upperFirst } from 'lodash'\nimport { ColumnsConfig } from './types/columnConfig'\n\ntype CellUpdate = (\n entity: Omit<EntityUpdate, 'id'>,\n config?: { selection?: string[] },\n) => Promise<void>\n\ndeclare module '@tanstack/react-table' {\n interface TableMeta<TData extends RowData> {\n options?: BuiltInFieldOptions\n readOnly?: ProjectTreeTableProps['readOnly']\n projectName?: string\n updateEntities?: CellUpdate\n toggleExpandAll?: ToggleExpandAll\n selection?: string[]\n columnsConfig?: ColumnsConfig\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\nconst getColumnWidth = (rowId: string, columnId: string) => {\n return `calc(var(--col-${columnId}-size) * 1px)`\n}\n// test\n\nexport const DRAG_HANDLE_COLUMN_ID = 'drag-handle'\n\nexport interface ProjectTreeTableProps extends React.HTMLAttributes<HTMLDivElement> {\n scope: string\n sliceId: string\n onScrollBottom?: React.HTMLAttributes<HTMLDivElement>['onScroll']\n onOpenNew?: (type: 'folder' | 'task') => void\n readOnly?: (DefaultColumns | string)[]\n excludedColumns?: (DefaultColumns | string)[]\n excludedSorting?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n includeLinks?: boolean\n isLoading?: boolean\n isExpandable?: boolean // if true, show the expand/collapse icons\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 columnsConfig?: ColumnsConfig // Configure column behavior (display, styling, etc.)\n onScrollBottomGroupBy?: (groupValue: string) => void // Handle scroll to bottom for grouped data\n contextMenuItems?: ContextMenuItemConstructors // Additional context menu items to merge with defaults\n pt?: {\n container?: React.HTMLAttributes<HTMLDivElement>\n head?: Partial<TableHeadProps>\n }\n}\n\nexport const ProjectTreeTable = ({\n scope,\n sliceId,\n onScroll,\n onScrollBottom, // when the user scrolls to the bottom of the table, this callback is called\n onOpenNew,\n readOnly,\n excludedColumns,\n excludedSorting,\n extraColumns,\n includeLinks,\n isLoading: isLoadingProp,\n isExpandable,\n clientSorting = false,\n sortableRows = false,\n onRowReorder,\n dndActiveId, // Destructure new prop\n columnsConfig,\n onScrollBottomGroupBy, // Destructure new prop for group-by load more\n contextMenuItems: propsContextMenuItems, // Additional context menu items from props\n pt,\n ...props\n}: ProjectTreeTableProps) => {\n const {\n columnVisibility,\n columnPinning,\n columnOrder,\n columnSizing,\n setAllColumns,\n sorting,\n sortingOnChange,\n columnPinningOnChange,\n columnSizingOnChange,\n columnVisibilityOnChange,\n columnOrderOnChange,\n groupBy,\n } = useColumnSettingsContext()\n const isGrouping = !!groupBy\n const { productTypes, projectName, ...projectInfo } = useProjectContext()\n\n const {\n tableData,\n attribFields,\n entitiesMap,\n users,\n isLoading: isLoadingData,\n error,\n isInitialized,\n expanded,\n updateExpanded,\n toggleExpandAll,\n showHierarchy,\n fetchNextPage,\n scopes, // or entityTypes\n getEntityById,\n onResetView,\n } = useProjectTableContext()\n\n const { writableFields } = useProjectDataContext()\n\n const isLoading = isLoadingProp || isLoadingData\n\n const {\n statuses = [],\n folderTypes = [],\n taskTypes = [],\n tags = [],\n linkTypes = [],\n } = projectInfo || {}\n const options: BuiltInFieldOptions = useMemo(\n () =>\n getTableFieldOptions({\n users,\n statuses,\n folderTypes,\n taskTypes,\n productTypes,\n tags,\n scopes,\n }),\n [users, statuses, folderTypes, taskTypes, scopes, tags],\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 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, writableFields, readOnly),\n [attribFields, writableFields, readOnly],\n )\n\n const { selectedCells } = useSelectionCellsContext()\n const { updateEntities } = useCellEditing()\n\n const handleCellUpdate: CellUpdate = useCallback(\n async (entity, config) => {\n const { selection = [] } = config || {}\n const entitiesToUpdate: EntityUpdate[] = []\n if (!selection?.length) {\n entitiesToUpdate.push({ ...entity, id: entity.rowId })\n } else {\n // if includeSelection is true, update all the selected cells with the same columnId\n const { field, value, isAttrib } = entity\n for (const cellId of selectedCells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n\n // ignore row selection column\n if (colId === ROW_SELECTION_COLUMN_ID) continue\n\n const entity = getEntityById(rowId || '')\n if (!entity) {\n console.warn(`Entity with ID ${rowId} not found for cell update.`)\n continue\n }\n\n if ((!colId?.includes('attrib_') || colId?.replace('attrib_', '') === field) && rowId) {\n entitiesToUpdate.push({\n field: field,\n rowId: rowId,\n id: entity.entityId,\n value: value,\n isAttrib: isAttrib,\n type: entity.entityType,\n })\n }\n }\n }\n\n if (!entitiesToUpdate.length) {\n console.warn('No entities to update, skipping updateEntities call.')\n toast.warn('No entities to update.')\n return\n }\n\n await updateEntities(entitiesToUpdate, true)\n },\n [updateEntities, getEntityById, selectedCells],\n )\n\n const columnAttribs = useMemo(\n () => (isInitialized ? attribFields : loadingAttrib),\n [attribFields, loadingAttrib, isInitialized],\n )\n\n const getNameLabelHeader = () => {\n if (scopes.includes('version')) return 'Product / Version'\n return scopes.map((s) => upperFirst(s)).join(' / ')\n }\n\n const columns = useMemo(() => {\n const baseColumns = buildTreeTableColumns({\n scopes,\n attribs: columnAttribs,\n links: linkTypes,\n includeLinks,\n showHierarchy,\n options,\n extraColumns,\n excluded: excludedColumns,\n excludedSorting,\n groupBy,\n nameLabel: getNameLabelHeader(),\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 }, [\n scopes,\n columnAttribs,\n showHierarchy,\n isExpandable,\n options,\n linkTypes,\n includeLinks,\n extraColumns,\n excludedColumns,\n excludedSorting,\n sortableRows,\n ])\n\n // Keep ColumnSettingsProvider's allColumns ref up to date\n useEffect(() => {\n const ids = columns.map((c) => c.id!).filter(Boolean)\n setAllColumns(ids)\n }, [columns, setAllColumns])\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: () => !!isExpandable || showHierarchy || isGrouping,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // EXPANDABLE\n onExpandedChange: updateExpanded,\n // SORTING\n enableSorting: true,\n getSortedRowModel: getSortedRowModel(),\n sortDescFirst: false,\n manualSorting: !clientSorting,\n onSortingChange: sortingOnChange,\n columnResizeMode: 'onChange',\n onColumnPinningChange: columnPinningOnChange,\n onColumnSizingChange: columnSizingOnChange,\n onColumnVisibilityChange: columnVisibilityOnChange,\n onColumnOrderChange: columnOrderOnChange,\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 meta: {\n projectName,\n options,\n readOnly: readOnlyColumns,\n updateEntities: handleCellUpdate,\n toggleExpandAll,\n loadMoreRows: fetchNextPage,\n selection: Array.from(selectedCells),\n columnsConfig,\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 columnSizing,\n columnOrder,\n })\n\n const columnSizeVars = useCustomColumnWidthVars(table, columnSizing)\n\n // Calculate dynamic row height based on user setting from Customize panel\n const { getRowHeight, defaultRowHeight } = useDynamicRowHeight()\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 // Get column IDs for drag-and-drop from context columnOrder (exclude non-draggable columns)\n // This ensures SortableContext items match what the drag handlers use\n const columnOrderIds = useMemo(() => {\n return columnOrder.filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID\n )\n }, [columnOrder])\n\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 combinedScrollHandler: UIEventHandler<HTMLDivElement> = useCallback(\n (e) => {\n // Call the original onScroll if provided\n onScroll?.(e)\n\n if (onScrollBottom) {\n const containerRefElement = e.currentTarget\n if (containerRefElement && !showHierarchy && !groupBy) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement\n //once the user has scrolled within 500px of the bottom of the table, fetch more data if we can\n if (scrollHeight - scrollTop - clientHeight < 500 && !isLoading) {\n onScrollBottom(e)\n }\n }\n }\n\n // Handle scroll-to-bottom for grouped data\n if (onScrollBottomGroupBy && groupBy) {\n const containerRefElement = e.currentTarget\n // look for a load more button\n const loadMoreButton = containerRefElement?.querySelector('.load-more')\n // get load more button id\n const loadMoreButtonId = loadMoreButton?.getAttribute('id')\n const groupValue = loadMoreButtonId?.split('-')[2] // assuming the id is in the format 'load-more-groupValue'\n if (groupValue) {\n onScrollBottomGroupBy(groupValue)\n }\n }\n },\n [onScroll, onScrollBottom, onScrollBottomGroupBy, showHierarchy, groupBy, isLoading],\n )\n\n // Get move entity functions for the dialog\n const {\n isEntityPickerOpen,\n handleMoveSubmit,\n closeMoveDialog,\n movingEntities,\n handleMoveToRoot,\n getDisabledFolderIds,\n getDisabledMessage,\n } = useMoveEntities({\n projectName,\n })\n\n const handleMoveSubmitWithExpand = (selection: string[]) => {\n handleMoveSubmit(selection)\n const folderIdToExpand = selection[0]\n\n updateExpanded((prevExpanded: ExpandedState) => {\n if (typeof prevExpanded === 'boolean') {\n if (prevExpanded) {\n return prevExpanded\n }\n return { [folderIdToExpand]: true }\n }\n\n if (prevExpanded[folderIdToExpand]) {\n return prevExpanded\n }\n\n return {\n ...prevExpanded,\n [folderIdToExpand]: true,\n }\n })\n }\n\n const tableUiContent = (\n <ClipboardProvider\n entitiesMap={entitiesMap}\n columnEnums={{ ...options, ...attribByField }}\n columnReadOnly={readOnlyAttribs}\n visibleColumns={visibleColumns}\n >\n <Styled.TableWrapper {...props}>\n <Styled.TableContainer\n ref={tableContainerRef}\n style={{ height: '100%', padding: 0 }}\n onScroll={combinedScrollHandler}\n {...pt?.container}\n data-column-dnd-container\n className={clsx(\n 'table-container',\n {\n resizing: table.getState().columnSizingInfo.isResizingColumn,\n },\n pt?.container?.className,\n )}\n >\n <table\n style={{\n display: 'grid',\n borderCollapse: 'collapse',\n userSelect: 'none',\n ...columnSizeVars,\n width: table.getTotalSize(),\n cursor: table.getState().columnSizingInfo.isResizingColumn ? 'col-resize' : undefined,\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 columnOrderIds={columnOrderIds}\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 isLoading={isLoading}\n isGrouping={isGrouping}\n getRowHeight={getRowHeight}\n defaultRowHeight={defaultRowHeight}\n onResetView={onResetView}\n contextMenuItems={propsContextMenuItems}\n />\n </table>\n </Styled.TableContainer>\n </Styled.TableWrapper>\n {/* Render EntityPickerDialog alongside table content */}\n {isEntityPickerOpen &&\n projectName &&\n movingEntities?.entities &&\n movingEntities.entities.length > 0 && (\n <EntityPickerDialog\n projectName={projectName}\n entityType=\"folder\"\n onSubmit={handleMoveSubmitWithExpand}\n onClose={closeMoveDialog}\n showMoveToRoot={movingEntities.entities.every(\n (entity: EntityMoveData) => entity.entityType === 'folder',\n )}\n onMoveToRoot={handleMoveToRoot}\n disabledIds={getDisabledFolderIds()}\n getDisabledMessage={getDisabledMessage}\n />\n )}\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: getColumnWidth(overlayRowInstance.id, cell.column.id),\n display: 'flex',\n alignItems: 'center',\n height: defaultRowHeight,\n }\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TD\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.TD>\n )\n }\n return (\n <TD\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 <ColumnDragOverlay table={table} />\n </>\n )\n } else {\n return (\n <>\n {tableUiContent}\n <ColumnDragOverlay table={table} />\n </>\n )\n }\n}\n\n/**\n * Isolated component for column drag overlay.\n * This prevents the entire table from re-rendering on every drag frame.\n */\ninterface ColumnDragOverlayProps {\n table: Table<TableRow>\n}\n\nconst ColumnDragOverlay = ({ table }: ColumnDragOverlayProps) => {\n const { active } = useDndContext()\n\n // Only process if dragging a column\n const isColumnDrag = active?.data?.current?.type === 'column'\n const activeColumnId = isColumnDrag ? (active?.id as string) : null\n\n const draggedColumnHeader = useMemo(() => {\n if (!activeColumnId) return null\n return table.getHeaderGroups()[0]?.headers.find((h) => h.id === activeColumnId) || null\n }, [activeColumnId, table])\n\n if (!activeColumnId || !draggedColumnHeader) return null\n\n return createPortal(\n <DragOverlay dropAnimation={null}>\n <Styled.HeaderCell\n style={{\n width: draggedColumnHeader.column.getSize(),\n backgroundColor: 'var(--md-sys-color-surface-container-high)',\n boxShadow: '0 0 10px rgba(0,0,0,0.2)',\n display: 'flex',\n alignItems: 'center',\n minHeight: 34,\n }}\n >\n <Styled.TableCellContent className=\"bold header\">\n {flexRender(\n draggedColumnHeader.column.columnDef.header,\n draggedColumnHeader.getContext(),\n )}\n </Styled.TableCellContent>\n </Styled.HeaderCell>\n </DragOverlay>,\n document.body,\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 columnOrderIds: string[]\n}\n\nconst TableHead = ({\n columnVirtualizer,\n table,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n columnOrderIds,\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 columnOrderIds={columnOrderIds}\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 columnOrderIds: string[]\n}\n\nconst TableHeadRow = ({\n columnVirtualizer,\n headerGroup,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n columnOrderIds,\n}: TableHeadRowProps) => {\n const virtualColumns = columnVirtualizer.getVirtualItems()\n const { active } = useDndContext()\n const isColumnDrag = active?.data?.current?.type === 'column'\n const isDraggedColumnPinned = isColumnDrag && (active?.data?.current?.isPinned ?? false)\n\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 <SortableContext items={columnOrderIds} strategy={horizontalListSortingStrategy}>\n {virtualColumns.map((virtualColumn) => {\n const header = headerGroup.headers[virtualColumn.index]\n // Exclude certain columns from being draggable\n const isDraggable =\n header.id !== DRAG_HANDLE_COLUMN_ID && header.id !== ROW_SELECTION_COLUMN_ID\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 isDraggable={isDraggable}\n isColumnDrag={isColumnDrag}\n isDraggedColumnPinned={isDraggedColumnPinned}\n />\n )\n })}\n </SortableContext>\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 isDraggable?: boolean\n isColumnDrag?: boolean\n isDraggedColumnPinned?: boolean\n}\n\nconst TableHeadCell = ({\n header,\n isLoading,\n canFilter,\n canHide,\n canSort,\n canPin,\n canResize,\n isReadOnly,\n sortableRows,\n isDraggable = true,\n isColumnDrag,\n isDraggedColumnPinned,\n}: TableHeadCellProps) => {\n const { column } = header\n const sorting = column.getIsSorted()\n const menuId = `column-header-menu-${column.id}`\n const { menuOpen } = useMenuContext()\n const isOpen = menuOpen === menuId\n const { columnPinning } = useColumnSettingsContext()\n\n // Check if this column is pinned\n const isThisColumnPinned = columnPinning.left?.includes(column.id) || false\n\n // useSortable for column drag-and-drop\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: column.id,\n data: { type: 'column', isPinned: isThisColumnPinned },\n disabled: !isDraggable,\n })\n\n const isDraggingInSameSection = isColumnDrag && isDraggedColumnPinned === isThisColumnPinned\n\n // Build drag styles\n const getDragStyle = (): CSSProperties => {\n if (isDragging) {\n return { transform: CSS.Translate.toString(transform!), transition, visibility: 'hidden', zIndex: 200 }\n }\n if (isDraggingInSameSection && transform) {\n // For pinned columns, temporarily remove sticky positioning during drag animation\n const pinnedOverride = isThisColumnPinned ? { position: 'relative' as const, left: 'auto' } : {}\n return { transform: CSS.Translate.toString(transform), transition, ...pinnedOverride }\n }\n return {}\n }\n\n // Prevent drag when clicking action buttons\n const preventDragFromActions = {\n onPointerDown: (e: React.PointerEvent) => e.stopPropagation(),\n onMouseDown: (e: React.MouseEvent) => e.stopPropagation(),\n }\n\n return (\n <Styled.HeaderCell\n ref={setNodeRef}\n className={clsx(header.id, 'shimmer-dark', {\n loading: isLoading,\n 'last-pinned-left': column.getIsPinned() === 'left' && column.getIsLastColumn('left'),\n resizing: column.getIsResizing(),\n dragging: isDragging,\n draggable: isDraggable,\n })}\n key={header.id}\n style={{\n ...getCommonPinningStyles(column),\n width: getColumnWidth('', column.id),\n ...getDragStyle(),\n }}\n >\n {header.isPlaceholder ? null : (\n <Styled.TableCellContent className={clsx('bold', 'header')} {...(isDraggable ? { ...attributes, ...listeners } : {})}>\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\" $isOpen={isOpen} {...preventDragFromActions}>\n {/* Column drag handle */}\n\n {(canHide || canPin || canSort) && (\n <ColumnHeaderMenu\n className=\"header-menu\"\n header={header}\n canHide={canHide}\n canPin={canPin}\n canSort={canSort}\n isResizing={column.getIsResizing()}\n menuId={menuId}\n isOpen={isOpen}\n />\n )}\n\n {/* COLUMN SORTING */}\n {canSort && (\n <HeaderActionButton\n icon=\"sort\"\n className={clsx('sort-button', { visible: sorting })}\n style={{\n transform: sorting === 'asc' ? 'rotate(180deg) scaleX(-1)' : 'none',\n }}\n onClick={column.getToggleSortingHandler()}\n selected={!!column.getIsSorted()}\n />\n )}\n\n {/* COLUMN PINNING - only show on pinned columns (exclude selection column) */}\n {column.getIsPinned() && column.id !== ROW_SELECTION_COLUMN_ID && (\n <HeaderActionButton\n icon=\"push_pin\"\n className={clsx('pin-button', 'visible')}\n onClick={() => column.pin(false)}\n selected\n />\n )}\n </Styled.HeaderButtons>\n {canResize && (\n <Styled.ResizedHandler\n {...{\n onDoubleClick: () => column.resetSize(),\n onMouseDown: (e: React.MouseEvent) => {\n e.stopPropagation()\n header.getResizeHandler()(e)\n },\n onTouchStart: header.getResizeHandler(),\n onPointerDown: (e: React.PointerEvent) => e.stopPropagation(),\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 isLoading: boolean\n isGrouping: boolean\n getRowHeight: (row: TableRow) => number\n defaultRowHeight: number\n onResetView?: () => void\n contextMenuItems?: ContextMenuItemConstructors\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 isLoading,\n isGrouping,\n getRowHeight,\n defaultRowHeight,\n onResetView,\n contextMenuItems,\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 cellContextMenuHook = useCellContextMenu({\n attribs,\n onOpenNew,\n headerLabels,\n contextMenuItems,\n })\n\n const handleTableBodyContextMenu = cellContextMenuHook.handleTableBodyContextMenu\n\n const { handlePreFetchTasks } = usePrefetchFolderTasks()\n\n const { rows } = table.getRowModel()\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: (index) => {\n // Calculate dynamic row height based on specific row data\n const row = rows[index]\n return row ? getRowHeight(row.original) : defaultRowHeight\n },\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 isGrouping={isGrouping}\n rowHeight={getRowHeight(row.original)}\n />\n )\n })}\n </tbody>\n )\n\n if (error) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n <EmptyPlaceholder message=\"No items found\" error={error}>\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset working view\"\n icon=\"restart_alt\"\n onClick={onResetView}\n />\n )}\n </EmptyPlaceholder>\n </Styled.AnimatedEmptyPlaceholder>,\n tableContainerRef.current,\n )\n )\n }\n\n if (!rows.length && !isLoading) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n <EmptyPlaceholder message=\"No items found\">\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset working view\"\n icon=\"restart_alt\"\n onClick={onResetView}\n />\n )}\n </EmptyPlaceholder>\n </Styled.AnimatedEmptyPlaceholder>,\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 isGrouping: boolean\n rowHeight: number\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 isGrouping = false,\n rowHeight,\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: rowHeight, // Use dynamic row height\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.TD\n key={cell.id + i.toString()}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(row.id, cell.column.id),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: rowHeight,\n pointerEvents: 'all',\n cursor: 'grab',\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 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.TD>\n )\n }\n return (\n <TD\n cell={cell}\n cellId={cellId}\n rowId={row.id}\n key={cell.id + i.toString()}\n showHierarchy={showHierarchy}\n sortableRows={sortableRows}\n rowHeight={rowHeight}\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 rowHeight?: number\n}\n\nconst TD = ({\n cell,\n rowId,\n cellId,\n className,\n showHierarchy,\n sortableRows,\n rowHeight,\n ...props\n}: TableCellProps) => {\n const { getEntityById, onOpenPlayer } = useProjectTableContext()\n\n const {\n isCellSelected,\n isCellFocused,\n startSelection,\n extendSelection,\n endSelection,\n selectCell,\n focusCell,\n getCellBorderClasses,\n clearSelection,\n selectedCells,\n setSelectedCells,\n setAnchorCell,\n setFocusedCellId,\n } = useSelectionCellsContext()\n\n const { isRowSelected } = useSelectedRowsContext()\n\n const { isEditing, setEditingCellId, editingCellId } = 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 const isMultipleSelected = selectedCells.size > 1\n\n return (\n <Styled.TD\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 expandable:\n !!cell.row.originalSubRows && isEntityExpandable(cell.row.original.entityType),\n 'multiple-selected': isMultipleSelected,\n },\n className,\n ...borderClasses,\n )}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.row.id, cell.column.id),\n height: rowHeight,\n }}\n onMouseDown={(e) => {\n // Only process left clicks (button 0), ignore right clicks\n if (e.button !== 0) return\n\n const target = e.target as HTMLElement\n\n // check we are not clicking on expander\n if (target.closest('.expander')) return\n\n // check we are not clicking in a dropdown\n if (target.closest('.options')) return\n\n // Handle double-click via e.detail (browser's native click count).\n // We handle it here in mousedown instead of relying on the dblclick event,\n // because the 1st mousedown triggers React state updates that can replace\n // the DOM node, preventing the native dblclick event from firing.\n if (e.detail === 2) {\n const isReadOnly = isTargetReadOnly(e)\n if (isReadOnly || isEntityRestricted(cell.row.original.entityType) || isGroup) {\n e.preventDefault()\n return\n }\n\n // name column: select row to open details panel\n if (cell.column.id === 'name' && !target.closest('.expander')) {\n const rowSelectionCellId = getCellId(cell.row.id, ROW_SELECTION_COLUMN_ID)\n const additive = e.metaKey || e.ctrlKey\n const position = parseCellId(rowSelectionCellId)\n\n setSelectedCells((prev) => {\n const newSelection = additive ? new Set(prev) : new Set<CellId>()\n newSelection.add(rowSelectionCellId)\n newSelection.add(cellId)\n return newSelection\n })\n if (position) {\n setAnchorCell(position)\n setFocusedCellId(rowSelectionCellId)\n }\n }\n // thumbnail: open viewer\n else if (cell.column.id === 'thumbnail') {\n if (onOpenPlayer) {\n const entity = getEntityById(cell.row.original.entityId || cell.row.id)\n if (entity) {\n const targetIds = getEntityViewierIds(entity)\n onOpenPlayer(targetIds, { quickView: true })\n }\n }\n }\n // other cells: start editing\n else {\n setEditingCellId(cellId)\n }\n\n e.preventDefault()\n return\n }\n\n // only name column can be selected for group rows\n if (isGroup && cell.column.id !== 'name') return clearSelection()\n\n // check if this is a restricted entity - prevent editing\n const isRestricted = isEntityRestricted(cell.row.original.entityType)\n\n // if clicking on an edit trigger, start editing\n if (target.closest('.' + EDIT_TRIGGER_CLASS) && !isRestricted) {\n // Select the cell first if not already selected\n if (!isCellSelected(cellId)) {\n selectCell(cellId, false, false)\n focusCell(cellId)\n }\n setEditingCellId(cellId)\n return\n }\n\n // If there's an active edit on a different cell, blur it first to save changes\n if (editingCellId && editingCellId !== cellId) {\n // Find the currently editing input and blur it\n const editingInput = document.querySelector(\n `#${editingCellId} input, #${editingCellId} [role=\"textbox\"]`,\n ) as HTMLElement\n if (editingInput) {\n editingInput.blur()\n // Wait a tick for the blur event to process and save\n setTimeout(() => {\n proceedWithSelection()\n }, 0)\n return\n }\n }\n\n proceedWithSelection()\n\n function proceedWithSelection() {\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 startSelection(cellId, additive)\n }\n\n // Prevent default browser behavior to ensure focus stays on the cell\n e.preventDefault()\n }\n }}\n onMouseOver={(e) => {\n if (e.buttons === 1) {\n // check not selecting am edit trigger\n const target = e.target as HTMLElement\n if (target.closest('.' + EDIT_TRIGGER_CLASS)) return\n\n // Left button is pressed during mouse move - drag selection\n // Note: extendSelection is always called to allow drag to continue through cells\n // Restricted cells will be filtered out later\n extendSelection(cellId, isRowSelectionColumn)\n }\n }}\n onMouseUp={() => {\n endSelection(cellId)\n }}\n onDoubleClick={(e) => {\n // Double-click is primarily handled in onMouseDown via e.detail == 2.\n // This is a fallback for cases where the native dblclick event does fire.\n e.preventDefault()\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 onKeyDown={() => {\n // keyboard events are handled in useKeyboardNavigation hook\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Styled.TD>\n )\n}\n"],"names":["getCommonPinningStyles","column","isPinned","offset","ROW_SELECTION_COLUMN_ID","DRAG_HANDLE_COLUMN_ID","getColumnWidth","rowId","columnId","ProjectTreeTable","scope","sliceId","onScroll","onScrollBottom","onOpenNew","readOnly","excludedColumns","excludedSorting","extraColumns","includeLinks","isLoadingProp","isExpandable","clientSorting","sortableRows","onRowReorder","dndActiveId","columnsConfig","onScrollBottomGroupBy","propsContextMenuItems","pt","props","columnVisibility","columnPinning","columnOrder","columnSizing","setAllColumns","sorting","sortingOnChange","columnPinningOnChange","columnSizingOnChange","columnVisibilityOnChange","columnOrderOnChange","groupBy","useColumnSettingsContext","isGrouping","productTypes","projectName","projectInfo","useProjectContext","tableData","attribFields","entitiesMap","users","isLoadingData","error","isInitialized","expanded","updateExpanded","toggleExpandAll","showHierarchy","fetchNextPage","scopes","getEntityById","onResetView","useProjectTableContext","writableFields","useProjectDataContext","isLoading","statuses","folderTypes","taskTypes","tags","linkTypes","options","useMemo","getTableFieldOptions","tableContainerRef","useRef","tableRowsCountRef","registerGrid","useSelectionCellsContext","loadingAttrib","loadingRows","tableRowsCount","generateDummyAttributes","generateLoadingRows","showLoadingRows","readOnlyColumns","readOnlyAttribs","getReadOnlyLists","selectedCells","updateEntities","useCellEditing","handleCellUpdate","useCallback","entity","config","selection","entitiesToUpdate","field","value","isAttrib","cellId","colId","parseCellId","toast","columnAttribs","getNameLabelHeader","s","upperFirst","columns","baseColumns","buildTreeTableColumns","useEffect","ids","c","table","useReactTable","row","getCoreRowModel","getFilteredRowModel","getExpandedRowModel","getSortedRowModel","filterFns","leftPins","contextLeftPins","id","rows","rowIds","colIdsSortedByPinning","col","a","b","colA","colB","visibleColumns","columnVirtualizer","virtualPaddingLeft","virtualPaddingRight","useColumnVirtualization","columnSizeVars","useCustomColumnWidthVars","getRowHeight","defaultRowHeight","useDynamicRowHeight","attribByField","acc","attrib","rowOrderIds","columnOrderIds","draggedRowData","combinedScrollHandler","e","containerRefElement","scrollHeight","scrollTop","clientHeight","groupValue","isEntityPickerOpen","handleMoveSubmit","closeMoveDialog","movingEntities","handleMoveToRoot","getDisabledFolderIds","getDisabledMessage","useMoveEntities","handleMoveSubmitWithExpand","folderIdToExpand","prevExpanded","tableUiContent","jsxs","ClipboardProvider","jsx","Styled.TableWrapper","Styled.TableContainer","clsx","TableHead","TableBody","EntityPickerDialog","dragOverlayPortal","createPortal","DragOverlay","overlayRowInstance","r","tableWidth","Styled.TR","vc","cell","cellStyleBase","Styled.TD","Icon","TD","getCellId","Fragment","ColumnDragOverlay","active","useDndContext","activeColumnId","draggedColumnHeader","h","Styled.HeaderCell","Styled.TableCellContent","flexRender","Styled.TableHeader","headerGroup","TableHeadRow","virtualColumns","isColumnDrag","isDraggedColumnPinned","Styled.ColumnHeader","SortableContext","horizontalListSortingStrategy","virtualColumn","header","isDraggable","TableHeadCell","canFilter","canHide","canSort","canPin","canResize","isReadOnly","menuId","menuOpen","useMenuContext","isOpen","isThisColumnPinned","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","isDraggingInSameSection","getDragStyle","CSS","pinnedOverride","preventDragFromActions","Styled.HeaderButtons","ColumnHeaderMenu","HeaderActionButton","Styled.ResizedHandler","attribs","contextMenuItems","headerLabels","headerId","handleTableBodyContextMenu","useCellContextMenu","handlePreFetchTasks","usePrefetchFolderTasks","rowVirtualizer","useVirtualizer","index","element","virtualRows","measureRowElement","node","useKeyboardNavigation","tbodyContent","virtualRow","i","TableBodyRow","Styled.AnimatedEmptyPlaceholder","EmptyPlaceholder","Button","verticalListSortingStrategy","visibleCells","paddingLeft","paddingRight","rowRef","dataIndex","offsetTop","rowHeight","sortable","combinedRef","style","RowDragHandleCellContent","className","onOpenPlayer","isCellSelected","isCellFocused","startSelection","extendSelection","endSelection","selectCell","focusCell","getCellBorderClasses","clearSelection","setSelectedCells","setAnchorCell","setFocusedCellId","isRowSelected","useSelectedRowsContext","isEditing","setEditingCellId","editingCellId","borderClasses","isLastLeftPinnedColumn","isRowSelectionColumn","isGroup","isMultipleSelected","isEntityExpandable","target","isTargetReadOnly","isEntityRestricted","rowSelectionCellId","additive","position","prev","newSelection","targetIds","getEntityViewierIds","isRestricted","EDIT_TRIGGER_CLASS","editingInput","proceedWithSelection"],"mappings":"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"}
|