@ynput/ayon-frontend-shared 0.2.39 → 0.2.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DetailsPanel.cjs.js +1 -1
- package/dist/DetailsPanel.es.js +24 -22
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/api.cjs.js +1 -1
- package/dist/api.es.js +256 -248
- package/dist/api.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/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
- package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +16 -16
- package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
- package/dist/shared/src/api/queries/config/getConfig.cjs.js +2 -0
- package/dist/shared/src/api/queries/config/getConfig.cjs.js.map +1 -0
- package/dist/shared/src/api/queries/config/getConfig.es.js +111 -0
- package/dist/shared/src/api/queries/config/getConfig.es.js.map +1 -0
- package/dist/shared/src/api/queries/config/updateConfig.cjs.js +2 -0
- package/dist/shared/src/api/queries/config/updateConfig.cjs.js.map +1 -0
- package/dist/shared/src/api/queries/config/updateConfig.es.js +13 -0
- package/dist/shared/src/api/queries/config/updateConfig.es.js.map +1 -0
- 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 +5 -3
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +1 -1
- package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/updateEntity.es.js +5 -3
- package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
- package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +1 -1
- package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/links/getEntityLinks.es.js +106 -86
- package/dist/shared/src/api/queries/links/getEntityLinks.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 +68 -66
- package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
- package/dist/shared/src/api/queries/users/getUsers.cjs.js +2 -2
- package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/users/getUsers.es.js +34 -32
- package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
- package/dist/shared/src/components/AddonLoadingScreen/AddonLoadingScreen.cjs.js +8 -7
- package/dist/shared/src/components/AddonLoadingScreen/AddonLoadingScreen.cjs.js.map +1 -1
- package/dist/shared/src/components/AddonLoadingScreen/AddonLoadingScreen.es.js +24 -20
- package/dist/shared/src/components/AddonLoadingScreen/AddonLoadingScreen.es.js.map +1 -1
- package/dist/shared/src/components/Chips/Chips.cjs.js +10 -6
- package/dist/shared/src/components/Chips/Chips.cjs.js.map +1 -1
- package/dist/shared/src/components/Chips/Chips.es.js +44 -38
- package/dist/shared/src/components/Chips/Chips.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 +4 -2
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +4 -2
- 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 +4 -2
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.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 +4 -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 +4 -2
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +4 -2
- 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 +6 -4
- package/dist/shared/src/components/Feedback/FeedbackContext.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 +4 -2
- 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 -25
- 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/LinksManager.styled.cjs.js +5 -0
- package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js +5 -0
- package/dist/shared/src/components/LinksManager/LinksManager.styled.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 +4 -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/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 +4 -2
- 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 +4 -2
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +8 -6
- 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/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +4 -2
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +6 -4
- 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 +4 -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 +4 -2
- package/dist/shared/src/containers/Actions/Actions.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/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +4 -2
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +5 -3
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +4 -2
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +4 -2
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.es.js +4 -2
- package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.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 +4 -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 +4 -2
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.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 +4 -2
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +4 -2
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
- 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/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 +7 -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 +4 -2
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.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 +4 -2
- 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 +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.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/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 +6 -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 +7 -5
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +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 +30 -28
- 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/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/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 +34 -21
- package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.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 +31 -28
- 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/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/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 +4 -2
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.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 +6 -4
- package/dist/shared/src/containers/Views/context/ViewsContext.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 -2
- 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 +4 -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 +4 -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 +4 -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 +4 -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 +6 -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 +6 -4
- 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 +6 -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 +8 -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 +44 -38
- 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 +6 -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 +6 -4
- package/dist/shared/src/context/RemoteModulesContext.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 +7 -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 +4 -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 +4 -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 +4 -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 +4 -2
- package/dist/shared/src/hooks/useGroupByRemoteModules.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 +6 -4
- package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
- 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 +4 -2
- package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
- package/dist/types/api/queries/config/getConfig.d.ts +747 -0
- package/dist/types/api/queries/config/index.d.ts +2 -0
- package/dist/types/api/queries/config/updateConfig.d.ts +171 -0
- package/dist/types/api/queries/index.d.ts +1 -0
- package/dist/types/api/queries/links/getEntityLinks.d.ts +2 -1
- package/dist/types/components/AddonLoadingScreen/AddonLoadingScreen.d.ts +7 -2
- package/dist/types/components/Chips/Chips.d.ts +1 -0
- package/dist/types/components/LinksManager/LinksManager.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellEditingProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/CellEditingProvider.tsx"],"sourcesContent":["import { ReactNode, useCallback, useEffect, useMemo, useState } from 'react'\nimport { CellId, getTypeDefaultValue, parseCellId } from '../utils'\nimport useHistory from '../hooks/useHistory'\nimport { useSelectionCellsContext } from './SelectionCellsContext'\nimport useUpdateTableData, {\n EntityUpdate,\n InheritFromParentEntity,\n UpdateTableEntities,\n} from '../hooks/useUpdateTableData'\nimport { useProjectTableContext } from './ProjectTableContext'\nimport validateUpdateEntities from '../utils/validateUpdateEntities'\nimport { toast } from 'react-toastify'\nimport { CellEditingContext } from './CellEditingContext'\n\nexport const CellEditingProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [editingCellId, setEditingCellId] = useState<CellId | null>(null)\n\n // Memoize these functions to prevent unnecessary re-renders\n const isEditing = useCallback((id: CellId) => id === editingCellId, [editingCellId])\n\n // Get history functions\n const history = useHistory()\n const { pushHistory, undo: undoHistory, redo: redoHistory, canUndo, canRedo, removeHistoryEntries } = history\n\n const { selectedCells } = useSelectionCellsContext()\n const { updateEntities: updateOverviewEntities, inheritFromParent } = useUpdateTableData({\n pushHistory,\n removeHistoryEntries,\n })\n const { attribFields, getEntityById } = useProjectTableContext()\n\n const handleUpdateEntities: UpdateTableEntities = useCallback(\n async (entities = [], pushToHistory = true) => {\n try {\n // validate the entities before updating\n validateUpdateEntities(entities, attribFields)\n\n // if validation passes, update the entities\n return await updateOverviewEntities(entities, pushToHistory)\n } catch (error: any) {\n // if validation fails, show a toast and return\n toast.error(error.message)\n\n return Promise.reject(error)\n }\n },\n [updateOverviewEntities, attribFields],\n )\n\n // Handle undo\n const handleUndo = async () => {\n const [entitiesToUndo, entitiesToInherit, callbacks] = undoHistory() || []\n\n if (entitiesToUndo && entitiesToUndo.length > 0) {\n try {\n await handleUpdateEntities(entitiesToUndo, false)\n } catch (error) {\n toast.error('Failed to undo changes')\n }\n }\n if (entitiesToInherit && entitiesToInherit.length > 0) {\n try {\n await inheritFromParent(entitiesToInherit, false)\n } catch (error) {\n toast.error('Failed to inherit changes')\n }\n }\n // Execute custom callbacks if any\n if (callbacks && callbacks.length > 0) {\n callbacks.forEach((callback) => {\n try {\n callback()\n } catch (error) {\n toast.error('Failed to execute custom undo action')\n }\n })\n }\n }\n\n // Handle redo\n const handleRedo = async () => {\n const [entitiesToRedo, entitiesToInherit, callbacks] = redoHistory() || []\n\n if (entitiesToRedo && entitiesToRedo.length > 0) {\n try {\n await handleUpdateEntities(entitiesToRedo, false)\n } catch (error) {\n toast.error('Failed to redo changes')\n }\n }\n if (entitiesToInherit && entitiesToInherit.length > 0) {\n try {\n await inheritFromParent(entitiesToInherit, false)\n } catch (error) {\n toast.error('Failed to inherit changes')\n }\n }\n // Execute custom callbacks if any\n if (callbacks && callbacks.length > 0) {\n callbacks.forEach((callback) => {\n try {\n callback()\n } catch (error) {\n toast.error('Failed to execute custom redo action')\n }\n })\n }\n }\n\n // Handle clearing cells\n const handleClear = useCallback(\n async (cells: CellId[]) => {\n // we explicity update the value of the cells to their default values\n const entityUpdates: EntityUpdate[] = []\n // of if they are inheritable, we inherit from the parent entity\n const entityInheriting: InheritFromParentEntity[] = []\n\n for (const cellId of cells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n if (!colId || !rowId) {\n console.warn(`Invalid cellId: ${cellId}`)\n continue\n }\n\n // get the entity from the rowId\n const entity = getEntityById(rowId)\n\n if (!entity) return\n\n // get the field name and check if it is an attribute\n const fieldName = colId.replace('attrib_', '')\n const isAttrib = colId.startsWith('attrib_')\n\n if (!fieldName) {\n console.warn(`Invalid column ID: ${colId}`)\n continue\n }\n\n let defaultValue: any = null\n if (isAttrib) {\n // find default value for the attribute\n const attribField = attribFields.find((f) => f.name === fieldName)\n if (!attribField) {\n console.warn(`Attribute field not found: ${fieldName}`)\n continue\n }\n // check if the attribute is inheritable\n if (attribField.data.inherit) {\n // inherit from parent entity\n // check if this entity has already been added to the inheriting list\n const existingInherit = entityInheriting.find((e) => e.entityId === entity.entityId)\n if (existingInherit) {\n // add the attrib to the existing entity\n existingInherit.attribs.push(fieldName)\n } else {\n // add a new entity to the inheriting list\n entityInheriting.push({\n entityId: entity.entityId,\n attribs: [fieldName],\n entityType: entity.entityType,\n ownAttrib: entity.ownAttrib || [],\n rowId: rowId,\n folderId:\n entity.entityType === 'folder'\n ? entity.parentId\n : entity.entityType === 'task'\n ? entity.folderId\n : undefined,\n })\n }\n continue\n } else {\n // set explicit default value\n defaultValue = attribField.data.default || getTypeDefaultValue(attribField.data.type)\n }\n } else if (fieldName === 'assignees') {\n // for assignees, we set it to an empty array\n defaultValue = getTypeDefaultValue('list_of_strings')\n } else if (fieldName === 'tags') {\n // for tags, we set it to an empty array\n defaultValue = getTypeDefaultValue('list_of_strings')\n } else {\n // we ignore other fields\n console.warn(`Field not editable: ${fieldName}`)\n continue\n }\n\n // create the entity update\n const update: EntityUpdate = {\n id: rowId,\n rowId: rowId,\n field: fieldName,\n value: defaultValue,\n isAttrib,\n type: entity.entityType,\n }\n\n entityUpdates.push(update)\n }\n\n // if we have updates, call the updateEntities function\n if (entityUpdates.length > 0) {\n try {\n await handleUpdateEntities(entityUpdates, true)\n } catch (error) {\n toast.error('Failed to clear selected cells')\n console.error('Error clearing selected cells:', error)\n }\n }\n\n // if we have inheritable attributes, call inheritFromParent\n if (entityInheriting.length > 0) {\n try {\n await inheritFromParent(entityInheriting, true)\n } catch (error) {\n toast.error('Failed to inherit parent values for cleared cells')\n console.error('Error clearing inherited cells:', error)\n }\n }\n\n // if nothing was done, warn the user\n if (entityUpdates.length === 0 && entityInheriting.length === 0) {\n toast.warn('No valid cells selected to clear')\n }\n },\n [attribFields, updateOverviewEntities],\n )\n\n const value = useMemo(\n () => ({\n editingCellId,\n setEditingCellId,\n isEditing,\n updateEntities: handleUpdateEntities,\n inheritFromParent,\n undo: handleUndo,\n redo: handleRedo,\n history,\n }),\n [\n editingCellId,\n isEditing,\n handleUpdateEntities,\n inheritFromParent,\n handleUndo,\n handleRedo,\n history,\n ],\n )\n\n // Listen for shortcuts\n // undo - ctrl + z\n // redo - ctrl + y or ctrl + shift + z\n // clear - backspace or delete\n useEffect(() => {\n const onKeyDown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement\n if (\n target.tagName === 'INPUT' ||\n target.tagName === 'TEXTAREA' ||\n target.isContentEditable ||\n target.getAttribute('role') === 'textbox' ||\n target.tagName === 'LI'\n ) {\n return\n }\n\n const isMac =\n typeof navigator !== 'undefined' &&\n // @ts-expect-error\n ((navigator.userAgentData &&\n // @ts-expect-error\n navigator.userAgentData.platform.toUpperCase().includes('MAC')) ||\n navigator.userAgent.toUpperCase().includes('MAC'))\n const ctrlKey = isMac ? e.metaKey : e.ctrlKey\n\n // undo\n if (ctrlKey && e.key === 'z') {\n e.preventDefault()\n if (canUndo) handleUndo()\n }\n // redo\n if (\n (ctrlKey && e.key === 'y') ||\n (ctrlKey && e.shiftKey && e.key === 'z') ||\n (ctrlKey && e.key === 'Z')\n ) {\n e.preventDefault()\n if (canRedo) handleRedo()\n }\n // clear\n if ((e.key === 'Backspace' && !(e.ctrlKey || e.metaKey)) || e.key === 'Delete') {\n // check we have cells selected\n if (!selectedCells.size) return\n e.preventDefault()\n\n // find selected cells elements\n const selectedCellElements = Array.from(selectedCells).map((cellId) =>\n document.getElementById(cellId),\n )\n\n // check the cell is editable from the classnames\n const isEditable = (cell: HTMLElement | null) => cell?.classList.contains('editable')\n\n // filter out non-editable cells\n const editableCells = selectedCellElements.filter(isEditable)\n if (editableCells.length === 0) {\n toast.warn('No editable cells selected to clear')\n return\n }\n // clear the selected cells\n handleClear(editableCells.map((cell) => cell?.id).filter(Boolean) as CellId[])\n }\n }\n\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [canUndo, canRedo, handleUndo, handleRedo, selectedCells, handleClear])\n\n return <CellEditingContext.Provider value={value}>{children}</CellEditingContext.Provider>\n}\n"],"names":["CellEditingProvider","children","editingCellId","setEditingCellId","useState","isEditing","useCallback","id","history","useHistory","pushHistory","undoHistory","redoHistory","canUndo","canRedo","removeHistoryEntries","selectedCells","useSelectionCellsContext","updateOverviewEntities","inheritFromParent","useUpdateTableData","attribFields","getEntityById","useProjectTableContext","handleUpdateEntities","entities","pushToHistory","validateUpdateEntities","error","toast","handleUndo","entitiesToUndo","entitiesToInherit","callbacks","callback","handleRedo","entitiesToRedo","handleClear","cells","entityUpdates","entityInheriting","cellId","colId","rowId","parseCellId","entity","fieldName","isAttrib","defaultValue","attribField","f","existingInherit","e","getTypeDefaultValue","update","value","useMemo","useEffect","onKeyDown","target","ctrlKey","selectedCellElements","isEditable","cell","editableCells","jsx","CellEditingContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CellEditingProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/CellEditingProvider.tsx"],"sourcesContent":["import { ReactNode, useCallback, useEffect, useMemo, useState } from 'react'\nimport { CellId, getTypeDefaultValue, parseCellId } from '../utils'\nimport useHistory from '../hooks/useHistory'\nimport { useSelectionCellsContext } from './SelectionCellsContext'\nimport useUpdateTableData, {\n EntityUpdate,\n InheritFromParentEntity,\n UpdateTableEntities,\n} from '../hooks/useUpdateTableData'\nimport { useProjectTableContext } from './ProjectTableContext'\nimport validateUpdateEntities from '../utils/validateUpdateEntities'\nimport { toast } from 'react-toastify'\nimport { CellEditingContext } from './CellEditingContext'\n\nexport const CellEditingProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [editingCellId, setEditingCellId] = useState<CellId | null>(null)\n\n // Memoize these functions to prevent unnecessary re-renders\n const isEditing = useCallback((id: CellId) => id === editingCellId, [editingCellId])\n\n // Get history functions\n const history = useHistory()\n const { pushHistory, undo: undoHistory, redo: redoHistory, canUndo, canRedo, removeHistoryEntries } = history\n\n const { selectedCells } = useSelectionCellsContext()\n const { updateEntities: updateOverviewEntities, inheritFromParent } = useUpdateTableData({\n pushHistory,\n removeHistoryEntries,\n })\n const { attribFields, getEntityById } = useProjectTableContext()\n\n const handleUpdateEntities: UpdateTableEntities = useCallback(\n async (entities = [], pushToHistory = true) => {\n try {\n // validate the entities before updating\n validateUpdateEntities(entities, attribFields)\n\n // if validation passes, update the entities\n return await updateOverviewEntities(entities, pushToHistory)\n } catch (error: any) {\n // if validation fails, show a toast and return\n toast.error(error.message)\n\n return Promise.reject(error)\n }\n },\n [updateOverviewEntities, attribFields],\n )\n\n // Handle undo\n const handleUndo = async () => {\n const [entitiesToUndo, entitiesToInherit, callbacks] = undoHistory() || []\n\n if (entitiesToUndo && entitiesToUndo.length > 0) {\n try {\n await handleUpdateEntities(entitiesToUndo, false)\n } catch (error) {\n toast.error('Failed to undo changes')\n }\n }\n if (entitiesToInherit && entitiesToInherit.length > 0) {\n try {\n await inheritFromParent(entitiesToInherit, false)\n } catch (error) {\n toast.error('Failed to inherit changes')\n }\n }\n // Execute custom callbacks if any\n if (callbacks && callbacks.length > 0) {\n callbacks.forEach((callback) => {\n try {\n callback()\n } catch (error) {\n toast.error('Failed to execute custom undo action')\n }\n })\n }\n }\n\n // Handle redo\n const handleRedo = async () => {\n const [entitiesToRedo, entitiesToInherit, callbacks] = redoHistory() || []\n\n if (entitiesToRedo && entitiesToRedo.length > 0) {\n try {\n await handleUpdateEntities(entitiesToRedo, false)\n } catch (error) {\n toast.error('Failed to redo changes')\n }\n }\n if (entitiesToInherit && entitiesToInherit.length > 0) {\n try {\n await inheritFromParent(entitiesToInherit, false)\n } catch (error) {\n toast.error('Failed to inherit changes')\n }\n }\n // Execute custom callbacks if any\n if (callbacks && callbacks.length > 0) {\n callbacks.forEach((callback) => {\n try {\n callback()\n } catch (error) {\n toast.error('Failed to execute custom redo action')\n }\n })\n }\n }\n\n // Handle clearing cells\n const handleClear = useCallback(\n async (cells: CellId[]) => {\n // we explicity update the value of the cells to their default values\n const entityUpdates: EntityUpdate[] = []\n // of if they are inheritable, we inherit from the parent entity\n const entityInheriting: InheritFromParentEntity[] = []\n\n for (const cellId of cells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n if (!colId || !rowId) {\n console.warn(`Invalid cellId: ${cellId}`)\n continue\n }\n\n // get the entity from the rowId\n const entity = getEntityById(rowId)\n\n if (!entity) return\n\n // get the field name and check if it is an attribute\n const fieldName = colId.replace('attrib_', '')\n const isAttrib = colId.startsWith('attrib_')\n\n if (!fieldName) {\n console.warn(`Invalid column ID: ${colId}`)\n continue\n }\n\n let defaultValue: any = null\n if (isAttrib) {\n // find default value for the attribute\n const attribField = attribFields.find((f) => f.name === fieldName)\n if (!attribField) {\n console.warn(`Attribute field not found: ${fieldName}`)\n continue\n }\n // check if the attribute is inheritable\n if (attribField.data.inherit) {\n // inherit from parent entity\n // check if this entity has already been added to the inheriting list\n const existingInherit = entityInheriting.find((e) => e.entityId === entity.entityId)\n if (existingInherit) {\n // add the attrib to the existing entity\n existingInherit.attribs.push(fieldName)\n } else {\n // add a new entity to the inheriting list\n entityInheriting.push({\n entityId: entity.entityId,\n attribs: [fieldName],\n entityType: entity.entityType,\n ownAttrib: entity.ownAttrib || [],\n rowId: rowId,\n folderId:\n entity.entityType === 'folder'\n ? entity.parentId\n : entity.entityType === 'task'\n ? entity.folderId\n : undefined,\n })\n }\n continue\n } else {\n // set explicit default value\n defaultValue = attribField.data.default || getTypeDefaultValue(attribField.data.type)\n }\n } else if (fieldName === 'assignees') {\n // for assignees, we set it to an empty array\n defaultValue = getTypeDefaultValue('list_of_strings')\n } else if (fieldName === 'tags') {\n // for tags, we set it to an empty array\n defaultValue = getTypeDefaultValue('list_of_strings')\n } else {\n // we ignore other fields\n console.warn(`Field not editable: ${fieldName}`)\n continue\n }\n\n // create the entity update\n const update: EntityUpdate = {\n id: rowId,\n rowId: rowId,\n field: fieldName,\n value: defaultValue,\n isAttrib,\n type: entity.entityType,\n }\n\n entityUpdates.push(update)\n }\n\n // if we have updates, call the updateEntities function\n if (entityUpdates.length > 0) {\n try {\n await handleUpdateEntities(entityUpdates, true)\n } catch (error) {\n toast.error('Failed to clear selected cells')\n console.error('Error clearing selected cells:', error)\n }\n }\n\n // if we have inheritable attributes, call inheritFromParent\n if (entityInheriting.length > 0) {\n try {\n await inheritFromParent(entityInheriting, true)\n } catch (error) {\n toast.error('Failed to inherit parent values for cleared cells')\n console.error('Error clearing inherited cells:', error)\n }\n }\n\n // if nothing was done, warn the user\n if (entityUpdates.length === 0 && entityInheriting.length === 0) {\n toast.warn('No valid cells selected to clear')\n }\n },\n [attribFields, updateOverviewEntities],\n )\n\n const value = useMemo(\n () => ({\n editingCellId,\n setEditingCellId,\n isEditing,\n updateEntities: handleUpdateEntities,\n inheritFromParent,\n undo: handleUndo,\n redo: handleRedo,\n history,\n }),\n [\n editingCellId,\n isEditing,\n handleUpdateEntities,\n inheritFromParent,\n handleUndo,\n handleRedo,\n history,\n ],\n )\n\n // Listen for shortcuts\n // undo - ctrl + z\n // redo - ctrl + y or ctrl + shift + z\n // clear - backspace or delete\n useEffect(() => {\n const onKeyDown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement\n if (\n target.tagName === 'INPUT' ||\n target.tagName === 'TEXTAREA' ||\n target.isContentEditable ||\n target.getAttribute('role') === 'textbox' ||\n target.tagName === 'LI'\n ) {\n return\n }\n\n const isMac =\n typeof navigator !== 'undefined' &&\n // @ts-expect-error\n ((navigator.userAgentData &&\n // @ts-expect-error\n navigator.userAgentData.platform.toUpperCase().includes('MAC')) ||\n navigator.userAgent.toUpperCase().includes('MAC'))\n const ctrlKey = isMac ? e.metaKey : e.ctrlKey\n\n // undo\n if (ctrlKey && e.key === 'z') {\n e.preventDefault()\n if (canUndo) handleUndo()\n }\n // redo\n if (\n (ctrlKey && e.key === 'y') ||\n (ctrlKey && e.shiftKey && e.key === 'z') ||\n (ctrlKey && e.key === 'Z')\n ) {\n e.preventDefault()\n if (canRedo) handleRedo()\n }\n // clear\n if ((e.key === 'Backspace' && !(e.ctrlKey || e.metaKey)) || e.key === 'Delete') {\n // check we have cells selected\n if (!selectedCells.size) return\n e.preventDefault()\n\n // find selected cells elements\n const selectedCellElements = Array.from(selectedCells).map((cellId) =>\n document.getElementById(cellId),\n )\n\n // check the cell is editable from the classnames\n const isEditable = (cell: HTMLElement | null) => cell?.classList.contains('editable')\n\n // filter out non-editable cells\n const editableCells = selectedCellElements.filter(isEditable)\n if (editableCells.length === 0) {\n toast.warn('No editable cells selected to clear')\n return\n }\n // clear the selected cells\n handleClear(editableCells.map((cell) => cell?.id).filter(Boolean) as CellId[])\n }\n }\n\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [canUndo, canRedo, handleUndo, handleRedo, selectedCells, handleClear])\n\n return <CellEditingContext.Provider value={value}>{children}</CellEditingContext.Provider>\n}\n"],"names":["CellEditingProvider","children","editingCellId","setEditingCellId","useState","isEditing","useCallback","id","history","useHistory","pushHistory","undoHistory","redoHistory","canUndo","canRedo","removeHistoryEntries","selectedCells","useSelectionCellsContext","updateOverviewEntities","inheritFromParent","useUpdateTableData","attribFields","getEntityById","useProjectTableContext","handleUpdateEntities","entities","pushToHistory","validateUpdateEntities","error","toast","handleUndo","entitiesToUndo","entitiesToInherit","callbacks","callback","handleRedo","entitiesToRedo","handleClear","cells","entityUpdates","entityInheriting","cellId","colId","rowId","parseCellId","entity","fieldName","isAttrib","defaultValue","attribField","f","existingInherit","e","getTypeDefaultValue","update","value","useMemo","useEffect","onKeyDown","target","ctrlKey","selectedCellElements","isEditable","cell","editableCells","jsx","CellEditingContext"],"mappings":"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"}
|
|
@@ -70,6 +70,8 @@ import "../../../api/queries/attributes/getAttributes.es.js";
|
|
|
70
70
|
import "../../../api/queries/attributes/updateAttributes.es.js";
|
|
71
71
|
import "../../../api/queries/authentication/getAuthentication.es.js";
|
|
72
72
|
import "../../../api/queries/cloud/cloud.es.js";
|
|
73
|
+
import "../../../api/queries/config/getConfig.es.js";
|
|
74
|
+
import "../../../api/queries/config/updateConfig.es.js";
|
|
73
75
|
import "../../../api/queries/entities/getEntity.es.js";
|
|
74
76
|
import "../../../api/queries/entities/getEntityPanel.es.js";
|
|
75
77
|
import "../../../api/queries/entities/updateEntity.es.js";
|
|
@@ -248,7 +250,7 @@ import "../widgets/EmptyWidget.es.js";
|
|
|
248
250
|
import "../widgets/ErrorWidget.es.js";
|
|
249
251
|
import "../ProjectTreeTable.styled.es.js";
|
|
250
252
|
import "../widgets/LoadMoreWidget.es.js";
|
|
251
|
-
const
|
|
253
|
+
const Ne = ({ children: F }) => {
|
|
252
254
|
const [d, D] = B(null), T = w((i) => i === d, [d]), I = V(), { pushHistory: U, undo: K, redo: N, canUndo: k, canRedo: A, removeHistoryEntries: P } = I, { selectedCells: b } = O(), { updateEntities: v, inheritFromParent: l } = W({
|
|
253
255
|
pushHistory: U,
|
|
254
256
|
removeHistoryEntries: P
|
|
@@ -418,6 +420,6 @@ const Ue = ({ children: F }) => {
|
|
|
418
420
|
}, [k, A, u, y, b, x]), /* @__PURE__ */ R.jsx(S.Provider, { value: j, children: F });
|
|
419
421
|
};
|
|
420
422
|
export {
|
|
421
|
-
|
|
423
|
+
Ne as CellEditingProvider
|
|
422
424
|
};
|
|
423
425
|
//# sourceMappingURL=CellEditingProvider.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellEditingProvider.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/CellEditingProvider.tsx"],"sourcesContent":["import { ReactNode, useCallback, useEffect, useMemo, useState } from 'react'\nimport { CellId, getTypeDefaultValue, parseCellId } from '../utils'\nimport useHistory from '../hooks/useHistory'\nimport { useSelectionCellsContext } from './SelectionCellsContext'\nimport useUpdateTableData, {\n EntityUpdate,\n InheritFromParentEntity,\n UpdateTableEntities,\n} from '../hooks/useUpdateTableData'\nimport { useProjectTableContext } from './ProjectTableContext'\nimport validateUpdateEntities from '../utils/validateUpdateEntities'\nimport { toast } from 'react-toastify'\nimport { CellEditingContext } from './CellEditingContext'\n\nexport const CellEditingProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [editingCellId, setEditingCellId] = useState<CellId | null>(null)\n\n // Memoize these functions to prevent unnecessary re-renders\n const isEditing = useCallback((id: CellId) => id === editingCellId, [editingCellId])\n\n // Get history functions\n const history = useHistory()\n const { pushHistory, undo: undoHistory, redo: redoHistory, canUndo, canRedo, removeHistoryEntries } = history\n\n const { selectedCells } = useSelectionCellsContext()\n const { updateEntities: updateOverviewEntities, inheritFromParent } = useUpdateTableData({\n pushHistory,\n removeHistoryEntries,\n })\n const { attribFields, getEntityById } = useProjectTableContext()\n\n const handleUpdateEntities: UpdateTableEntities = useCallback(\n async (entities = [], pushToHistory = true) => {\n try {\n // validate the entities before updating\n validateUpdateEntities(entities, attribFields)\n\n // if validation passes, update the entities\n return await updateOverviewEntities(entities, pushToHistory)\n } catch (error: any) {\n // if validation fails, show a toast and return\n toast.error(error.message)\n\n return Promise.reject(error)\n }\n },\n [updateOverviewEntities, attribFields],\n )\n\n // Handle undo\n const handleUndo = async () => {\n const [entitiesToUndo, entitiesToInherit, callbacks] = undoHistory() || []\n\n if (entitiesToUndo && entitiesToUndo.length > 0) {\n try {\n await handleUpdateEntities(entitiesToUndo, false)\n } catch (error) {\n toast.error('Failed to undo changes')\n }\n }\n if (entitiesToInherit && entitiesToInherit.length > 0) {\n try {\n await inheritFromParent(entitiesToInherit, false)\n } catch (error) {\n toast.error('Failed to inherit changes')\n }\n }\n // Execute custom callbacks if any\n if (callbacks && callbacks.length > 0) {\n callbacks.forEach((callback) => {\n try {\n callback()\n } catch (error) {\n toast.error('Failed to execute custom undo action')\n }\n })\n }\n }\n\n // Handle redo\n const handleRedo = async () => {\n const [entitiesToRedo, entitiesToInherit, callbacks] = redoHistory() || []\n\n if (entitiesToRedo && entitiesToRedo.length > 0) {\n try {\n await handleUpdateEntities(entitiesToRedo, false)\n } catch (error) {\n toast.error('Failed to redo changes')\n }\n }\n if (entitiesToInherit && entitiesToInherit.length > 0) {\n try {\n await inheritFromParent(entitiesToInherit, false)\n } catch (error) {\n toast.error('Failed to inherit changes')\n }\n }\n // Execute custom callbacks if any\n if (callbacks && callbacks.length > 0) {\n callbacks.forEach((callback) => {\n try {\n callback()\n } catch (error) {\n toast.error('Failed to execute custom redo action')\n }\n })\n }\n }\n\n // Handle clearing cells\n const handleClear = useCallback(\n async (cells: CellId[]) => {\n // we explicity update the value of the cells to their default values\n const entityUpdates: EntityUpdate[] = []\n // of if they are inheritable, we inherit from the parent entity\n const entityInheriting: InheritFromParentEntity[] = []\n\n for (const cellId of cells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n if (!colId || !rowId) {\n console.warn(`Invalid cellId: ${cellId}`)\n continue\n }\n\n // get the entity from the rowId\n const entity = getEntityById(rowId)\n\n if (!entity) return\n\n // get the field name and check if it is an attribute\n const fieldName = colId.replace('attrib_', '')\n const isAttrib = colId.startsWith('attrib_')\n\n if (!fieldName) {\n console.warn(`Invalid column ID: ${colId}`)\n continue\n }\n\n let defaultValue: any = null\n if (isAttrib) {\n // find default value for the attribute\n const attribField = attribFields.find((f) => f.name === fieldName)\n if (!attribField) {\n console.warn(`Attribute field not found: ${fieldName}`)\n continue\n }\n // check if the attribute is inheritable\n if (attribField.data.inherit) {\n // inherit from parent entity\n // check if this entity has already been added to the inheriting list\n const existingInherit = entityInheriting.find((e) => e.entityId === entity.entityId)\n if (existingInherit) {\n // add the attrib to the existing entity\n existingInherit.attribs.push(fieldName)\n } else {\n // add a new entity to the inheriting list\n entityInheriting.push({\n entityId: entity.entityId,\n attribs: [fieldName],\n entityType: entity.entityType,\n ownAttrib: entity.ownAttrib || [],\n rowId: rowId,\n folderId:\n entity.entityType === 'folder'\n ? entity.parentId\n : entity.entityType === 'task'\n ? entity.folderId\n : undefined,\n })\n }\n continue\n } else {\n // set explicit default value\n defaultValue = attribField.data.default || getTypeDefaultValue(attribField.data.type)\n }\n } else if (fieldName === 'assignees') {\n // for assignees, we set it to an empty array\n defaultValue = getTypeDefaultValue('list_of_strings')\n } else if (fieldName === 'tags') {\n // for tags, we set it to an empty array\n defaultValue = getTypeDefaultValue('list_of_strings')\n } else {\n // we ignore other fields\n console.warn(`Field not editable: ${fieldName}`)\n continue\n }\n\n // create the entity update\n const update: EntityUpdate = {\n id: rowId,\n rowId: rowId,\n field: fieldName,\n value: defaultValue,\n isAttrib,\n type: entity.entityType,\n }\n\n entityUpdates.push(update)\n }\n\n // if we have updates, call the updateEntities function\n if (entityUpdates.length > 0) {\n try {\n await handleUpdateEntities(entityUpdates, true)\n } catch (error) {\n toast.error('Failed to clear selected cells')\n console.error('Error clearing selected cells:', error)\n }\n }\n\n // if we have inheritable attributes, call inheritFromParent\n if (entityInheriting.length > 0) {\n try {\n await inheritFromParent(entityInheriting, true)\n } catch (error) {\n toast.error('Failed to inherit parent values for cleared cells')\n console.error('Error clearing inherited cells:', error)\n }\n }\n\n // if nothing was done, warn the user\n if (entityUpdates.length === 0 && entityInheriting.length === 0) {\n toast.warn('No valid cells selected to clear')\n }\n },\n [attribFields, updateOverviewEntities],\n )\n\n const value = useMemo(\n () => ({\n editingCellId,\n setEditingCellId,\n isEditing,\n updateEntities: handleUpdateEntities,\n inheritFromParent,\n undo: handleUndo,\n redo: handleRedo,\n history,\n }),\n [\n editingCellId,\n isEditing,\n handleUpdateEntities,\n inheritFromParent,\n handleUndo,\n handleRedo,\n history,\n ],\n )\n\n // Listen for shortcuts\n // undo - ctrl + z\n // redo - ctrl + y or ctrl + shift + z\n // clear - backspace or delete\n useEffect(() => {\n const onKeyDown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement\n if (\n target.tagName === 'INPUT' ||\n target.tagName === 'TEXTAREA' ||\n target.isContentEditable ||\n target.getAttribute('role') === 'textbox' ||\n target.tagName === 'LI'\n ) {\n return\n }\n\n const isMac =\n typeof navigator !== 'undefined' &&\n // @ts-expect-error\n ((navigator.userAgentData &&\n // @ts-expect-error\n navigator.userAgentData.platform.toUpperCase().includes('MAC')) ||\n navigator.userAgent.toUpperCase().includes('MAC'))\n const ctrlKey = isMac ? e.metaKey : e.ctrlKey\n\n // undo\n if (ctrlKey && e.key === 'z') {\n e.preventDefault()\n if (canUndo) handleUndo()\n }\n // redo\n if (\n (ctrlKey && e.key === 'y') ||\n (ctrlKey && e.shiftKey && e.key === 'z') ||\n (ctrlKey && e.key === 'Z')\n ) {\n e.preventDefault()\n if (canRedo) handleRedo()\n }\n // clear\n if ((e.key === 'Backspace' && !(e.ctrlKey || e.metaKey)) || e.key === 'Delete') {\n // check we have cells selected\n if (!selectedCells.size) return\n e.preventDefault()\n\n // find selected cells elements\n const selectedCellElements = Array.from(selectedCells).map((cellId) =>\n document.getElementById(cellId),\n )\n\n // check the cell is editable from the classnames\n const isEditable = (cell: HTMLElement | null) => cell?.classList.contains('editable')\n\n // filter out non-editable cells\n const editableCells = selectedCellElements.filter(isEditable)\n if (editableCells.length === 0) {\n toast.warn('No editable cells selected to clear')\n return\n }\n // clear the selected cells\n handleClear(editableCells.map((cell) => cell?.id).filter(Boolean) as CellId[])\n }\n }\n\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [canUndo, canRedo, handleUndo, handleRedo, selectedCells, handleClear])\n\n return <CellEditingContext.Provider value={value}>{children}</CellEditingContext.Provider>\n}\n"],"names":["CellEditingProvider","children","editingCellId","setEditingCellId","useState","isEditing","useCallback","id","history","useHistory","pushHistory","undoHistory","redoHistory","canUndo","canRedo","removeHistoryEntries","selectedCells","useSelectionCellsContext","updateOverviewEntities","inheritFromParent","useUpdateTableData","attribFields","getEntityById","useProjectTableContext","handleUpdateEntities","entities","pushToHistory","validateUpdateEntities","error","toast","handleUndo","entitiesToUndo","entitiesToInherit","callbacks","callback","handleRedo","entitiesToRedo","handleClear","cells","entityUpdates","entityInheriting","cellId","colId","rowId","parseCellId","entity","fieldName","isAttrib","defaultValue","attribField","f","existingInherit","e","getTypeDefaultValue","update","value","useMemo","useEffect","onKeyDown","target","ctrlKey","selectedCellElements","isEditable","cell","editableCells","jsx","CellEditingContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CellEditingProvider.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/CellEditingProvider.tsx"],"sourcesContent":["import { ReactNode, useCallback, useEffect, useMemo, useState } from 'react'\nimport { CellId, getTypeDefaultValue, parseCellId } from '../utils'\nimport useHistory from '../hooks/useHistory'\nimport { useSelectionCellsContext } from './SelectionCellsContext'\nimport useUpdateTableData, {\n EntityUpdate,\n InheritFromParentEntity,\n UpdateTableEntities,\n} from '../hooks/useUpdateTableData'\nimport { useProjectTableContext } from './ProjectTableContext'\nimport validateUpdateEntities from '../utils/validateUpdateEntities'\nimport { toast } from 'react-toastify'\nimport { CellEditingContext } from './CellEditingContext'\n\nexport const CellEditingProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [editingCellId, setEditingCellId] = useState<CellId | null>(null)\n\n // Memoize these functions to prevent unnecessary re-renders\n const isEditing = useCallback((id: CellId) => id === editingCellId, [editingCellId])\n\n // Get history functions\n const history = useHistory()\n const { pushHistory, undo: undoHistory, redo: redoHistory, canUndo, canRedo, removeHistoryEntries } = history\n\n const { selectedCells } = useSelectionCellsContext()\n const { updateEntities: updateOverviewEntities, inheritFromParent } = useUpdateTableData({\n pushHistory,\n removeHistoryEntries,\n })\n const { attribFields, getEntityById } = useProjectTableContext()\n\n const handleUpdateEntities: UpdateTableEntities = useCallback(\n async (entities = [], pushToHistory = true) => {\n try {\n // validate the entities before updating\n validateUpdateEntities(entities, attribFields)\n\n // if validation passes, update the entities\n return await updateOverviewEntities(entities, pushToHistory)\n } catch (error: any) {\n // if validation fails, show a toast and return\n toast.error(error.message)\n\n return Promise.reject(error)\n }\n },\n [updateOverviewEntities, attribFields],\n )\n\n // Handle undo\n const handleUndo = async () => {\n const [entitiesToUndo, entitiesToInherit, callbacks] = undoHistory() || []\n\n if (entitiesToUndo && entitiesToUndo.length > 0) {\n try {\n await handleUpdateEntities(entitiesToUndo, false)\n } catch (error) {\n toast.error('Failed to undo changes')\n }\n }\n if (entitiesToInherit && entitiesToInherit.length > 0) {\n try {\n await inheritFromParent(entitiesToInherit, false)\n } catch (error) {\n toast.error('Failed to inherit changes')\n }\n }\n // Execute custom callbacks if any\n if (callbacks && callbacks.length > 0) {\n callbacks.forEach((callback) => {\n try {\n callback()\n } catch (error) {\n toast.error('Failed to execute custom undo action')\n }\n })\n }\n }\n\n // Handle redo\n const handleRedo = async () => {\n const [entitiesToRedo, entitiesToInherit, callbacks] = redoHistory() || []\n\n if (entitiesToRedo && entitiesToRedo.length > 0) {\n try {\n await handleUpdateEntities(entitiesToRedo, false)\n } catch (error) {\n toast.error('Failed to redo changes')\n }\n }\n if (entitiesToInherit && entitiesToInherit.length > 0) {\n try {\n await inheritFromParent(entitiesToInherit, false)\n } catch (error) {\n toast.error('Failed to inherit changes')\n }\n }\n // Execute custom callbacks if any\n if (callbacks && callbacks.length > 0) {\n callbacks.forEach((callback) => {\n try {\n callback()\n } catch (error) {\n toast.error('Failed to execute custom redo action')\n }\n })\n }\n }\n\n // Handle clearing cells\n const handleClear = useCallback(\n async (cells: CellId[]) => {\n // we explicity update the value of the cells to their default values\n const entityUpdates: EntityUpdate[] = []\n // of if they are inheritable, we inherit from the parent entity\n const entityInheriting: InheritFromParentEntity[] = []\n\n for (const cellId of cells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n if (!colId || !rowId) {\n console.warn(`Invalid cellId: ${cellId}`)\n continue\n }\n\n // get the entity from the rowId\n const entity = getEntityById(rowId)\n\n if (!entity) return\n\n // get the field name and check if it is an attribute\n const fieldName = colId.replace('attrib_', '')\n const isAttrib = colId.startsWith('attrib_')\n\n if (!fieldName) {\n console.warn(`Invalid column ID: ${colId}`)\n continue\n }\n\n let defaultValue: any = null\n if (isAttrib) {\n // find default value for the attribute\n const attribField = attribFields.find((f) => f.name === fieldName)\n if (!attribField) {\n console.warn(`Attribute field not found: ${fieldName}`)\n continue\n }\n // check if the attribute is inheritable\n if (attribField.data.inherit) {\n // inherit from parent entity\n // check if this entity has already been added to the inheriting list\n const existingInherit = entityInheriting.find((e) => e.entityId === entity.entityId)\n if (existingInherit) {\n // add the attrib to the existing entity\n existingInherit.attribs.push(fieldName)\n } else {\n // add a new entity to the inheriting list\n entityInheriting.push({\n entityId: entity.entityId,\n attribs: [fieldName],\n entityType: entity.entityType,\n ownAttrib: entity.ownAttrib || [],\n rowId: rowId,\n folderId:\n entity.entityType === 'folder'\n ? entity.parentId\n : entity.entityType === 'task'\n ? entity.folderId\n : undefined,\n })\n }\n continue\n } else {\n // set explicit default value\n defaultValue = attribField.data.default || getTypeDefaultValue(attribField.data.type)\n }\n } else if (fieldName === 'assignees') {\n // for assignees, we set it to an empty array\n defaultValue = getTypeDefaultValue('list_of_strings')\n } else if (fieldName === 'tags') {\n // for tags, we set it to an empty array\n defaultValue = getTypeDefaultValue('list_of_strings')\n } else {\n // we ignore other fields\n console.warn(`Field not editable: ${fieldName}`)\n continue\n }\n\n // create the entity update\n const update: EntityUpdate = {\n id: rowId,\n rowId: rowId,\n field: fieldName,\n value: defaultValue,\n isAttrib,\n type: entity.entityType,\n }\n\n entityUpdates.push(update)\n }\n\n // if we have updates, call the updateEntities function\n if (entityUpdates.length > 0) {\n try {\n await handleUpdateEntities(entityUpdates, true)\n } catch (error) {\n toast.error('Failed to clear selected cells')\n console.error('Error clearing selected cells:', error)\n }\n }\n\n // if we have inheritable attributes, call inheritFromParent\n if (entityInheriting.length > 0) {\n try {\n await inheritFromParent(entityInheriting, true)\n } catch (error) {\n toast.error('Failed to inherit parent values for cleared cells')\n console.error('Error clearing inherited cells:', error)\n }\n }\n\n // if nothing was done, warn the user\n if (entityUpdates.length === 0 && entityInheriting.length === 0) {\n toast.warn('No valid cells selected to clear')\n }\n },\n [attribFields, updateOverviewEntities],\n )\n\n const value = useMemo(\n () => ({\n editingCellId,\n setEditingCellId,\n isEditing,\n updateEntities: handleUpdateEntities,\n inheritFromParent,\n undo: handleUndo,\n redo: handleRedo,\n history,\n }),\n [\n editingCellId,\n isEditing,\n handleUpdateEntities,\n inheritFromParent,\n handleUndo,\n handleRedo,\n history,\n ],\n )\n\n // Listen for shortcuts\n // undo - ctrl + z\n // redo - ctrl + y or ctrl + shift + z\n // clear - backspace or delete\n useEffect(() => {\n const onKeyDown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement\n if (\n target.tagName === 'INPUT' ||\n target.tagName === 'TEXTAREA' ||\n target.isContentEditable ||\n target.getAttribute('role') === 'textbox' ||\n target.tagName === 'LI'\n ) {\n return\n }\n\n const isMac =\n typeof navigator !== 'undefined' &&\n // @ts-expect-error\n ((navigator.userAgentData &&\n // @ts-expect-error\n navigator.userAgentData.platform.toUpperCase().includes('MAC')) ||\n navigator.userAgent.toUpperCase().includes('MAC'))\n const ctrlKey = isMac ? e.metaKey : e.ctrlKey\n\n // undo\n if (ctrlKey && e.key === 'z') {\n e.preventDefault()\n if (canUndo) handleUndo()\n }\n // redo\n if (\n (ctrlKey && e.key === 'y') ||\n (ctrlKey && e.shiftKey && e.key === 'z') ||\n (ctrlKey && e.key === 'Z')\n ) {\n e.preventDefault()\n if (canRedo) handleRedo()\n }\n // clear\n if ((e.key === 'Backspace' && !(e.ctrlKey || e.metaKey)) || e.key === 'Delete') {\n // check we have cells selected\n if (!selectedCells.size) return\n e.preventDefault()\n\n // find selected cells elements\n const selectedCellElements = Array.from(selectedCells).map((cellId) =>\n document.getElementById(cellId),\n )\n\n // check the cell is editable from the classnames\n const isEditable = (cell: HTMLElement | null) => cell?.classList.contains('editable')\n\n // filter out non-editable cells\n const editableCells = selectedCellElements.filter(isEditable)\n if (editableCells.length === 0) {\n toast.warn('No editable cells selected to clear')\n return\n }\n // clear the selected cells\n handleClear(editableCells.map((cell) => cell?.id).filter(Boolean) as CellId[])\n }\n }\n\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [canUndo, canRedo, handleUndo, handleRedo, selectedCells, handleClear])\n\n return <CellEditingContext.Provider value={value}>{children}</CellEditingContext.Provider>\n}\n"],"names":["CellEditingProvider","children","editingCellId","setEditingCellId","useState","isEditing","useCallback","id","history","useHistory","pushHistory","undoHistory","redoHistory","canUndo","canRedo","removeHistoryEntries","selectedCells","useSelectionCellsContext","updateOverviewEntities","inheritFromParent","useUpdateTableData","attribFields","getEntityById","useProjectTableContext","handleUpdateEntities","entities","pushToHistory","validateUpdateEntities","error","toast","handleUndo","entitiesToUndo","entitiesToInherit","callbacks","callback","handleRedo","entitiesToRedo","handleClear","cells","entityUpdates","entityInheriting","cellId","colId","rowId","parseCellId","entity","fieldName","isAttrib","defaultValue","attribField","f","existingInherit","e","getTypeDefaultValue","update","value","useMemo","useEffect","onKeyDown","target","ctrlKey","selectedCellElements","isEditable","cell","editableCells","jsx","CellEditingContext"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const j=require("../../../../../_virtual/jsx-runtime.cjs.js"),r=require("react");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");const x=require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");const m=require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");const C=require("../hooks/useAttributesList.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../context/DetailsPanelContext.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/PowerpackContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");const D=require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContext.cjs.js");require("../../../context/UriContext.cjs.js");const P=r.createContext(void 0),v=({children:i,projectName:u})=>{const{isLoading:t,isSuccess:f}=D.useProjectContext(),{data:s}=x.useGetMyProjectPermissionsQuery({projectName:u},{skip:!u}),{attrib_write:e}=s||{},{attribFields:n,writableFields:o,isLoading:q}=C({projectPermissions:s}),{data:b=[]}=m.useGetUsersAssigneeQuery({projectName:u},{skip:!u}),a=b,c=r.useMemo(()=>e?!e.fields||e.fields.length===0?!e.attributes||e.attributes.length===0:e.fields.includes("name"):!1,[e]),l=r.useMemo(()=>e?!e.fields||e.fields.length===0?!e.attributes||e.attributes.length===0:e.fields.includes("label"):!1,[e]),d=f&&!t&&!q,g=r.useMemo(()=>({isInitialized:d,isLoading:t||q,users:a,attribFields:n,writableFields:o,canWriteNamePermission:c,canWriteLabelPermission:l}),[d,t,q,a,n,o,c,l]);return j.jsxRuntimeExports.jsx(P.Provider,{value:g,children:i})},L=()=>{const i=r.useContext(P);if(!i)throw new Error("useProjectDataContext must be used within a ProjectDataProvider");return i};exports.ProjectDataProvider=v;exports.useProjectDataContext=L;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const j=require("../../../../../_virtual/jsx-runtime.cjs.js"),r=require("react");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");const x=require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");const m=require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");const C=require("../hooks/useAttributesList.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../context/DetailsPanelContext.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/PowerpackContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");const D=require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContext.cjs.js");require("../../../context/UriContext.cjs.js");const P=r.createContext(void 0),v=({children:i,projectName:u})=>{const{isLoading:t,isSuccess:f}=D.useProjectContext(),{data:s}=x.useGetMyProjectPermissionsQuery({projectName:u},{skip:!u}),{attrib_write:e}=s||{},{attribFields:n,writableFields:o,isLoading:q}=C({projectPermissions:s}),{data:b=[]}=m.useGetUsersAssigneeQuery({projectName:u},{skip:!u}),a=b,c=r.useMemo(()=>e?!e.fields||e.fields.length===0?!e.attributes||e.attributes.length===0:e.fields.includes("name"):!1,[e]),l=r.useMemo(()=>e?!e.fields||e.fields.length===0?!e.attributes||e.attributes.length===0:e.fields.includes("label"):!1,[e]),d=f&&!t&&!q,g=r.useMemo(()=>({isInitialized:d,isLoading:t||q,users:a,attribFields:n,writableFields:o,canWriteNamePermission:c,canWriteLabelPermission:l}),[d,t,q,a,n,o,c,l]);return j.jsxRuntimeExports.jsx(P.Provider,{value:g,children:i})},L=()=>{const i=r.useContext(P);if(!i)throw new Error("useProjectDataContext must be used within a ProjectDataProvider");return i};exports.ProjectDataProvider=v;exports.useProjectDataContext=L;
|
|
2
2
|
//# sourceMappingURL=ProjectDataContext.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectDataContext.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ProjectDataContext.tsx"],"sourcesContent":["import { createContext, ReactNode, useContext, useMemo } from 'react'\nimport { useGetUsersAssigneeQuery, useGetMyProjectPermissionsQuery } from '@shared/api'\nimport type { ProjectModel } from '@shared/api'\nimport useAttributeFields, { ProjectTableAttribute } from '../hooks/useAttributesList'\nimport { useProjectContext } from '@shared/context'\n\ntype User = {\n name: string\n fullName: string\n}\n\nexport interface ProjectDataContextProps {\n isInitialized: boolean\n isLoading: boolean\n users: User[]\n // Attributes\n attribFields: ProjectTableAttribute[]\n writableFields?: string[]\n // Permissions\n canWriteNamePermission: boolean\n canWriteLabelPermission: boolean\n}\n\nconst ProjectDataContext = createContext<ProjectDataContextProps | undefined>(undefined)\n\ninterface ProjectDataProviderProps {\n children: ReactNode\n projectName: string\n}\n\nexport const ProjectDataProvider = ({ children, projectName }: ProjectDataProviderProps) => {\n // GET PROJECT DATA\n const { isLoading: isLoadingProject, isSuccess: isSuccessProject } = useProjectContext()\n\n // GET PERMISSIONS\n const { data: projectPermissions } = useGetMyProjectPermissionsQuery(\n { projectName },\n { skip: !projectName },\n )\n const { attrib_write } = projectPermissions || {}\n\n const {\n attribFields,\n writableFields,\n isLoading: isLoadingAttribs,\n } = useAttributeFields({ projectPermissions })\n\n // GET USERS\n const { data: usersData = [] } = useGetUsersAssigneeQuery({ projectName }, { skip: !projectName })\n const users = usersData as User[]\n // Calculate individual permissions\n const canWriteNamePermission = useMemo((): boolean => {\n if (!attrib_write) return false\n // Check fields array for entity field permissions (name/label)\n if (!attrib_write.fields || attrib_write.fields.length === 0) {\n // If no fields specified, check if this is admin (empty attributes = unrestricted)\n if (!attrib_write.attributes || attrib_write.attributes.length === 0) return true\n return false // Has other attributes but no field permissions\n }\n return attrib_write.fields.includes('name')\n }, [attrib_write])\n\n const canWriteLabelPermission = useMemo((): boolean => {\n if (!attrib_write) return false\n // Check fields array for entity field permissions (name/label)\n if (!attrib_write.fields || attrib_write.fields.length === 0) {\n // If no fields specified, check if this is admin (empty attributes = unrestricted)\n if (!attrib_write.attributes || attrib_write.attributes.length === 0) return true\n return false // Has other attributes but no field permissions\n }\n return attrib_write.fields.includes('label')\n }, [attrib_write])\n\n const isInitialized = isSuccessProject && !isLoadingProject && !isLoadingAttribs\n\n const value = useMemo(\n () => ({\n isInitialized,\n isLoading: isLoadingProject || isLoadingAttribs,\n\n users,\n attribFields,\n writableFields,\n canWriteNamePermission,\n canWriteLabelPermission,\n }),\n [\n isInitialized,\n isLoadingProject,\n isLoadingAttribs,\n\n users,\n attribFields,\n writableFields,\n canWriteNamePermission,\n canWriteLabelPermission,\n ],\n )\n\n return <ProjectDataContext.Provider value={value}>{children}</ProjectDataContext.Provider>\n}\n\nexport const useProjectDataContext = () => {\n const context = useContext(ProjectDataContext)\n if (!context) {\n throw new Error('useProjectDataContext must be used within a ProjectDataProvider')\n }\n return context\n}\n"],"names":["ProjectDataContext","createContext","ProjectDataProvider","children","projectName","isLoadingProject","isSuccessProject","useProjectContext","projectPermissions","useGetMyProjectPermissionsQuery","attrib_write","attribFields","writableFields","isLoadingAttribs","useAttributeFields","usersData","useGetUsersAssigneeQuery","users","canWriteNamePermission","useMemo","canWriteLabelPermission","isInitialized","value","jsx","useProjectDataContext","context","useContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProjectDataContext.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ProjectDataContext.tsx"],"sourcesContent":["import { createContext, ReactNode, useContext, useMemo } from 'react'\nimport { useGetUsersAssigneeQuery, useGetMyProjectPermissionsQuery } from '@shared/api'\nimport type { ProjectModel } from '@shared/api'\nimport useAttributeFields, { ProjectTableAttribute } from '../hooks/useAttributesList'\nimport { useProjectContext } from '@shared/context'\n\ntype User = {\n name: string\n fullName: string\n}\n\nexport interface ProjectDataContextProps {\n isInitialized: boolean\n isLoading: boolean\n users: User[]\n // Attributes\n attribFields: ProjectTableAttribute[]\n writableFields?: string[]\n // Permissions\n canWriteNamePermission: boolean\n canWriteLabelPermission: boolean\n}\n\nconst ProjectDataContext = createContext<ProjectDataContextProps | undefined>(undefined)\n\ninterface ProjectDataProviderProps {\n children: ReactNode\n projectName: string\n}\n\nexport const ProjectDataProvider = ({ children, projectName }: ProjectDataProviderProps) => {\n // GET PROJECT DATA\n const { isLoading: isLoadingProject, isSuccess: isSuccessProject } = useProjectContext()\n\n // GET PERMISSIONS\n const { data: projectPermissions } = useGetMyProjectPermissionsQuery(\n { projectName },\n { skip: !projectName },\n )\n const { attrib_write } = projectPermissions || {}\n\n const {\n attribFields,\n writableFields,\n isLoading: isLoadingAttribs,\n } = useAttributeFields({ projectPermissions })\n\n // GET USERS\n const { data: usersData = [] } = useGetUsersAssigneeQuery({ projectName }, { skip: !projectName })\n const users = usersData as User[]\n // Calculate individual permissions\n const canWriteNamePermission = useMemo((): boolean => {\n if (!attrib_write) return false\n // Check fields array for entity field permissions (name/label)\n if (!attrib_write.fields || attrib_write.fields.length === 0) {\n // If no fields specified, check if this is admin (empty attributes = unrestricted)\n if (!attrib_write.attributes || attrib_write.attributes.length === 0) return true\n return false // Has other attributes but no field permissions\n }\n return attrib_write.fields.includes('name')\n }, [attrib_write])\n\n const canWriteLabelPermission = useMemo((): boolean => {\n if (!attrib_write) return false\n // Check fields array for entity field permissions (name/label)\n if (!attrib_write.fields || attrib_write.fields.length === 0) {\n // If no fields specified, check if this is admin (empty attributes = unrestricted)\n if (!attrib_write.attributes || attrib_write.attributes.length === 0) return true\n return false // Has other attributes but no field permissions\n }\n return attrib_write.fields.includes('label')\n }, [attrib_write])\n\n const isInitialized = isSuccessProject && !isLoadingProject && !isLoadingAttribs\n\n const value = useMemo(\n () => ({\n isInitialized,\n isLoading: isLoadingProject || isLoadingAttribs,\n\n users,\n attribFields,\n writableFields,\n canWriteNamePermission,\n canWriteLabelPermission,\n }),\n [\n isInitialized,\n isLoadingProject,\n isLoadingAttribs,\n\n users,\n attribFields,\n writableFields,\n canWriteNamePermission,\n canWriteLabelPermission,\n ],\n )\n\n return <ProjectDataContext.Provider value={value}>{children}</ProjectDataContext.Provider>\n}\n\nexport const useProjectDataContext = () => {\n const context = useContext(ProjectDataContext)\n if (!context) {\n throw new Error('useProjectDataContext must be used within a ProjectDataProvider')\n }\n return context\n}\n"],"names":["ProjectDataContext","createContext","ProjectDataProvider","children","projectName","isLoadingProject","isSuccessProject","useProjectContext","projectPermissions","useGetMyProjectPermissionsQuery","attrib_write","attribFields","writableFields","isLoadingAttribs","useAttributeFields","usersData","useGetUsersAssigneeQuery","users","canWriteNamePermission","useMemo","canWriteLabelPermission","isInitialized","value","jsx","useProjectDataContext","context","useContext"],"mappings":"2sLAuBA,MAAMA,EAAqBC,gBAAmD,MAAS,EAO1EC,EAAsB,CAAC,CAAE,SAAAC,EAAU,YAAAC,KAA4C,CAE1F,KAAM,CAAE,UAAWC,EAAkB,UAAWC,CAAA,EAAqBC,EAAAA,kBAAkB,EAGjF,CAAE,KAAMC,CAAA,EAAuBC,EAAA,gCACnC,CAAE,YAAAL,CAAY,EACd,CAAE,KAAM,CAACA,CAAY,CACvB,EACM,CAAE,aAAAM,GAAiBF,GAAsB,CAAC,EAE1C,CACJ,aAAAG,EACA,eAAAC,EACA,UAAWC,CAAA,EACTC,EAAmB,CAAE,mBAAAN,EAAoB,EAGvC,CAAE,KAAMO,EAAY,CAAA,GAAOC,EAAAA,yBAAyB,CAAE,YAAAZ,GAAe,CAAE,KAAM,CAACA,EAAa,EAC3Fa,EAAQF,EAERG,EAAyBC,EAAAA,QAAQ,IAChCT,EAED,CAACA,EAAa,QAAUA,EAAa,OAAO,SAAW,EAErD,CAACA,EAAa,YAAcA,EAAa,WAAW,SAAW,EAG9DA,EAAa,OAAO,SAAS,MAAM,EAPhB,GAQzB,CAACA,CAAY,CAAC,EAEXU,EAA0BD,EAAAA,QAAQ,IACjCT,EAED,CAACA,EAAa,QAAUA,EAAa,OAAO,SAAW,EAErD,CAACA,EAAa,YAAcA,EAAa,WAAW,SAAW,EAG9DA,EAAa,OAAO,SAAS,OAAO,EAPjB,GAQzB,CAACA,CAAY,CAAC,EAEXW,EAAgBf,GAAoB,CAACD,GAAoB,CAACQ,EAE1DS,EAAQH,EAAA,QACZ,KAAO,CACL,cAAAE,EACA,UAAWhB,GAAoBQ,EAE/B,MAAAI,EACA,aAAAN,EACA,eAAAC,EACA,uBAAAM,EACA,wBAAAE,CAAA,GAEF,CACEC,EACAhB,EACAQ,EAEAI,EACAN,EACAC,EACAM,EACAE,CAAA,CAEJ,EAEA,OAAQG,EAAAA,kBAAAA,IAAAvB,EAAmB,SAAnB,CAA4B,MAAAsB,EAAe,SAAAnB,CAAS,CAAA,CAC9D,EAEaqB,EAAwB,IAAM,CACnC,MAAAC,EAAUC,aAAW1B,CAAkB,EAC7C,GAAI,CAACyB,EACG,MAAA,IAAI,MAAM,iEAAiE,EAE5E,OAAAA,CACT"}
|
|
@@ -50,6 +50,8 @@ import "../../../api/queries/attributes/getAttributes.es.js";
|
|
|
50
50
|
import "../../../api/queries/attributes/updateAttributes.es.js";
|
|
51
51
|
import "../../../api/queries/authentication/getAuthentication.es.js";
|
|
52
52
|
import "../../../api/queries/cloud/cloud.es.js";
|
|
53
|
+
import "../../../api/queries/config/getConfig.es.js";
|
|
54
|
+
import "../../../api/queries/config/updateConfig.es.js";
|
|
53
55
|
import "../../../api/queries/entities/getEntity.es.js";
|
|
54
56
|
import "../../../api/queries/entities/getEntityPanel.es.js";
|
|
55
57
|
import "../../../api/queries/entities/updateEntity.es.js";
|
|
@@ -101,7 +103,7 @@ import "../../../context/GlobalContext.es.js";
|
|
|
101
103
|
import { useProjectContext as L } from "../../../context/ProjectContext.es.js";
|
|
102
104
|
import "../../../context/ProjectFoldersContext.es.js";
|
|
103
105
|
import "../../../context/UriContext.es.js";
|
|
104
|
-
const d = g(void 0),
|
|
106
|
+
const d = g(void 0), Cr = ({ children: r, projectName: i }) => {
|
|
105
107
|
const { isLoading: o, isSuccess: f } = L(), { data: e } = h(
|
|
106
108
|
{ projectName: i },
|
|
107
109
|
{ skip: !i }
|
|
@@ -131,14 +133,14 @@ const d = g(void 0), jr = ({ children: r, projectName: i }) => {
|
|
|
131
133
|
]
|
|
132
134
|
);
|
|
133
135
|
return /* @__PURE__ */ x.jsx(d.Provider, { value: b, children: r });
|
|
134
|
-
},
|
|
136
|
+
}, Dr = () => {
|
|
135
137
|
const r = j(d);
|
|
136
138
|
if (!r)
|
|
137
139
|
throw new Error("useProjectDataContext must be used within a ProjectDataProvider");
|
|
138
140
|
return r;
|
|
139
141
|
};
|
|
140
142
|
export {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
+
Cr as ProjectDataProvider,
|
|
144
|
+
Dr as useProjectDataContext
|
|
143
145
|
};
|
|
144
146
|
//# sourceMappingURL=ProjectDataContext.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectDataContext.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ProjectDataContext.tsx"],"sourcesContent":["import { createContext, ReactNode, useContext, useMemo } from 'react'\nimport { useGetUsersAssigneeQuery, useGetMyProjectPermissionsQuery } from '@shared/api'\nimport type { ProjectModel } from '@shared/api'\nimport useAttributeFields, { ProjectTableAttribute } from '../hooks/useAttributesList'\nimport { useProjectContext } from '@shared/context'\n\ntype User = {\n name: string\n fullName: string\n}\n\nexport interface ProjectDataContextProps {\n isInitialized: boolean\n isLoading: boolean\n users: User[]\n // Attributes\n attribFields: ProjectTableAttribute[]\n writableFields?: string[]\n // Permissions\n canWriteNamePermission: boolean\n canWriteLabelPermission: boolean\n}\n\nconst ProjectDataContext = createContext<ProjectDataContextProps | undefined>(undefined)\n\ninterface ProjectDataProviderProps {\n children: ReactNode\n projectName: string\n}\n\nexport const ProjectDataProvider = ({ children, projectName }: ProjectDataProviderProps) => {\n // GET PROJECT DATA\n const { isLoading: isLoadingProject, isSuccess: isSuccessProject } = useProjectContext()\n\n // GET PERMISSIONS\n const { data: projectPermissions } = useGetMyProjectPermissionsQuery(\n { projectName },\n { skip: !projectName },\n )\n const { attrib_write } = projectPermissions || {}\n\n const {\n attribFields,\n writableFields,\n isLoading: isLoadingAttribs,\n } = useAttributeFields({ projectPermissions })\n\n // GET USERS\n const { data: usersData = [] } = useGetUsersAssigneeQuery({ projectName }, { skip: !projectName })\n const users = usersData as User[]\n // Calculate individual permissions\n const canWriteNamePermission = useMemo((): boolean => {\n if (!attrib_write) return false\n // Check fields array for entity field permissions (name/label)\n if (!attrib_write.fields || attrib_write.fields.length === 0) {\n // If no fields specified, check if this is admin (empty attributes = unrestricted)\n if (!attrib_write.attributes || attrib_write.attributes.length === 0) return true\n return false // Has other attributes but no field permissions\n }\n return attrib_write.fields.includes('name')\n }, [attrib_write])\n\n const canWriteLabelPermission = useMemo((): boolean => {\n if (!attrib_write) return false\n // Check fields array for entity field permissions (name/label)\n if (!attrib_write.fields || attrib_write.fields.length === 0) {\n // If no fields specified, check if this is admin (empty attributes = unrestricted)\n if (!attrib_write.attributes || attrib_write.attributes.length === 0) return true\n return false // Has other attributes but no field permissions\n }\n return attrib_write.fields.includes('label')\n }, [attrib_write])\n\n const isInitialized = isSuccessProject && !isLoadingProject && !isLoadingAttribs\n\n const value = useMemo(\n () => ({\n isInitialized,\n isLoading: isLoadingProject || isLoadingAttribs,\n\n users,\n attribFields,\n writableFields,\n canWriteNamePermission,\n canWriteLabelPermission,\n }),\n [\n isInitialized,\n isLoadingProject,\n isLoadingAttribs,\n\n users,\n attribFields,\n writableFields,\n canWriteNamePermission,\n canWriteLabelPermission,\n ],\n )\n\n return <ProjectDataContext.Provider value={value}>{children}</ProjectDataContext.Provider>\n}\n\nexport const useProjectDataContext = () => {\n const context = useContext(ProjectDataContext)\n if (!context) {\n throw new Error('useProjectDataContext must be used within a ProjectDataProvider')\n }\n return context\n}\n"],"names":["ProjectDataContext","createContext","ProjectDataProvider","children","projectName","isLoadingProject","isSuccessProject","useProjectContext","projectPermissions","useGetMyProjectPermissionsQuery","attrib_write","attribFields","writableFields","isLoadingAttribs","useAttributeFields","usersData","useGetUsersAssigneeQuery","users","canWriteNamePermission","useMemo","canWriteLabelPermission","isInitialized","value","jsx","useProjectDataContext","context","useContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProjectDataContext.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ProjectDataContext.tsx"],"sourcesContent":["import { createContext, ReactNode, useContext, useMemo } from 'react'\nimport { useGetUsersAssigneeQuery, useGetMyProjectPermissionsQuery } from '@shared/api'\nimport type { ProjectModel } from '@shared/api'\nimport useAttributeFields, { ProjectTableAttribute } from '../hooks/useAttributesList'\nimport { useProjectContext } from '@shared/context'\n\ntype User = {\n name: string\n fullName: string\n}\n\nexport interface ProjectDataContextProps {\n isInitialized: boolean\n isLoading: boolean\n users: User[]\n // Attributes\n attribFields: ProjectTableAttribute[]\n writableFields?: string[]\n // Permissions\n canWriteNamePermission: boolean\n canWriteLabelPermission: boolean\n}\n\nconst ProjectDataContext = createContext<ProjectDataContextProps | undefined>(undefined)\n\ninterface ProjectDataProviderProps {\n children: ReactNode\n projectName: string\n}\n\nexport const ProjectDataProvider = ({ children, projectName }: ProjectDataProviderProps) => {\n // GET PROJECT DATA\n const { isLoading: isLoadingProject, isSuccess: isSuccessProject } = useProjectContext()\n\n // GET PERMISSIONS\n const { data: projectPermissions } = useGetMyProjectPermissionsQuery(\n { projectName },\n { skip: !projectName },\n )\n const { attrib_write } = projectPermissions || {}\n\n const {\n attribFields,\n writableFields,\n isLoading: isLoadingAttribs,\n } = useAttributeFields({ projectPermissions })\n\n // GET USERS\n const { data: usersData = [] } = useGetUsersAssigneeQuery({ projectName }, { skip: !projectName })\n const users = usersData as User[]\n // Calculate individual permissions\n const canWriteNamePermission = useMemo((): boolean => {\n if (!attrib_write) return false\n // Check fields array for entity field permissions (name/label)\n if (!attrib_write.fields || attrib_write.fields.length === 0) {\n // If no fields specified, check if this is admin (empty attributes = unrestricted)\n if (!attrib_write.attributes || attrib_write.attributes.length === 0) return true\n return false // Has other attributes but no field permissions\n }\n return attrib_write.fields.includes('name')\n }, [attrib_write])\n\n const canWriteLabelPermission = useMemo((): boolean => {\n if (!attrib_write) return false\n // Check fields array for entity field permissions (name/label)\n if (!attrib_write.fields || attrib_write.fields.length === 0) {\n // If no fields specified, check if this is admin (empty attributes = unrestricted)\n if (!attrib_write.attributes || attrib_write.attributes.length === 0) return true\n return false // Has other attributes but no field permissions\n }\n return attrib_write.fields.includes('label')\n }, [attrib_write])\n\n const isInitialized = isSuccessProject && !isLoadingProject && !isLoadingAttribs\n\n const value = useMemo(\n () => ({\n isInitialized,\n isLoading: isLoadingProject || isLoadingAttribs,\n\n users,\n attribFields,\n writableFields,\n canWriteNamePermission,\n canWriteLabelPermission,\n }),\n [\n isInitialized,\n isLoadingProject,\n isLoadingAttribs,\n\n users,\n attribFields,\n writableFields,\n canWriteNamePermission,\n canWriteLabelPermission,\n ],\n )\n\n return <ProjectDataContext.Provider value={value}>{children}</ProjectDataContext.Provider>\n}\n\nexport const useProjectDataContext = () => {\n const context = useContext(ProjectDataContext)\n if (!context) {\n throw new Error('useProjectDataContext must be used within a ProjectDataProvider')\n }\n return context\n}\n"],"names":["ProjectDataContext","createContext","ProjectDataProvider","children","projectName","isLoadingProject","isSuccessProject","useProjectContext","projectPermissions","useGetMyProjectPermissionsQuery","attrib_write","attribFields","writableFields","isLoadingAttribs","useAttributeFields","usersData","useGetUsersAssigneeQuery","users","canWriteNamePermission","useMemo","canWriteLabelPermission","isInitialized","value","jsx","useProjectDataContext","context","useContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAMA,IAAqBC,EAAmD,MAAS,GAO1EC,KAAsB,CAAC,EAAE,UAAAC,GAAU,aAAAC,QAA4C;AAE1F,QAAM,EAAE,WAAWC,GAAkB,WAAWC,EAAA,IAAqBC,EAAkB,GAGjF,EAAE,MAAMC,EAAA,IAAuBC;AAAA,IACnC,EAAE,aAAAL,EAAY;AAAA,IACd,EAAE,MAAM,CAACA,EAAY;AAAA,EACvB,GACM,EAAE,cAAAM,MAAiBF,KAAsB,CAAC,GAE1C;AAAA,IACJ,cAAAG;AAAA,IACA,gBAAAC;AAAA,IACA,WAAWC;AAAA,EAAA,IACTC,EAAmB,EAAE,oBAAAN,GAAoB,GAGvC,EAAE,MAAMO,IAAY,CAAA,MAAOC,EAAyB,EAAE,aAAAZ,KAAe,EAAE,MAAM,CAACA,GAAa,GAC3Fa,IAAQF,GAERG,IAAyBC,EAAQ,MAChCT,IAED,CAACA,EAAa,UAAUA,EAAa,OAAO,WAAW,IAErD,CAACA,EAAa,cAAcA,EAAa,WAAW,WAAW,IAG9DA,EAAa,OAAO,SAAS,MAAM,IAPhB,IAQzB,CAACA,CAAY,CAAC,GAEXU,IAA0BD,EAAQ,MACjCT,IAED,CAACA,EAAa,UAAUA,EAAa,OAAO,WAAW,IAErD,CAACA,EAAa,cAAcA,EAAa,WAAW,WAAW,IAG9DA,EAAa,OAAO,SAAS,OAAO,IAPjB,IAQzB,CAACA,CAAY,CAAC,GAEXW,IAAgBf,KAAoB,CAACD,KAAoB,CAACQ,GAE1DS,IAAQH;AAAA,IACZ,OAAO;AAAA,MACL,eAAAE;AAAA,MACA,WAAWhB,KAAoBQ;AAAA,MAE/B,OAAAI;AAAA,MACA,cAAAN;AAAA,MACA,gBAAAC;AAAA,MACA,wBAAAM;AAAA,MACA,yBAAAE;AAAA,IAAA;AAAA,IAEF;AAAA,MACEC;AAAA,MACAhB;AAAA,MACAQ;AAAA,MAEAI;AAAA,MACAN;AAAA,MACAC;AAAA,MACAM;AAAA,MACAE;AAAA,IAAA;AAAA,EAEJ;AAEA,SAAQG,gBAAAA,EAAAA,IAAAvB,EAAmB,UAAnB,EAA4B,OAAAsB,GAAe,UAAAnB,EAAS,CAAA;AAC9D,GAEaqB,KAAwB,MAAM;AACnC,QAAAC,IAAUC,EAAW1B,CAAkB;AAC7C,MAAI,CAACyB;AACG,UAAA,IAAI,MAAM,iEAAiE;AAE5E,SAAAA;AACT;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const K=require("../../../../../_virtual/jsx-runtime.cjs.js"),o=require("react"),t=require("../utils/cellUtils.cjs.js"),Q=require("../ProjectTreeTable.cjs.js"),p=require("./SelectionCellsContext.cjs.js");require("react-toastify");require("./ProjectTableQueriesContext.cjs.js");require("./ProjectTableContext.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../context/DetailsPanelContext.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/PowerpackContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContext.cjs.js");require("../../../context/UriContext.cjs.js");require("@ynput/ayon-react-components");;/* empty css */require("clsx");require("../../ContextMenu/ContextMenuContext.cjs.js");require("lodash");require("uuid");require("../../../util/pubsub.cjs.js");require("./ClipboardContext.cjs.js");require("./ProjectDataContext.cjs.js");require("./CellEditingContext.cjs.js");require("short-uuid");require("@tanstack/react-table");require("../widgets/CollapsedWidget.cjs.js");require("../widgets/DateWidget.cjs.js");require("../widgets/EnumWidget.cjs.js");require("../widgets/TextWidget.cjs.js");require("../widgets/BooleanWidget.cjs.js");require("../widgets/CellWidget.cjs.js");require("../widgets/EntityNameWidget.cjs.js");require("../widgets/GroupHeaderWidget.cjs.js");require("../widgets/ThumbnailWidget.cjs.js");require("../../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("axios");require("../../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../Feed/context/FeedContext.cjs.js");require("../../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../../Feed/components/CommentInput/CommentInput.cjs.js");require("../../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../Feed/components/ActivityDate.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../../Feed/Feed.styled.cjs.js");require("date-fns");require("../../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("./ColumnSettingsContext.cjs.js");require("./SelectedRowsContext.cjs.js");require("./DetailsPanelEntityContext.cjs.js");require("../components/HeaderActionButton.cjs.js");require("../components/RowSelectionHeader.cjs.js");require("../components/SelectionCell.cjs.js");require("../components/ColumnHeaderMenu.cjs.js");require("../../DetailsPanel/DetailsPanel.styled.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");require("../../DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");require("../../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../../components/PlayableIcon/PlayableIcon.cjs.js");require("../../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../Actions/Actions.styled.cjs.js");require("../../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../Actions/ActionIcon.cjs.js");require("../../Views/context/ViewsContext.cjs.js");require("../../Views/Views.styled.cjs.js");require("../../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("../../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../../components/EntityPath/EntityPath.styled.cjs.js");require("../../../components/EntityPath/SegmentProvider.cjs.js");require("../../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../../components/Watchers/Watchers.cjs.js");require("../../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../../components/Powerpack/PowerpackButton.cjs.js");require("../../../components/Powerpack/PricingLink.cjs.js");require("../../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../../components/Powerpack/CTAButton.cjs.js");require("../../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../../components/SizeSlider/SizeSlider.cjs.js");require("../../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../../components/AttributeEditor/components/MinMaxField.cjs.js");require("../../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../../components/SearchFilter/filterDates.cjs.js");require("../../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../../components/Badge/Badge.cjs.js");require("../../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../../components/Feedback/FeedbackContext.cjs.js");require("../../../components/Feedback/SupportBubble.cjs.js");require("../../../components/Chips/Chips.cjs.js");require("../../../components/LinksManager/LinksManager.styled.cjs.js");require("../../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../../components/StyledLink/StyledLink.cjs.js");require("../../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../../components/AccessUser/AccessUser.cjs.js");require("../../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../../components/SortingSetting/SortingSetting.styled.cjs.js");require("../../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../../components/Menu/Menu.styled.cjs.js");require("../../../components/Menu/MenuItem.cjs.js");require("../../../components/LinksManager/CellEditingDialog.cjs.js");require("../widgets/EmptyWidget.cjs.js");require("../widgets/ErrorWidget.cjs.js");require("../ProjectTreeTable.styled.cjs.js");require("../widgets/LoadMoreWidget.cjs.js");const X=require("../hooks/useCheckSelectedCellsVisible.cjs.js"),Y=({children:F})=>{const[n,I]=o.useState(new Set),[f,d]=o.useState(null),[T,k]=o.useState(!1),[w,S]=o.useState(null),[g,z]=o.useState({rowIdToIndex:new Map,colIdToIndex:new Map,indexToRowId:new Map,indexToColId:new Map}),m=e=>JSON.stringify(Array.from(e.entries())),s=o.useMemo(()=>g,[m(g.rowIdToIndex),m(g.colIdToIndex),m(g.indexToRowId),m(g.indexToColId)]),O=o.useRef(!1),P=o.useMemo(()=>Array.from(n).filter(e=>{var r,u;return((r=t.parseCellId(e))==null?void 0:r.colId)===p.ROW_SELECTION_COLUMN_ID&&((u=t.parseCellId(e))==null?void 0:u.rowId)}).map(e=>{var r;return(r=t.parseCellId(e))==null?void 0:r.rowId}),[n]);X.useCheckSelectedCellsVisible({selectedCells:n,setSelectedCells:I,focusedCellId:f,setFocusedCellId:d});const _=o.useCallback((e,r)=>{const u=new Map,q=new Map,i=new Map,l=new Map;e.forEach((c,a)=>{u.set(c,a),i.set(a,c)}),r.forEach((c,a)=>{q.set(c,a),l.set(a,c)}),z({rowIdToIndex:u,colIdToIndex:q,indexToRowId:i,indexToColId:l})},[]),C=o.useCallback((e,r)=>{I(u=>{let q=new Set(e);if(r.colId!==p.ROW_SELECTION_COLUMN_ID&&r.colId!==Q.DRAG_HANDLE_COLUMN_ID){const i=Array.from(u).filter(l=>{var c;return((c=t.parseCellId(l))==null?void 0:c.colId)===p.ROW_SELECTION_COLUMN_ID});i.length&&(q=new Set([...q,...i]))}return q})},[]),M=o.useCallback((e,r,u)=>{u||C(new Set,e);const q=s.rowIdToIndex.get(e.rowId)??0,i=s.colIdToIndex.get(e.colId)??0,l=s.rowIdToIndex.get(r.rowId)??0,c=s.colIdToIndex.get(r.colId)??0,a=Math.min(q,l),x=Math.max(q,l),H=Math.min(i,c),J=Math.max(i,c),v=new Set(u?n:[]);for(let R=a;R<=x;R++){const G=s.indexToRowId.get(R);if(G)for(let b=H;b<=J;b++){const W=s.indexToColId.get(b);W&&v.add(t.getCellId(G,W))}}return v},[s,n,C]),E=o.useCallback((e,r)=>{const u=t.parseCellId(e);u&&(k(!0),O.current=n.has(e),r?I(q=>{const i=new Set(q);return i.has(e)?(i.delete(e),f===e&&(i.size>0?d(Array.from(i)[Array.from(i).length-1]):d(null))):(i.add(e),d(e),S(u)),i}):n.size===1&&n.has(e)&&[p.ROW_SELECTION_COLUMN_ID,"name"].includes(u.colId)?(I(new Set),S(null),d(null)):(C(new Set([e]),u),S(u),d(e)))},[n,f,C]),N=o.useCallback((e,r)=>{if(!T||!w)return;const u=t.parseCellId(e);if(u)if(r)I(q=>{const i=new Set(q);return t.parseCellId(e)&&(O.current?i.delete(e):i.add(e)),i});else{const q=M(w,u,!1);C(q,u)}},[T,w,M,C]),L=o.useCallback(()=>{k(!1)},[]),y=o.useCallback((e,r,u)=>{const q=t.parseCellId(e);if(q)if(u&&w){const i=M(w,q,r);C(i,q)}else r?I(i=>{const l=new Set(i);return l.has(e)?l.delete(e):l.add(e),l}):(C(new Set([e]),q),S(q))},[w,M,C]),A=o.useCallback(e=>{d(e)},[]),B=o.useCallback(()=>{I(new Set),S(null),d(null)},[]),h=o.useCallback(e=>n.has(e),[n]),D=o.useCallback(e=>e===f,[f]),U=o.useCallback(e=>t.parseCellId(e),[]),j=o.useCallback(e=>{if(!h(e))return[];const r=t.parseCellId(e);if(!r)return[];const u=s.rowIdToIndex.get(r.rowId),q=s.colIdToIndex.get(r.colId);if(u===void 0||q===void 0)return[];const i=s.indexToRowId.get(u-1),l=s.indexToColId.get(q+1),c=s.indexToRowId.get(u+1),a=s.indexToColId.get(q-1);let x=t.BorderPosition.None;return(!i||!n.has(t.getCellId(i,r.colId)))&&(x|=t.BorderPosition.Top),(!l||!n.has(t.getCellId(r.rowId,l)))&&(x|=t.BorderPosition.Right),(!c||!n.has(t.getCellId(c,r.colId)))&&(x|=t.BorderPosition.Bottom),(!a||!n.has(t.getCellId(r.rowId,a)))&&(x|=t.BorderPosition.Left),t.getBorderClasses(x)},[n,s,h]),V=o.useMemo(()=>({selectedCells:n,selectedRows:P,focusedCellId:f,selectionInProgress:T,anchorCell:w,gridMap:s,setSelectedCells:I,setFocusedCellId:d,setAnchorCell:S,registerGrid:_,selectCell:y,startSelection:E,extendSelection:N,endSelection:L,focusCell:A,clearSelection:B,isCellSelected:h,isCellFocused:D,getCellPositionFromId:U,getCellBorderClasses:j}),[n,P,f,T,w,s,I,d,S,_,y,E,N,L,A,B,h,D,U,j]);return K.jsxRuntimeExports.jsx(p.SelectionCellsContext.Provider,{value:V,children:F})};exports.SelectionCellsProvider=Y;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const K=require("../../../../../_virtual/jsx-runtime.cjs.js"),o=require("react"),t=require("../utils/cellUtils.cjs.js"),Q=require("../ProjectTreeTable.cjs.js"),p=require("./SelectionCellsContext.cjs.js");require("react-toastify");require("./ProjectTableQueriesContext.cjs.js");require("./ProjectTableContext.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../context/DetailsPanelContext.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/PowerpackContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContext.cjs.js");require("../../../context/UriContext.cjs.js");require("@ynput/ayon-react-components");;/* empty css */require("clsx");require("../../ContextMenu/ContextMenuContext.cjs.js");require("lodash");require("uuid");require("../../../util/pubsub.cjs.js");require("./ClipboardContext.cjs.js");require("./ProjectDataContext.cjs.js");require("./CellEditingContext.cjs.js");require("short-uuid");require("@tanstack/react-table");require("../widgets/CollapsedWidget.cjs.js");require("../widgets/DateWidget.cjs.js");require("../widgets/EnumWidget.cjs.js");require("../widgets/TextWidget.cjs.js");require("../widgets/BooleanWidget.cjs.js");require("../widgets/CellWidget.cjs.js");require("../widgets/EntityNameWidget.cjs.js");require("../widgets/GroupHeaderWidget.cjs.js");require("../widgets/ThumbnailWidget.cjs.js");require("../../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("axios");require("../../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../Feed/context/FeedContext.cjs.js");require("../../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../../Feed/components/CommentInput/CommentInput.cjs.js");require("../../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../Feed/components/ActivityDate.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../../Feed/Feed.styled.cjs.js");require("date-fns");require("../../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("./ColumnSettingsContext.cjs.js");require("./SelectedRowsContext.cjs.js");require("./DetailsPanelEntityContext.cjs.js");require("../components/HeaderActionButton.cjs.js");require("../components/RowSelectionHeader.cjs.js");require("../components/SelectionCell.cjs.js");require("../components/ColumnHeaderMenu.cjs.js");require("../../DetailsPanel/DetailsPanel.styled.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");require("../../DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");require("../../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../../components/PlayableIcon/PlayableIcon.cjs.js");require("../../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../Actions/Actions.styled.cjs.js");require("../../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../Actions/ActionIcon.cjs.js");require("../../Views/context/ViewsContext.cjs.js");require("../../Views/Views.styled.cjs.js");require("../../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("../../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../../components/EntityPath/EntityPath.styled.cjs.js");require("../../../components/EntityPath/SegmentProvider.cjs.js");require("../../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../../components/Watchers/Watchers.cjs.js");require("../../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../../components/Powerpack/PowerpackButton.cjs.js");require("../../../components/Powerpack/PricingLink.cjs.js");require("../../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../../components/Powerpack/CTAButton.cjs.js");require("../../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../../components/SizeSlider/SizeSlider.cjs.js");require("../../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../../components/AttributeEditor/components/MinMaxField.cjs.js");require("../../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../../components/SearchFilter/filterDates.cjs.js");require("../../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../../components/Badge/Badge.cjs.js");require("../../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../../components/Feedback/FeedbackContext.cjs.js");require("../../../components/Feedback/SupportBubble.cjs.js");require("../../../components/Chips/Chips.cjs.js");require("../../../components/LinksManager/LinksManager.styled.cjs.js");require("../../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../../components/StyledLink/StyledLink.cjs.js");require("../../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../../components/AccessUser/AccessUser.cjs.js");require("../../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../../components/SortingSetting/SortingSetting.styled.cjs.js");require("../../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../../components/Menu/Menu.styled.cjs.js");require("../../../components/Menu/MenuItem.cjs.js");require("../../../components/LinksManager/CellEditingDialog.cjs.js");require("../widgets/EmptyWidget.cjs.js");require("../widgets/ErrorWidget.cjs.js");require("../ProjectTreeTable.styled.cjs.js");require("../widgets/LoadMoreWidget.cjs.js");const X=require("../hooks/useCheckSelectedCellsVisible.cjs.js"),Y=({children:F})=>{const[n,I]=o.useState(new Set),[f,d]=o.useState(null),[T,k]=o.useState(!1),[w,S]=o.useState(null),[g,z]=o.useState({rowIdToIndex:new Map,colIdToIndex:new Map,indexToRowId:new Map,indexToColId:new Map}),m=e=>JSON.stringify(Array.from(e.entries())),s=o.useMemo(()=>g,[m(g.rowIdToIndex),m(g.colIdToIndex),m(g.indexToRowId),m(g.indexToColId)]),O=o.useRef(!1),P=o.useMemo(()=>Array.from(n).filter(e=>{var r,u;return((r=t.parseCellId(e))==null?void 0:r.colId)===p.ROW_SELECTION_COLUMN_ID&&((u=t.parseCellId(e))==null?void 0:u.rowId)}).map(e=>{var r;return(r=t.parseCellId(e))==null?void 0:r.rowId}),[n]);X.useCheckSelectedCellsVisible({selectedCells:n,setSelectedCells:I,focusedCellId:f,setFocusedCellId:d});const _=o.useCallback((e,r)=>{const u=new Map,q=new Map,i=new Map,l=new Map;e.forEach((c,a)=>{u.set(c,a),i.set(a,c)}),r.forEach((c,a)=>{q.set(c,a),l.set(a,c)}),z({rowIdToIndex:u,colIdToIndex:q,indexToRowId:i,indexToColId:l})},[]),C=o.useCallback((e,r)=>{I(u=>{let q=new Set(e);if(r.colId!==p.ROW_SELECTION_COLUMN_ID&&r.colId!==Q.DRAG_HANDLE_COLUMN_ID){const i=Array.from(u).filter(l=>{var c;return((c=t.parseCellId(l))==null?void 0:c.colId)===p.ROW_SELECTION_COLUMN_ID});i.length&&(q=new Set([...q,...i]))}return q})},[]),M=o.useCallback((e,r,u)=>{u||C(new Set,e);const q=s.rowIdToIndex.get(e.rowId)??0,i=s.colIdToIndex.get(e.colId)??0,l=s.rowIdToIndex.get(r.rowId)??0,c=s.colIdToIndex.get(r.colId)??0,a=Math.min(q,l),x=Math.max(q,l),H=Math.min(i,c),J=Math.max(i,c),v=new Set(u?n:[]);for(let R=a;R<=x;R++){const G=s.indexToRowId.get(R);if(G)for(let b=H;b<=J;b++){const W=s.indexToColId.get(b);W&&v.add(t.getCellId(G,W))}}return v},[s,n,C]),E=o.useCallback((e,r)=>{const u=t.parseCellId(e);u&&(k(!0),O.current=n.has(e),r?I(q=>{const i=new Set(q);return i.has(e)?(i.delete(e),f===e&&(i.size>0?d(Array.from(i)[Array.from(i).length-1]):d(null))):(i.add(e),d(e),S(u)),i}):n.size===1&&n.has(e)&&[p.ROW_SELECTION_COLUMN_ID,"name"].includes(u.colId)?(I(new Set),S(null),d(null)):(C(new Set([e]),u),S(u),d(e)))},[n,f,C]),N=o.useCallback((e,r)=>{if(!T||!w)return;const u=t.parseCellId(e);if(u)if(r)I(q=>{const i=new Set(q);return t.parseCellId(e)&&(O.current?i.delete(e):i.add(e)),i});else{const q=M(w,u,!1);C(q,u)}},[T,w,M,C]),L=o.useCallback(()=>{k(!1)},[]),y=o.useCallback((e,r,u)=>{const q=t.parseCellId(e);if(q)if(u&&w){const i=M(w,q,r);C(i,q)}else r?I(i=>{const l=new Set(i);return l.has(e)?l.delete(e):l.add(e),l}):(C(new Set([e]),q),S(q))},[w,M,C]),A=o.useCallback(e=>{d(e)},[]),B=o.useCallback(()=>{I(new Set),S(null),d(null)},[]),h=o.useCallback(e=>n.has(e),[n]),D=o.useCallback(e=>e===f,[f]),U=o.useCallback(e=>t.parseCellId(e),[]),j=o.useCallback(e=>{if(!h(e))return[];const r=t.parseCellId(e);if(!r)return[];const u=s.rowIdToIndex.get(r.rowId),q=s.colIdToIndex.get(r.colId);if(u===void 0||q===void 0)return[];const i=s.indexToRowId.get(u-1),l=s.indexToColId.get(q+1),c=s.indexToRowId.get(u+1),a=s.indexToColId.get(q-1);let x=t.BorderPosition.None;return(!i||!n.has(t.getCellId(i,r.colId)))&&(x|=t.BorderPosition.Top),(!l||!n.has(t.getCellId(r.rowId,l)))&&(x|=t.BorderPosition.Right),(!c||!n.has(t.getCellId(c,r.colId)))&&(x|=t.BorderPosition.Bottom),(!a||!n.has(t.getCellId(r.rowId,a)))&&(x|=t.BorderPosition.Left),t.getBorderClasses(x)},[n,s,h]),V=o.useMemo(()=>({selectedCells:n,selectedRows:P,focusedCellId:f,selectionInProgress:T,anchorCell:w,gridMap:s,setSelectedCells:I,setFocusedCellId:d,setAnchorCell:S,registerGrid:_,selectCell:y,startSelection:E,extendSelection:N,endSelection:L,focusCell:A,clearSelection:B,isCellSelected:h,isCellFocused:D,getCellPositionFromId:U,getCellBorderClasses:j}),[n,P,f,T,w,s,I,d,S,_,y,E,N,L,A,B,h,D,U,j]);return K.jsxRuntimeExports.jsx(p.SelectionCellsContext.Provider,{value:V,children:F})};exports.SelectionCellsProvider=Y;
|
|
2
2
|
//# sourceMappingURL=SelectionCellsProvider.cjs.js.map
|
package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectionCellsProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/SelectionCellsProvider.tsx"],"sourcesContent":["import React, { useState, useCallback, useMemo, ReactNode, useRef } from 'react'\nimport {\n CellId,\n RowId,\n ColId,\n CellPosition,\n getCellId,\n parseCellId,\n BorderPosition,\n getBorderClasses,\n} from '../utils/cellUtils'\nimport { DRAG_HANDLE_COLUMN_ID } from '../ProjectTreeTable'\nimport { SelectionCellsContext, GridMap, ROW_SELECTION_COLUMN_ID } from './SelectionCellsContext'\nimport { useCheckSelectedCellsVisible } from '../hooks'\n\nexport const SelectionCellsProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [selectedCells, setSelectedCells] = useState<Set<CellId>>(new Set())\n const [focusedCellId, setFocusedCellId] = useState<CellId | null>(null)\n const [selectionInProgress, setSelectionInProgress] = useState<boolean>(false)\n const [anchorCell, setAnchorCell] = useState<CellPosition | null>(null)\n const [gridMap, setGridMap] = useState<GridMap>({\n rowIdToIndex: new Map(),\n colIdToIndex: new Map(),\n indexToRowId: new Map(),\n indexToColId: new Map(),\n })\n const mapToString = (map: Map<any, any>) => {\n return JSON.stringify(Array.from(map.entries()))\n }\n\n const stableGridMap = useMemo(\n () => gridMap,\n [\n mapToString(gridMap.rowIdToIndex),\n mapToString(gridMap.colIdToIndex),\n mapToString(gridMap.indexToRowId),\n mapToString(gridMap.indexToColId),\n ],\n )\n // Track whether we're selecting or unselecting during drag\n const initialCellSelected = useRef<boolean>(false)\n\n const selectedRows = useMemo(\n () =>\n Array.from(selectedCells)\n .filter(\n (cellId) =>\n parseCellId(cellId)?.colId === ROW_SELECTION_COLUMN_ID && parseCellId(cellId)?.rowId,\n )\n .map((cellId) => parseCellId(cellId)?.rowId) as string[],\n [selectedCells],\n )\n\n useCheckSelectedCellsVisible({\n selectedCells,\n setSelectedCells,\n focusedCellId,\n setFocusedCellId,\n })\n\n // Register grid structure for range selections\n const registerGrid = useCallback((rows: RowId[], columns: ColId[]) => {\n const rowIdToIndex = new Map<RowId, number>()\n const colIdToIndex = new Map<ColId, number>()\n const indexToRowId = new Map<number, RowId>()\n const indexToColId = new Map<number, ColId>()\n\n rows.forEach((rowId, index) => {\n rowIdToIndex.set(rowId, index)\n indexToRowId.set(index, rowId)\n })\n\n columns.forEach((colId, index) => {\n colIdToIndex.set(colId, index)\n indexToColId.set(index, colId)\n })\n\n setGridMap({ rowIdToIndex, colIdToIndex, indexToRowId, indexToColId })\n }, [])\n\n // update the selection whilst properly handling the row-selection column\n const updateSelection = useCallback((selection: Set<CellId>, position: CellPosition) => {\n setSelectedCells((prevSelectedCells) => {\n let newSelection = new Set(selection)\n if (position.colId !== ROW_SELECTION_COLUMN_ID && position.colId !== DRAG_HANDLE_COLUMN_ID) {\n const rowSelection = Array.from(prevSelectedCells).filter(\n (id) => parseCellId(id)?.colId === ROW_SELECTION_COLUMN_ID,\n )\n if (rowSelection.length) {\n newSelection = new Set([...newSelection, ...rowSelection])\n }\n }\n return newSelection\n })\n }, [])\n\n // Select cells between two points in the grid\n const selectCellRange = useCallback(\n (start: CellPosition, end: CellPosition, additive: boolean): Set<CellId> => {\n if (!additive) {\n // Clear existing selection if not additive\n updateSelection(new Set(), start)\n }\n\n const startRowIdx = stableGridMap.rowIdToIndex.get(start.rowId) ?? 0\n const startColIdx = stableGridMap.colIdToIndex.get(start.colId) ?? 0\n const endRowIdx = stableGridMap.rowIdToIndex.get(end.rowId) ?? 0\n const endColIdx = stableGridMap.colIdToIndex.get(end.colId) ?? 0\n\n const minRowIdx = Math.min(startRowIdx, endRowIdx)\n const maxRowIdx = Math.max(startRowIdx, endRowIdx)\n const minColIdx = Math.min(startColIdx, endColIdx)\n const maxColIdx = Math.max(startColIdx, endColIdx)\n\n const newSelection = new Set(additive ? selectedCells : [])\n\n for (let r = minRowIdx; r <= maxRowIdx; r++) {\n const rowId = stableGridMap.indexToRowId.get(r)\n if (!rowId) continue\n\n for (let c = minColIdx; c <= maxColIdx; c++) {\n const colId = stableGridMap.indexToColId.get(c)\n if (!colId) continue\n\n newSelection.add(getCellId(rowId, colId))\n }\n }\n\n return newSelection\n },\n [stableGridMap, selectedCells, updateSelection],\n )\n\n // Start a selection operation\n const startSelection = useCallback(\n (cellId: CellId, additive: boolean) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n setSelectionInProgress(true)\n // Store whether the initial cell was selected to determine drag behavior\n initialCellSelected.current = selectedCells.has(cellId)\n\n if (additive) {\n // Toggle this cell in multi-select mode\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n if (newSelection.has(cellId)) {\n newSelection.delete(cellId)\n // If this was the focused cell, set focus to another cell in the selection or null\n if (focusedCellId === cellId) {\n if (newSelection.size > 0) {\n setFocusedCellId(Array.from(newSelection)[Array.from(newSelection).length - 1])\n } else {\n setFocusedCellId(null)\n }\n }\n } else {\n newSelection.add(cellId)\n setFocusedCellId(cellId)\n setAnchorCell(position)\n }\n return newSelection\n })\n } else {\n // Single cell selection\n // If this cell is already the only selected cell, deselect it\n // and it is from name column\n if (\n selectedCells.size === 1 &&\n selectedCells.has(cellId) &&\n [ROW_SELECTION_COLUMN_ID, 'name'].includes(position.colId)\n ) {\n setSelectedCells(new Set())\n setAnchorCell(null)\n setFocusedCellId(null)\n } else {\n updateSelection(new Set([cellId]), position)\n setAnchorCell(position)\n setFocusedCellId(cellId)\n }\n }\n },\n [selectedCells, focusedCellId, updateSelection],\n )\n\n // Extend the current selection during drag\n const extendSelection = useCallback(\n (cellId: CellId, isRowSelectionColumn?: boolean) => {\n if (!selectionInProgress || !anchorCell) return\n\n const currentPosition = parseCellId(cellId)\n if (!currentPosition) return\n\n if (isRowSelectionColumn) {\n // Handle row selection column differently during drag\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n const position = parseCellId(cellId)\n\n if (!position) return newSelection\n\n // We're either selecting or unselecting based on the initial cell's state\n if (initialCellSelected.current) {\n // If we started on a selected cell, we're removing cells during drag\n newSelection.delete(cellId)\n } else {\n // If we started on an unselected cell, we're adding cells during drag\n newSelection.add(cellId)\n }\n\n return newSelection\n })\n } else {\n // For normal cells, use the range selection behavior\n const newSelection = selectCellRange(anchorCell, currentPosition, false)\n updateSelection(newSelection, currentPosition)\n }\n },\n [selectionInProgress, anchorCell, selectCellRange, updateSelection],\n )\n\n // End a selection operation\n const endSelection = useCallback(() => {\n setSelectionInProgress(false)\n }, [])\n\n // Select a cell (click or programmatically)\n const selectCell = useCallback(\n (cellId: CellId, additive: boolean, range: boolean) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n if (range && anchorCell) {\n // Shift+click for range selection - select cells between anchor and current\n const newSelection = selectCellRange(anchorCell, position, additive)\n updateSelection(newSelection, position)\n } else if (additive) {\n // Ctrl/Cmd+click for toggling selection\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n if (newSelection.has(cellId)) {\n newSelection.delete(cellId)\n } else {\n newSelection.add(cellId)\n }\n return newSelection\n })\n } else {\n // Normal click - select just this cell and set as new anchor\n updateSelection(new Set([cellId]), position)\n setAnchorCell(position)\n }\n },\n [anchorCell, selectCellRange, updateSelection],\n )\n\n // Focus a cell without changing selection\n const focusCell = useCallback((cellId: CellId | null) => {\n setFocusedCellId(cellId)\n }, [])\n\n // Clear all selections\n const clearSelection = useCallback(() => {\n setSelectedCells(new Set())\n setAnchorCell(null)\n setFocusedCellId(null)\n }, [])\n\n // Check if a cell is selected\n const isCellSelected = useCallback((cellId: CellId) => selectedCells.has(cellId), [selectedCells])\n\n // Check if a cell is focused\n const isCellFocused = useCallback((cellId: CellId) => cellId === focusedCellId, [focusedCellId])\n\n // Get position from cell ID - using shared utility\n const getCellPositionFromId = useCallback((cellId: CellId) => parseCellId(cellId), [])\n\n // Get border classes for a cell based on its selection state and neighbors\n const getCellBorderClasses = useCallback(\n (cellId: CellId): string[] => {\n if (!isCellSelected(cellId)) return []\n\n const position = parseCellId(cellId)\n if (!position) return []\n\n const rowIndex = stableGridMap.rowIdToIndex.get(position.rowId)\n const colIndex = stableGridMap.colIdToIndex.get(position.colId)\n\n if (rowIndex === undefined || colIndex === undefined) return []\n\n // Check if the cell's neighbors in all four directions are selected\n const top = stableGridMap.indexToRowId.get(rowIndex - 1)\n const right = stableGridMap.indexToColId.get(colIndex + 1)\n const bottom = stableGridMap.indexToRowId.get(rowIndex + 1)\n const left = stableGridMap.indexToColId.get(colIndex - 1)\n\n // Default to no borders\n let borderPos = BorderPosition.None\n\n // Top edge check: show border if we're at the top of the grid or the cell above is not selected\n if (!top || !selectedCells.has(getCellId(top, position.colId))) {\n borderPos |= BorderPosition.Top\n }\n\n // Right edge check: show border if we're at the right edge of the grid or the cell to the right is not selected\n if (!right || !selectedCells.has(getCellId(position.rowId, right))) {\n borderPos |= BorderPosition.Right\n }\n\n // Bottom edge check: show border if we're at the bottom of the grid or the cell below is not selected\n if (!bottom || !selectedCells.has(getCellId(bottom, position.colId))) {\n borderPos |= BorderPosition.Bottom\n }\n\n // Left edge check: show border if we're at the left edge of the grid or the cell to the left is not selected\n if (!left || !selectedCells.has(getCellId(position.rowId, left))) {\n borderPos |= BorderPosition.Left\n }\n\n return getBorderClasses(borderPos)\n },\n [selectedCells, stableGridMap, isCellSelected],\n )\n\n // Memoize context value to prevent unnecessary re-renders\n const value = useMemo(\n () => ({\n selectedCells,\n selectedRows,\n focusedCellId,\n selectionInProgress,\n anchorCell,\n gridMap: stableGridMap,\n setSelectedCells,\n setFocusedCellId,\n setAnchorCell,\n registerGrid,\n selectCell,\n startSelection,\n extendSelection,\n endSelection,\n focusCell,\n clearSelection,\n isCellSelected,\n isCellFocused,\n getCellPositionFromId,\n getCellBorderClasses,\n }),\n [\n selectedCells,\n selectedRows,\n focusedCellId,\n selectionInProgress,\n anchorCell,\n stableGridMap,\n setSelectedCells,\n setFocusedCellId,\n setAnchorCell,\n registerGrid,\n selectCell,\n startSelection,\n extendSelection,\n endSelection,\n focusCell,\n clearSelection,\n isCellSelected,\n isCellFocused,\n getCellPositionFromId,\n getCellBorderClasses,\n ],\n )\n\n return <SelectionCellsContext.Provider value={value}>{children}</SelectionCellsContext.Provider>\n}\n"],"names":["SelectionCellsProvider","children","selectedCells","setSelectedCells","useState","focusedCellId","setFocusedCellId","selectionInProgress","setSelectionInProgress","anchorCell","setAnchorCell","gridMap","setGridMap","mapToString","map","stableGridMap","useMemo","initialCellSelected","useRef","selectedRows","cellId","parseCellId","ROW_SELECTION_COLUMN_ID","useCheckSelectedCellsVisible","registerGrid","useCallback","rows","columns","rowIdToIndex","colIdToIndex","indexToRowId","indexToColId","rowId","index","colId","updateSelection","selection","position","prevSelectedCells","newSelection","DRAG_HANDLE_COLUMN_ID","rowSelection","id","selectCellRange","start","end","additive","startRowIdx","startColIdx","endRowIdx","endColIdx","minRowIdx","maxRowIdx","minColIdx","maxColIdx","r","c","getCellId","startSelection","prev","extendSelection","isRowSelectionColumn","currentPosition","endSelection","selectCell","range","focusCell","clearSelection","isCellSelected","isCellFocused","getCellPositionFromId","getCellBorderClasses","rowIndex","colIndex","top","right","bottom","left","borderPos","BorderPosition","getBorderClasses","value","jsx","SelectionCellsContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SelectionCellsProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/SelectionCellsProvider.tsx"],"sourcesContent":["import React, { useState, useCallback, useMemo, ReactNode, useRef } from 'react'\nimport {\n CellId,\n RowId,\n ColId,\n CellPosition,\n getCellId,\n parseCellId,\n BorderPosition,\n getBorderClasses,\n} from '../utils/cellUtils'\nimport { DRAG_HANDLE_COLUMN_ID } from '../ProjectTreeTable'\nimport { SelectionCellsContext, GridMap, ROW_SELECTION_COLUMN_ID } from './SelectionCellsContext'\nimport { useCheckSelectedCellsVisible } from '../hooks'\n\nexport const SelectionCellsProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [selectedCells, setSelectedCells] = useState<Set<CellId>>(new Set())\n const [focusedCellId, setFocusedCellId] = useState<CellId | null>(null)\n const [selectionInProgress, setSelectionInProgress] = useState<boolean>(false)\n const [anchorCell, setAnchorCell] = useState<CellPosition | null>(null)\n const [gridMap, setGridMap] = useState<GridMap>({\n rowIdToIndex: new Map(),\n colIdToIndex: new Map(),\n indexToRowId: new Map(),\n indexToColId: new Map(),\n })\n const mapToString = (map: Map<any, any>) => {\n return JSON.stringify(Array.from(map.entries()))\n }\n\n const stableGridMap = useMemo(\n () => gridMap,\n [\n mapToString(gridMap.rowIdToIndex),\n mapToString(gridMap.colIdToIndex),\n mapToString(gridMap.indexToRowId),\n mapToString(gridMap.indexToColId),\n ],\n )\n // Track whether we're selecting or unselecting during drag\n const initialCellSelected = useRef<boolean>(false)\n\n const selectedRows = useMemo(\n () =>\n Array.from(selectedCells)\n .filter(\n (cellId) =>\n parseCellId(cellId)?.colId === ROW_SELECTION_COLUMN_ID && parseCellId(cellId)?.rowId,\n )\n .map((cellId) => parseCellId(cellId)?.rowId) as string[],\n [selectedCells],\n )\n\n useCheckSelectedCellsVisible({\n selectedCells,\n setSelectedCells,\n focusedCellId,\n setFocusedCellId,\n })\n\n // Register grid structure for range selections\n const registerGrid = useCallback((rows: RowId[], columns: ColId[]) => {\n const rowIdToIndex = new Map<RowId, number>()\n const colIdToIndex = new Map<ColId, number>()\n const indexToRowId = new Map<number, RowId>()\n const indexToColId = new Map<number, ColId>()\n\n rows.forEach((rowId, index) => {\n rowIdToIndex.set(rowId, index)\n indexToRowId.set(index, rowId)\n })\n\n columns.forEach((colId, index) => {\n colIdToIndex.set(colId, index)\n indexToColId.set(index, colId)\n })\n\n setGridMap({ rowIdToIndex, colIdToIndex, indexToRowId, indexToColId })\n }, [])\n\n // update the selection whilst properly handling the row-selection column\n const updateSelection = useCallback((selection: Set<CellId>, position: CellPosition) => {\n setSelectedCells((prevSelectedCells) => {\n let newSelection = new Set(selection)\n if (position.colId !== ROW_SELECTION_COLUMN_ID && position.colId !== DRAG_HANDLE_COLUMN_ID) {\n const rowSelection = Array.from(prevSelectedCells).filter(\n (id) => parseCellId(id)?.colId === ROW_SELECTION_COLUMN_ID,\n )\n if (rowSelection.length) {\n newSelection = new Set([...newSelection, ...rowSelection])\n }\n }\n return newSelection\n })\n }, [])\n\n // Select cells between two points in the grid\n const selectCellRange = useCallback(\n (start: CellPosition, end: CellPosition, additive: boolean): Set<CellId> => {\n if (!additive) {\n // Clear existing selection if not additive\n updateSelection(new Set(), start)\n }\n\n const startRowIdx = stableGridMap.rowIdToIndex.get(start.rowId) ?? 0\n const startColIdx = stableGridMap.colIdToIndex.get(start.colId) ?? 0\n const endRowIdx = stableGridMap.rowIdToIndex.get(end.rowId) ?? 0\n const endColIdx = stableGridMap.colIdToIndex.get(end.colId) ?? 0\n\n const minRowIdx = Math.min(startRowIdx, endRowIdx)\n const maxRowIdx = Math.max(startRowIdx, endRowIdx)\n const minColIdx = Math.min(startColIdx, endColIdx)\n const maxColIdx = Math.max(startColIdx, endColIdx)\n\n const newSelection = new Set(additive ? selectedCells : [])\n\n for (let r = minRowIdx; r <= maxRowIdx; r++) {\n const rowId = stableGridMap.indexToRowId.get(r)\n if (!rowId) continue\n\n for (let c = minColIdx; c <= maxColIdx; c++) {\n const colId = stableGridMap.indexToColId.get(c)\n if (!colId) continue\n\n newSelection.add(getCellId(rowId, colId))\n }\n }\n\n return newSelection\n },\n [stableGridMap, selectedCells, updateSelection],\n )\n\n // Start a selection operation\n const startSelection = useCallback(\n (cellId: CellId, additive: boolean) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n setSelectionInProgress(true)\n // Store whether the initial cell was selected to determine drag behavior\n initialCellSelected.current = selectedCells.has(cellId)\n\n if (additive) {\n // Toggle this cell in multi-select mode\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n if (newSelection.has(cellId)) {\n newSelection.delete(cellId)\n // If this was the focused cell, set focus to another cell in the selection or null\n if (focusedCellId === cellId) {\n if (newSelection.size > 0) {\n setFocusedCellId(Array.from(newSelection)[Array.from(newSelection).length - 1])\n } else {\n setFocusedCellId(null)\n }\n }\n } else {\n newSelection.add(cellId)\n setFocusedCellId(cellId)\n setAnchorCell(position)\n }\n return newSelection\n })\n } else {\n // Single cell selection\n // If this cell is already the only selected cell, deselect it\n // and it is from name column\n if (\n selectedCells.size === 1 &&\n selectedCells.has(cellId) &&\n [ROW_SELECTION_COLUMN_ID, 'name'].includes(position.colId)\n ) {\n setSelectedCells(new Set())\n setAnchorCell(null)\n setFocusedCellId(null)\n } else {\n updateSelection(new Set([cellId]), position)\n setAnchorCell(position)\n setFocusedCellId(cellId)\n }\n }\n },\n [selectedCells, focusedCellId, updateSelection],\n )\n\n // Extend the current selection during drag\n const extendSelection = useCallback(\n (cellId: CellId, isRowSelectionColumn?: boolean) => {\n if (!selectionInProgress || !anchorCell) return\n\n const currentPosition = parseCellId(cellId)\n if (!currentPosition) return\n\n if (isRowSelectionColumn) {\n // Handle row selection column differently during drag\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n const position = parseCellId(cellId)\n\n if (!position) return newSelection\n\n // We're either selecting or unselecting based on the initial cell's state\n if (initialCellSelected.current) {\n // If we started on a selected cell, we're removing cells during drag\n newSelection.delete(cellId)\n } else {\n // If we started on an unselected cell, we're adding cells during drag\n newSelection.add(cellId)\n }\n\n return newSelection\n })\n } else {\n // For normal cells, use the range selection behavior\n const newSelection = selectCellRange(anchorCell, currentPosition, false)\n updateSelection(newSelection, currentPosition)\n }\n },\n [selectionInProgress, anchorCell, selectCellRange, updateSelection],\n )\n\n // End a selection operation\n const endSelection = useCallback(() => {\n setSelectionInProgress(false)\n }, [])\n\n // Select a cell (click or programmatically)\n const selectCell = useCallback(\n (cellId: CellId, additive: boolean, range: boolean) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n if (range && anchorCell) {\n // Shift+click for range selection - select cells between anchor and current\n const newSelection = selectCellRange(anchorCell, position, additive)\n updateSelection(newSelection, position)\n } else if (additive) {\n // Ctrl/Cmd+click for toggling selection\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n if (newSelection.has(cellId)) {\n newSelection.delete(cellId)\n } else {\n newSelection.add(cellId)\n }\n return newSelection\n })\n } else {\n // Normal click - select just this cell and set as new anchor\n updateSelection(new Set([cellId]), position)\n setAnchorCell(position)\n }\n },\n [anchorCell, selectCellRange, updateSelection],\n )\n\n // Focus a cell without changing selection\n const focusCell = useCallback((cellId: CellId | null) => {\n setFocusedCellId(cellId)\n }, [])\n\n // Clear all selections\n const clearSelection = useCallback(() => {\n setSelectedCells(new Set())\n setAnchorCell(null)\n setFocusedCellId(null)\n }, [])\n\n // Check if a cell is selected\n const isCellSelected = useCallback((cellId: CellId) => selectedCells.has(cellId), [selectedCells])\n\n // Check if a cell is focused\n const isCellFocused = useCallback((cellId: CellId) => cellId === focusedCellId, [focusedCellId])\n\n // Get position from cell ID - using shared utility\n const getCellPositionFromId = useCallback((cellId: CellId) => parseCellId(cellId), [])\n\n // Get border classes for a cell based on its selection state and neighbors\n const getCellBorderClasses = useCallback(\n (cellId: CellId): string[] => {\n if (!isCellSelected(cellId)) return []\n\n const position = parseCellId(cellId)\n if (!position) return []\n\n const rowIndex = stableGridMap.rowIdToIndex.get(position.rowId)\n const colIndex = stableGridMap.colIdToIndex.get(position.colId)\n\n if (rowIndex === undefined || colIndex === undefined) return []\n\n // Check if the cell's neighbors in all four directions are selected\n const top = stableGridMap.indexToRowId.get(rowIndex - 1)\n const right = stableGridMap.indexToColId.get(colIndex + 1)\n const bottom = stableGridMap.indexToRowId.get(rowIndex + 1)\n const left = stableGridMap.indexToColId.get(colIndex - 1)\n\n // Default to no borders\n let borderPos = BorderPosition.None\n\n // Top edge check: show border if we're at the top of the grid or the cell above is not selected\n if (!top || !selectedCells.has(getCellId(top, position.colId))) {\n borderPos |= BorderPosition.Top\n }\n\n // Right edge check: show border if we're at the right edge of the grid or the cell to the right is not selected\n if (!right || !selectedCells.has(getCellId(position.rowId, right))) {\n borderPos |= BorderPosition.Right\n }\n\n // Bottom edge check: show border if we're at the bottom of the grid or the cell below is not selected\n if (!bottom || !selectedCells.has(getCellId(bottom, position.colId))) {\n borderPos |= BorderPosition.Bottom\n }\n\n // Left edge check: show border if we're at the left edge of the grid or the cell to the left is not selected\n if (!left || !selectedCells.has(getCellId(position.rowId, left))) {\n borderPos |= BorderPosition.Left\n }\n\n return getBorderClasses(borderPos)\n },\n [selectedCells, stableGridMap, isCellSelected],\n )\n\n // Memoize context value to prevent unnecessary re-renders\n const value = useMemo(\n () => ({\n selectedCells,\n selectedRows,\n focusedCellId,\n selectionInProgress,\n anchorCell,\n gridMap: stableGridMap,\n setSelectedCells,\n setFocusedCellId,\n setAnchorCell,\n registerGrid,\n selectCell,\n startSelection,\n extendSelection,\n endSelection,\n focusCell,\n clearSelection,\n isCellSelected,\n isCellFocused,\n getCellPositionFromId,\n getCellBorderClasses,\n }),\n [\n selectedCells,\n selectedRows,\n focusedCellId,\n selectionInProgress,\n anchorCell,\n stableGridMap,\n setSelectedCells,\n setFocusedCellId,\n setAnchorCell,\n registerGrid,\n selectCell,\n startSelection,\n extendSelection,\n endSelection,\n focusCell,\n clearSelection,\n isCellSelected,\n isCellFocused,\n getCellPositionFromId,\n getCellBorderClasses,\n ],\n )\n\n return <SelectionCellsContext.Provider value={value}>{children}</SelectionCellsContext.Provider>\n}\n"],"names":["SelectionCellsProvider","children","selectedCells","setSelectedCells","useState","focusedCellId","setFocusedCellId","selectionInProgress","setSelectionInProgress","anchorCell","setAnchorCell","gridMap","setGridMap","mapToString","map","stableGridMap","useMemo","initialCellSelected","useRef","selectedRows","cellId","parseCellId","ROW_SELECTION_COLUMN_ID","useCheckSelectedCellsVisible","registerGrid","useCallback","rows","columns","rowIdToIndex","colIdToIndex","indexToRowId","indexToColId","rowId","index","colId","updateSelection","selection","position","prevSelectedCells","newSelection","DRAG_HANDLE_COLUMN_ID","rowSelection","id","selectCellRange","start","end","additive","startRowIdx","startColIdx","endRowIdx","endColIdx","minRowIdx","maxRowIdx","minColIdx","maxColIdx","r","c","getCellId","startSelection","prev","extendSelection","isRowSelectionColumn","currentPosition","endSelection","selectCell","range","focusCell","clearSelection","isCellSelected","isCellFocused","getCellPositionFromId","getCellBorderClasses","rowIndex","colIndex","top","right","bottom","left","borderPos","BorderPosition","getBorderClasses","value","jsx","SelectionCellsContext"],"mappings":"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"}
|