@ynput/ayon-frontend-shared 0.2.36 → 0.2.37
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 +23 -22
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/Views.cjs.js +1 -1
- package/dist/Views.cjs.js.map +1 -1
- package/dist/Views.es.js +25 -24
- package/dist/Views.es.js.map +1 -1
- package/dist/_virtual/index.cjs2.js +1 -1
- package/dist/_virtual/index.cjs3.js +1 -1
- package/dist/_virtual/index.cjs5.js +1 -1
- package/dist/_virtual/index.es2.js +2 -5
- package/dist/_virtual/index.es2.js.map +1 -1
- package/dist/_virtual/index.es3.js +5 -2
- package/dist/_virtual/index.es3.js.map +1 -1
- package/dist/_virtual/index.es4.js +2 -2
- package/dist/_virtual/index.es5.js +2 -2
- package/dist/context.cjs.js +1 -1
- package/dist/context.es.js +19 -16
- package/dist/context.es.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +10 -9
- package/dist/index.es.js.map +1 -1
- package/dist/node_modules/react-use-websocket/dist/index.cjs.js +1 -1
- package/dist/node_modules/react-use-websocket/dist/index.es.js +1 -1
- package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
- package/dist/shared/node_modules/prop-types/index.es.js +1 -1
- package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
- package/dist/shared/node_modules/react-is/index.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
- package/dist/shared/src/api/generated/actions.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/actions.es.js.map +1 -1
- package/dist/shared/src/api/generated/attributes.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/attributes.es.js.map +1 -1
- package/dist/shared/src/api/generated/authentication.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/authentication.es.js.map +1 -1
- package/dist/shared/src/api/generated/configuration.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/configuration.es.js.map +1 -1
- package/dist/shared/src/api/generated/entityLists.cjs.js +1 -1
- package/dist/shared/src/api/generated/entityLists.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/entityLists.es.js +88 -84
- package/dist/shared/src/api/generated/entityLists.es.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.cjs.js +22 -20
- package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.es.js +34 -32
- package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
- package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
- package/dist/shared/src/api/generated/onboarding.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/onboarding.es.js.map +1 -1
- package/dist/shared/src/api/generated/products.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/products.es.js.map +1 -1
- package/dist/shared/src/api/generated/projects.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/projects.es.js.map +1 -1
- package/dist/shared/src/api/generated/system.cjs.js +1 -1
- package/dist/shared/src/api/generated/system.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/system.es.js +3 -0
- package/dist/shared/src/api/generated/system.es.js.map +1 -1
- package/dist/shared/src/api/generated/users.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/users.es.js.map +1 -1
- package/dist/shared/src/api/generated/views.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/views.es.js.map +1 -1
- package/dist/shared/src/api/generated/ynputCloud.cjs.js +1 -1
- package/dist/shared/src/api/generated/ynputCloud.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/ynputCloud.es.js +6 -1
- package/dist/shared/src/api/generated/ynputCloud.es.js.map +1 -1
- package/dist/shared/src/api/queries/system/getSystem.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/system/getSystem.es.js.map +1 -1
- package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +1 -1
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +129 -122
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.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 +3 -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 +3 -2
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityData.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityData.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityData.es.js +23 -9
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityData.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 +5 -4
- 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 +3 -2
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
- package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
- package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +6 -5
- package/dist/shared/src/components/EntityPath/SegmentProvider.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 +118 -112
- 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 +3 -2
- package/dist/shared/src/components/LinksManager/AddNewLinks.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 +3 -2
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +8 -7
- package/dist/shared/src/components/Powerpack/PowerpackButton.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 +3 -2
- package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +18 -17
- 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 +3 -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 +3 -2
- package/dist/shared/src/components/RenameForm/RenameForm.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 +3 -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 +4 -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 +3 -2
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.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 +263 -210
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +24 -23
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.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 +3 -2
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +1 -1
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +3 -2
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.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 +3 -2
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.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 +3 -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 +3 -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 +3 -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 +61 -57
- 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 +3 -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 +58 -55
- 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 +3 -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 +3 -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 +3 -2
- package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js +33 -30
- package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +16 -15
- 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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -2
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.es.js +4 -3
- package/dist/shared/src/containers/Feed/Feed.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 +3 -2
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +8 -7
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.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 +3 -2
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +3 -2
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +9 -8
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +3 -2
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.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 +3 -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 +45 -42
- package/dist/shared/src/containers/Feed/context/FeedContext.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 +289 -283
- 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 -3
- 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 +3 -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 +3 -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 +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.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 +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +25 -90
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.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 +6 -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 +3 -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 +3 -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 +3 -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 +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +22 -21
- 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 +19 -16
- 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 +3 -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 +3 -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 +3 -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 +3 -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 +14 -13
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +38 -37
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.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 +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +3 -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 +3 -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 +3 -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 +3 -2
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +7 -6
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.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 +26 -25
- 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 +3 -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 +3 -2
- package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +9 -9
- package/dist/shared/src/containers/Views/hooks/useSelectedView.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 +40 -35
- 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 +8 -7
- 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 +77 -78
- package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
- package/dist/shared/src/context/GlobalContext.cjs.js +2 -0
- package/dist/shared/src/context/GlobalContext.cjs.js.map +1 -0
- package/dist/shared/src/context/GlobalContext.es.js +123 -0
- package/dist/shared/src/context/GlobalContext.es.js.map +1 -0
- package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
- package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
- package/dist/shared/src/context/PowerpackContext.es.js +7 -6
- package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
- package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.es.js +35 -34
- package/dist/shared/src/context/RemoteModulesContext.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 +5 -4
- package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.es.js +3 -2
- package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
- package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
- package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +3 -2
- package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.es.js +26 -12
- package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
- package/dist/src/components/Menu/MenuComponents/Menu.cjs.js +1 -1
- package/dist/src/components/Menu/MenuComponents/Menu.cjs.js.map +1 -1
- package/dist/src/components/Menu/MenuComponents/Menu.es.js +3 -2
- package/dist/src/components/Menu/MenuComponents/Menu.es.js.map +1 -1
- package/dist/src/components/Menu/MenuComponents/MenuItem.cjs.js +1 -1
- package/dist/src/components/Menu/MenuComponents/MenuItem.cjs.js.map +1 -1
- package/dist/src/components/Menu/MenuComponents/MenuItem.es.js +1 -0
- package/dist/src/components/Menu/MenuComponents/MenuItem.es.js.map +1 -1
- package/dist/src/components/Menu/MenuComponents/MenuList.cjs.js +1 -1
- package/dist/src/components/Menu/MenuComponents/MenuList.cjs.js.map +1 -1
- package/dist/src/components/Menu/MenuComponents/MenuList.es.js +17 -16
- package/dist/src/components/Menu/MenuComponents/MenuList.es.js.map +1 -1
- package/dist/types/api/generated/actions.d.ts +2 -0
- package/dist/types/api/generated/attributes.d.ts +20 -5
- package/dist/types/api/generated/authentication.d.ts +2 -0
- package/dist/types/api/generated/configuration.d.ts +3 -1
- package/dist/types/api/generated/entityLists.d.ts +22 -5
- package/dist/types/api/generated/enums.d.ts +36 -0
- package/dist/types/api/generated/graphql.d.ts +9 -2
- package/dist/types/api/generated/graphqlLinks.d.ts +3 -0
- package/dist/types/api/generated/onboarding.d.ts +1 -0
- package/dist/types/api/generated/products.d.ts +9 -3
- package/dist/types/api/generated/projects.d.ts +4 -4
- package/dist/types/api/generated/system.d.ts +27 -5
- package/dist/types/api/generated/users.d.ts +2 -0
- package/dist/types/api/generated/views.d.ts +48 -5
- package/dist/types/api/generated/ynputCloud.d.ts +7 -20
- package/dist/types/api/queries/activities/getActivities.d.ts +2 -0
- package/dist/types/api/queries/activities/updateActivities.d.ts +4 -0
- package/dist/types/api/queries/cloud/cloud.d.ts +17 -17
- package/dist/types/api/queries/entities/getEntity.d.ts +2 -0
- package/dist/types/api/queries/entities/getEntityPanel.d.ts +2 -0
- package/dist/types/api/queries/entities/updateEntity.d.ts +2 -0
- package/dist/types/api/queries/entityLists/getLists.d.ts +2 -0
- package/dist/types/api/queries/overview/getOverview.d.ts +2 -0
- package/dist/types/api/queries/system/getSystem.d.ts +85 -75
- package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +2 -0
- package/dist/types/api/queries/users/getUsers.d.ts +43 -37
- package/dist/types/api/queries/versions/getVersionsProducts.d.ts +20 -0
- package/dist/types/components/DetailsPanelDetails/hooks/useEntityData.d.ts +1 -1
- package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +1 -1
- package/dist/types/containers/DetailsPanel/FeedWrapper.d.ts +3 -0
- package/dist/types/containers/Feed/context/FeedContext.d.ts +4 -3
- package/dist/types/containers/ProjectTreeTable/hooks/useGroupBySettings.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/types/table.d.ts +2 -0
- package/dist/types/containers/Views/index.d.ts +1 -1
- package/dist/types/containers/Views/utils/viewUpdateHelper.d.ts +6 -10
- package/dist/types/context/DetailsPanelContext.d.ts +1 -2
- package/dist/types/context/GlobalContext.d.ts +25 -0
- package/dist/types/context/index.d.ts +1 -0
- package/package.json +1 -1
- package/dist/shared/src/containers/Views/hooks/pages/useReportsViewSettings.cjs.js +0 -2
- package/dist/shared/src/containers/Views/hooks/pages/useReportsViewSettings.cjs.js.map +0 -1
- package/dist/shared/src/containers/Views/hooks/pages/useReportsViewSettings.es.js +0 -64
- package/dist/shared/src/containers/Views/hooks/pages/useReportsViewSettings.es.js.map +0 -1
- package/dist/types/containers/Views/hooks/pages/useReportsViewSettings.d.ts +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenameForm.cjs.js","sources":["../../../../../src/components/RenameForm/RenameForm.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, useCallback } from 'react'\nimport styled from 'styled-components'\nimport { TableRow, useCellEditing, useProjectDataContext } from '@shared/containers'\nimport { theme } from '@ynput/ayon-react-components'\nimport { upperFirst } from 'lodash'\nimport { TableMeta } from '@tanstack/react-table'\nimport { checkName, checkLabel, parseAndFormatName } from '@shared/util'\nimport { toast } from 'react-toastify'\nimport { EntityNaming } from '@shared/api'\n\nconst EditingContainer = styled.div`\n background: var(--md-sys-color-surface-container-lowest);\n border: 2px solid var(--md-sys-color-primary);\n padding: 8px;\n width: 350px;\n border-radius: 4px;\n`\n\nconst InputLabel = styled.label`\n font-size: 12px;\n color: var(--md-sys-color-outline);\n`\n\nconst StyledInput = styled.input`\n width: 100%;\n border: none;\n background-color: var(--md-sys-color-surface-container-lowest);\n color: var(--md-sys-color-on-surface);\n\n &:focus {\n outline: none;\n }\n\n &.system-name {\n ${theme.bodySmall}\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n //background-color: var(--md-sys-color-surface-container);\n color: var(--md-sys-color-outline);\n }\n`\nexport type NameWidgetData = {\n name: string\n label: string\n meta: TableMeta<TableRow> | undefined\n entityRowId: string | undefined\n hasVersions: boolean | undefined\n}\n\nexport interface InlineEditingWidgetProps {\n cellId: string\n entityType: string\n initialName?: string\n initialLabel?: string\n onClose?: () => void\n valueData?: NameWidgetData\n nameDisabled?: boolean | string\n labelDisabled?: boolean | string\n}\n\nexport const RenameForm: React.FC<InlineEditingWidgetProps> = ({\n cellId,\n entityType,\n initialName,\n initialLabel = '',\n onClose,\n valueData,\n nameDisabled = false,\n labelDisabled = false,\n}) => {\n const { anatomy } = useProjectDataContext()\n const { entity_naming: config = { capitalization: 'lower', separator: '_' } } = anatomy as {\n entity_naming?: EntityNaming\n }\n\n const [label, setLabel] = useState(initialLabel)\n const [name, setName] = useState(initialName)\n const { setEditingCellId, updateEntities } = useCellEditing()\n const labelInputRef = useRef<HTMLInputElement>(null)\n const nameInputRef = useRef<HTMLInputElement>(null)\n\n const formattedFromLabel = parseAndFormatName(label, config)\n const isNameAutoGenerated = name === formattedFromLabel || !name\n\n useEffect(() => {\n const timeout = setTimeout(() => {\n // Focus on the first enabled input\n if (!labelDisabled && labelInputRef.current) {\n labelInputRef.current.focus()\n labelInputRef.current.select()\n } else if (!nameDisabled && nameInputRef.current) {\n nameInputRef.current.focus()\n nameInputRef.current.select()\n }\n }, 0)\n return () => clearTimeout(timeout)\n }, [labelDisabled, nameDisabled])\n\n useEffect(() => {\n setLabel(initialLabel)\n setName(initialName)\n }, [initialLabel, initialName])\n\n const handleSave = useCallback(async () => {\n const hasChanges = name !== initialName || label !== initialLabel\n if (hasChanges) {\n // Validate label if it changed\n if (label !== initialLabel && !labelDisabled) {\n const labelCheck = checkLabel(label)\n if (!labelCheck.valid) {\n console.error('Invalid label:', labelCheck.error)\n toast.error(`Invalid label: ${labelCheck.error}`)\n return\n }\n }\n\n const nameCheck = checkName(name)\n\n if (!nameCheck.valid || !name) {\n // Invalid name, do not proceed\n console.error('Invalid name:', nameCheck.error)\n toast.error(`Invalid name: ${nameCheck.error}`)\n return\n }\n\n setEditingCellId(null)\n onClose?.()\n\n try {\n const { meta, entityRowId } = valueData || {}\n\n // Use rowId prop as fallback if entityRowId is undefined\n\n if (name !== initialName && !nameDisabled) {\n // we must await to ensure we do not have server deadlock when multiple requests are made at the same time\n // HACK: we should ideally batch these updates in updateEntities function, but this is a quick fix\n await meta?.updateEntities?.({\n field: 'name',\n value: name,\n type: entityType as string,\n rowId: entityRowId as string,\n })\n }\n\n if (label !== initialLabel && !labelDisabled) {\n const finalLabel = label.trim()\n\n meta?.updateEntities?.({\n field: 'label',\n value: finalLabel,\n type: entityType as string,\n rowId: entityRowId as string,\n })\n }\n } catch (error) {\n console.error('Failed to update entity:', error)\n }\n } else {\n // No changes, just close\n setEditingCellId(null)\n onClose?.()\n }\n }, [\n label,\n name,\n initialName,\n initialLabel,\n valueData,\n setEditingCellId,\n onClose,\n nameDisabled,\n labelDisabled,\n updateEntities,\n entityType,\n ])\n\n const handleCancel = useCallback(() => {\n setEditingCellId(null)\n onClose?.()\n }, [setEditingCellId, onClose])\n\n const handleLabelChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n setLabel(value)\n if (isNameAutoGenerated && !nameDisabled) {\n setName(parseAndFormatName(value, config))\n }\n },\n [isNameAutoGenerated, nameDisabled],\n )\n\n const handleNameChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n setName(value)\n }, [])\n\n const handleLabelKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n if (!nameDisabled && nameInputRef.current) {\n nameInputRef.current.focus()\n // Position cursor at the end of the name input\n const length = nameInputRef.current.value.length\n nameInputRef.current.setSelectionRange(length, length)\n }\n } else if (e.key === 'Enter') {\n e.preventDefault()\n handleSave()\n }\n },\n [handleSave, handleCancel, nameDisabled],\n )\n\n const handleNameKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n if (!labelDisabled && labelInputRef.current) {\n labelInputRef.current.focus()\n // Position cursor at the end of the label input\n const length = labelInputRef.current.value.length\n labelInputRef.current.setSelectionRange(length, length)\n }\n } else if (e.key === 'Enter') {\n // Ctrl+Enter or Cmd+Enter to save\n e.preventDefault()\n handleSave()\n }\n },\n [handleSave, handleCancel, labelDisabled],\n )\n\n const handleInputClick = useCallback((e: React.MouseEvent<HTMLInputElement>) => {\n e.stopPropagation()\n }, [])\n\n const handleInputDoubleClick = useCallback((e: React.MouseEvent<HTMLInputElement>) => {\n e.stopPropagation()\n }, [])\n\n const handleInputMouseDown = useCallback((e: React.MouseEvent<HTMLInputElement>) => {\n e.stopPropagation()\n }, [])\n\n const handleInputMouseUp = useCallback((e: React.MouseEvent<HTMLInputElement>) => {\n e.stopPropagation()\n }, [])\n\n // Helper to determine disabled and tooltip\n const getDisabledAndTooltip = (disabledProp: boolean | string) => {\n if (typeof disabledProp === 'string') {\n return { disabled: true, tooltip: disabledProp }\n }\n return { disabled: !!disabledProp, tooltip: undefined }\n }\n\n const labelInputProps = getDisabledAndTooltip(labelDisabled)\n const nameInputProps = getDisabledAndTooltip(nameDisabled)\n\n return (\n <EditingContainer id={`editing-container-${cellId}`} onClick={(e) => e.stopPropagation()}>\n <StyledInput\n ref={labelInputRef}\n id={`${cellId}-label`}\n type=\"text\"\n value={label}\n onChange={handleLabelChange}\n onKeyDown={handleLabelKeyDown}\n onClick={handleInputClick}\n onDoubleClick={handleInputDoubleClick}\n onMouseDown={handleInputMouseDown}\n onMouseUp={handleInputMouseUp}\n placeholder={`${upperFirst(entityType)} label...`}\n style={{ paddingBottom: '6px' }}\n autoComplete=\"off\"\n disabled={labelInputProps.disabled}\n data-tooltip={labelInputProps.tooltip}\n data-tooltip-delay={100}\n />\n <InputLabel htmlFor={`${cellId}-name`}>Name</InputLabel>\n <StyledInput\n ref={nameInputRef}\n id={`${cellId}-name`}\n type=\"text\"\n value={name}\n onChange={handleNameChange}\n onKeyDown={handleNameKeyDown}\n onClick={handleInputClick}\n onDoubleClick={handleInputDoubleClick}\n onMouseDown={handleInputMouseDown}\n onMouseUp={handleInputMouseUp}\n className=\"system-name\"\n placeholder={`${entityType}_name`}\n autoComplete=\"off\"\n disabled={nameInputProps.disabled}\n data-tooltip={nameInputProps.tooltip}\n data-tooltip-delay={100}\n />\n </EditingContainer>\n )\n}\n"],"names":["EditingContainer","styled","InputLabel","StyledInput","theme","RenameForm","cellId","entityType","initialName","initialLabel","onClose","valueData","nameDisabled","labelDisabled","anatomy","useProjectDataContext","config","label","setLabel","useState","name","setName","setEditingCellId","updateEntities","useCellEditing","labelInputRef","useRef","nameInputRef","formattedFromLabel","parseAndFormatName","isNameAutoGenerated","useEffect","timeout","handleSave","useCallback","labelCheck","checkLabel","toast","nameCheck","checkName","meta","entityRowId","_a","finalLabel","_b","error","handleCancel","handleLabelChange","value","handleNameChange","handleLabelKeyDown","length","handleNameKeyDown","handleInputClick","handleInputDoubleClick","handleInputMouseDown","handleInputMouseUp","getDisabledAndTooltip","disabledProp","labelInputProps","nameInputProps","jsxs","jsx","upperFirst"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RenameForm.cjs.js","sources":["../../../../../src/components/RenameForm/RenameForm.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, useCallback } from 'react'\nimport styled from 'styled-components'\nimport { TableRow, useCellEditing, useProjectDataContext } from '@shared/containers'\nimport { theme } from '@ynput/ayon-react-components'\nimport { upperFirst } from 'lodash'\nimport { TableMeta } from '@tanstack/react-table'\nimport { checkName, checkLabel, parseAndFormatName } from '@shared/util'\nimport { toast } from 'react-toastify'\nimport { EntityNaming } from '@shared/api'\n\nconst EditingContainer = styled.div`\n background: var(--md-sys-color-surface-container-lowest);\n border: 2px solid var(--md-sys-color-primary);\n padding: 8px;\n width: 350px;\n border-radius: 4px;\n`\n\nconst InputLabel = styled.label`\n font-size: 12px;\n color: var(--md-sys-color-outline);\n`\n\nconst StyledInput = styled.input`\n width: 100%;\n border: none;\n background-color: var(--md-sys-color-surface-container-lowest);\n color: var(--md-sys-color-on-surface);\n\n &:focus {\n outline: none;\n }\n\n &.system-name {\n ${theme.bodySmall}\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n //background-color: var(--md-sys-color-surface-container);\n color: var(--md-sys-color-outline);\n }\n`\nexport type NameWidgetData = {\n name: string\n label: string\n meta: TableMeta<TableRow> | undefined\n entityRowId: string | undefined\n hasVersions: boolean | undefined\n}\n\nexport interface InlineEditingWidgetProps {\n cellId: string\n entityType: string\n initialName?: string\n initialLabel?: string\n onClose?: () => void\n valueData?: NameWidgetData\n nameDisabled?: boolean | string\n labelDisabled?: boolean | string\n}\n\nexport const RenameForm: React.FC<InlineEditingWidgetProps> = ({\n cellId,\n entityType,\n initialName,\n initialLabel = '',\n onClose,\n valueData,\n nameDisabled = false,\n labelDisabled = false,\n}) => {\n const { anatomy } = useProjectDataContext()\n const { entity_naming: config = { capitalization: 'lower', separator: '_' } } = anatomy as {\n entity_naming?: EntityNaming\n }\n\n const [label, setLabel] = useState(initialLabel)\n const [name, setName] = useState(initialName)\n const { setEditingCellId, updateEntities } = useCellEditing()\n const labelInputRef = useRef<HTMLInputElement>(null)\n const nameInputRef = useRef<HTMLInputElement>(null)\n\n const formattedFromLabel = parseAndFormatName(label, config)\n const isNameAutoGenerated = name === formattedFromLabel || !name\n\n useEffect(() => {\n const timeout = setTimeout(() => {\n // Focus on the first enabled input\n if (!labelDisabled && labelInputRef.current) {\n labelInputRef.current.focus()\n labelInputRef.current.select()\n } else if (!nameDisabled && nameInputRef.current) {\n nameInputRef.current.focus()\n nameInputRef.current.select()\n }\n }, 0)\n return () => clearTimeout(timeout)\n }, [labelDisabled, nameDisabled])\n\n useEffect(() => {\n setLabel(initialLabel)\n setName(initialName)\n }, [initialLabel, initialName])\n\n const handleSave = useCallback(async () => {\n const hasChanges = name !== initialName || label !== initialLabel\n if (hasChanges) {\n // Validate label if it changed\n if (label !== initialLabel && !labelDisabled) {\n const labelCheck = checkLabel(label)\n if (!labelCheck.valid) {\n console.error('Invalid label:', labelCheck.error)\n toast.error(`Invalid label: ${labelCheck.error}`)\n return\n }\n }\n\n const nameCheck = checkName(name)\n\n if (!nameCheck.valid || !name) {\n // Invalid name, do not proceed\n console.error('Invalid name:', nameCheck.error)\n toast.error(`Invalid name: ${nameCheck.error}`)\n return\n }\n\n setEditingCellId(null)\n onClose?.()\n\n try {\n const { meta, entityRowId } = valueData || {}\n\n // Use rowId prop as fallback if entityRowId is undefined\n\n if (name !== initialName && !nameDisabled) {\n // we must await to ensure we do not have server deadlock when multiple requests are made at the same time\n // HACK: we should ideally batch these updates in updateEntities function, but this is a quick fix\n await meta?.updateEntities?.({\n field: 'name',\n value: name,\n type: entityType as string,\n rowId: entityRowId as string,\n })\n }\n\n if (label !== initialLabel && !labelDisabled) {\n const finalLabel = label.trim()\n\n meta?.updateEntities?.({\n field: 'label',\n value: finalLabel,\n type: entityType as string,\n rowId: entityRowId as string,\n })\n }\n } catch (error) {\n console.error('Failed to update entity:', error)\n }\n } else {\n // No changes, just close\n setEditingCellId(null)\n onClose?.()\n }\n }, [\n label,\n name,\n initialName,\n initialLabel,\n valueData,\n setEditingCellId,\n onClose,\n nameDisabled,\n labelDisabled,\n updateEntities,\n entityType,\n ])\n\n const handleCancel = useCallback(() => {\n setEditingCellId(null)\n onClose?.()\n }, [setEditingCellId, onClose])\n\n const handleLabelChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n setLabel(value)\n if (isNameAutoGenerated && !nameDisabled) {\n setName(parseAndFormatName(value, config))\n }\n },\n [isNameAutoGenerated, nameDisabled],\n )\n\n const handleNameChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n setName(value)\n }, [])\n\n const handleLabelKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n if (!nameDisabled && nameInputRef.current) {\n nameInputRef.current.focus()\n // Position cursor at the end of the name input\n const length = nameInputRef.current.value.length\n nameInputRef.current.setSelectionRange(length, length)\n }\n } else if (e.key === 'Enter') {\n e.preventDefault()\n handleSave()\n }\n },\n [handleSave, handleCancel, nameDisabled],\n )\n\n const handleNameKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n if (!labelDisabled && labelInputRef.current) {\n labelInputRef.current.focus()\n // Position cursor at the end of the label input\n const length = labelInputRef.current.value.length\n labelInputRef.current.setSelectionRange(length, length)\n }\n } else if (e.key === 'Enter') {\n // Ctrl+Enter or Cmd+Enter to save\n e.preventDefault()\n handleSave()\n }\n },\n [handleSave, handleCancel, labelDisabled],\n )\n\n const handleInputClick = useCallback((e: React.MouseEvent<HTMLInputElement>) => {\n e.stopPropagation()\n }, [])\n\n const handleInputDoubleClick = useCallback((e: React.MouseEvent<HTMLInputElement>) => {\n e.stopPropagation()\n }, [])\n\n const handleInputMouseDown = useCallback((e: React.MouseEvent<HTMLInputElement>) => {\n e.stopPropagation()\n }, [])\n\n const handleInputMouseUp = useCallback((e: React.MouseEvent<HTMLInputElement>) => {\n e.stopPropagation()\n }, [])\n\n // Helper to determine disabled and tooltip\n const getDisabledAndTooltip = (disabledProp: boolean | string) => {\n if (typeof disabledProp === 'string') {\n return { disabled: true, tooltip: disabledProp }\n }\n return { disabled: !!disabledProp, tooltip: undefined }\n }\n\n const labelInputProps = getDisabledAndTooltip(labelDisabled)\n const nameInputProps = getDisabledAndTooltip(nameDisabled)\n\n return (\n <EditingContainer id={`editing-container-${cellId}`} onClick={(e) => e.stopPropagation()}>\n <StyledInput\n ref={labelInputRef}\n id={`${cellId}-label`}\n type=\"text\"\n value={label}\n onChange={handleLabelChange}\n onKeyDown={handleLabelKeyDown}\n onClick={handleInputClick}\n onDoubleClick={handleInputDoubleClick}\n onMouseDown={handleInputMouseDown}\n onMouseUp={handleInputMouseUp}\n placeholder={`${upperFirst(entityType)} label...`}\n style={{ paddingBottom: '6px' }}\n autoComplete=\"off\"\n disabled={labelInputProps.disabled}\n data-tooltip={labelInputProps.tooltip}\n data-tooltip-delay={100}\n />\n <InputLabel htmlFor={`${cellId}-name`}>Name</InputLabel>\n <StyledInput\n ref={nameInputRef}\n id={`${cellId}-name`}\n type=\"text\"\n value={name}\n onChange={handleNameChange}\n onKeyDown={handleNameKeyDown}\n onClick={handleInputClick}\n onDoubleClick={handleInputDoubleClick}\n onMouseDown={handleInputMouseDown}\n onMouseUp={handleInputMouseUp}\n className=\"system-name\"\n placeholder={`${entityType}_name`}\n autoComplete=\"off\"\n disabled={nameInputProps.disabled}\n data-tooltip={nameInputProps.tooltip}\n data-tooltip-delay={100}\n />\n </EditingContainer>\n )\n}\n"],"names":["EditingContainer","styled","InputLabel","StyledInput","theme","RenameForm","cellId","entityType","initialName","initialLabel","onClose","valueData","nameDisabled","labelDisabled","anatomy","useProjectDataContext","config","label","setLabel","useState","name","setName","setEditingCellId","updateEntities","useCellEditing","labelInputRef","useRef","nameInputRef","formattedFromLabel","parseAndFormatName","isNameAutoGenerated","useEffect","timeout","handleSave","useCallback","labelCheck","checkLabel","toast","nameCheck","checkName","meta","entityRowId","_a","finalLabel","_b","error","handleCancel","handleLabelChange","value","handleNameChange","handleLabelKeyDown","length","handleNameKeyDown","handleInputClick","handleInputDoubleClick","handleInputMouseDown","handleInputMouseUp","getDisabledAndTooltip","disabledProp","labelInputProps","nameInputProps","jsxs","jsx","upperFirst"],"mappings":"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"}
|
|
@@ -37,6 +37,7 @@ import "../../context/PowerpackContext.es.js";
|
|
|
37
37
|
import "../../context/MoveEntityContext.es.js";
|
|
38
38
|
import "../../context/MenuContext.es.js";
|
|
39
39
|
import "../../context/WebsocketContext.es.js";
|
|
40
|
+
import "../../context/GlobalContext.es.js";
|
|
40
41
|
import "../../containers/Feed/components/CommentInput/quillToMarkdown.es.js";
|
|
41
42
|
import "../../containers/Feed/components/ActivityComment/ActivityComment.styled.es.js";
|
|
42
43
|
import "../../containers/Feed/components/ActivityCheckbox/ActivityCheckbox.styled.es.js";
|
|
@@ -266,7 +267,7 @@ const ot = k.div`
|
|
|
266
267
|
//background-color: var(--md-sys-color-surface-container);
|
|
267
268
|
color: var(--md-sys-color-outline);
|
|
268
269
|
}
|
|
269
|
-
`,
|
|
270
|
+
`, bi = ({
|
|
270
271
|
cellId: h,
|
|
271
272
|
entityType: d,
|
|
272
273
|
initialName: l,
|
|
@@ -423,6 +424,6 @@ const ot = k.div`
|
|
|
423
424
|
] });
|
|
424
425
|
};
|
|
425
426
|
export {
|
|
426
|
-
|
|
427
|
+
bi as RenameForm
|
|
427
428
|
};
|
|
428
429
|
//# sourceMappingURL=RenameForm.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenameForm.es.js","sources":["../../../../../src/components/RenameForm/RenameForm.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, useCallback } from 'react'\nimport styled from 'styled-components'\nimport { TableRow, useCellEditing, useProjectDataContext } from '@shared/containers'\nimport { theme } from '@ynput/ayon-react-components'\nimport { upperFirst } from 'lodash'\nimport { TableMeta } from '@tanstack/react-table'\nimport { checkName, checkLabel, parseAndFormatName } from '@shared/util'\nimport { toast } from 'react-toastify'\nimport { EntityNaming } from '@shared/api'\n\nconst EditingContainer = styled.div`\n background: var(--md-sys-color-surface-container-lowest);\n border: 2px solid var(--md-sys-color-primary);\n padding: 8px;\n width: 350px;\n border-radius: 4px;\n`\n\nconst InputLabel = styled.label`\n font-size: 12px;\n color: var(--md-sys-color-outline);\n`\n\nconst StyledInput = styled.input`\n width: 100%;\n border: none;\n background-color: var(--md-sys-color-surface-container-lowest);\n color: var(--md-sys-color-on-surface);\n\n &:focus {\n outline: none;\n }\n\n &.system-name {\n ${theme.bodySmall}\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n //background-color: var(--md-sys-color-surface-container);\n color: var(--md-sys-color-outline);\n }\n`\nexport type NameWidgetData = {\n name: string\n label: string\n meta: TableMeta<TableRow> | undefined\n entityRowId: string | undefined\n hasVersions: boolean | undefined\n}\n\nexport interface InlineEditingWidgetProps {\n cellId: string\n entityType: string\n initialName?: string\n initialLabel?: string\n onClose?: () => void\n valueData?: NameWidgetData\n nameDisabled?: boolean | string\n labelDisabled?: boolean | string\n}\n\nexport const RenameForm: React.FC<InlineEditingWidgetProps> = ({\n cellId,\n entityType,\n initialName,\n initialLabel = '',\n onClose,\n valueData,\n nameDisabled = false,\n labelDisabled = false,\n}) => {\n const { anatomy } = useProjectDataContext()\n const { entity_naming: config = { capitalization: 'lower', separator: '_' } } = anatomy as {\n entity_naming?: EntityNaming\n }\n\n const [label, setLabel] = useState(initialLabel)\n const [name, setName] = useState(initialName)\n const { setEditingCellId, updateEntities } = useCellEditing()\n const labelInputRef = useRef<HTMLInputElement>(null)\n const nameInputRef = useRef<HTMLInputElement>(null)\n\n const formattedFromLabel = parseAndFormatName(label, config)\n const isNameAutoGenerated = name === formattedFromLabel || !name\n\n useEffect(() => {\n const timeout = setTimeout(() => {\n // Focus on the first enabled input\n if (!labelDisabled && labelInputRef.current) {\n labelInputRef.current.focus()\n labelInputRef.current.select()\n } else if (!nameDisabled && nameInputRef.current) {\n nameInputRef.current.focus()\n nameInputRef.current.select()\n }\n }, 0)\n return () => clearTimeout(timeout)\n }, [labelDisabled, nameDisabled])\n\n useEffect(() => {\n setLabel(initialLabel)\n setName(initialName)\n }, [initialLabel, initialName])\n\n const handleSave = useCallback(async () => {\n const hasChanges = name !== initialName || label !== initialLabel\n if (hasChanges) {\n // Validate label if it changed\n if (label !== initialLabel && !labelDisabled) {\n const labelCheck = checkLabel(label)\n if (!labelCheck.valid) {\n console.error('Invalid label:', labelCheck.error)\n toast.error(`Invalid label: ${labelCheck.error}`)\n return\n }\n }\n\n const nameCheck = checkName(name)\n\n if (!nameCheck.valid || !name) {\n // Invalid name, do not proceed\n console.error('Invalid name:', nameCheck.error)\n toast.error(`Invalid name: ${nameCheck.error}`)\n return\n }\n\n setEditingCellId(null)\n onClose?.()\n\n try {\n const { meta, entityRowId } = valueData || {}\n\n // Use rowId prop as fallback if entityRowId is undefined\n\n if (name !== initialName && !nameDisabled) {\n // we must await to ensure we do not have server deadlock when multiple requests are made at the same time\n // HACK: we should ideally batch these updates in updateEntities function, but this is a quick fix\n await meta?.updateEntities?.({\n field: 'name',\n value: name,\n type: entityType as string,\n rowId: entityRowId as string,\n })\n }\n\n if (label !== initialLabel && !labelDisabled) {\n const finalLabel = label.trim()\n\n meta?.updateEntities?.({\n field: 'label',\n value: finalLabel,\n type: entityType as string,\n rowId: entityRowId as string,\n })\n }\n } catch (error) {\n console.error('Failed to update entity:', error)\n }\n } else {\n // No changes, just close\n setEditingCellId(null)\n onClose?.()\n }\n }, [\n label,\n name,\n initialName,\n initialLabel,\n valueData,\n setEditingCellId,\n onClose,\n nameDisabled,\n labelDisabled,\n updateEntities,\n entityType,\n ])\n\n const handleCancel = useCallback(() => {\n setEditingCellId(null)\n onClose?.()\n }, [setEditingCellId, onClose])\n\n const handleLabelChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n setLabel(value)\n if (isNameAutoGenerated && !nameDisabled) {\n setName(parseAndFormatName(value, config))\n }\n },\n [isNameAutoGenerated, nameDisabled],\n )\n\n const handleNameChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n setName(value)\n }, [])\n\n const handleLabelKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n if (!nameDisabled && nameInputRef.current) {\n nameInputRef.current.focus()\n // Position cursor at the end of the name input\n const length = nameInputRef.current.value.length\n nameInputRef.current.setSelectionRange(length, length)\n }\n } else if (e.key === 'Enter') {\n e.preventDefault()\n handleSave()\n }\n },\n [handleSave, handleCancel, nameDisabled],\n )\n\n const handleNameKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n if (!labelDisabled && labelInputRef.current) {\n labelInputRef.current.focus()\n // Position cursor at the end of the label input\n const length = labelInputRef.current.value.length\n labelInputRef.current.setSelectionRange(length, length)\n }\n } else if (e.key === 'Enter') {\n // Ctrl+Enter or Cmd+Enter to save\n e.preventDefault()\n handleSave()\n }\n },\n [handleSave, handleCancel, labelDisabled],\n )\n\n const handleInputClick = useCallback((e: React.MouseEvent<HTMLInputElement>) => {\n e.stopPropagation()\n }, [])\n\n const handleInputDoubleClick = useCallback((e: React.MouseEvent<HTMLInputElement>) => {\n e.stopPropagation()\n }, [])\n\n const handleInputMouseDown = useCallback((e: React.MouseEvent<HTMLInputElement>) => {\n e.stopPropagation()\n }, [])\n\n const handleInputMouseUp = useCallback((e: React.MouseEvent<HTMLInputElement>) => {\n e.stopPropagation()\n }, [])\n\n // Helper to determine disabled and tooltip\n const getDisabledAndTooltip = (disabledProp: boolean | string) => {\n if (typeof disabledProp === 'string') {\n return { disabled: true, tooltip: disabledProp }\n }\n return { disabled: !!disabledProp, tooltip: undefined }\n }\n\n const labelInputProps = getDisabledAndTooltip(labelDisabled)\n const nameInputProps = getDisabledAndTooltip(nameDisabled)\n\n return (\n <EditingContainer id={`editing-container-${cellId}`} onClick={(e) => e.stopPropagation()}>\n <StyledInput\n ref={labelInputRef}\n id={`${cellId}-label`}\n type=\"text\"\n value={label}\n onChange={handleLabelChange}\n onKeyDown={handleLabelKeyDown}\n onClick={handleInputClick}\n onDoubleClick={handleInputDoubleClick}\n onMouseDown={handleInputMouseDown}\n onMouseUp={handleInputMouseUp}\n placeholder={`${upperFirst(entityType)} label...`}\n style={{ paddingBottom: '6px' }}\n autoComplete=\"off\"\n disabled={labelInputProps.disabled}\n data-tooltip={labelInputProps.tooltip}\n data-tooltip-delay={100}\n />\n <InputLabel htmlFor={`${cellId}-name`}>Name</InputLabel>\n <StyledInput\n ref={nameInputRef}\n id={`${cellId}-name`}\n type=\"text\"\n value={name}\n onChange={handleNameChange}\n onKeyDown={handleNameKeyDown}\n onClick={handleInputClick}\n onDoubleClick={handleInputDoubleClick}\n onMouseDown={handleInputMouseDown}\n onMouseUp={handleInputMouseUp}\n className=\"system-name\"\n placeholder={`${entityType}_name`}\n autoComplete=\"off\"\n disabled={nameInputProps.disabled}\n data-tooltip={nameInputProps.tooltip}\n data-tooltip-delay={100}\n />\n </EditingContainer>\n )\n}\n"],"names":["EditingContainer","styled","InputLabel","StyledInput","theme","RenameForm","cellId","entityType","initialName","initialLabel","onClose","valueData","nameDisabled","labelDisabled","anatomy","useProjectDataContext","config","label","setLabel","useState","name","setName","setEditingCellId","updateEntities","useCellEditing","labelInputRef","useRef","nameInputRef","formattedFromLabel","parseAndFormatName","isNameAutoGenerated","useEffect","timeout","handleSave","useCallback","labelCheck","checkLabel","toast","nameCheck","checkName","meta","entityRowId","_a","finalLabel","_b","error","handleCancel","handleLabelChange","e","value","handleNameChange","handleLabelKeyDown","length","handleNameKeyDown","handleInputClick","handleInputDoubleClick","handleInputMouseDown","handleInputMouseUp","getDisabledAndTooltip","disabledProp","labelInputProps","nameInputProps","jsxs","jsx","upperFirst"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RenameForm.es.js","sources":["../../../../../src/components/RenameForm/RenameForm.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, useCallback } from 'react'\nimport styled from 'styled-components'\nimport { TableRow, useCellEditing, useProjectDataContext } from '@shared/containers'\nimport { theme } from '@ynput/ayon-react-components'\nimport { upperFirst } from 'lodash'\nimport { TableMeta } from '@tanstack/react-table'\nimport { checkName, checkLabel, parseAndFormatName } from '@shared/util'\nimport { toast } from 'react-toastify'\nimport { EntityNaming } from '@shared/api'\n\nconst EditingContainer = styled.div`\n background: var(--md-sys-color-surface-container-lowest);\n border: 2px solid var(--md-sys-color-primary);\n padding: 8px;\n width: 350px;\n border-radius: 4px;\n`\n\nconst InputLabel = styled.label`\n font-size: 12px;\n color: var(--md-sys-color-outline);\n`\n\nconst StyledInput = styled.input`\n width: 100%;\n border: none;\n background-color: var(--md-sys-color-surface-container-lowest);\n color: var(--md-sys-color-on-surface);\n\n &:focus {\n outline: none;\n }\n\n &.system-name {\n ${theme.bodySmall}\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n //background-color: var(--md-sys-color-surface-container);\n color: var(--md-sys-color-outline);\n }\n`\nexport type NameWidgetData = {\n name: string\n label: string\n meta: TableMeta<TableRow> | undefined\n entityRowId: string | undefined\n hasVersions: boolean | undefined\n}\n\nexport interface InlineEditingWidgetProps {\n cellId: string\n entityType: string\n initialName?: string\n initialLabel?: string\n onClose?: () => void\n valueData?: NameWidgetData\n nameDisabled?: boolean | string\n labelDisabled?: boolean | string\n}\n\nexport const RenameForm: React.FC<InlineEditingWidgetProps> = ({\n cellId,\n entityType,\n initialName,\n initialLabel = '',\n onClose,\n valueData,\n nameDisabled = false,\n labelDisabled = false,\n}) => {\n const { anatomy } = useProjectDataContext()\n const { entity_naming: config = { capitalization: 'lower', separator: '_' } } = anatomy as {\n entity_naming?: EntityNaming\n }\n\n const [label, setLabel] = useState(initialLabel)\n const [name, setName] = useState(initialName)\n const { setEditingCellId, updateEntities } = useCellEditing()\n const labelInputRef = useRef<HTMLInputElement>(null)\n const nameInputRef = useRef<HTMLInputElement>(null)\n\n const formattedFromLabel = parseAndFormatName(label, config)\n const isNameAutoGenerated = name === formattedFromLabel || !name\n\n useEffect(() => {\n const timeout = setTimeout(() => {\n // Focus on the first enabled input\n if (!labelDisabled && labelInputRef.current) {\n labelInputRef.current.focus()\n labelInputRef.current.select()\n } else if (!nameDisabled && nameInputRef.current) {\n nameInputRef.current.focus()\n nameInputRef.current.select()\n }\n }, 0)\n return () => clearTimeout(timeout)\n }, [labelDisabled, nameDisabled])\n\n useEffect(() => {\n setLabel(initialLabel)\n setName(initialName)\n }, [initialLabel, initialName])\n\n const handleSave = useCallback(async () => {\n const hasChanges = name !== initialName || label !== initialLabel\n if (hasChanges) {\n // Validate label if it changed\n if (label !== initialLabel && !labelDisabled) {\n const labelCheck = checkLabel(label)\n if (!labelCheck.valid) {\n console.error('Invalid label:', labelCheck.error)\n toast.error(`Invalid label: ${labelCheck.error}`)\n return\n }\n }\n\n const nameCheck = checkName(name)\n\n if (!nameCheck.valid || !name) {\n // Invalid name, do not proceed\n console.error('Invalid name:', nameCheck.error)\n toast.error(`Invalid name: ${nameCheck.error}`)\n return\n }\n\n setEditingCellId(null)\n onClose?.()\n\n try {\n const { meta, entityRowId } = valueData || {}\n\n // Use rowId prop as fallback if entityRowId is undefined\n\n if (name !== initialName && !nameDisabled) {\n // we must await to ensure we do not have server deadlock when multiple requests are made at the same time\n // HACK: we should ideally batch these updates in updateEntities function, but this is a quick fix\n await meta?.updateEntities?.({\n field: 'name',\n value: name,\n type: entityType as string,\n rowId: entityRowId as string,\n })\n }\n\n if (label !== initialLabel && !labelDisabled) {\n const finalLabel = label.trim()\n\n meta?.updateEntities?.({\n field: 'label',\n value: finalLabel,\n type: entityType as string,\n rowId: entityRowId as string,\n })\n }\n } catch (error) {\n console.error('Failed to update entity:', error)\n }\n } else {\n // No changes, just close\n setEditingCellId(null)\n onClose?.()\n }\n }, [\n label,\n name,\n initialName,\n initialLabel,\n valueData,\n setEditingCellId,\n onClose,\n nameDisabled,\n labelDisabled,\n updateEntities,\n entityType,\n ])\n\n const handleCancel = useCallback(() => {\n setEditingCellId(null)\n onClose?.()\n }, [setEditingCellId, onClose])\n\n const handleLabelChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n setLabel(value)\n if (isNameAutoGenerated && !nameDisabled) {\n setName(parseAndFormatName(value, config))\n }\n },\n [isNameAutoGenerated, nameDisabled],\n )\n\n const handleNameChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n setName(value)\n }, [])\n\n const handleLabelKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n if (!nameDisabled && nameInputRef.current) {\n nameInputRef.current.focus()\n // Position cursor at the end of the name input\n const length = nameInputRef.current.value.length\n nameInputRef.current.setSelectionRange(length, length)\n }\n } else if (e.key === 'Enter') {\n e.preventDefault()\n handleSave()\n }\n },\n [handleSave, handleCancel, nameDisabled],\n )\n\n const handleNameKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n if (!labelDisabled && labelInputRef.current) {\n labelInputRef.current.focus()\n // Position cursor at the end of the label input\n const length = labelInputRef.current.value.length\n labelInputRef.current.setSelectionRange(length, length)\n }\n } else if (e.key === 'Enter') {\n // Ctrl+Enter or Cmd+Enter to save\n e.preventDefault()\n handleSave()\n }\n },\n [handleSave, handleCancel, labelDisabled],\n )\n\n const handleInputClick = useCallback((e: React.MouseEvent<HTMLInputElement>) => {\n e.stopPropagation()\n }, [])\n\n const handleInputDoubleClick = useCallback((e: React.MouseEvent<HTMLInputElement>) => {\n e.stopPropagation()\n }, [])\n\n const handleInputMouseDown = useCallback((e: React.MouseEvent<HTMLInputElement>) => {\n e.stopPropagation()\n }, [])\n\n const handleInputMouseUp = useCallback((e: React.MouseEvent<HTMLInputElement>) => {\n e.stopPropagation()\n }, [])\n\n // Helper to determine disabled and tooltip\n const getDisabledAndTooltip = (disabledProp: boolean | string) => {\n if (typeof disabledProp === 'string') {\n return { disabled: true, tooltip: disabledProp }\n }\n return { disabled: !!disabledProp, tooltip: undefined }\n }\n\n const labelInputProps = getDisabledAndTooltip(labelDisabled)\n const nameInputProps = getDisabledAndTooltip(nameDisabled)\n\n return (\n <EditingContainer id={`editing-container-${cellId}`} onClick={(e) => e.stopPropagation()}>\n <StyledInput\n ref={labelInputRef}\n id={`${cellId}-label`}\n type=\"text\"\n value={label}\n onChange={handleLabelChange}\n onKeyDown={handleLabelKeyDown}\n onClick={handleInputClick}\n onDoubleClick={handleInputDoubleClick}\n onMouseDown={handleInputMouseDown}\n onMouseUp={handleInputMouseUp}\n placeholder={`${upperFirst(entityType)} label...`}\n style={{ paddingBottom: '6px' }}\n autoComplete=\"off\"\n disabled={labelInputProps.disabled}\n data-tooltip={labelInputProps.tooltip}\n data-tooltip-delay={100}\n />\n <InputLabel htmlFor={`${cellId}-name`}>Name</InputLabel>\n <StyledInput\n ref={nameInputRef}\n id={`${cellId}-name`}\n type=\"text\"\n value={name}\n onChange={handleNameChange}\n onKeyDown={handleNameKeyDown}\n onClick={handleInputClick}\n onDoubleClick={handleInputDoubleClick}\n onMouseDown={handleInputMouseDown}\n onMouseUp={handleInputMouseUp}\n className=\"system-name\"\n placeholder={`${entityType}_name`}\n autoComplete=\"off\"\n disabled={nameInputProps.disabled}\n data-tooltip={nameInputProps.tooltip}\n data-tooltip-delay={100}\n />\n </EditingContainer>\n )\n}\n"],"names":["EditingContainer","styled","InputLabel","StyledInput","theme","RenameForm","cellId","entityType","initialName","initialLabel","onClose","valueData","nameDisabled","labelDisabled","anatomy","useProjectDataContext","config","label","setLabel","useState","name","setName","setEditingCellId","updateEntities","useCellEditing","labelInputRef","useRef","nameInputRef","formattedFromLabel","parseAndFormatName","isNameAutoGenerated","useEffect","timeout","handleSave","useCallback","labelCheck","checkLabel","toast","nameCheck","checkName","meta","entityRowId","_a","finalLabel","_b","error","handleCancel","handleLabelChange","e","value","handleNameChange","handleLabelKeyDown","length","handleNameKeyDown","handleInputClick","handleInputDoubleClick","handleInputMouseDown","handleInputMouseUp","getDisabledAndTooltip","disabledProp","labelInputProps","nameInputProps","jsxs","jsx","upperFirst"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const u=require("../../../../_virtual/jsx-runtime.cjs.js"),T=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");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");const A=require("../../api/queries/review/getReview.cjs.js"),L=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");const q=require("@dnd-kit/core"),f=require("@dnd-kit/sortable");require("@ynput/ayon-react-components");require("clsx");require("../ThumbnailSimple/ThumbnailSimple.cjs.js");require("../EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");const V=require("react-toastify"),ne=require("./SortableReviewableCard.cjs.js"),qe=require("./ReviewablesList.styled.cjs.js"),oe=require("./getGroupedReviewables.cjs.js");require("../../containers/ContextMenu/ContextMenuContext.cjs.js");;/* empty css */const ae=require("../../containers/ContextMenu/useCreateContextMenu.cjs.js"),le=require("../../util/confirmDelete.cjs.js");require("uuid");require("lodash");require("../../util/pubsub.cjs.js");const de=require("./EditReviewableDialog.cjs.js"),ce=require("./ReviewablesUpload.cjs.js");require("../../context/RemoteModulesContext.cjs.js");const pe=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("axios");const xe=require("../ReviewableCard/ReviewableCard.cjs.js"),C=require("../ReviewableProgressCard/ReviewableProgressCard.cjs.js");require("../FileThumbnail/FileThumbnail.cjs.js");require("../Thumbnail/Thumbnail.styled.cjs.js");require("../Thumbnail/StackedThumbnails.cjs.js");require("../../containers/Feed/context/FeedContext.cjs.js");require("../../containers/Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../containers/Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../../containers/Feed/components/CommentInput/CommentInput.cjs.js");require("../../containers/Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../../containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../../containers/Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../containers/Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../../containers/Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../../containers/Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../containers/Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../containers/Feed/components/ActivityDate.cjs.js");require("../../containers/Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../../containers/Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../../containers/Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../../containers/Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../../containers/Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../../containers/Feed/Feed.styled.cjs.js");require("date-fns");require("../../containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../containers/Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../../containers/ProjectTreeTable/ProjectTreeTable.cjs.js");require("../../containers/ProjectTreeTable/context/CellEditingContext.cjs.js");require("short-uuid");require("@tanstack/react-table");require("../../containers/ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/DateWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/TextWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/CellWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../LinksManager/CellEditingDialog.cjs.js");require("../../containers/ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../../containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../LinksManager/LinksManager.styled.cjs.js");require("../../containers/ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../../containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../../containers/ProjectTreeTable/components/SelectionCell.cjs.js");require("../../containers/ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../../containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../../containers/ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../../containers/ProjectTreeTable/context/ClipboardContext.cjs.js");require("../../containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectDataContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../../containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("../../containers/ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../../containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js");require("../../containers/DetailsPanel/DetailsPanel.styled.cjs.js");require("../../containers/DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");require("../../containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../PlayableIcon/PlayableIcon.cjs.js");require("../../containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../containers/Actions/Actions.styled.cjs.js");require("../../containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../containers/Actions/ActionIcon.cjs.js");require("../../containers/Views/context/ViewsContext.cjs.js");require("../../containers/Views/Views.styled.cjs.js");require("../../containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../containers/Views/ViewsMenu/ViewsMenu.cjs.js");require("../EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("../SimpleFormDialog/SimpleFormDialog.cjs.js");require("../EntityPath/EntityPath.styled.cjs.js");require("../EntityPath/SegmentProvider.cjs.js");require("../DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../DetailsPanelDetails/DetailsSection.cjs.js");require("../DetailsPanelDetails/FieldLabel.cjs.js");require("../Watchers/Watchers.cjs.js");require("../ProjectTableSettings/ProjectTableSettings.cjs.js");require("../Powerpack/PowerpackButton.cjs.js");require("../Powerpack/PricingLink.cjs.js");require("../Powerpack/PowerpackDialog.styled.cjs.js");require("../Powerpack/CTAButton.cjs.js");require("../Powerpack/RequiredAddonVersion.cjs.js");require("../SizeSlider/SizeSlider.cjs.js");require("../SettingsPanel/SettingsPanel.cjs.js");require("../SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../AttributeEditor/components/MinMaxField.cjs.js");require("../EnumEditor/EnumEditor.styled.cjs.js");require("../SearchFilter/filterDates.cjs.js");require("../FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../Badge/Badge.cjs.js");require("../VersionUploader/components/UploadVersionDialog.cjs.js");require("../VersionUploader/context/VersionUploadContext.cjs.js");require("../Feedback/FeedbackContext.cjs.js");require("../Feedback/SupportBubble.cjs.js");require("../Chips/Chips.cjs.js");require("../../containers/EntityPickerDialog/EntityPickerDialog.cjs.js");require("../StyledLink/StyledLink.cjs.js");require("../ShareOptionIcon/ShareOptionIcon.cjs.js");require("../AccessUser/AccessUser.cjs.js");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../TableGridSwitch/TableGridSwitch.cjs.js");require("../SortingSetting/SortingSetting.styled.cjs.js");require("../EarlyPreview/EarlyPreview.cjs.js");require("../LegacyBadge/LegacyBadge.cjs.js");const fe=({projectName:s,versionId:o,productId:g,isLoadingVersion:$,scope:G})=>{var P,k;const{onOpenViewer:m,user:D,viewer:n,dispatch:U}=pe.useDetailsPanelContext(),{data:b,isFetching:O,currentData:R}=A.useGetReviewablesForVersionQuery({projectName:s,versionId:o},{skip:!o||!s}),{data:E}=A.useHasTranscoderQuery(void 0),j=(n==null?void 0:n.reviewableIds)||[],z=D.name,K=(P=D.data)==null?void 0:P.isUser,[y,S]=T.useState(null),[h,I]=T.useState(null),Q=q.useSensors(q.useSensor(q.PointerSensor),q.useSensor(q.KeyboardSensor,{coordinateGetter:f.sortableKeyboardCoordinates})),a=(b==null?void 0:b.reviewables)||[],w=a.find(e=>e.fileId===h),_=R==null?void 0:R.id,H=O&&o!==_||$,Y=e=>{if(h)return console.log("Dragging, cannot open review");const i=e.currentTarget.id;if(!i||!g)return console.error("No reviewable id or product id");const r=a.find(t=>t.fileId===i);console.debug(r),console.debug(r==null?void 0:r.mediaInfo),m==null||m({projectName:s,productId:g,versionIds:[o],reviewableIds:[i]})},{optimized:B,unoptimized:J,incompatible:W,processing:X,queued:Z}=oe.getGroupedReviewables(a,E),p=[...B,...J];function N(e){const{active:i}=e;I(i.id)}const[ee]=L.useSortVersionReviewablesMutation(),re=async e=>{const{active:i,over:r}=e;if(r!=null&&r.id&&i.id!==r.id){console.log("update review position");const t=p.findIndex(d=>d.fileId===i.id),l=p.findIndex(d=>d.fileId===r.id),c=f.arrayMove(p,t,l).map(d=>d.activityId);try{ee({projectName:s,versionId:o,sortReviewablesRequest:{sort:c}}).unwrap()}catch{V.toast.error("Error sorting reviewables")}}I(null)},M=[];G==="review"&&M.push(e=>({...e.transform,x:e.transform.x-32,y:e.transform.y-32}));let v="";E?v="The file is not supported by the transcoder":v="The conversion transcoder is only supported on [**Ynput Cloud**](https://ynput.cloud/subscribe/ayon). Please subscribe or [contact support](https://ynput.io/services/) for more information.";const ie=(e,i="")=>{let r=`/api/projects/${s}/files/${e}`;const t=document.createElement("a");t.href=r,t.download=i,document.body.appendChild(t),t.click(),document.body.removeChild(t)},[ue]=L.useDeleteReviewableMutation(),te=async(e,i)=>{le.confirmDelete({header:"Delete "+i,message:"Are you sure you want to delete this reviewable?",accept:async()=>{try{await ue({activityId:e,projectName:s}).unwrap()}catch{V.toast.error("Failed to delete reviewable")}}})},[se]=ae.useCreateContextMenu(),F=e=>{const i=e.currentTarget.id;if(!i)return;const r=a.find(c=>c.fileId===i);if(!r)return;const t=r.createdFrom||r.fileId,l=a.find(c=>c.fileId===t),x=[{label:"Download original",icon:"download",onClick:()=>ie(t,l==null?void 0:l.filename),disabled:!l}];(z===r.author.name||!K)&&x.push({label:"Delete",icon:"delete",onClick:()=>te(r.activityId,r.label||r.filename),danger:!0}),x.push({label:`Author: ${r.author.fullName||r.author.name}`,icon:"person",disabled:!0}),se(e,x)};return u.jsxRuntimeExports.jsxs(u.jsxRuntimeExports.Fragment,{children:[u.jsxRuntimeExports.jsx(ce.ReviewableUpload,{projectName:s,versionId:o,productId:g,taskId:n==null?void 0:n.taskId,folderId:n==null?void 0:n.folderId,dispatch:U,children:H?Array.from({length:3}).map((e,i)=>u.jsxRuntimeExports.jsx(qe.LoadingCard,{className:"loading"},i)):u.jsxRuntimeExports.jsxs(u.jsxRuntimeExports.Fragment,{children:[u.jsxRuntimeExports.jsxs(q.DndContext,{sensors:Q,collisionDetection:q.closestCenter,onDragStart:N,onDragEnd:re,onDragCancel:()=>I(null),children:[u.jsxRuntimeExports.jsx(f.SortableContext,{items:a.map(({fileId:e})=>e),strategy:f.verticalListSortingStrategy,children:p.map(e=>u.jsxRuntimeExports.jsx(ne,{projectName:s,onClick:Y,isSelected:j.includes(e.fileId),isDragging:!!h,onContextMenu:F,onEdit:i=>{i.stopPropagation(),S(e.activityId)},...e},e.fileId))}),u.jsxRuntimeExports.jsx(q.DragOverlay,{modifiers:M,children:w?u.jsxRuntimeExports.jsx(xe.ReviewableCard,{...w,projectName:s,isDragOverlay:!0,isDragging:!0,isSelected:j.includes(w.fileId)}):null})]}),X.map(e=>{var i;return u.jsxRuntimeExports.jsx(C.ReviewableProgressCard,{name:e.filename,type:"processing",progress:(i=e.processing)==null?void 0:i.progress,fileId:e.fileId},e.fileId)}),Z.map(e=>u.jsxRuntimeExports.jsx(C.ReviewableProgressCard,{name:e.filename,type:"queued",fileId:e.fileId},e.fileId)),W.map(e=>u.jsxRuntimeExports.jsx(C.ReviewableProgressCard,{name:e.filename,type:"unsupported",tooltip:v,src:`/api/projects/${s}/files/${e.fileId}/thumbnail`,onContextMenu:F,fileId:e.fileId},e.fileId))]})}),y&&u.jsxRuntimeExports.jsx(de,{isOpen:!0,onClose:()=>S(null),label:((k=a.find(e=>e.activityId===y))==null?void 0:k.label)||"",projectName:s,versionId:o,activityId:y})]})};module.exports=fe;
|
|
1
|
+
"use strict";const u=require("../../../../_virtual/jsx-runtime.cjs.js"),T=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");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");const A=require("../../api/queries/review/getReview.cjs.js"),L=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");const q=require("@dnd-kit/core"),f=require("@dnd-kit/sortable");require("@ynput/ayon-react-components");require("clsx");require("../ThumbnailSimple/ThumbnailSimple.cjs.js");require("../EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");const V=require("react-toastify"),ne=require("./SortableReviewableCard.cjs.js"),qe=require("./ReviewablesList.styled.cjs.js"),oe=require("./getGroupedReviewables.cjs.js");require("../../containers/ContextMenu/ContextMenuContext.cjs.js");;/* empty css */const ae=require("../../containers/ContextMenu/useCreateContextMenu.cjs.js"),le=require("../../util/confirmDelete.cjs.js");require("uuid");require("lodash");require("../../util/pubsub.cjs.js");const de=require("./EditReviewableDialog.cjs.js"),ce=require("./ReviewablesUpload.cjs.js");require("../../context/RemoteModulesContext.cjs.js");const pe=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("axios");const xe=require("../ReviewableCard/ReviewableCard.cjs.js"),C=require("../ReviewableProgressCard/ReviewableProgressCard.cjs.js");require("../FileThumbnail/FileThumbnail.cjs.js");require("../Thumbnail/Thumbnail.styled.cjs.js");require("../Thumbnail/StackedThumbnails.cjs.js");require("../../containers/Feed/context/FeedContext.cjs.js");require("../../containers/Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../containers/Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../../containers/Feed/components/CommentInput/CommentInput.cjs.js");require("../../containers/Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../../containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../../containers/Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../containers/Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../../containers/Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../../containers/Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../containers/Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../containers/Feed/components/ActivityDate.cjs.js");require("../../containers/Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../../containers/Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../../containers/Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../../containers/Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../../containers/Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../../containers/Feed/Feed.styled.cjs.js");require("date-fns");require("../../containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../containers/Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../../containers/ProjectTreeTable/ProjectTreeTable.cjs.js");require("../../containers/ProjectTreeTable/context/CellEditingContext.cjs.js");require("short-uuid");require("@tanstack/react-table");require("../../containers/ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/DateWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/TextWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/CellWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../LinksManager/CellEditingDialog.cjs.js");require("../../containers/ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../../containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../LinksManager/LinksManager.styled.cjs.js");require("../../containers/ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../../containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../../containers/ProjectTreeTable/components/SelectionCell.cjs.js");require("../../containers/ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../../containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../../containers/ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../../containers/ProjectTreeTable/context/ClipboardContext.cjs.js");require("../../containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectDataContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../../containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("../../containers/ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../../containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js");require("../../containers/DetailsPanel/DetailsPanel.styled.cjs.js");require("../../containers/DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");require("../../containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../PlayableIcon/PlayableIcon.cjs.js");require("../../containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../containers/Actions/Actions.styled.cjs.js");require("../../containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../containers/Actions/ActionIcon.cjs.js");require("../../containers/Views/context/ViewsContext.cjs.js");require("../../containers/Views/Views.styled.cjs.js");require("../../containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../containers/Views/ViewsMenu/ViewsMenu.cjs.js");require("../EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("../SimpleFormDialog/SimpleFormDialog.cjs.js");require("../EntityPath/EntityPath.styled.cjs.js");require("../EntityPath/SegmentProvider.cjs.js");require("../DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../DetailsPanelDetails/DetailsSection.cjs.js");require("../DetailsPanelDetails/FieldLabel.cjs.js");require("../Watchers/Watchers.cjs.js");require("../ProjectTableSettings/ProjectTableSettings.cjs.js");require("../Powerpack/PowerpackButton.cjs.js");require("../Powerpack/PricingLink.cjs.js");require("../Powerpack/PowerpackDialog.styled.cjs.js");require("../Powerpack/CTAButton.cjs.js");require("../Powerpack/RequiredAddonVersion.cjs.js");require("../SizeSlider/SizeSlider.cjs.js");require("../SettingsPanel/SettingsPanel.cjs.js");require("../SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../AttributeEditor/components/MinMaxField.cjs.js");require("../EnumEditor/EnumEditor.styled.cjs.js");require("../SearchFilter/filterDates.cjs.js");require("../FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../Badge/Badge.cjs.js");require("../VersionUploader/components/UploadVersionDialog.cjs.js");require("../VersionUploader/context/VersionUploadContext.cjs.js");require("../Feedback/FeedbackContext.cjs.js");require("../Feedback/SupportBubble.cjs.js");require("../Chips/Chips.cjs.js");require("../../containers/EntityPickerDialog/EntityPickerDialog.cjs.js");require("../StyledLink/StyledLink.cjs.js");require("../ShareOptionIcon/ShareOptionIcon.cjs.js");require("../AccessUser/AccessUser.cjs.js");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../TableGridSwitch/TableGridSwitch.cjs.js");require("../SortingSetting/SortingSetting.styled.cjs.js");require("../EarlyPreview/EarlyPreview.cjs.js");require("../LegacyBadge/LegacyBadge.cjs.js");const fe=({projectName:s,versionId:o,productId:g,isLoadingVersion:$,scope:G})=>{var P,k;const{onOpenViewer:m,user:D,viewer:n,dispatch:U}=pe.useDetailsPanelContext(),{data:b,isFetching:O,currentData:R}=A.useGetReviewablesForVersionQuery({projectName:s,versionId:o},{skip:!o||!s}),{data:E}=A.useHasTranscoderQuery(void 0),j=(n==null?void 0:n.reviewableIds)||[],z=D.name,K=(P=D.data)==null?void 0:P.isUser,[y,S]=T.useState(null),[h,I]=T.useState(null),Q=q.useSensors(q.useSensor(q.PointerSensor),q.useSensor(q.KeyboardSensor,{coordinateGetter:f.sortableKeyboardCoordinates})),a=(b==null?void 0:b.reviewables)||[],w=a.find(e=>e.fileId===h),_=R==null?void 0:R.id,H=O&&o!==_||$,Y=e=>{if(h)return console.log("Dragging, cannot open review");const i=e.currentTarget.id;if(!i||!g)return console.error("No reviewable id or product id");const r=a.find(t=>t.fileId===i);console.debug(r),console.debug(r==null?void 0:r.mediaInfo),m==null||m({projectName:s,productId:g,versionIds:[o],reviewableIds:[i]})},{optimized:B,unoptimized:J,incompatible:W,processing:X,queued:Z}=oe.getGroupedReviewables(a,E),p=[...B,...J];function N(e){const{active:i}=e;I(i.id)}const[ee]=L.useSortVersionReviewablesMutation(),re=async e=>{const{active:i,over:r}=e;if(r!=null&&r.id&&i.id!==r.id){console.log("update review position");const t=p.findIndex(d=>d.fileId===i.id),l=p.findIndex(d=>d.fileId===r.id),c=f.arrayMove(p,t,l).map(d=>d.activityId);try{ee({projectName:s,versionId:o,sortReviewablesRequest:{sort:c}}).unwrap()}catch{V.toast.error("Error sorting reviewables")}}I(null)},M=[];G==="review"&&M.push(e=>({...e.transform,x:e.transform.x-32,y:e.transform.y-32}));let v="";E?v="The file is not supported by the transcoder":v="The conversion transcoder is only supported on [**Ynput Cloud**](https://ynput.cloud/subscribe/ayon). Please subscribe or [contact support](https://ynput.io/services/) for more information.";const ie=(e,i="")=>{let r=`/api/projects/${s}/files/${e}`;const t=document.createElement("a");t.href=r,t.download=i,document.body.appendChild(t),t.click(),document.body.removeChild(t)},[ue]=L.useDeleteReviewableMutation(),te=async(e,i)=>{le.confirmDelete({header:"Delete "+i,message:"Are you sure you want to delete this reviewable?",accept:async()=>{try{await ue({activityId:e,projectName:s}).unwrap()}catch{V.toast.error("Failed to delete reviewable")}}})},[se]=ae.useCreateContextMenu(),F=e=>{const i=e.currentTarget.id;if(!i)return;const r=a.find(c=>c.fileId===i);if(!r)return;const t=r.createdFrom||r.fileId,l=a.find(c=>c.fileId===t),x=[{label:"Download original",icon:"download",onClick:()=>ie(t,l==null?void 0:l.filename),disabled:!l}];(z===r.author.name||!K)&&x.push({label:"Delete",icon:"delete",onClick:()=>te(r.activityId,r.label||r.filename),danger:!0}),x.push({label:`Author: ${r.author.fullName||r.author.name}`,icon:"person",disabled:!0}),se(e,x)};return u.jsxRuntimeExports.jsxs(u.jsxRuntimeExports.Fragment,{children:[u.jsxRuntimeExports.jsx(ce.ReviewableUpload,{projectName:s,versionId:o,productId:g,taskId:n==null?void 0:n.taskId,folderId:n==null?void 0:n.folderId,dispatch:U,children:H?Array.from({length:3}).map((e,i)=>u.jsxRuntimeExports.jsx(qe.LoadingCard,{className:"loading"},i)):u.jsxRuntimeExports.jsxs(u.jsxRuntimeExports.Fragment,{children:[u.jsxRuntimeExports.jsxs(q.DndContext,{sensors:Q,collisionDetection:q.closestCenter,onDragStart:N,onDragEnd:re,onDragCancel:()=>I(null),children:[u.jsxRuntimeExports.jsx(f.SortableContext,{items:a.map(({fileId:e})=>e),strategy:f.verticalListSortingStrategy,children:p.map(e=>u.jsxRuntimeExports.jsx(ne,{projectName:s,onClick:Y,isSelected:j.includes(e.fileId),isDragging:!!h,onContextMenu:F,onEdit:i=>{i.stopPropagation(),S(e.activityId)},...e},e.fileId))}),u.jsxRuntimeExports.jsx(q.DragOverlay,{modifiers:M,children:w?u.jsxRuntimeExports.jsx(xe.ReviewableCard,{...w,projectName:s,isDragOverlay:!0,isDragging:!0,isSelected:j.includes(w.fileId)}):null})]}),X.map(e=>{var i;return u.jsxRuntimeExports.jsx(C.ReviewableProgressCard,{name:e.filename,type:"processing",progress:(i=e.processing)==null?void 0:i.progress,fileId:e.fileId},e.fileId)}),Z.map(e=>u.jsxRuntimeExports.jsx(C.ReviewableProgressCard,{name:e.filename,type:"queued",fileId:e.fileId},e.fileId)),W.map(e=>u.jsxRuntimeExports.jsx(C.ReviewableProgressCard,{name:e.filename,type:"unsupported",tooltip:v,src:`/api/projects/${s}/files/${e.fileId}/thumbnail`,onContextMenu:F,fileId:e.fileId},e.fileId))]})}),y&&u.jsxRuntimeExports.jsx(de,{isOpen:!0,onClose:()=>S(null),label:((k=a.find(e=>e.activityId===y))==null?void 0:k.label)||"",projectName:s,versionId:o,activityId:y})]})};module.exports=fe;
|
|
2
2
|
//# sourceMappingURL=ReviewablesList.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReviewablesList.cjs.js","sources":["../../../../../src/components/ReviewablesList/ReviewablesList.tsx"],"sourcesContent":["import { FC, MouseEvent, useState } from 'react'\n// queries\nimport { useGetReviewablesForVersionQuery, useHasTranscoderQuery } from '@shared/api'\nimport { useDeleteReviewableMutation, useSortVersionReviewablesMutation } from '@shared/api'\n\n// DND\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n UniqueIdentifier,\n DragEndEvent,\n DragOverlay,\n DragStartEvent,\n} from '@dnd-kit/core'\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable'\n\n// components\nimport { ReviewableCard, ReviewableProgressCard } from '@shared/components'\nimport SortableReviewableCard from './SortableReviewableCard'\nimport * as Styled from './ReviewablesList.styled'\nimport { toast } from 'react-toastify'\n\n// utils\nimport { getGroupedReviewables } from './getGroupedReviewables'\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\nimport { confirmDelete } from '@shared/util'\nimport EditReviewableDialog from './EditReviewableDialog'\nimport ReviewableUpload from './ReviewablesUpload'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface ReviewablesListProps {\n projectName: string\n versionId: string\n productId: string\n isLoadingVersion: boolean\n scope: string\n}\n\nconst ReviewablesList: FC<ReviewablesListProps> = ({\n projectName,\n versionId,\n productId,\n isLoadingVersion,\n scope,\n}) => {\n const { onOpenViewer, user, viewer, dispatch } = useDetailsPanelContext()\n // returns all reviewables for a product\n const {\n data: versionReviewables,\n isFetching: isFetchingReviewables,\n currentData,\n } = useGetReviewablesForVersionQuery(\n { projectName, versionId: versionId },\n { skip: !versionId || !projectName },\n )\n\n // do we have the premium transcoder?\n const { data: hasTranscoder } = useHasTranscoderQuery(undefined)\n\n // are we currently looking at review? (is it selected in the viewer)\n const reviewableIds = viewer?.reviewableIds || []\n const userName = user.name\n const currentIsUser = user.data?.isUser\n\n // either null or the reviewable id we are editing\n const [editActivityId, setEditActivityId] = useState<null | string>(null)\n\n // dragging activeId\n const [activeId, setActiveId] = useState<null | string>(null)\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const reviewables = versionReviewables?.reviewables || []\n const draggingReview = reviewables.find((reviewable) => reviewable.fileId === activeId)\n\n const currentVersionId = currentData?.id\n const queryingNewVersion = versionId !== currentVersionId\n\n const isLoading = (isFetchingReviewables && queryingNewVersion) || isLoadingVersion\n\n const handleReviewableClick = (event: MouseEvent<HTMLDivElement>) => {\n // check are not dragging\n if (activeId) return console.log('Dragging, cannot open review')\n\n // get the reviewable id\n const id = event.currentTarget.id\n if (!id || !productId) return console.error('No reviewable id or product id')\n\n const reviewable = reviewables.find((reviewable) => reviewable.fileId === id)\n console.debug(reviewable)\n console.debug(reviewable?.mediaInfo)\n\n // open the reviewable dialog\n onOpenViewer?.({\n projectName: projectName,\n productId: productId,\n versionIds: [versionId],\n reviewableIds: [id],\n })\n }\n\n const { optimized, unoptimized, incompatible, processing, queued } = getGroupedReviewables(\n reviewables,\n hasTranscoder,\n )\n\n const sortableReviewables = [...optimized, ...unoptimized]\n\n function handleDragStart(event: DragStartEvent) {\n const { active } = event\n\n setActiveId(active.id as string)\n }\n\n const [sortVersionReviewables] = useSortVersionReviewablesMutation()\n\n const handleDragEnd = async (event: DragEndEvent) => {\n const { active, over } = event\n\n if (over?.id && active.id !== over.id) {\n console.log('update review position')\n\n const oldIndex = sortableReviewables.findIndex(\n (reviewable) => reviewable.fileId === active.id,\n )\n const newIndex = sortableReviewables.findIndex((reviewable) => reviewable.fileId === over.id)\n\n // resort the reviewables\n const newReviewables = arrayMove(sortableReviewables, oldIndex, newIndex)\n\n const newOrder = newReviewables.map((reviewable) => reviewable.activityId)\n\n try {\n // update the reviewables\n sortVersionReviewables({\n projectName,\n versionId,\n sortReviewablesRequest: { sort: newOrder },\n }).unwrap()\n } catch (error) {\n toast.error('Error sorting reviewables')\n }\n }\n setActiveId(null)\n }\n\n const overlayModifiers = []\n // hack to make the dnd overlay pos work inside dialog\n if (scope === 'review') {\n overlayModifiers.push((args: any) => ({\n ...args.transform,\n x: args.transform.x - 32,\n y: args.transform.y - 32,\n }))\n }\n\n let incompatibleMessage = ''\n if (!hasTranscoder) {\n incompatibleMessage = `The conversion transcoder is only supported on [**Ynput Cloud**](https://ynput.cloud/subscribe/ayon). Please subscribe or [contact support](https://ynput.io/services/) for more information.`\n } else {\n incompatibleMessage = 'The file is not supported by the transcoder'\n }\n\n const handleDownloadFile = (fileId: string, fileName: string = '') => {\n let url = `/api/projects/${projectName}/files/${fileId}`\n\n // if (codec) url += `.${codec}`\n\n // Create an invisible anchor element\n const a = document.createElement('a')\n a.href = url\n a.download = fileName\n document.body.appendChild(a)\n\n // Trigger a click event on the anchor element\n a.click()\n\n // Remove the anchor element from the document\n document.body.removeChild(a)\n }\n\n const [deleteReviewable] = useDeleteReviewableMutation()\n\n const handleDelete = async (activityId: string, label: string) => {\n // @ts-ignore\n confirmDelete({\n header: 'Delete ' + label,\n message: 'Are you sure you want to delete this reviewable?',\n accept: async () => {\n try {\n await deleteReviewable({ activityId, projectName }).unwrap()\n } catch (error) {\n toast.error('Failed to delete reviewable')\n }\n },\n })\n }\n\n // create the ref and model\n const [ctxMenuShow] = useCreateContextMenu()\n\n const handleContextMenu = (event: MouseEvent<HTMLDivElement>) => {\n // get the reviewable by id\n const id = event.currentTarget.id\n\n if (!id) return\n\n const reviewable = reviewables.find((reviewable) => reviewable.fileId === id)\n\n if (!reviewable) return\n\n const originalFileId = reviewable.createdFrom || reviewable.fileId\n const originalReviewable = reviewables.find(\n (reviewable) => reviewable.fileId === originalFileId,\n )\n\n const items: {\n label: string\n icon: string\n onClick?: () => void\n disabled?: boolean\n danger?: boolean\n }[] = [\n {\n label: 'Download original',\n icon: 'download',\n onClick: () => handleDownloadFile(originalFileId, originalReviewable?.filename),\n disabled: !originalReviewable,\n },\n ]\n\n if (userName === reviewable.author.name || !currentIsUser) {\n items.push({\n label: 'Delete',\n icon: 'delete',\n onClick: () => handleDelete(reviewable.activityId, reviewable.label || reviewable.filename),\n danger: true,\n })\n }\n\n // add author\n items.push({\n label: `Author: ${reviewable.author.fullName || reviewable.author.name}`,\n icon: 'person',\n disabled: true,\n })\n\n ctxMenuShow(event, items)\n }\n\n return (\n <>\n <ReviewableUpload\n projectName={projectName}\n versionId={versionId}\n productId={productId}\n taskId={viewer?.taskId}\n folderId={viewer?.folderId}\n dispatch={dispatch}\n >\n {isLoading ? (\n Array.from({ length: 3 }).map((_, index) => (\n <Styled.LoadingCard key={index} className=\"loading\" />\n ))\n ) : (\n <>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={() => setActiveId(null)}\n >\n <SortableContext\n items={reviewables.map(({ fileId }) => fileId as UniqueIdentifier)}\n strategy={verticalListSortingStrategy}\n >\n {sortableReviewables.map((reviewable) => (\n <SortableReviewableCard\n key={reviewable.fileId}\n projectName={projectName}\n onClick={handleReviewableClick}\n isSelected={reviewableIds.includes(reviewable.fileId)}\n isDragging={!!activeId}\n onContextMenu={handleContextMenu}\n onEdit={(e) => {\n e.stopPropagation()\n setEditActivityId(reviewable.activityId)\n }}\n {...reviewable}\n />\n ))}\n </SortableContext>\n\n {/* drag overlay */}\n <DragOverlay modifiers={overlayModifiers}>\n {draggingReview ? (\n <ReviewableCard\n {...draggingReview}\n projectName={projectName}\n isDragOverlay\n isDragging\n isSelected={reviewableIds.includes(draggingReview.fileId)}\n />\n ) : null}\n </DragOverlay>\n </DndContext>\n {processing.map((reviewable) => (\n <ReviewableProgressCard\n key={reviewable.fileId}\n name={reviewable.filename}\n type={'processing'}\n progress={reviewable.processing?.progress}\n fileId={reviewable.fileId}\n />\n ))}\n\n {queued.map((reviewable) => (\n <ReviewableProgressCard\n key={reviewable.fileId}\n name={reviewable.filename}\n type={'queued'}\n fileId={reviewable.fileId}\n />\n ))}\n\n {incompatible.map((reviewable) => (\n <ReviewableProgressCard\n key={reviewable.fileId}\n name={reviewable.filename}\n type={'unsupported'}\n tooltip={incompatibleMessage}\n src={`/api/projects/${projectName}/files/${reviewable.fileId}/thumbnail`}\n onContextMenu={handleContextMenu}\n fileId={reviewable.fileId}\n />\n ))}\n </>\n )}\n </ReviewableUpload>\n\n {editActivityId && (\n <EditReviewableDialog\n isOpen\n onClose={() => setEditActivityId(null)}\n label={\n reviewables.find((reviewable) => reviewable.activityId === editActivityId)?.label || ''\n }\n projectName={projectName}\n versionId={versionId}\n activityId={editActivityId}\n />\n )}\n </>\n )\n}\n\nexport default ReviewablesList\n"],"names":["ReviewablesList","projectName","versionId","productId","isLoadingVersion","scope","onOpenViewer","user","viewer","dispatch","useDetailsPanelContext","versionReviewables","isFetchingReviewables","currentData","useGetReviewablesForVersionQuery","hasTranscoder","useHasTranscoderQuery","reviewableIds","userName","currentIsUser","_a","editActivityId","setEditActivityId","useState","activeId","setActiveId","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","reviewables","draggingReview","reviewable","currentVersionId","isLoading","handleReviewableClick","event","id","optimized","unoptimized","incompatible","processing","queued","getGroupedReviewables","sortableReviewables","handleDragStart","active","sortVersionReviewables","useSortVersionReviewablesMutation","handleDragEnd","over","oldIndex","newIndex","newOrder","arrayMove","toast","overlayModifiers","args","incompatibleMessage","handleDownloadFile","fileId","fileName","url","a","deleteReviewable","useDeleteReviewableMutation","handleDelete","activityId","label","confirmDelete","ctxMenuShow","useCreateContextMenu","handleContextMenu","originalFileId","originalReviewable","items","jsxs","Fragment","jsx","ReviewableUpload","_","index","Styled.LoadingCard","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","SortableReviewableCard","e","DragOverlay","ReviewableCard","ReviewableProgressCard","EditReviewableDialog","_b"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ReviewablesList.cjs.js","sources":["../../../../../src/components/ReviewablesList/ReviewablesList.tsx"],"sourcesContent":["import { FC, MouseEvent, useState } from 'react'\n// queries\nimport { useGetReviewablesForVersionQuery, useHasTranscoderQuery } from '@shared/api'\nimport { useDeleteReviewableMutation, useSortVersionReviewablesMutation } from '@shared/api'\n\n// DND\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n UniqueIdentifier,\n DragEndEvent,\n DragOverlay,\n DragStartEvent,\n} from '@dnd-kit/core'\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable'\n\n// components\nimport { ReviewableCard, ReviewableProgressCard } from '@shared/components'\nimport SortableReviewableCard from './SortableReviewableCard'\nimport * as Styled from './ReviewablesList.styled'\nimport { toast } from 'react-toastify'\n\n// utils\nimport { getGroupedReviewables } from './getGroupedReviewables'\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\nimport { confirmDelete } from '@shared/util'\nimport EditReviewableDialog from './EditReviewableDialog'\nimport ReviewableUpload from './ReviewablesUpload'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface ReviewablesListProps {\n projectName: string\n versionId: string\n productId: string\n isLoadingVersion: boolean\n scope: string\n}\n\nconst ReviewablesList: FC<ReviewablesListProps> = ({\n projectName,\n versionId,\n productId,\n isLoadingVersion,\n scope,\n}) => {\n const { onOpenViewer, user, viewer, dispatch } = useDetailsPanelContext()\n // returns all reviewables for a product\n const {\n data: versionReviewables,\n isFetching: isFetchingReviewables,\n currentData,\n } = useGetReviewablesForVersionQuery(\n { projectName, versionId: versionId },\n { skip: !versionId || !projectName },\n )\n\n // do we have the premium transcoder?\n const { data: hasTranscoder } = useHasTranscoderQuery(undefined)\n\n // are we currently looking at review? (is it selected in the viewer)\n const reviewableIds = viewer?.reviewableIds || []\n const userName = user.name\n const currentIsUser = user.data?.isUser\n\n // either null or the reviewable id we are editing\n const [editActivityId, setEditActivityId] = useState<null | string>(null)\n\n // dragging activeId\n const [activeId, setActiveId] = useState<null | string>(null)\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const reviewables = versionReviewables?.reviewables || []\n const draggingReview = reviewables.find((reviewable) => reviewable.fileId === activeId)\n\n const currentVersionId = currentData?.id\n const queryingNewVersion = versionId !== currentVersionId\n\n const isLoading = (isFetchingReviewables && queryingNewVersion) || isLoadingVersion\n\n const handleReviewableClick = (event: MouseEvent<HTMLDivElement>) => {\n // check are not dragging\n if (activeId) return console.log('Dragging, cannot open review')\n\n // get the reviewable id\n const id = event.currentTarget.id\n if (!id || !productId) return console.error('No reviewable id or product id')\n\n const reviewable = reviewables.find((reviewable) => reviewable.fileId === id)\n console.debug(reviewable)\n console.debug(reviewable?.mediaInfo)\n\n // open the reviewable dialog\n onOpenViewer?.({\n projectName: projectName,\n productId: productId,\n versionIds: [versionId],\n reviewableIds: [id],\n })\n }\n\n const { optimized, unoptimized, incompatible, processing, queued } = getGroupedReviewables(\n reviewables,\n hasTranscoder,\n )\n\n const sortableReviewables = [...optimized, ...unoptimized]\n\n function handleDragStart(event: DragStartEvent) {\n const { active } = event\n\n setActiveId(active.id as string)\n }\n\n const [sortVersionReviewables] = useSortVersionReviewablesMutation()\n\n const handleDragEnd = async (event: DragEndEvent) => {\n const { active, over } = event\n\n if (over?.id && active.id !== over.id) {\n console.log('update review position')\n\n const oldIndex = sortableReviewables.findIndex(\n (reviewable) => reviewable.fileId === active.id,\n )\n const newIndex = sortableReviewables.findIndex((reviewable) => reviewable.fileId === over.id)\n\n // resort the reviewables\n const newReviewables = arrayMove(sortableReviewables, oldIndex, newIndex)\n\n const newOrder = newReviewables.map((reviewable) => reviewable.activityId)\n\n try {\n // update the reviewables\n sortVersionReviewables({\n projectName,\n versionId,\n sortReviewablesRequest: { sort: newOrder },\n }).unwrap()\n } catch (error) {\n toast.error('Error sorting reviewables')\n }\n }\n setActiveId(null)\n }\n\n const overlayModifiers = []\n // hack to make the dnd overlay pos work inside dialog\n if (scope === 'review') {\n overlayModifiers.push((args: any) => ({\n ...args.transform,\n x: args.transform.x - 32,\n y: args.transform.y - 32,\n }))\n }\n\n let incompatibleMessage = ''\n if (!hasTranscoder) {\n incompatibleMessage = `The conversion transcoder is only supported on [**Ynput Cloud**](https://ynput.cloud/subscribe/ayon). Please subscribe or [contact support](https://ynput.io/services/) for more information.`\n } else {\n incompatibleMessage = 'The file is not supported by the transcoder'\n }\n\n const handleDownloadFile = (fileId: string, fileName: string = '') => {\n let url = `/api/projects/${projectName}/files/${fileId}`\n\n // if (codec) url += `.${codec}`\n\n // Create an invisible anchor element\n const a = document.createElement('a')\n a.href = url\n a.download = fileName\n document.body.appendChild(a)\n\n // Trigger a click event on the anchor element\n a.click()\n\n // Remove the anchor element from the document\n document.body.removeChild(a)\n }\n\n const [deleteReviewable] = useDeleteReviewableMutation()\n\n const handleDelete = async (activityId: string, label: string) => {\n // @ts-ignore\n confirmDelete({\n header: 'Delete ' + label,\n message: 'Are you sure you want to delete this reviewable?',\n accept: async () => {\n try {\n await deleteReviewable({ activityId, projectName }).unwrap()\n } catch (error) {\n toast.error('Failed to delete reviewable')\n }\n },\n })\n }\n\n // create the ref and model\n const [ctxMenuShow] = useCreateContextMenu()\n\n const handleContextMenu = (event: MouseEvent<HTMLDivElement>) => {\n // get the reviewable by id\n const id = event.currentTarget.id\n\n if (!id) return\n\n const reviewable = reviewables.find((reviewable) => reviewable.fileId === id)\n\n if (!reviewable) return\n\n const originalFileId = reviewable.createdFrom || reviewable.fileId\n const originalReviewable = reviewables.find(\n (reviewable) => reviewable.fileId === originalFileId,\n )\n\n const items: {\n label: string\n icon: string\n onClick?: () => void\n disabled?: boolean\n danger?: boolean\n }[] = [\n {\n label: 'Download original',\n icon: 'download',\n onClick: () => handleDownloadFile(originalFileId, originalReviewable?.filename),\n disabled: !originalReviewable,\n },\n ]\n\n if (userName === reviewable.author.name || !currentIsUser) {\n items.push({\n label: 'Delete',\n icon: 'delete',\n onClick: () => handleDelete(reviewable.activityId, reviewable.label || reviewable.filename),\n danger: true,\n })\n }\n\n // add author\n items.push({\n label: `Author: ${reviewable.author.fullName || reviewable.author.name}`,\n icon: 'person',\n disabled: true,\n })\n\n ctxMenuShow(event, items)\n }\n\n return (\n <>\n <ReviewableUpload\n projectName={projectName}\n versionId={versionId}\n productId={productId}\n taskId={viewer?.taskId}\n folderId={viewer?.folderId}\n dispatch={dispatch}\n >\n {isLoading ? (\n Array.from({ length: 3 }).map((_, index) => (\n <Styled.LoadingCard key={index} className=\"loading\" />\n ))\n ) : (\n <>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={() => setActiveId(null)}\n >\n <SortableContext\n items={reviewables.map(({ fileId }) => fileId as UniqueIdentifier)}\n strategy={verticalListSortingStrategy}\n >\n {sortableReviewables.map((reviewable) => (\n <SortableReviewableCard\n key={reviewable.fileId}\n projectName={projectName}\n onClick={handleReviewableClick}\n isSelected={reviewableIds.includes(reviewable.fileId)}\n isDragging={!!activeId}\n onContextMenu={handleContextMenu}\n onEdit={(e) => {\n e.stopPropagation()\n setEditActivityId(reviewable.activityId)\n }}\n {...reviewable}\n />\n ))}\n </SortableContext>\n\n {/* drag overlay */}\n <DragOverlay modifiers={overlayModifiers}>\n {draggingReview ? (\n <ReviewableCard\n {...draggingReview}\n projectName={projectName}\n isDragOverlay\n isDragging\n isSelected={reviewableIds.includes(draggingReview.fileId)}\n />\n ) : null}\n </DragOverlay>\n </DndContext>\n {processing.map((reviewable) => (\n <ReviewableProgressCard\n key={reviewable.fileId}\n name={reviewable.filename}\n type={'processing'}\n progress={reviewable.processing?.progress}\n fileId={reviewable.fileId}\n />\n ))}\n\n {queued.map((reviewable) => (\n <ReviewableProgressCard\n key={reviewable.fileId}\n name={reviewable.filename}\n type={'queued'}\n fileId={reviewable.fileId}\n />\n ))}\n\n {incompatible.map((reviewable) => (\n <ReviewableProgressCard\n key={reviewable.fileId}\n name={reviewable.filename}\n type={'unsupported'}\n tooltip={incompatibleMessage}\n src={`/api/projects/${projectName}/files/${reviewable.fileId}/thumbnail`}\n onContextMenu={handleContextMenu}\n fileId={reviewable.fileId}\n />\n ))}\n </>\n )}\n </ReviewableUpload>\n\n {editActivityId && (\n <EditReviewableDialog\n isOpen\n onClose={() => setEditActivityId(null)}\n label={\n reviewables.find((reviewable) => reviewable.activityId === editActivityId)?.label || ''\n }\n projectName={projectName}\n versionId={versionId}\n activityId={editActivityId}\n />\n )}\n </>\n )\n}\n\nexport default ReviewablesList\n"],"names":["ReviewablesList","projectName","versionId","productId","isLoadingVersion","scope","onOpenViewer","user","viewer","dispatch","useDetailsPanelContext","versionReviewables","isFetchingReviewables","currentData","useGetReviewablesForVersionQuery","hasTranscoder","useHasTranscoderQuery","reviewableIds","userName","currentIsUser","_a","editActivityId","setEditActivityId","useState","activeId","setActiveId","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","reviewables","draggingReview","reviewable","currentVersionId","isLoading","handleReviewableClick","event","id","optimized","unoptimized","incompatible","processing","queued","getGroupedReviewables","sortableReviewables","handleDragStart","active","sortVersionReviewables","useSortVersionReviewablesMutation","handleDragEnd","over","oldIndex","newIndex","newOrder","arrayMove","toast","overlayModifiers","args","incompatibleMessage","handleDownloadFile","fileId","fileName","url","a","deleteReviewable","useDeleteReviewableMutation","handleDelete","activityId","label","confirmDelete","ctxMenuShow","useCreateContextMenu","handleContextMenu","originalFileId","originalReviewable","items","jsxs","Fragment","jsx","ReviewableUpload","_","index","Styled.LoadingCard","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","SortableReviewableCard","e","DragOverlay","ReviewableCard","ReviewableProgressCard","EditReviewableDialog","_b"],"mappings":"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"}
|
|
@@ -115,6 +115,7 @@ import "../../context/PowerpackContext.es.js";
|
|
|
115
115
|
import "../../context/MoveEntityContext.es.js";
|
|
116
116
|
import "../../context/MenuContext.es.js";
|
|
117
117
|
import "../../context/WebsocketContext.es.js";
|
|
118
|
+
import "../../context/GlobalContext.es.js";
|
|
118
119
|
import "axios";
|
|
119
120
|
import { ReviewableCard as Rt } from "../ReviewableCard/ReviewableCard.es.js";
|
|
120
121
|
import { ReviewableProgressCard as C } from "../ReviewableProgressCard/ReviewableProgressCard.es.js";
|
|
@@ -240,7 +241,7 @@ import "../TableGridSwitch/TableGridSwitch.es.js";
|
|
|
240
241
|
import "../SortingSetting/SortingSetting.styled.es.js";
|
|
241
242
|
import "../EarlyPreview/EarlyPreview.es.js";
|
|
242
243
|
import "../LegacyBadge/LegacyBadge.es.js";
|
|
243
|
-
const
|
|
244
|
+
const om = ({
|
|
244
245
|
projectName: m,
|
|
245
246
|
versionId: n,
|
|
246
247
|
productId: f,
|
|
@@ -453,6 +454,6 @@ const tm = ({
|
|
|
453
454
|
] });
|
|
454
455
|
};
|
|
455
456
|
export {
|
|
456
|
-
|
|
457
|
+
om as default
|
|
457
458
|
};
|
|
458
459
|
//# sourceMappingURL=ReviewablesList.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReviewablesList.es.js","sources":["../../../../../src/components/ReviewablesList/ReviewablesList.tsx"],"sourcesContent":["import { FC, MouseEvent, useState } from 'react'\n// queries\nimport { useGetReviewablesForVersionQuery, useHasTranscoderQuery } from '@shared/api'\nimport { useDeleteReviewableMutation, useSortVersionReviewablesMutation } from '@shared/api'\n\n// DND\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n UniqueIdentifier,\n DragEndEvent,\n DragOverlay,\n DragStartEvent,\n} from '@dnd-kit/core'\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable'\n\n// components\nimport { ReviewableCard, ReviewableProgressCard } from '@shared/components'\nimport SortableReviewableCard from './SortableReviewableCard'\nimport * as Styled from './ReviewablesList.styled'\nimport { toast } from 'react-toastify'\n\n// utils\nimport { getGroupedReviewables } from './getGroupedReviewables'\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\nimport { confirmDelete } from '@shared/util'\nimport EditReviewableDialog from './EditReviewableDialog'\nimport ReviewableUpload from './ReviewablesUpload'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface ReviewablesListProps {\n projectName: string\n versionId: string\n productId: string\n isLoadingVersion: boolean\n scope: string\n}\n\nconst ReviewablesList: FC<ReviewablesListProps> = ({\n projectName,\n versionId,\n productId,\n isLoadingVersion,\n scope,\n}) => {\n const { onOpenViewer, user, viewer, dispatch } = useDetailsPanelContext()\n // returns all reviewables for a product\n const {\n data: versionReviewables,\n isFetching: isFetchingReviewables,\n currentData,\n } = useGetReviewablesForVersionQuery(\n { projectName, versionId: versionId },\n { skip: !versionId || !projectName },\n )\n\n // do we have the premium transcoder?\n const { data: hasTranscoder } = useHasTranscoderQuery(undefined)\n\n // are we currently looking at review? (is it selected in the viewer)\n const reviewableIds = viewer?.reviewableIds || []\n const userName = user.name\n const currentIsUser = user.data?.isUser\n\n // either null or the reviewable id we are editing\n const [editActivityId, setEditActivityId] = useState<null | string>(null)\n\n // dragging activeId\n const [activeId, setActiveId] = useState<null | string>(null)\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const reviewables = versionReviewables?.reviewables || []\n const draggingReview = reviewables.find((reviewable) => reviewable.fileId === activeId)\n\n const currentVersionId = currentData?.id\n const queryingNewVersion = versionId !== currentVersionId\n\n const isLoading = (isFetchingReviewables && queryingNewVersion) || isLoadingVersion\n\n const handleReviewableClick = (event: MouseEvent<HTMLDivElement>) => {\n // check are not dragging\n if (activeId) return console.log('Dragging, cannot open review')\n\n // get the reviewable id\n const id = event.currentTarget.id\n if (!id || !productId) return console.error('No reviewable id or product id')\n\n const reviewable = reviewables.find((reviewable) => reviewable.fileId === id)\n console.debug(reviewable)\n console.debug(reviewable?.mediaInfo)\n\n // open the reviewable dialog\n onOpenViewer?.({\n projectName: projectName,\n productId: productId,\n versionIds: [versionId],\n reviewableIds: [id],\n })\n }\n\n const { optimized, unoptimized, incompatible, processing, queued } = getGroupedReviewables(\n reviewables,\n hasTranscoder,\n )\n\n const sortableReviewables = [...optimized, ...unoptimized]\n\n function handleDragStart(event: DragStartEvent) {\n const { active } = event\n\n setActiveId(active.id as string)\n }\n\n const [sortVersionReviewables] = useSortVersionReviewablesMutation()\n\n const handleDragEnd = async (event: DragEndEvent) => {\n const { active, over } = event\n\n if (over?.id && active.id !== over.id) {\n console.log('update review position')\n\n const oldIndex = sortableReviewables.findIndex(\n (reviewable) => reviewable.fileId === active.id,\n )\n const newIndex = sortableReviewables.findIndex((reviewable) => reviewable.fileId === over.id)\n\n // resort the reviewables\n const newReviewables = arrayMove(sortableReviewables, oldIndex, newIndex)\n\n const newOrder = newReviewables.map((reviewable) => reviewable.activityId)\n\n try {\n // update the reviewables\n sortVersionReviewables({\n projectName,\n versionId,\n sortReviewablesRequest: { sort: newOrder },\n }).unwrap()\n } catch (error) {\n toast.error('Error sorting reviewables')\n }\n }\n setActiveId(null)\n }\n\n const overlayModifiers = []\n // hack to make the dnd overlay pos work inside dialog\n if (scope === 'review') {\n overlayModifiers.push((args: any) => ({\n ...args.transform,\n x: args.transform.x - 32,\n y: args.transform.y - 32,\n }))\n }\n\n let incompatibleMessage = ''\n if (!hasTranscoder) {\n incompatibleMessage = `The conversion transcoder is only supported on [**Ynput Cloud**](https://ynput.cloud/subscribe/ayon). Please subscribe or [contact support](https://ynput.io/services/) for more information.`\n } else {\n incompatibleMessage = 'The file is not supported by the transcoder'\n }\n\n const handleDownloadFile = (fileId: string, fileName: string = '') => {\n let url = `/api/projects/${projectName}/files/${fileId}`\n\n // if (codec) url += `.${codec}`\n\n // Create an invisible anchor element\n const a = document.createElement('a')\n a.href = url\n a.download = fileName\n document.body.appendChild(a)\n\n // Trigger a click event on the anchor element\n a.click()\n\n // Remove the anchor element from the document\n document.body.removeChild(a)\n }\n\n const [deleteReviewable] = useDeleteReviewableMutation()\n\n const handleDelete = async (activityId: string, label: string) => {\n // @ts-ignore\n confirmDelete({\n header: 'Delete ' + label,\n message: 'Are you sure you want to delete this reviewable?',\n accept: async () => {\n try {\n await deleteReviewable({ activityId, projectName }).unwrap()\n } catch (error) {\n toast.error('Failed to delete reviewable')\n }\n },\n })\n }\n\n // create the ref and model\n const [ctxMenuShow] = useCreateContextMenu()\n\n const handleContextMenu = (event: MouseEvent<HTMLDivElement>) => {\n // get the reviewable by id\n const id = event.currentTarget.id\n\n if (!id) return\n\n const reviewable = reviewables.find((reviewable) => reviewable.fileId === id)\n\n if (!reviewable) return\n\n const originalFileId = reviewable.createdFrom || reviewable.fileId\n const originalReviewable = reviewables.find(\n (reviewable) => reviewable.fileId === originalFileId,\n )\n\n const items: {\n label: string\n icon: string\n onClick?: () => void\n disabled?: boolean\n danger?: boolean\n }[] = [\n {\n label: 'Download original',\n icon: 'download',\n onClick: () => handleDownloadFile(originalFileId, originalReviewable?.filename),\n disabled: !originalReviewable,\n },\n ]\n\n if (userName === reviewable.author.name || !currentIsUser) {\n items.push({\n label: 'Delete',\n icon: 'delete',\n onClick: () => handleDelete(reviewable.activityId, reviewable.label || reviewable.filename),\n danger: true,\n })\n }\n\n // add author\n items.push({\n label: `Author: ${reviewable.author.fullName || reviewable.author.name}`,\n icon: 'person',\n disabled: true,\n })\n\n ctxMenuShow(event, items)\n }\n\n return (\n <>\n <ReviewableUpload\n projectName={projectName}\n versionId={versionId}\n productId={productId}\n taskId={viewer?.taskId}\n folderId={viewer?.folderId}\n dispatch={dispatch}\n >\n {isLoading ? (\n Array.from({ length: 3 }).map((_, index) => (\n <Styled.LoadingCard key={index} className=\"loading\" />\n ))\n ) : (\n <>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={() => setActiveId(null)}\n >\n <SortableContext\n items={reviewables.map(({ fileId }) => fileId as UniqueIdentifier)}\n strategy={verticalListSortingStrategy}\n >\n {sortableReviewables.map((reviewable) => (\n <SortableReviewableCard\n key={reviewable.fileId}\n projectName={projectName}\n onClick={handleReviewableClick}\n isSelected={reviewableIds.includes(reviewable.fileId)}\n isDragging={!!activeId}\n onContextMenu={handleContextMenu}\n onEdit={(e) => {\n e.stopPropagation()\n setEditActivityId(reviewable.activityId)\n }}\n {...reviewable}\n />\n ))}\n </SortableContext>\n\n {/* drag overlay */}\n <DragOverlay modifiers={overlayModifiers}>\n {draggingReview ? (\n <ReviewableCard\n {...draggingReview}\n projectName={projectName}\n isDragOverlay\n isDragging\n isSelected={reviewableIds.includes(draggingReview.fileId)}\n />\n ) : null}\n </DragOverlay>\n </DndContext>\n {processing.map((reviewable) => (\n <ReviewableProgressCard\n key={reviewable.fileId}\n name={reviewable.filename}\n type={'processing'}\n progress={reviewable.processing?.progress}\n fileId={reviewable.fileId}\n />\n ))}\n\n {queued.map((reviewable) => (\n <ReviewableProgressCard\n key={reviewable.fileId}\n name={reviewable.filename}\n type={'queued'}\n fileId={reviewable.fileId}\n />\n ))}\n\n {incompatible.map((reviewable) => (\n <ReviewableProgressCard\n key={reviewable.fileId}\n name={reviewable.filename}\n type={'unsupported'}\n tooltip={incompatibleMessage}\n src={`/api/projects/${projectName}/files/${reviewable.fileId}/thumbnail`}\n onContextMenu={handleContextMenu}\n fileId={reviewable.fileId}\n />\n ))}\n </>\n )}\n </ReviewableUpload>\n\n {editActivityId && (\n <EditReviewableDialog\n isOpen\n onClose={() => setEditActivityId(null)}\n label={\n reviewables.find((reviewable) => reviewable.activityId === editActivityId)?.label || ''\n }\n projectName={projectName}\n versionId={versionId}\n activityId={editActivityId}\n />\n )}\n </>\n )\n}\n\nexport default ReviewablesList\n"],"names":["ReviewablesList","projectName","versionId","productId","isLoadingVersion","scope","onOpenViewer","user","viewer","dispatch","useDetailsPanelContext","versionReviewables","isFetchingReviewables","currentData","useGetReviewablesForVersionQuery","hasTranscoder","useHasTranscoderQuery","reviewableIds","userName","currentIsUser","_a","editActivityId","setEditActivityId","useState","activeId","setActiveId","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","reviewables","draggingReview","reviewable","currentVersionId","isLoading","handleReviewableClick","event","id","optimized","unoptimized","incompatible","processing","queued","getGroupedReviewables","sortableReviewables","handleDragStart","active","sortVersionReviewables","useSortVersionReviewablesMutation","handleDragEnd","over","oldIndex","newIndex","newOrder","arrayMove","toast","overlayModifiers","args","incompatibleMessage","handleDownloadFile","fileId","fileName","url","a","deleteReviewable","useDeleteReviewableMutation","handleDelete","activityId","label","confirmDelete","ctxMenuShow","useCreateContextMenu","handleContextMenu","originalFileId","originalReviewable","items","jsxs","Fragment","jsx","ReviewableUpload","_","index","Styled.LoadingCard","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","SortableReviewableCard","e","DragOverlay","ReviewableCard","ReviewableProgressCard","EditReviewableDialog","_b"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ReviewablesList.es.js","sources":["../../../../../src/components/ReviewablesList/ReviewablesList.tsx"],"sourcesContent":["import { FC, MouseEvent, useState } from 'react'\n// queries\nimport { useGetReviewablesForVersionQuery, useHasTranscoderQuery } from '@shared/api'\nimport { useDeleteReviewableMutation, useSortVersionReviewablesMutation } from '@shared/api'\n\n// DND\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n UniqueIdentifier,\n DragEndEvent,\n DragOverlay,\n DragStartEvent,\n} from '@dnd-kit/core'\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable'\n\n// components\nimport { ReviewableCard, ReviewableProgressCard } from '@shared/components'\nimport SortableReviewableCard from './SortableReviewableCard'\nimport * as Styled from './ReviewablesList.styled'\nimport { toast } from 'react-toastify'\n\n// utils\nimport { getGroupedReviewables } from './getGroupedReviewables'\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\nimport { confirmDelete } from '@shared/util'\nimport EditReviewableDialog from './EditReviewableDialog'\nimport ReviewableUpload from './ReviewablesUpload'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface ReviewablesListProps {\n projectName: string\n versionId: string\n productId: string\n isLoadingVersion: boolean\n scope: string\n}\n\nconst ReviewablesList: FC<ReviewablesListProps> = ({\n projectName,\n versionId,\n productId,\n isLoadingVersion,\n scope,\n}) => {\n const { onOpenViewer, user, viewer, dispatch } = useDetailsPanelContext()\n // returns all reviewables for a product\n const {\n data: versionReviewables,\n isFetching: isFetchingReviewables,\n currentData,\n } = useGetReviewablesForVersionQuery(\n { projectName, versionId: versionId },\n { skip: !versionId || !projectName },\n )\n\n // do we have the premium transcoder?\n const { data: hasTranscoder } = useHasTranscoderQuery(undefined)\n\n // are we currently looking at review? (is it selected in the viewer)\n const reviewableIds = viewer?.reviewableIds || []\n const userName = user.name\n const currentIsUser = user.data?.isUser\n\n // either null or the reviewable id we are editing\n const [editActivityId, setEditActivityId] = useState<null | string>(null)\n\n // dragging activeId\n const [activeId, setActiveId] = useState<null | string>(null)\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const reviewables = versionReviewables?.reviewables || []\n const draggingReview = reviewables.find((reviewable) => reviewable.fileId === activeId)\n\n const currentVersionId = currentData?.id\n const queryingNewVersion = versionId !== currentVersionId\n\n const isLoading = (isFetchingReviewables && queryingNewVersion) || isLoadingVersion\n\n const handleReviewableClick = (event: MouseEvent<HTMLDivElement>) => {\n // check are not dragging\n if (activeId) return console.log('Dragging, cannot open review')\n\n // get the reviewable id\n const id = event.currentTarget.id\n if (!id || !productId) return console.error('No reviewable id or product id')\n\n const reviewable = reviewables.find((reviewable) => reviewable.fileId === id)\n console.debug(reviewable)\n console.debug(reviewable?.mediaInfo)\n\n // open the reviewable dialog\n onOpenViewer?.({\n projectName: projectName,\n productId: productId,\n versionIds: [versionId],\n reviewableIds: [id],\n })\n }\n\n const { optimized, unoptimized, incompatible, processing, queued } = getGroupedReviewables(\n reviewables,\n hasTranscoder,\n )\n\n const sortableReviewables = [...optimized, ...unoptimized]\n\n function handleDragStart(event: DragStartEvent) {\n const { active } = event\n\n setActiveId(active.id as string)\n }\n\n const [sortVersionReviewables] = useSortVersionReviewablesMutation()\n\n const handleDragEnd = async (event: DragEndEvent) => {\n const { active, over } = event\n\n if (over?.id && active.id !== over.id) {\n console.log('update review position')\n\n const oldIndex = sortableReviewables.findIndex(\n (reviewable) => reviewable.fileId === active.id,\n )\n const newIndex = sortableReviewables.findIndex((reviewable) => reviewable.fileId === over.id)\n\n // resort the reviewables\n const newReviewables = arrayMove(sortableReviewables, oldIndex, newIndex)\n\n const newOrder = newReviewables.map((reviewable) => reviewable.activityId)\n\n try {\n // update the reviewables\n sortVersionReviewables({\n projectName,\n versionId,\n sortReviewablesRequest: { sort: newOrder },\n }).unwrap()\n } catch (error) {\n toast.error('Error sorting reviewables')\n }\n }\n setActiveId(null)\n }\n\n const overlayModifiers = []\n // hack to make the dnd overlay pos work inside dialog\n if (scope === 'review') {\n overlayModifiers.push((args: any) => ({\n ...args.transform,\n x: args.transform.x - 32,\n y: args.transform.y - 32,\n }))\n }\n\n let incompatibleMessage = ''\n if (!hasTranscoder) {\n incompatibleMessage = `The conversion transcoder is only supported on [**Ynput Cloud**](https://ynput.cloud/subscribe/ayon). Please subscribe or [contact support](https://ynput.io/services/) for more information.`\n } else {\n incompatibleMessage = 'The file is not supported by the transcoder'\n }\n\n const handleDownloadFile = (fileId: string, fileName: string = '') => {\n let url = `/api/projects/${projectName}/files/${fileId}`\n\n // if (codec) url += `.${codec}`\n\n // Create an invisible anchor element\n const a = document.createElement('a')\n a.href = url\n a.download = fileName\n document.body.appendChild(a)\n\n // Trigger a click event on the anchor element\n a.click()\n\n // Remove the anchor element from the document\n document.body.removeChild(a)\n }\n\n const [deleteReviewable] = useDeleteReviewableMutation()\n\n const handleDelete = async (activityId: string, label: string) => {\n // @ts-ignore\n confirmDelete({\n header: 'Delete ' + label,\n message: 'Are you sure you want to delete this reviewable?',\n accept: async () => {\n try {\n await deleteReviewable({ activityId, projectName }).unwrap()\n } catch (error) {\n toast.error('Failed to delete reviewable')\n }\n },\n })\n }\n\n // create the ref and model\n const [ctxMenuShow] = useCreateContextMenu()\n\n const handleContextMenu = (event: MouseEvent<HTMLDivElement>) => {\n // get the reviewable by id\n const id = event.currentTarget.id\n\n if (!id) return\n\n const reviewable = reviewables.find((reviewable) => reviewable.fileId === id)\n\n if (!reviewable) return\n\n const originalFileId = reviewable.createdFrom || reviewable.fileId\n const originalReviewable = reviewables.find(\n (reviewable) => reviewable.fileId === originalFileId,\n )\n\n const items: {\n label: string\n icon: string\n onClick?: () => void\n disabled?: boolean\n danger?: boolean\n }[] = [\n {\n label: 'Download original',\n icon: 'download',\n onClick: () => handleDownloadFile(originalFileId, originalReviewable?.filename),\n disabled: !originalReviewable,\n },\n ]\n\n if (userName === reviewable.author.name || !currentIsUser) {\n items.push({\n label: 'Delete',\n icon: 'delete',\n onClick: () => handleDelete(reviewable.activityId, reviewable.label || reviewable.filename),\n danger: true,\n })\n }\n\n // add author\n items.push({\n label: `Author: ${reviewable.author.fullName || reviewable.author.name}`,\n icon: 'person',\n disabled: true,\n })\n\n ctxMenuShow(event, items)\n }\n\n return (\n <>\n <ReviewableUpload\n projectName={projectName}\n versionId={versionId}\n productId={productId}\n taskId={viewer?.taskId}\n folderId={viewer?.folderId}\n dispatch={dispatch}\n >\n {isLoading ? (\n Array.from({ length: 3 }).map((_, index) => (\n <Styled.LoadingCard key={index} className=\"loading\" />\n ))\n ) : (\n <>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={() => setActiveId(null)}\n >\n <SortableContext\n items={reviewables.map(({ fileId }) => fileId as UniqueIdentifier)}\n strategy={verticalListSortingStrategy}\n >\n {sortableReviewables.map((reviewable) => (\n <SortableReviewableCard\n key={reviewable.fileId}\n projectName={projectName}\n onClick={handleReviewableClick}\n isSelected={reviewableIds.includes(reviewable.fileId)}\n isDragging={!!activeId}\n onContextMenu={handleContextMenu}\n onEdit={(e) => {\n e.stopPropagation()\n setEditActivityId(reviewable.activityId)\n }}\n {...reviewable}\n />\n ))}\n </SortableContext>\n\n {/* drag overlay */}\n <DragOverlay modifiers={overlayModifiers}>\n {draggingReview ? (\n <ReviewableCard\n {...draggingReview}\n projectName={projectName}\n isDragOverlay\n isDragging\n isSelected={reviewableIds.includes(draggingReview.fileId)}\n />\n ) : null}\n </DragOverlay>\n </DndContext>\n {processing.map((reviewable) => (\n <ReviewableProgressCard\n key={reviewable.fileId}\n name={reviewable.filename}\n type={'processing'}\n progress={reviewable.processing?.progress}\n fileId={reviewable.fileId}\n />\n ))}\n\n {queued.map((reviewable) => (\n <ReviewableProgressCard\n key={reviewable.fileId}\n name={reviewable.filename}\n type={'queued'}\n fileId={reviewable.fileId}\n />\n ))}\n\n {incompatible.map((reviewable) => (\n <ReviewableProgressCard\n key={reviewable.fileId}\n name={reviewable.filename}\n type={'unsupported'}\n tooltip={incompatibleMessage}\n src={`/api/projects/${projectName}/files/${reviewable.fileId}/thumbnail`}\n onContextMenu={handleContextMenu}\n fileId={reviewable.fileId}\n />\n ))}\n </>\n )}\n </ReviewableUpload>\n\n {editActivityId && (\n <EditReviewableDialog\n isOpen\n onClose={() => setEditActivityId(null)}\n label={\n reviewables.find((reviewable) => reviewable.activityId === editActivityId)?.label || ''\n }\n projectName={projectName}\n versionId={versionId}\n activityId={editActivityId}\n />\n )}\n </>\n )\n}\n\nexport default ReviewablesList\n"],"names":["ReviewablesList","projectName","versionId","productId","isLoadingVersion","scope","onOpenViewer","user","viewer","dispatch","useDetailsPanelContext","versionReviewables","isFetchingReviewables","currentData","useGetReviewablesForVersionQuery","hasTranscoder","useHasTranscoderQuery","reviewableIds","userName","currentIsUser","_a","editActivityId","setEditActivityId","useState","activeId","setActiveId","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","reviewables","draggingReview","reviewable","currentVersionId","isLoading","handleReviewableClick","event","id","optimized","unoptimized","incompatible","processing","queued","getGroupedReviewables","sortableReviewables","handleDragStart","active","sortVersionReviewables","useSortVersionReviewablesMutation","handleDragEnd","over","oldIndex","newIndex","newOrder","arrayMove","toast","overlayModifiers","args","incompatibleMessage","handleDownloadFile","fileId","fileName","url","a","deleteReviewable","useDeleteReviewableMutation","handleDelete","activityId","label","confirmDelete","ctxMenuShow","useCreateContextMenu","handleContextMenu","originalFileId","originalReviewable","items","jsxs","Fragment","jsx","ReviewableUpload","_","index","Styled.LoadingCard","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","SortableReviewableCard","e","DragOverlay","ReviewableCard","ReviewableProgressCard","EditReviewableDialog","_b"],"mappings":"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"}
|