@ynput/ayon-frontend-shared 0.3.15 → 0.3.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DetailsPanel.cjs.js +1 -1
- package/dist/DetailsPanel.es.js +28 -24
- 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 +36 -41
- package/dist/Views.es.js.map +1 -1
- package/dist/_virtual/index.cjs.js +1 -1
- package/dist/_virtual/index.cjs2.js +1 -1
- package/dist/_virtual/index.cjs3.js +1 -1
- package/dist/_virtual/index.cjs4.js +1 -1
- package/dist/_virtual/index.cjs5.js +1 -1
- package/dist/_virtual/index.cjs6.js +1 -1
- package/dist/_virtual/index.cjs8.js +1 -1
- package/dist/_virtual/index.es.js +4 -5
- package/dist/_virtual/index.es2.js +6 -2
- package/dist/_virtual/index.es2.js.map +1 -1
- package/dist/_virtual/index.es3.js +2 -5
- package/dist/_virtual/index.es3.js.map +1 -1
- package/dist/_virtual/index.es4.js +5 -2
- package/dist/_virtual/index.es4.js.map +1 -1
- package/dist/_virtual/index.es5.js +2 -5
- package/dist/_virtual/index.es5.js.map +1 -1
- package/dist/_virtual/index.es6.js +5 -2
- package/dist/_virtual/index.es6.js.map +1 -1
- package/dist/_virtual/index.es7.js +2 -2
- package/dist/_virtual/index.es8.js +2 -5
- package/dist/_virtual/index.es8.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +15 -11
- package/dist/index.es.js.map +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
- package/dist/node_modules/react-use-websocket/dist/index.cjs.js +1 -1
- package/dist/node_modules/react-use-websocket/dist/index.es.js +1 -1
- package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
- package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js.map +1 -1
- package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/index.es.js +1 -1
- package/dist/shared/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/access.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/access.es.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.cjs.js +5 -3
- package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.es.js +2 -0
- package/dist/shared/src/api/generated/graphql.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/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 +99 -90
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +13 -1
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +72 -25
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.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 +25 -21
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.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 +14 -14
- package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/CellEditingDialog.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/CellEditingDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/CellEditingDialog.es.js +23 -23
- package/dist/shared/src/components/LinksManager/CellEditingDialog.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +71 -36
- package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.es.js +120 -89
- package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js +52 -12
- package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js +63 -21
- package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +8 -4
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/utils/groupLinks.cjs.js +2 -0
- package/dist/shared/src/components/LinksManager/utils/groupLinks.cjs.js.map +1 -0
- package/dist/shared/src/components/LinksManager/utils/groupLinks.es.js +18 -0
- package/dist/shared/src/components/LinksManager/utils/groupLinks.es.js.map +1 -0
- 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 +8 -4
- package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +10 -6
- 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 +8 -4
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +8 -4
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +8 -4
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.es.js +9 -5
- 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 +139 -128
- 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 +90 -81
- 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 +8 -4
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js +9 -5
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.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 +8 -4
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +8 -4
- 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 +8 -4
- package/dist/shared/src/containers/Actions/ActionConfigDialog.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 +8 -4
- 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 +20 -16
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +8 -4
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +9 -5
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +12 -8
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +22 -18
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +8 -4
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +8 -4
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +2 -2
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +57 -45
- 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 +8 -4
- 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 +8 -4
- 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 +8 -4
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +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.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.cjs.js +2 -0
- package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.cjs.js.map +1 -0
- package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.es.js +70 -0
- package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.es.js.map +1 -0
- 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 +247 -151
- package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +8 -4
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +6 -2
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js +1 -0
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.es.js +1 -0
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +9 -5
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +8 -4
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.es.js +3 -3
- package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.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 +8 -4
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.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 +59 -55
- 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 +9 -5
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +8 -4
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +6 -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 +8 -4
- 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 +8 -4
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js +16 -16
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.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 +6 -2
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +9 -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 +6 -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 +8 -4
- 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 +8 -4
- 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 +6 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.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 +6 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +6 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +8 -4
- 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 +8 -4
- 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 +6 -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 +6 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +6 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +17 -13
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +7 -3
- 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 +60 -48
- 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 +6 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +8 -4
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +24 -24
- 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 +8 -4
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +8 -4
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +8 -4
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.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 +24 -23
- 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 +83 -88
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +1 -1
- package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +56 -53
- 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 +23 -144
- package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useViewSettingsChanged.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useViewSettingsChanged.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
- package/dist/shared/src/containers/Views/types.cjs.js +2 -0
- package/dist/shared/src/containers/Views/types.cjs.js.map +1 -0
- package/dist/shared/src/containers/Views/types.es.js +15 -0
- package/dist/shared/src/containers/Views/types.es.js.map +1 -0
- package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.es.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/isViewStudioScope.cjs.js +2 -0
- package/dist/shared/src/containers/Views/utils/isViewStudioScope.cjs.js.map +1 -0
- package/dist/shared/src/containers/Views/utils/isViewStudioScope.es.js +5 -0
- package/dist/shared/src/containers/Views/utils/isViewStudioScope.es.js.map +1 -0
- package/dist/shared/src/containers/Views/utils/portalUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/portalUtils.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 +76 -77
- package/dist/shared/src/context/DetailsPanelContext.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 +9 -5
- package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
- package/dist/types/api/generated/access.d.ts +6 -0
- package/dist/types/api/generated/graphql.d.ts +8 -4
- package/dist/types/api/generated/users.d.ts +6 -1
- package/dist/types/components/AttributeEditor/AttributeEditor.d.ts +1 -0
- package/dist/types/components/LinksManager/LinkManagerItem.d.ts +2 -0
- package/dist/types/components/LinksManager/LinksManager.styled.d.ts +6 -0
- package/dist/types/components/LinksManager/utils/groupLinks.d.ts +14 -0
- package/dist/types/components/ReviewablesList/ReviewablesUpload.d.ts +1 -0
- package/dist/types/containers/EntityPickerDialog/hooks/useGetEntityPickerData.d.ts +1 -1
- package/dist/types/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.d.ts +11 -0
- package/dist/types/containers/ProjectTreeTable/types/table.d.ts +1 -0
- package/dist/types/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.d.ts +2 -1
- package/dist/types/containers/Views/ViewsMenuContainer/ViewsMenuContainer.d.ts +2 -2
- package/dist/types/containers/Views/context/ViewsContext.d.ts +3 -2
- package/dist/types/containers/Views/hooks/useBaseViewMutations.d.ts +1 -1
- package/dist/types/containers/Views/hooks/useBuildViewMenuItems.d.ts +2 -3
- package/dist/types/containers/Views/hooks/useSaveViewFromCurrent.d.ts +2 -1
- package/dist/types/containers/Views/hooks/useViewSettingsChanged.d.ts +1 -1
- package/dist/types/containers/Views/index.d.ts +1 -7
- package/dist/types/containers/Views/types.d.ts +10 -0
- package/dist/types/containers/Views/utils/isViewStudioScope.d.ts +2 -0
- package/dist/types/containers/Views/utils/portalUtils.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DetailsPanelContext.cjs.js","sources":["../../../../src/context/DetailsPanelContext.tsx"],"sourcesContent":["import React, {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react'\nimport { QueryFilter, UserModel, DetailsPanelEntityType } from '@shared/api'\nimport { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom'\nimport { SavedAnnotationMetadata } from '@shared/containers'\nimport { PowerpackFeature, usePowerpack } from './PowerpackContext'\nimport { useURIContext } from './UriContext'\nimport { useLocalStorage } from '@shared/hooks'\nimport type { SubtasksManagerProps } from '@shared/components'\n\n// High-level tabs for the details panel\nexport type DetailsPanelTab = 'feed' | 'subtasks' | 'details' | 'files'\n\n// Filters within the feed tab\nexport type FeedFilter = QueryFilter\n\nexport type SlideOut = {\n entityId: string\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\nexport type DetailsPanelPip = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n scope: string\n}\n\nexport type Entities = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n entitySubTypes?: string[]\n source?: 'uri' | 'url' | 'related' // uri = ayon+entity://..., url = ?project=...&type=...&id=...\n}\n\nexport interface OpenStateByScope {\n [scope: string]: boolean\n}\n\n// Create a new interface for managing tab state by scope\nexport interface TabStateByScope {\n [scope: string]: DetailsPanelTab\n}\n\nconst DETAILS_PANEL_TABS: DetailsPanelTab[] = ['feed', 'subtasks', 'details', 'files']\n\nconst isDetailsPanelTab = (tab: unknown): tab is DetailsPanelTab =>\n typeof tab === 'string' && DETAILS_PANEL_TABS.includes(tab as DetailsPanelTab)\n\n// these props get forwarded to the details panel value\n// it's mainly redux callbacks that cannot be used in shared library\nexport interface DetailsPanelContextProps {\n dispatch?: any // this is a redux dispatch function and it's quite annoying we need to do this\n user: UserModel\n viewer?: {\n reviewableIds: string[]\n taskId?: string | null\n folderId?: string | null\n }\n // redux callback actions\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n // route hooks\n useParams: typeof useParams\n useNavigate: typeof useNavigate\n useLocation: typeof useLocation\n useSearchParams: typeof useSearchParams\n feedAnnotationsEnabled?: boolean\n hasLicense?: boolean\n // SubtasksManager component\n SubtasksManager?: React.ComponentType<SubtasksManagerProps>\n // debugging used to simulate different values\n debug?: {\n isDeveloperMode?: boolean\n isGuest?: boolean\n hasLicense?: boolean\n }\n}\n\n// Interface for our simplified context\nexport interface DetailsPanelContextType extends DetailsPanelContextProps {\n // user\n isDeveloperMode: boolean\n isGuest: boolean\n // Open state for the panel by scope\n panelOpenByScope: OpenStateByScope\n getOpenForScope: (scope: string) => boolean\n setPanelOpen: (scope: string, isOpen: boolean) => void\n setPanelOpenByScope: (newState: OpenStateByScope) => void\n\n // Tab preferences by scope\n tabsByScope: TabStateByScope\n getTabForScope: (scope: string) => DetailsPanelTab\n\n // Slide out state\n slideOut: null | SlideOut\n openSlideOut: (slideOut: SlideOut) => void\n closeSlideOut: () => void\n\n // Highlighted activities\n highlightedActivities: string[]\n setHighlightedActivities: (activities: string[]) => void\n\n // PiP state\n pip: DetailsPanelPip | null\n openPip: (pip: DetailsPanelPip) => void\n closePip: () => void\n\n // Entities state\n entities: Entities | null\n setEntities: (entities: Entities | null) => void\n\n // Annotations\n feedAnnotations: SavedAnnotationMetadata[]\n setFeedAnnotations: (annotations: SavedAnnotationMetadata[]) => void\n\n // powerpack\n onPowerFeature: (feature: PowerpackFeature) => void\n}\n\n// Create the context\nconst DetailsPanelContext = createContext<DetailsPanelContextType | undefined>(undefined)\n\n// Provider component\nexport interface DetailsPanelProviderProps extends DetailsPanelContextProps {\n children: ReactNode\n defaultTab?: DetailsPanelTab\n}\n\nexport const DetailsPanelProvider: React.FC<DetailsPanelProviderProps> = ({\n children,\n defaultTab = 'feed',\n hasLicense: hasLicenseProp,\n debug = {},\n ...forwardedProps\n}) => {\n const user = forwardedProps.user\n const isDeveloperMode =\n 'isDeveloperMode' in debug\n ? (debug.isDeveloperMode as boolean)\n : user?.attrib?.developerMode ?? false\n const isGuest = 'isGuest' in debug ? (debug.isGuest as boolean) : user?.data?.isGuest\n\n // get license from powerpack or forwarded down from props\n const { powerLicense, setPowerpackDialog } = usePowerpack()\n const hasLicense =\n 'hasLicense' in debug ? (debug.hasLicense as boolean) : !!powerLicense || hasLicenseProp\n\n // keep track of the currently open panel by scope\n const [panelOpenByScope, setPanelOpenByScope] = useState<OpenStateByScope>({})\n const [feedAnnotations, setFeedAnnotations] = useState<SavedAnnotationMetadata[]>([])\n\n // get the current open state for a specific scope\n const getOpenForScope = useCallback(\n (scope: string): boolean => {\n // Check if we have a saved preference for this scope\n if (panelOpenByScope[scope]) {\n return panelOpenByScope[scope]\n }\n\n // Fall back to default\n return false\n },\n [panelOpenByScope],\n )\n // Set open state for a scope\n const setPanelOpen = useCallback(\n (scope: string, isOpen: boolean) => {\n // Create a new state object based on current open state\n const newState = { ...panelOpenByScope }\n newState[scope] = isOpen\n\n // Update the state with the new object\n setPanelOpenByScope(newState)\n },\n [panelOpenByScope],\n )\n\n // Use localStorage to persist tab preferences by scope\n const [tabsByScope, setTabByScope] = useLocalStorage<TabStateByScope>('details/tabs-by-scope', {})\n\n // Get the current tab for a specific scope\n const getTabForScope = useCallback(\n (scope: string): DetailsPanelTab => {\n // Check if we have a saved preference for this scope\n const tab = tabsByScope[scope]\n if (isDetailsPanelTab(tab)) {\n return tab\n }\n\n // Fall back to default\n return defaultTab\n },\n [tabsByScope, defaultTab],\n )\n\n // Set tab for a scope\n\n // is the slide out open?\n const [slideOut, setSlideOut] = useState<null | SlideOut>(null)\n\n // open the slide out\n const openSlideOut = useCallback<DetailsPanelContextType['openSlideOut']>((params) => {\n setSlideOut(params)\n }, [])\n\n // close the slide out\n const closeSlideOut = useCallback(() => {\n setSlideOut(null)\n if (slideOut) {\n setHighlightedActivities([])\n }\n }, [])\n\n // close slide out whenever the page changes\n useEffect(() => {\n closeSlideOut()\n }, [forwardedProps.useLocation().pathname])\n\n const [pip, setPip] = useState<DetailsPanelPip | null>(null)\n\n const openPip = useCallback((pip: DetailsPanelPip) => {\n setPip(pip)\n }, [])\n const closePip = useCallback(() => {\n setPip(null)\n }, [])\n\n const [entities, setEntities] = useState<Entities | null>(null)\n\n const [highlightedActivities, setHighlightedActivities] = useState<string[]>([])\n\n const { uriType, uri, entity, getUriEntities } = useURIContext()\n const [searchParams] = forwardedProps.useSearchParams()\n\n // on first load, check if there is a uri or URL params and open details panel if present\n useEffect(() => {\n // Priority 1: Check for 'uri' parameter (ayon+entity://...)\n if (uriType === 'entity' && entity && entity.entityType !== 'product') {\n getUriEntities()\n .then((result) => {\n if (result.length === 0) return\n\n const entityUriData = result.find((r) => r.uri === uri)\n const entityData = entityUriData?.entities?.[0]\n\n if (!entityUriData || !entityData) return\n const projectName = entityData?.projectName || entity.projectName || ''\n const id =\n entityData.representationId ||\n entityData.versionId ||\n entityData.productId ||\n entityData.taskId ||\n entityData.folderId\n\n if (!projectName || !id) return\n\n const newEntities: Entities = {\n entityType: entity.entityType as DetailsPanelEntityType,\n entities: [\n {\n id: id,\n projectName: projectName,\n },\n ],\n source: 'uri',\n }\n\n setEntities(newEntities)\n })\n .catch((err) => {\n console.warn('Failed to get URI entities:', err)\n })\n return\n }\n\n // Priority 2: Check for URL params (project, type, id)\n const project = searchParams.get('project')\n const type = searchParams.get('type')\n const id = searchParams.get('id')\n const activity = searchParams.get('activity')\n\n if (project && type && id) {\n const newEntities: Entities = {\n entityType: type as DetailsPanelEntityType,\n entities: [\n {\n id,\n projectName: project,\n },\n ],\n source: 'url',\n }\n\n setEntities(newEntities)\n\n // if there is an activity param, open the feed tab (activity is shown by default)\n\n if (activity) {\n setHighlightedActivities([activity])\n setTabByScope({\n ...tabsByScope,\n overview: 'feed',\n })\n }\n }\n }, [])\n\n const value = {\n // open state for the panel by scope\n panelOpenByScope,\n getOpenForScope,\n setPanelOpen,\n setPanelOpenByScope,\n // tab preferences\n tabsByScope,\n getTabForScope,\n // slide out state\n slideOut,\n openSlideOut,\n closeSlideOut,\n // highlighted activities\n highlightedActivities,\n setHighlightedActivities,\n // PiP state\n pip,\n openPip,\n closePip,\n // entities state\n entities,\n setEntities,\n feedAnnotations,\n setFeedAnnotations,\n isDeveloperMode,\n isGuest,\n hasLicense,\n onPowerFeature: setPowerpackDialog,\n ...forwardedProps,\n }\n\n return <DetailsPanelContext.Provider value={value}>{children}</DetailsPanelContext.Provider>\n}\n\n// Custom hook to use the details context\nexport const useDetailsPanelContext = (): DetailsPanelContextType => {\n const context = useContext(DetailsPanelContext)\n if (context === undefined) {\n throw new Error('useDetailsPanel must be used within a DetailsPanelProvider')\n }\n return context\n}\n\n// Add a specialized hook for using a panel in a specific scope\nexport const useScopedDetailsPanel = (scope: string) => {\n const { getOpenForScope, setPanelOpen, getTabForScope } = useDetailsPanelContext()\n\n const [tabsByScope, setTabsByScope] = useLocalStorage<TabStateByScope>(\n 'details/tabs-by-scope',\n {},\n )\n\n const [currentTab, setTab] = useState<DetailsPanelTab>(() => {\n const tab = tabsByScope[scope]\n return isDetailsPanelTab(tab) ? tab : getTabForScope(scope)\n })\n\n // Keep localStorage and local state in sync\n const updateTab = useCallback(\n (newTab: DetailsPanelTab) => {\n setTab(newTab)\n setTabsByScope({ ...tabsByScope, [scope]: newTab })\n },\n [scope, setTabsByScope],\n )\n\n const isFeed = currentTab === 'feed'\n\n return {\n isOpen: getOpenForScope(scope),\n setOpen: (isOpen: boolean) => setPanelOpen(scope, isOpen),\n currentTab,\n setTab: updateTab,\n isFeed,\n }\n}\n"],"names":["DETAILS_PANEL_TABS","isDetailsPanelTab","tab","DetailsPanelContext","createContext","DetailsPanelProvider","children","defaultTab","hasLicenseProp","debug","forwardedProps","user","isDeveloperMode","isGuest","powerLicense","setPowerpackDialog","usePowerpack","hasLicense","panelOpenByScope","setPanelOpenByScope","useState","feedAnnotations","setFeedAnnotations","getOpenForScope","useCallback","scope","setPanelOpen","isOpen","newState","tabsByScope","setTabByScope","useLocalStorage","getTabForScope","slideOut","setSlideOut","openSlideOut","params","closeSlideOut","setHighlightedActivities","useEffect","pip","setPip","openPip","closePip","entities","setEntities","highlightedActivities","uriType","uri","entity","getUriEntities","useURIContext","searchParams","result","entityUriData","r","entityData","projectName","id","newEntities","err","project","type","activity","value","jsx","useDetailsPanelContext","context","useContext","useScopedDetailsPanel","setTabsByScope","currentTab","setTab","updateTab","newTab","isFeed"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DetailsPanelContext.cjs.js","sources":["../../../../src/context/DetailsPanelContext.tsx"],"sourcesContent":["import React, {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react'\nimport { QueryFilter, UserModel, DetailsPanelEntityType } from '@shared/api'\nimport { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom'\nimport { SavedAnnotationMetadata } from '@shared/containers'\nimport { PowerpackFeature, usePowerpack } from './PowerpackContext'\nimport { useURIContext } from './UriContext'\nimport { useLocalStorage } from '@shared/hooks'\nimport type { SubtasksManagerProps } from '@shared/components'\n\n// High-level tabs for the details panel\nexport type DetailsPanelTab = 'feed' | 'subtasks' | 'details' | 'files'\n\n// Filters within the feed tab\nexport type FeedFilter = QueryFilter\n\nexport type SlideOut = {\n entityId: string\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\nexport type DetailsPanelPip = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n scope: string\n}\n\nexport type Entities = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n entitySubTypes?: string[]\n source?: 'uri' | 'url' | 'related' // uri = ayon+entity://..., url = ?project=...&type=...&id=...\n}\n\nexport interface OpenStateByScope {\n [scope: string]: boolean\n}\n\n// Create a new interface for managing tab state by scope\nexport interface TabStateByScope {\n [scope: string]: DetailsPanelTab\n}\n\nconst DETAILS_PANEL_TABS: DetailsPanelTab[] = ['feed', 'subtasks', 'details', 'files']\n\nconst isDetailsPanelTab = (tab: unknown): tab is DetailsPanelTab =>\n typeof tab === 'string' && DETAILS_PANEL_TABS.includes(tab as DetailsPanelTab)\n\n// these props get forwarded to the details panel value\n// it's mainly redux callbacks that cannot be used in shared library\nexport interface DetailsPanelContextProps {\n dispatch?: any // this is a redux dispatch function and it's quite annoying we need to do this\n user: UserModel\n viewer?: {\n reviewableIds: string[]\n taskId?: string | null\n folderId?: string | null\n }\n // redux callback actions\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n // route hooks\n useParams: typeof useParams\n useNavigate: typeof useNavigate\n useLocation: typeof useLocation\n useSearchParams: typeof useSearchParams\n feedAnnotationsEnabled?: boolean\n hasLicense?: boolean\n // SubtasksManager component\n SubtasksManager?: React.ComponentType<SubtasksManagerProps>\n // debugging used to simulate different values\n debug?: {\n isDeveloperMode?: boolean\n isGuest?: boolean\n hasLicense?: boolean\n }\n}\n\n// Interface for our simplified context\nexport interface DetailsPanelContextType extends DetailsPanelContextProps {\n // user\n isDeveloperMode: boolean\n isGuest: boolean\n // Open state for the panel by scope\n panelOpenByScope: OpenStateByScope\n getOpenForScope: (scope: string) => boolean\n setPanelOpen: (scope: string, isOpen: boolean) => void\n setPanelOpenByScope: (newState: OpenStateByScope) => void\n\n // Tab preferences by scope\n tabsByScope: TabStateByScope\n getTabForScope: (scope: string) => DetailsPanelTab\n\n // Slide out state\n slideOut: null | SlideOut\n openSlideOut: (slideOut: SlideOut) => void\n closeSlideOut: () => void\n\n // Highlighted activities\n highlightedActivities: string[]\n setHighlightedActivities: (activities: string[]) => void\n\n // PiP state\n pip: DetailsPanelPip | null\n openPip: (pip: DetailsPanelPip) => void\n closePip: () => void\n\n // Entities state\n entities: Entities | null\n setEntities: (entities: Entities | null) => void\n\n // Annotations\n feedAnnotations: SavedAnnotationMetadata[]\n setFeedAnnotations: (annotations: SavedAnnotationMetadata[]) => void\n\n // powerpack\n onPowerFeature: (feature: PowerpackFeature) => void\n}\n\n// Create the context\nconst DetailsPanelContext = createContext<DetailsPanelContextType | undefined>(undefined)\n\n// Provider component\nexport interface DetailsPanelProviderProps extends DetailsPanelContextProps {\n children: ReactNode\n defaultTab?: DetailsPanelTab\n}\n\nexport const DetailsPanelProvider: React.FC<DetailsPanelProviderProps> = ({\n children,\n defaultTab = 'feed',\n hasLicense: hasLicenseProp,\n debug = {},\n ...forwardedProps\n}) => {\n const user = forwardedProps.user\n const isDeveloperMode =\n 'isDeveloperMode' in debug\n ? (debug.isDeveloperMode as boolean)\n : user?.attrib?.developerMode ?? false\n const isGuest = 'isGuest' in debug ? (debug.isGuest as boolean) : user?.data?.isGuest\n\n // get license from powerpack or forwarded down from props\n const { powerLicense, setPowerpackDialog } = usePowerpack()\n const hasLicense =\n 'hasLicense' in debug ? (debug.hasLicense as boolean) : !!powerLicense || hasLicenseProp\n\n // keep track of the currently open panel by scope\n const [panelOpenByScope, setPanelOpenByScope] = useState<OpenStateByScope>({})\n const [feedAnnotations, setFeedAnnotations] = useState<SavedAnnotationMetadata[]>([])\n\n // get the current open state for a specific scope\n const getOpenForScope = useCallback(\n (scope: string): boolean => {\n // Check if we have a saved preference for this scope\n if (panelOpenByScope[scope]) {\n return panelOpenByScope[scope]\n }\n\n // Fall back to default\n return false\n },\n [panelOpenByScope],\n )\n // Set open state for a scope\n const setPanelOpen = useCallback(\n (scope: string, isOpen: boolean) => {\n // Create a new state object based on current open state\n const newState = { ...panelOpenByScope }\n newState[scope] = isOpen\n\n // Update the state with the new object\n setPanelOpenByScope(newState)\n },\n [panelOpenByScope],\n )\n\n // Use localStorage to persist tab preferences by scope\n const [tabsByScope, setTabByScope] = useLocalStorage<TabStateByScope>('details/tabs-by-scope', {})\n\n // Get the current tab for a specific scope\n const getTabForScope = useCallback(\n (scope: string): DetailsPanelTab => {\n // Check if we have a saved preference for this scope\n const tab = tabsByScope[scope]\n if (isDetailsPanelTab(tab)) {\n return tab\n }\n\n // Fall back to default\n return defaultTab\n },\n [tabsByScope, defaultTab],\n )\n\n // Set tab for a scope\n\n // is the slide out open?\n const [slideOut, setSlideOut] = useState<null | SlideOut>(null)\n\n // open the slide out\n const openSlideOut = useCallback<DetailsPanelContextType['openSlideOut']>((params) => {\n setSlideOut(params)\n }, [])\n\n // close the slide out\n const closeSlideOut = useCallback(() => {\n setSlideOut(null)\n if (slideOut) {\n setHighlightedActivities([])\n }\n }, [])\n\n // close slide out whenever the page changes\n useEffect(() => {\n closeSlideOut()\n }, [forwardedProps.useLocation().pathname])\n\n const [pip, setPip] = useState<DetailsPanelPip | null>(null)\n\n const openPip = useCallback((pip: DetailsPanelPip) => {\n setPip(pip)\n }, [])\n const closePip = useCallback(() => {\n setPip(null)\n }, [])\n\n const [entities, setEntities] = useState<Entities | null>(null)\n\n const [highlightedActivities, setHighlightedActivities] = useState<string[]>([])\n\n const { uriType, uri, entity, getUriEntities } = useURIContext()\n const [searchParams] = forwardedProps.useSearchParams()\n\n const project = searchParams.get('project')\n const type = searchParams.get('type')\n const id = searchParams.get('id')\n const activity = searchParams.get('activity')\n\n // on first load or URL param change, check if there is a uri or URL params and open details panel if present\n useEffect(() => {\n // Priority 1: Check for 'uri' parameter (ayon+entity://...)\n if (uriType === 'entity' && entity && entity.entityType !== 'product') {\n getUriEntities()\n .then((result) => {\n if (result.length === 0) return\n\n const entityUriData = result.find((r) => r.uri === uri)\n const entityData = entityUriData?.entities?.[0]\n\n if (!entityUriData || !entityData) return\n const projectName = entityData?.projectName || entity.projectName || ''\n const id =\n entityData.representationId ||\n entityData.versionId ||\n entityData.productId ||\n entityData.taskId ||\n entityData.folderId\n\n if (!projectName || !id) return\n\n const newEntities: Entities = {\n entityType: entity.entityType as DetailsPanelEntityType,\n entities: [\n {\n id: id,\n projectName: projectName,\n },\n ],\n source: 'uri',\n }\n\n setEntities(newEntities)\n })\n .catch((err) => {\n console.warn('Failed to get URI entities:', err)\n })\n return\n }\n\n // Priority 2: Check for URL params (project, type, id)\n if (project && type && id) {\n const newEntities: Entities = {\n entityType: type as DetailsPanelEntityType,\n entities: [\n {\n id,\n projectName: project,\n },\n ],\n source: 'url',\n }\n\n setEntities(newEntities)\n\n // if there is an activity param, open the feed tab (activity is shown by default)\n\n if (activity) {\n setHighlightedActivities([activity])\n setTabByScope({\n ...tabsByScope,\n overview: 'feed',\n })\n }\n }\n }, [project, type, id])\n\n const value = {\n // open state for the panel by scope\n panelOpenByScope,\n getOpenForScope,\n setPanelOpen,\n setPanelOpenByScope,\n // tab preferences\n tabsByScope,\n getTabForScope,\n // slide out state\n slideOut,\n openSlideOut,\n closeSlideOut,\n // highlighted activities\n highlightedActivities,\n setHighlightedActivities,\n // PiP state\n pip,\n openPip,\n closePip,\n // entities state\n entities,\n setEntities,\n feedAnnotations,\n setFeedAnnotations,\n isDeveloperMode,\n isGuest,\n hasLicense,\n onPowerFeature: setPowerpackDialog,\n ...forwardedProps,\n }\n\n return <DetailsPanelContext.Provider value={value}>{children}</DetailsPanelContext.Provider>\n}\n\n// Custom hook to use the details context\nexport const useDetailsPanelContext = (): DetailsPanelContextType => {\n const context = useContext(DetailsPanelContext)\n if (context === undefined) {\n throw new Error('useDetailsPanel must be used within a DetailsPanelProvider')\n }\n return context\n}\n\n// Add a specialized hook for using a panel in a specific scope\nexport const useScopedDetailsPanel = (scope: string) => {\n const { getOpenForScope, setPanelOpen, getTabForScope } = useDetailsPanelContext()\n\n const [tabsByScope, setTabsByScope] = useLocalStorage<TabStateByScope>(\n 'details/tabs-by-scope',\n {},\n )\n\n const [currentTab, setTab] = useState<DetailsPanelTab>(() => {\n const tab = tabsByScope[scope]\n return isDetailsPanelTab(tab) ? tab : getTabForScope(scope)\n })\n\n // Keep localStorage and local state in sync\n const updateTab = useCallback(\n (newTab: DetailsPanelTab) => {\n setTab(newTab)\n setTabsByScope({ ...tabsByScope, [scope]: newTab })\n },\n [scope, setTabsByScope],\n )\n\n const isFeed = currentTab === 'feed'\n\n return {\n isOpen: getOpenForScope(scope),\n setOpen: (isOpen: boolean) => setPanelOpen(scope, isOpen),\n currentTab,\n setTab: updateTab,\n isFeed,\n }\n}\n"],"names":["DETAILS_PANEL_TABS","isDetailsPanelTab","tab","DetailsPanelContext","createContext","DetailsPanelProvider","children","defaultTab","hasLicenseProp","debug","forwardedProps","user","isDeveloperMode","isGuest","powerLicense","setPowerpackDialog","usePowerpack","hasLicense","panelOpenByScope","setPanelOpenByScope","useState","feedAnnotations","setFeedAnnotations","getOpenForScope","useCallback","scope","setPanelOpen","isOpen","newState","tabsByScope","setTabByScope","useLocalStorage","getTabForScope","slideOut","setSlideOut","openSlideOut","params","closeSlideOut","setHighlightedActivities","useEffect","pip","setPip","openPip","closePip","entities","setEntities","highlightedActivities","uriType","uri","entity","getUriEntities","useURIContext","searchParams","project","type","id","activity","result","entityUriData","r","entityData","projectName","newEntities","err","value","jsx","useDetailsPanelContext","context","useContext","useScopedDetailsPanel","setTabsByScope","currentTab","setTab","updateTab","newTab","isFeed"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { j as it } from "../../../_virtual/jsx-runtime.es.js";
|
|
2
|
-
import { createContext as ot, useContext as et, useState as m, useCallback as
|
|
2
|
+
import { createContext as ot, useContext as et, useState as m, useCallback as p, useEffect as B } from "react";
|
|
3
3
|
import { usePowerpack as rt } from "./PowerpackContext.es.js";
|
|
4
4
|
import { useURIContext as pt } from "./UriContext.es.js";
|
|
5
5
|
import { useLocalStorage as C } from "../hooks/useLocalStorage.es.js";
|
|
@@ -114,51 +114,51 @@ import "./ProjectFoldersContext.es.js";
|
|
|
114
114
|
import "react-redux";
|
|
115
115
|
import "custom-protocol-check";
|
|
116
116
|
import "../containers/ProjectTreeTable/components/GroupSettingsFallback.es.js";
|
|
117
|
-
const st = ["feed", "subtasks", "details", "files"], k = (
|
|
118
|
-
children:
|
|
119
|
-
defaultTab:
|
|
120
|
-
hasLicense:
|
|
121
|
-
debug:
|
|
122
|
-
...
|
|
117
|
+
const st = ["feed", "subtasks", "details", "files"], k = (i) => typeof i == "string" && st.includes(i), N = ot(void 0), Po = ({
|
|
118
|
+
children: i,
|
|
119
|
+
defaultTab: l = "feed",
|
|
120
|
+
hasLicense: S,
|
|
121
|
+
debug: r = {},
|
|
122
|
+
...s
|
|
123
123
|
}) => {
|
|
124
|
-
const a =
|
|
125
|
-
(
|
|
124
|
+
const a = s.user, u = "isDeveloperMode" in r ? r.isDeveloperMode : a?.attrib?.developerMode ?? !1, P = "isGuest" in r ? r.isGuest : a?.data?.isGuest, { powerLicense: h, setPowerpackDialog: v } = rt(), e = "hasLicense" in r ? r.hasLicense : !!h || S, [c, x] = m({}), [G, M] = m([]), U = p(
|
|
125
|
+
(t) => c[t] ? c[t] : !1,
|
|
126
126
|
[c]
|
|
127
|
-
), R =
|
|
128
|
-
(
|
|
129
|
-
const
|
|
130
|
-
|
|
127
|
+
), R = p(
|
|
128
|
+
(t, n) => {
|
|
129
|
+
const o = { ...c };
|
|
130
|
+
o[t] = n, x(o);
|
|
131
131
|
},
|
|
132
132
|
[c]
|
|
133
|
-
), [
|
|
134
|
-
(
|
|
135
|
-
const
|
|
136
|
-
return k(
|
|
133
|
+
), [d, _] = C("details/tabs-by-scope", {}), H = p(
|
|
134
|
+
(t) => {
|
|
135
|
+
const n = d[t];
|
|
136
|
+
return k(n) ? n : l;
|
|
137
137
|
},
|
|
138
|
-
[
|
|
139
|
-
), [
|
|
140
|
-
|
|
141
|
-
}, []),
|
|
142
|
-
|
|
138
|
+
[d, l]
|
|
139
|
+
), [E, j] = m(null), q = p((t) => {
|
|
140
|
+
j(t);
|
|
141
|
+
}, []), w = p(() => {
|
|
142
|
+
j(null), E && T([]);
|
|
143
143
|
}, []);
|
|
144
144
|
B(() => {
|
|
145
|
-
|
|
146
|
-
}, [
|
|
147
|
-
const [z,
|
|
148
|
-
|
|
149
|
-
}, []), K =
|
|
150
|
-
|
|
151
|
-
}, []), [Q,
|
|
145
|
+
w();
|
|
146
|
+
}, [s.useLocation().pathname]);
|
|
147
|
+
const [z, L] = m(null), J = p((t) => {
|
|
148
|
+
L(t);
|
|
149
|
+
}, []), K = p(() => {
|
|
150
|
+
L(null);
|
|
151
|
+
}, []), [Q, D] = m(null), [V, T] = m([]), { uriType: W, uri: X, entity: y, getUriEntities: Y } = pt(), [f] = s.useSearchParams(), b = f.get("project"), g = f.get("type"), O = f.get("id"), F = f.get("activity");
|
|
152
152
|
B(() => {
|
|
153
|
-
if (W === "entity" &&
|
|
154
|
-
Y().then((
|
|
155
|
-
if (
|
|
156
|
-
const
|
|
157
|
-
if (!
|
|
158
|
-
const I =
|
|
153
|
+
if (W === "entity" && y && y.entityType !== "product") {
|
|
154
|
+
Y().then((t) => {
|
|
155
|
+
if (t.length === 0) return;
|
|
156
|
+
const n = t.find((tt) => tt.uri === X), o = n?.entities?.[0];
|
|
157
|
+
if (!n || !o) return;
|
|
158
|
+
const I = o?.projectName || y.projectName || "", A = o.representationId || o.versionId || o.productId || o.taskId || o.folderId;
|
|
159
159
|
if (!I || !A) return;
|
|
160
160
|
const $ = {
|
|
161
|
-
entityType:
|
|
161
|
+
entityType: y.entityType,
|
|
162
162
|
entities: [
|
|
163
163
|
{
|
|
164
164
|
id: A,
|
|
@@ -167,83 +167,82 @@ const st = ["feed", "subtasks", "details", "files"], k = (t) => typeof t == "str
|
|
|
167
167
|
],
|
|
168
168
|
source: "uri"
|
|
169
169
|
};
|
|
170
|
-
|
|
171
|
-
}).catch((
|
|
172
|
-
console.warn("Failed to get URI entities:",
|
|
170
|
+
D($);
|
|
171
|
+
}).catch((t) => {
|
|
172
|
+
console.warn("Failed to get URI entities:", t);
|
|
173
173
|
});
|
|
174
174
|
return;
|
|
175
175
|
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
entityType: s,
|
|
176
|
+
b && g && O && (D({
|
|
177
|
+
entityType: g,
|
|
179
178
|
entities: [
|
|
180
179
|
{
|
|
181
|
-
id:
|
|
182
|
-
projectName:
|
|
180
|
+
id: O,
|
|
181
|
+
projectName: b
|
|
183
182
|
}
|
|
184
183
|
],
|
|
185
184
|
source: "url"
|
|
186
|
-
}),
|
|
187
|
-
...
|
|
185
|
+
}), F && (T([F]), _({
|
|
186
|
+
...d,
|
|
188
187
|
overview: "feed"
|
|
189
188
|
})));
|
|
190
|
-
}, []);
|
|
189
|
+
}, [b, g, O]);
|
|
191
190
|
const Z = {
|
|
192
191
|
// open state for the panel by scope
|
|
193
192
|
panelOpenByScope: c,
|
|
194
193
|
getOpenForScope: U,
|
|
195
194
|
setPanelOpen: R,
|
|
196
|
-
setPanelOpenByScope:
|
|
195
|
+
setPanelOpenByScope: x,
|
|
197
196
|
// tab preferences
|
|
198
|
-
tabsByScope:
|
|
197
|
+
tabsByScope: d,
|
|
199
198
|
getTabForScope: H,
|
|
200
199
|
// slide out state
|
|
201
|
-
slideOut:
|
|
200
|
+
slideOut: E,
|
|
202
201
|
openSlideOut: q,
|
|
203
|
-
closeSlideOut:
|
|
202
|
+
closeSlideOut: w,
|
|
204
203
|
// highlighted activities
|
|
205
204
|
highlightedActivities: V,
|
|
206
|
-
setHighlightedActivities:
|
|
205
|
+
setHighlightedActivities: T,
|
|
207
206
|
// PiP state
|
|
208
207
|
pip: z,
|
|
209
208
|
openPip: J,
|
|
210
209
|
closePip: K,
|
|
211
210
|
// entities state
|
|
212
211
|
entities: Q,
|
|
213
|
-
setEntities:
|
|
212
|
+
setEntities: D,
|
|
214
213
|
feedAnnotations: G,
|
|
215
214
|
setFeedAnnotations: M,
|
|
216
|
-
isDeveloperMode:
|
|
217
|
-
isGuest:
|
|
218
|
-
hasLicense:
|
|
219
|
-
onPowerFeature:
|
|
220
|
-
...
|
|
215
|
+
isDeveloperMode: u,
|
|
216
|
+
isGuest: P,
|
|
217
|
+
hasLicense: e,
|
|
218
|
+
onPowerFeature: v,
|
|
219
|
+
...s
|
|
221
220
|
};
|
|
222
|
-
return /* @__PURE__ */ it.jsx(N.Provider, { value: Z, children:
|
|
221
|
+
return /* @__PURE__ */ it.jsx(N.Provider, { value: Z, children: i });
|
|
223
222
|
}, nt = () => {
|
|
224
|
-
const
|
|
225
|
-
if (
|
|
223
|
+
const i = et(N);
|
|
224
|
+
if (i === void 0)
|
|
226
225
|
throw new Error("useDetailsPanel must be used within a DetailsPanelProvider");
|
|
227
|
-
return
|
|
228
|
-
}, ho = (
|
|
229
|
-
const { getOpenForScope:
|
|
226
|
+
return i;
|
|
227
|
+
}, ho = (i) => {
|
|
228
|
+
const { getOpenForScope: l, setPanelOpen: S, getTabForScope: r } = nt(), [s, a] = C(
|
|
230
229
|
"details/tabs-by-scope",
|
|
231
230
|
{}
|
|
232
|
-
), [
|
|
233
|
-
const
|
|
234
|
-
return k(
|
|
235
|
-
}),
|
|
236
|
-
(
|
|
237
|
-
|
|
231
|
+
), [u, P] = m(() => {
|
|
232
|
+
const e = s[i];
|
|
233
|
+
return k(e) ? e : r(i);
|
|
234
|
+
}), h = p(
|
|
235
|
+
(e) => {
|
|
236
|
+
P(e), a({ ...s, [i]: e });
|
|
238
237
|
},
|
|
239
|
-
[
|
|
240
|
-
),
|
|
238
|
+
[i, a]
|
|
239
|
+
), v = u === "feed";
|
|
241
240
|
return {
|
|
242
|
-
isOpen:
|
|
243
|
-
setOpen: (
|
|
244
|
-
currentTab:
|
|
245
|
-
setTab:
|
|
246
|
-
isFeed:
|
|
241
|
+
isOpen: l(i),
|
|
242
|
+
setOpen: (e) => S(i, e),
|
|
243
|
+
currentTab: u,
|
|
244
|
+
setTab: h,
|
|
245
|
+
isFeed: v
|
|
247
246
|
};
|
|
248
247
|
};
|
|
249
248
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DetailsPanelContext.es.js","sources":["../../../../src/context/DetailsPanelContext.tsx"],"sourcesContent":["import React, {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react'\nimport { QueryFilter, UserModel, DetailsPanelEntityType } from '@shared/api'\nimport { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom'\nimport { SavedAnnotationMetadata } from '@shared/containers'\nimport { PowerpackFeature, usePowerpack } from './PowerpackContext'\nimport { useURIContext } from './UriContext'\nimport { useLocalStorage } from '@shared/hooks'\nimport type { SubtasksManagerProps } from '@shared/components'\n\n// High-level tabs for the details panel\nexport type DetailsPanelTab = 'feed' | 'subtasks' | 'details' | 'files'\n\n// Filters within the feed tab\nexport type FeedFilter = QueryFilter\n\nexport type SlideOut = {\n entityId: string\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\nexport type DetailsPanelPip = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n scope: string\n}\n\nexport type Entities = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n entitySubTypes?: string[]\n source?: 'uri' | 'url' | 'related' // uri = ayon+entity://..., url = ?project=...&type=...&id=...\n}\n\nexport interface OpenStateByScope {\n [scope: string]: boolean\n}\n\n// Create a new interface for managing tab state by scope\nexport interface TabStateByScope {\n [scope: string]: DetailsPanelTab\n}\n\nconst DETAILS_PANEL_TABS: DetailsPanelTab[] = ['feed', 'subtasks', 'details', 'files']\n\nconst isDetailsPanelTab = (tab: unknown): tab is DetailsPanelTab =>\n typeof tab === 'string' && DETAILS_PANEL_TABS.includes(tab as DetailsPanelTab)\n\n// these props get forwarded to the details panel value\n// it's mainly redux callbacks that cannot be used in shared library\nexport interface DetailsPanelContextProps {\n dispatch?: any // this is a redux dispatch function and it's quite annoying we need to do this\n user: UserModel\n viewer?: {\n reviewableIds: string[]\n taskId?: string | null\n folderId?: string | null\n }\n // redux callback actions\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n // route hooks\n useParams: typeof useParams\n useNavigate: typeof useNavigate\n useLocation: typeof useLocation\n useSearchParams: typeof useSearchParams\n feedAnnotationsEnabled?: boolean\n hasLicense?: boolean\n // SubtasksManager component\n SubtasksManager?: React.ComponentType<SubtasksManagerProps>\n // debugging used to simulate different values\n debug?: {\n isDeveloperMode?: boolean\n isGuest?: boolean\n hasLicense?: boolean\n }\n}\n\n// Interface for our simplified context\nexport interface DetailsPanelContextType extends DetailsPanelContextProps {\n // user\n isDeveloperMode: boolean\n isGuest: boolean\n // Open state for the panel by scope\n panelOpenByScope: OpenStateByScope\n getOpenForScope: (scope: string) => boolean\n setPanelOpen: (scope: string, isOpen: boolean) => void\n setPanelOpenByScope: (newState: OpenStateByScope) => void\n\n // Tab preferences by scope\n tabsByScope: TabStateByScope\n getTabForScope: (scope: string) => DetailsPanelTab\n\n // Slide out state\n slideOut: null | SlideOut\n openSlideOut: (slideOut: SlideOut) => void\n closeSlideOut: () => void\n\n // Highlighted activities\n highlightedActivities: string[]\n setHighlightedActivities: (activities: string[]) => void\n\n // PiP state\n pip: DetailsPanelPip | null\n openPip: (pip: DetailsPanelPip) => void\n closePip: () => void\n\n // Entities state\n entities: Entities | null\n setEntities: (entities: Entities | null) => void\n\n // Annotations\n feedAnnotations: SavedAnnotationMetadata[]\n setFeedAnnotations: (annotations: SavedAnnotationMetadata[]) => void\n\n // powerpack\n onPowerFeature: (feature: PowerpackFeature) => void\n}\n\n// Create the context\nconst DetailsPanelContext = createContext<DetailsPanelContextType | undefined>(undefined)\n\n// Provider component\nexport interface DetailsPanelProviderProps extends DetailsPanelContextProps {\n children: ReactNode\n defaultTab?: DetailsPanelTab\n}\n\nexport const DetailsPanelProvider: React.FC<DetailsPanelProviderProps> = ({\n children,\n defaultTab = 'feed',\n hasLicense: hasLicenseProp,\n debug = {},\n ...forwardedProps\n}) => {\n const user = forwardedProps.user\n const isDeveloperMode =\n 'isDeveloperMode' in debug\n ? (debug.isDeveloperMode as boolean)\n : user?.attrib?.developerMode ?? false\n const isGuest = 'isGuest' in debug ? (debug.isGuest as boolean) : user?.data?.isGuest\n\n // get license from powerpack or forwarded down from props\n const { powerLicense, setPowerpackDialog } = usePowerpack()\n const hasLicense =\n 'hasLicense' in debug ? (debug.hasLicense as boolean) : !!powerLicense || hasLicenseProp\n\n // keep track of the currently open panel by scope\n const [panelOpenByScope, setPanelOpenByScope] = useState<OpenStateByScope>({})\n const [feedAnnotations, setFeedAnnotations] = useState<SavedAnnotationMetadata[]>([])\n\n // get the current open state for a specific scope\n const getOpenForScope = useCallback(\n (scope: string): boolean => {\n // Check if we have a saved preference for this scope\n if (panelOpenByScope[scope]) {\n return panelOpenByScope[scope]\n }\n\n // Fall back to default\n return false\n },\n [panelOpenByScope],\n )\n // Set open state for a scope\n const setPanelOpen = useCallback(\n (scope: string, isOpen: boolean) => {\n // Create a new state object based on current open state\n const newState = { ...panelOpenByScope }\n newState[scope] = isOpen\n\n // Update the state with the new object\n setPanelOpenByScope(newState)\n },\n [panelOpenByScope],\n )\n\n // Use localStorage to persist tab preferences by scope\n const [tabsByScope, setTabByScope] = useLocalStorage<TabStateByScope>('details/tabs-by-scope', {})\n\n // Get the current tab for a specific scope\n const getTabForScope = useCallback(\n (scope: string): DetailsPanelTab => {\n // Check if we have a saved preference for this scope\n const tab = tabsByScope[scope]\n if (isDetailsPanelTab(tab)) {\n return tab\n }\n\n // Fall back to default\n return defaultTab\n },\n [tabsByScope, defaultTab],\n )\n\n // Set tab for a scope\n\n // is the slide out open?\n const [slideOut, setSlideOut] = useState<null | SlideOut>(null)\n\n // open the slide out\n const openSlideOut = useCallback<DetailsPanelContextType['openSlideOut']>((params) => {\n setSlideOut(params)\n }, [])\n\n // close the slide out\n const closeSlideOut = useCallback(() => {\n setSlideOut(null)\n if (slideOut) {\n setHighlightedActivities([])\n }\n }, [])\n\n // close slide out whenever the page changes\n useEffect(() => {\n closeSlideOut()\n }, [forwardedProps.useLocation().pathname])\n\n const [pip, setPip] = useState<DetailsPanelPip | null>(null)\n\n const openPip = useCallback((pip: DetailsPanelPip) => {\n setPip(pip)\n }, [])\n const closePip = useCallback(() => {\n setPip(null)\n }, [])\n\n const [entities, setEntities] = useState<Entities | null>(null)\n\n const [highlightedActivities, setHighlightedActivities] = useState<string[]>([])\n\n const { uriType, uri, entity, getUriEntities } = useURIContext()\n const [searchParams] = forwardedProps.useSearchParams()\n\n // on first load, check if there is a uri or URL params and open details panel if present\n useEffect(() => {\n // Priority 1: Check for 'uri' parameter (ayon+entity://...)\n if (uriType === 'entity' && entity && entity.entityType !== 'product') {\n getUriEntities()\n .then((result) => {\n if (result.length === 0) return\n\n const entityUriData = result.find((r) => r.uri === uri)\n const entityData = entityUriData?.entities?.[0]\n\n if (!entityUriData || !entityData) return\n const projectName = entityData?.projectName || entity.projectName || ''\n const id =\n entityData.representationId ||\n entityData.versionId ||\n entityData.productId ||\n entityData.taskId ||\n entityData.folderId\n\n if (!projectName || !id) return\n\n const newEntities: Entities = {\n entityType: entity.entityType as DetailsPanelEntityType,\n entities: [\n {\n id: id,\n projectName: projectName,\n },\n ],\n source: 'uri',\n }\n\n setEntities(newEntities)\n })\n .catch((err) => {\n console.warn('Failed to get URI entities:', err)\n })\n return\n }\n\n // Priority 2: Check for URL params (project, type, id)\n const project = searchParams.get('project')\n const type = searchParams.get('type')\n const id = searchParams.get('id')\n const activity = searchParams.get('activity')\n\n if (project && type && id) {\n const newEntities: Entities = {\n entityType: type as DetailsPanelEntityType,\n entities: [\n {\n id,\n projectName: project,\n },\n ],\n source: 'url',\n }\n\n setEntities(newEntities)\n\n // if there is an activity param, open the feed tab (activity is shown by default)\n\n if (activity) {\n setHighlightedActivities([activity])\n setTabByScope({\n ...tabsByScope,\n overview: 'feed',\n })\n }\n }\n }, [])\n\n const value = {\n // open state for the panel by scope\n panelOpenByScope,\n getOpenForScope,\n setPanelOpen,\n setPanelOpenByScope,\n // tab preferences\n tabsByScope,\n getTabForScope,\n // slide out state\n slideOut,\n openSlideOut,\n closeSlideOut,\n // highlighted activities\n highlightedActivities,\n setHighlightedActivities,\n // PiP state\n pip,\n openPip,\n closePip,\n // entities state\n entities,\n setEntities,\n feedAnnotations,\n setFeedAnnotations,\n isDeveloperMode,\n isGuest,\n hasLicense,\n onPowerFeature: setPowerpackDialog,\n ...forwardedProps,\n }\n\n return <DetailsPanelContext.Provider value={value}>{children}</DetailsPanelContext.Provider>\n}\n\n// Custom hook to use the details context\nexport const useDetailsPanelContext = (): DetailsPanelContextType => {\n const context = useContext(DetailsPanelContext)\n if (context === undefined) {\n throw new Error('useDetailsPanel must be used within a DetailsPanelProvider')\n }\n return context\n}\n\n// Add a specialized hook for using a panel in a specific scope\nexport const useScopedDetailsPanel = (scope: string) => {\n const { getOpenForScope, setPanelOpen, getTabForScope } = useDetailsPanelContext()\n\n const [tabsByScope, setTabsByScope] = useLocalStorage<TabStateByScope>(\n 'details/tabs-by-scope',\n {},\n )\n\n const [currentTab, setTab] = useState<DetailsPanelTab>(() => {\n const tab = tabsByScope[scope]\n return isDetailsPanelTab(tab) ? tab : getTabForScope(scope)\n })\n\n // Keep localStorage and local state in sync\n const updateTab = useCallback(\n (newTab: DetailsPanelTab) => {\n setTab(newTab)\n setTabsByScope({ ...tabsByScope, [scope]: newTab })\n },\n [scope, setTabsByScope],\n )\n\n const isFeed = currentTab === 'feed'\n\n return {\n isOpen: getOpenForScope(scope),\n setOpen: (isOpen: boolean) => setPanelOpen(scope, isOpen),\n currentTab,\n setTab: updateTab,\n isFeed,\n }\n}\n"],"names":["DETAILS_PANEL_TABS","isDetailsPanelTab","tab","DetailsPanelContext","createContext","DetailsPanelProvider","children","defaultTab","hasLicenseProp","debug","forwardedProps","user","isDeveloperMode","isGuest","powerLicense","setPowerpackDialog","usePowerpack","hasLicense","panelOpenByScope","setPanelOpenByScope","useState","feedAnnotations","setFeedAnnotations","getOpenForScope","useCallback","scope","setPanelOpen","isOpen","newState","tabsByScope","setTabByScope","useLocalStorage","getTabForScope","slideOut","setSlideOut","openSlideOut","params","closeSlideOut","setHighlightedActivities","useEffect","pip","setPip","openPip","closePip","entities","setEntities","highlightedActivities","uriType","uri","entity","getUriEntities","useURIContext","searchParams","result","entityUriData","r","entityData","projectName","id","newEntities","err","project","type","activity","value","jsx","useDetailsPanelContext","context","useContext","useScopedDetailsPanel","setTabsByScope","currentTab","setTab","updateTab","newTab","isFeed"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DetailsPanelContext.es.js","sources":["../../../../src/context/DetailsPanelContext.tsx"],"sourcesContent":["import React, {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react'\nimport { QueryFilter, UserModel, DetailsPanelEntityType } from '@shared/api'\nimport { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom'\nimport { SavedAnnotationMetadata } from '@shared/containers'\nimport { PowerpackFeature, usePowerpack } from './PowerpackContext'\nimport { useURIContext } from './UriContext'\nimport { useLocalStorage } from '@shared/hooks'\nimport type { SubtasksManagerProps } from '@shared/components'\n\n// High-level tabs for the details panel\nexport type DetailsPanelTab = 'feed' | 'subtasks' | 'details' | 'files'\n\n// Filters within the feed tab\nexport type FeedFilter = QueryFilter\n\nexport type SlideOut = {\n entityId: string\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\nexport type DetailsPanelPip = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n scope: string\n}\n\nexport type Entities = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n entitySubTypes?: string[]\n source?: 'uri' | 'url' | 'related' // uri = ayon+entity://..., url = ?project=...&type=...&id=...\n}\n\nexport interface OpenStateByScope {\n [scope: string]: boolean\n}\n\n// Create a new interface for managing tab state by scope\nexport interface TabStateByScope {\n [scope: string]: DetailsPanelTab\n}\n\nconst DETAILS_PANEL_TABS: DetailsPanelTab[] = ['feed', 'subtasks', 'details', 'files']\n\nconst isDetailsPanelTab = (tab: unknown): tab is DetailsPanelTab =>\n typeof tab === 'string' && DETAILS_PANEL_TABS.includes(tab as DetailsPanelTab)\n\n// these props get forwarded to the details panel value\n// it's mainly redux callbacks that cannot be used in shared library\nexport interface DetailsPanelContextProps {\n dispatch?: any // this is a redux dispatch function and it's quite annoying we need to do this\n user: UserModel\n viewer?: {\n reviewableIds: string[]\n taskId?: string | null\n folderId?: string | null\n }\n // redux callback actions\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n // route hooks\n useParams: typeof useParams\n useNavigate: typeof useNavigate\n useLocation: typeof useLocation\n useSearchParams: typeof useSearchParams\n feedAnnotationsEnabled?: boolean\n hasLicense?: boolean\n // SubtasksManager component\n SubtasksManager?: React.ComponentType<SubtasksManagerProps>\n // debugging used to simulate different values\n debug?: {\n isDeveloperMode?: boolean\n isGuest?: boolean\n hasLicense?: boolean\n }\n}\n\n// Interface for our simplified context\nexport interface DetailsPanelContextType extends DetailsPanelContextProps {\n // user\n isDeveloperMode: boolean\n isGuest: boolean\n // Open state for the panel by scope\n panelOpenByScope: OpenStateByScope\n getOpenForScope: (scope: string) => boolean\n setPanelOpen: (scope: string, isOpen: boolean) => void\n setPanelOpenByScope: (newState: OpenStateByScope) => void\n\n // Tab preferences by scope\n tabsByScope: TabStateByScope\n getTabForScope: (scope: string) => DetailsPanelTab\n\n // Slide out state\n slideOut: null | SlideOut\n openSlideOut: (slideOut: SlideOut) => void\n closeSlideOut: () => void\n\n // Highlighted activities\n highlightedActivities: string[]\n setHighlightedActivities: (activities: string[]) => void\n\n // PiP state\n pip: DetailsPanelPip | null\n openPip: (pip: DetailsPanelPip) => void\n closePip: () => void\n\n // Entities state\n entities: Entities | null\n setEntities: (entities: Entities | null) => void\n\n // Annotations\n feedAnnotations: SavedAnnotationMetadata[]\n setFeedAnnotations: (annotations: SavedAnnotationMetadata[]) => void\n\n // powerpack\n onPowerFeature: (feature: PowerpackFeature) => void\n}\n\n// Create the context\nconst DetailsPanelContext = createContext<DetailsPanelContextType | undefined>(undefined)\n\n// Provider component\nexport interface DetailsPanelProviderProps extends DetailsPanelContextProps {\n children: ReactNode\n defaultTab?: DetailsPanelTab\n}\n\nexport const DetailsPanelProvider: React.FC<DetailsPanelProviderProps> = ({\n children,\n defaultTab = 'feed',\n hasLicense: hasLicenseProp,\n debug = {},\n ...forwardedProps\n}) => {\n const user = forwardedProps.user\n const isDeveloperMode =\n 'isDeveloperMode' in debug\n ? (debug.isDeveloperMode as boolean)\n : user?.attrib?.developerMode ?? false\n const isGuest = 'isGuest' in debug ? (debug.isGuest as boolean) : user?.data?.isGuest\n\n // get license from powerpack or forwarded down from props\n const { powerLicense, setPowerpackDialog } = usePowerpack()\n const hasLicense =\n 'hasLicense' in debug ? (debug.hasLicense as boolean) : !!powerLicense || hasLicenseProp\n\n // keep track of the currently open panel by scope\n const [panelOpenByScope, setPanelOpenByScope] = useState<OpenStateByScope>({})\n const [feedAnnotations, setFeedAnnotations] = useState<SavedAnnotationMetadata[]>([])\n\n // get the current open state for a specific scope\n const getOpenForScope = useCallback(\n (scope: string): boolean => {\n // Check if we have a saved preference for this scope\n if (panelOpenByScope[scope]) {\n return panelOpenByScope[scope]\n }\n\n // Fall back to default\n return false\n },\n [panelOpenByScope],\n )\n // Set open state for a scope\n const setPanelOpen = useCallback(\n (scope: string, isOpen: boolean) => {\n // Create a new state object based on current open state\n const newState = { ...panelOpenByScope }\n newState[scope] = isOpen\n\n // Update the state with the new object\n setPanelOpenByScope(newState)\n },\n [panelOpenByScope],\n )\n\n // Use localStorage to persist tab preferences by scope\n const [tabsByScope, setTabByScope] = useLocalStorage<TabStateByScope>('details/tabs-by-scope', {})\n\n // Get the current tab for a specific scope\n const getTabForScope = useCallback(\n (scope: string): DetailsPanelTab => {\n // Check if we have a saved preference for this scope\n const tab = tabsByScope[scope]\n if (isDetailsPanelTab(tab)) {\n return tab\n }\n\n // Fall back to default\n return defaultTab\n },\n [tabsByScope, defaultTab],\n )\n\n // Set tab for a scope\n\n // is the slide out open?\n const [slideOut, setSlideOut] = useState<null | SlideOut>(null)\n\n // open the slide out\n const openSlideOut = useCallback<DetailsPanelContextType['openSlideOut']>((params) => {\n setSlideOut(params)\n }, [])\n\n // close the slide out\n const closeSlideOut = useCallback(() => {\n setSlideOut(null)\n if (slideOut) {\n setHighlightedActivities([])\n }\n }, [])\n\n // close slide out whenever the page changes\n useEffect(() => {\n closeSlideOut()\n }, [forwardedProps.useLocation().pathname])\n\n const [pip, setPip] = useState<DetailsPanelPip | null>(null)\n\n const openPip = useCallback((pip: DetailsPanelPip) => {\n setPip(pip)\n }, [])\n const closePip = useCallback(() => {\n setPip(null)\n }, [])\n\n const [entities, setEntities] = useState<Entities | null>(null)\n\n const [highlightedActivities, setHighlightedActivities] = useState<string[]>([])\n\n const { uriType, uri, entity, getUriEntities } = useURIContext()\n const [searchParams] = forwardedProps.useSearchParams()\n\n const project = searchParams.get('project')\n const type = searchParams.get('type')\n const id = searchParams.get('id')\n const activity = searchParams.get('activity')\n\n // on first load or URL param change, check if there is a uri or URL params and open details panel if present\n useEffect(() => {\n // Priority 1: Check for 'uri' parameter (ayon+entity://...)\n if (uriType === 'entity' && entity && entity.entityType !== 'product') {\n getUriEntities()\n .then((result) => {\n if (result.length === 0) return\n\n const entityUriData = result.find((r) => r.uri === uri)\n const entityData = entityUriData?.entities?.[0]\n\n if (!entityUriData || !entityData) return\n const projectName = entityData?.projectName || entity.projectName || ''\n const id =\n entityData.representationId ||\n entityData.versionId ||\n entityData.productId ||\n entityData.taskId ||\n entityData.folderId\n\n if (!projectName || !id) return\n\n const newEntities: Entities = {\n entityType: entity.entityType as DetailsPanelEntityType,\n entities: [\n {\n id: id,\n projectName: projectName,\n },\n ],\n source: 'uri',\n }\n\n setEntities(newEntities)\n })\n .catch((err) => {\n console.warn('Failed to get URI entities:', err)\n })\n return\n }\n\n // Priority 2: Check for URL params (project, type, id)\n if (project && type && id) {\n const newEntities: Entities = {\n entityType: type as DetailsPanelEntityType,\n entities: [\n {\n id,\n projectName: project,\n },\n ],\n source: 'url',\n }\n\n setEntities(newEntities)\n\n // if there is an activity param, open the feed tab (activity is shown by default)\n\n if (activity) {\n setHighlightedActivities([activity])\n setTabByScope({\n ...tabsByScope,\n overview: 'feed',\n })\n }\n }\n }, [project, type, id])\n\n const value = {\n // open state for the panel by scope\n panelOpenByScope,\n getOpenForScope,\n setPanelOpen,\n setPanelOpenByScope,\n // tab preferences\n tabsByScope,\n getTabForScope,\n // slide out state\n slideOut,\n openSlideOut,\n closeSlideOut,\n // highlighted activities\n highlightedActivities,\n setHighlightedActivities,\n // PiP state\n pip,\n openPip,\n closePip,\n // entities state\n entities,\n setEntities,\n feedAnnotations,\n setFeedAnnotations,\n isDeveloperMode,\n isGuest,\n hasLicense,\n onPowerFeature: setPowerpackDialog,\n ...forwardedProps,\n }\n\n return <DetailsPanelContext.Provider value={value}>{children}</DetailsPanelContext.Provider>\n}\n\n// Custom hook to use the details context\nexport const useDetailsPanelContext = (): DetailsPanelContextType => {\n const context = useContext(DetailsPanelContext)\n if (context === undefined) {\n throw new Error('useDetailsPanel must be used within a DetailsPanelProvider')\n }\n return context\n}\n\n// Add a specialized hook for using a panel in a specific scope\nexport const useScopedDetailsPanel = (scope: string) => {\n const { getOpenForScope, setPanelOpen, getTabForScope } = useDetailsPanelContext()\n\n const [tabsByScope, setTabsByScope] = useLocalStorage<TabStateByScope>(\n 'details/tabs-by-scope',\n {},\n )\n\n const [currentTab, setTab] = useState<DetailsPanelTab>(() => {\n const tab = tabsByScope[scope]\n return isDetailsPanelTab(tab) ? tab : getTabForScope(scope)\n })\n\n // Keep localStorage and local state in sync\n const updateTab = useCallback(\n (newTab: DetailsPanelTab) => {\n setTab(newTab)\n setTabsByScope({ ...tabsByScope, [scope]: newTab })\n },\n [scope, setTabsByScope],\n )\n\n const isFeed = currentTab === 'feed'\n\n return {\n isOpen: getOpenForScope(scope),\n setOpen: (isOpen: boolean) => setPanelOpen(scope, isOpen),\n currentTab,\n setTab: updateTab,\n isFeed,\n }\n}\n"],"names":["DETAILS_PANEL_TABS","isDetailsPanelTab","tab","DetailsPanelContext","createContext","DetailsPanelProvider","children","defaultTab","hasLicenseProp","debug","forwardedProps","user","isDeveloperMode","isGuest","powerLicense","setPowerpackDialog","usePowerpack","hasLicense","panelOpenByScope","setPanelOpenByScope","useState","feedAnnotations","setFeedAnnotations","getOpenForScope","useCallback","scope","setPanelOpen","isOpen","newState","tabsByScope","setTabByScope","useLocalStorage","getTabForScope","slideOut","setSlideOut","openSlideOut","params","closeSlideOut","setHighlightedActivities","useEffect","pip","setPip","openPip","closePip","entities","setEntities","highlightedActivities","uriType","uri","entity","getUriEntities","useURIContext","searchParams","project","type","id","activity","result","entityUriData","r","entityData","projectName","newEntities","err","value","jsx","useDetailsPanelContext","context","useContext","useScopedDetailsPanel","setTabsByScope","currentTab","setTab","updateTab","newTab","isFeed"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("../../../_virtual/jsx-runtime.cjs.js"),e=require("react"),w=require("react-toastify"),x=require("lodash");require("uuid");const l=require("../util/pubsub.cjs.js"),C=require("../../../_virtual/index.cjs.js"),$=require("../api/base/client.cjs.js");require("../api/generated/graphql.cjs.js");require("../api/generated/graphqlLinks.cjs.js");require("../api/generated/access.cjs.js");require("../api/generated/actions.cjs.js");require("../api/generated/activityFeed.cjs.js");require("../api/generated/addons.cjs.js");require("../api/generated/anatomy.cjs.js");require("../api/generated/attributes.cjs.js");require("../api/generated/authentication.cjs.js");require("../api/generated/bundles.cjs.js");require("../api/generated/configuration.cjs.js");require("../api/generated/desktop.cjs.js");require("../api/generated/entityLists.cjs.js");require("../api/generated/events.cjs.js");require("../api/generated/files.cjs.js");require("../api/generated/folders.cjs.js");require("../api/generated/inbox.cjs.js");require("../api/generated/links.cjs.js");require("../api/generated/market.cjs.js");require("../api/generated/onboarding.cjs.js");require("../api/generated/operations.cjs.js");require("../api/generated/products.cjs.js");require("../api/generated/projectDashboard.cjs.js");require("../api/generated/projects.cjs.js");require("../api/generated/projectFolders.cjs.js");require("../api/generated/reviewables.cjs.js");require("../api/generated/services.cjs.js");require("../api/generated/system.cjs.js");require("../api/generated/tasks.cjs.js");require("../api/generated/teams.cjs.js");require("../api/generated/thumbnails.cjs.js");require("../api/generated/uRIs.cjs.js");require("../api/generated/users.cjs.js");require("../api/generated/versions.cjs.js");require("../api/generated/workfiles.cjs.js");require("../api/generated/ynputCloud.cjs.js");require("../api/generated/grouping.cjs.js");require("../api/generated/views.cjs.js");require("../api/queries/actions/getActions.cjs.js");require("../api/queries/activities/getActivities.cjs.js");require("../api/queries/activities/updateActivities.cjs.js");require("../api/queries/activities/updateReaction.cjs.js");require("../api/queries/activities/getMentions.cjs.js");require("../api/queries/activities/getCategories.cjs.js");require("../api/queries/addons/getAddons.cjs.js");require("../api/queries/addons/updateAddons.cjs.js");require("../api/queries/attributes/getAttributes.cjs.js");require("../api/queries/attributes/updateAttributes.cjs.js");require("../api/queries/authentication/getAuthentication.cjs.js");require("../api/queries/cloud/cloud.cjs.js");require("../api/queries/config/getConfig.cjs.js");require("../api/queries/config/updateConfig.cjs.js");require("../api/queries/entities/getEntity.cjs.js");require("../api/queries/entities/getEntityPanel.cjs.js");require("../api/queries/entities/updateEntity.cjs.js");require("../api/queries/entityLists/getLists.cjs.js");require("../api/queries/entityLists/updateLists.cjs.js");require("../api/queries/entityLists/getListsAttributes.cjs.js");require("../api/queries/entityLists/updateListsAttributes.cjs.js");require("../api/queries/entityLists/listFolders.cjs.js");require("../api/queries/folders/getFolders.cjs.js");require("../api/queries/grouping/getGrouping.cjs.js");require("../api/queries/links/updateLinks.cjs.js");require("../api/queries/links/getLinks.cjs.js");require("../api/queries/links/getEntityLinks.cjs.js");require("../api/queries/overview/getOverview.cjs.js");require("../api/queries/overview/updateOverview.cjs.js");require("../api/queries/versions/getVersionsProducts.cjs.js");require("../api/queries/permissions/getPermissions.cjs.js");require("../api/queries/products/createProduct.cjs.js");require("../api/queries/project/getProject.cjs.js");require("../api/queries/project/updateProject.cjs.js");require("../api/queries/projectFolders/projectFolders.cjs.js");require("../api/queries/review/getReview.cjs.js");require("../api/queries/review/updateReview.cjs.js");require("../api/queries/share/share.cjs.js");const A=require("../api/queries/system/getSystem.cjs.js");require("../api/queries/tasks/getTasks.cjs.js");require("../api/queries/tasks/updateTasks.cjs.js");require("../api/queries/userDashboard/getUserDashboard.cjs.js");require("../api/queries/users/getUsers.cjs.js");require("../api/queries/users/updateUsers.cjs.js");require("../api/queries/users/guests.cjs.js");require("../api/queries/versions/updateVersions.cjs.js");require("../api/queries/views/getViews.cjs.js");require("../api/queries/views/updateViews.cjs.js");require("../api/queries/watchers/getWatchers.cjs.js");require("../api/queries/uris/getUris.cjs.js");require("../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("@ynput/ayon-react-components");require("../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../components/AccessUser/AccessUser.cjs.js");require("clsx");require("../components/AttributeEditor/components/MinMaxField.cjs.js");require("react-dom");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../components/EnumEditor/EnumEditor.styled.cjs.js");require("../components/Badge/Badge.cjs.js");require("../components/Chips/Chips.cjs.js");require("date-fns");require("../components/DateRangePicker/DateRangePicker.styled.cjs.js");require("../components/LinksManager/CellEditingDialog.cjs.js");require("../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../components/DoneCheckbox/DoneCheckbox.cjs.js");require("../components/EarlyPreview/EarlyPreview.cjs.js");require("../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../containers/ContextMenu/ContextMenuContext.cjs.js");;/* empty css */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("./RemoteModulesContext.cjs.js");require("./DetailsPanelContext.cjs.js");require("./SubtasksModulesContext.cjs.js");require("./ThumbnailUploaderContext.cjs.js");require("./SettingsPanelContext.cjs.js");require("./pip/PiPProvider.cjs.js");require("./pip/PiPWrapper.cjs.js");require("./AddonProjectContext.cjs.js");require("./AddonContext.cjs.js");require("./PowerpackContext.cjs.js");require("./MoveEntityContext.cjs.js");require("./MenuContext.cjs.js");require("./GlobalContext.cjs.js");require("./ProjectContext.cjs.js");require("./ProjectFoldersContext.cjs.js");require("./UriContext.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("../containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("../containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../containers/Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("@tanstack/react-virtual");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("../containers/ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../components/LinksManager/LinksManager.styled.cjs.js");require("../containers/ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../containers/ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../containers/ProjectTreeTable/context/CellEditingContext.cjs.js");require("short-uuid");require("../containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../containers/ProjectTreeTable/context/ProjectTableQueriesContext.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/ProjectTreeTable.styled.cjs.js");require("../containers/ProjectTreeTable/components/SelectionCell.cjs.js");require("../containers/ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../containers/ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../containers/ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js");require("../containers/EntityPickerDialog/EntityPickerDialog.cjs.js");require("../containers/SimpleTable/SimpleTable.styled.cjs.js");require("@tanstack/match-sorter-utils");require("../containers/SimpleTable/context/SimpleTableContext.cjs.js");require("../containers/SimpleTable/SimpleTableRowTemplate.cjs.js");require("../containers/Slicer/hooks/useTableDataBySlice.cjs.js");require("../containers/Slicer/components/SlicerSearch.cjs.js");require("../containers/Slicer/context/SlicerContext.cjs.js");require("../containers/DetailsPanel/DetailsPanel.styled.cjs.js");require("../containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../components/PlayableIcon/PlayableIcon.cjs.js");require("../containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../containers/DetailsPanel/components/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("../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../components/EntityPath/EntityPath.styled.cjs.js");require("../components/EntityPath/SegmentProvider.cjs.js");require("../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../components/Feedback/FeedbackContext.cjs.js");require("../components/Feedback/SupportBubble.cjs.js");require("../components/FileThumbnail/FileThumbnail.cjs.js");require("../components/LegacyBadge/LegacyBadge.cjs.js");require("../components/Powerpack/PowerpackButton.cjs.js");require("../components/Powerpack/PricingLink.cjs.js");require("../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../components/Powerpack/CTAButton.cjs.js");require("../components/Powerpack/RequiredAddonVersion.cjs.js");require("../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../components/SizeSlider/SizeSlider.cjs.js");const J=require("../components/RefreshToast/RefreshToast.cjs.js");require("../components/ReviewableCard/ReviewableCard.cjs.js");require("../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../components/SearchFilter/filterDates.cjs.js");require("../components/SettingsPanel/SettingsPanel.cjs.js");require("../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../components/SortingSetting/SortingSetting.styled.cjs.js");require("../components/StyledLink/StyledLink.cjs.js");require("../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../components/Thumbnail/Thumbnail.styled.cjs.js");require("../components/Thumbnail/StackedThumbnails.cjs.js");require("../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../components/Watchers/Watchers.cjs.js");require("../components/Menu/Menu.styled.cjs.js");require("../components/Menu/MenuItem.cjs.js");require("../components/ReviewablesSelector/ReviewablesSelector.styled.cjs.js");const d=e.createContext(void 0),N=window.location.protocol.replace("http","ws"),V=`${N}//${window.location.host}/ws`,W=({children:q,userName:k,projectName:f,dispatch:v})=>{const[S,o]=e.useState(!1),[t,m]=e.useState([]),[R]=A.useLazyGetSiteInfoQuery(),y={shouldReconnect:()=>!k||!localStorage.getItem("accessToken")?!1:(R({full:!1}).unwrap(),!0)},{sendMessage:T,readyState:n,getWebSocket:c}=C.default(V,y),g=()=>{T(JSON.stringify({topic:"auth",token:localStorage.getItem("accessToken"),subscribe:t,project:f}))};e.useEffect(()=>{console.debug("Topics changed",t),g()},[t,f]);const E=x.debounce(r=>{x.isEqual(t,r)||(console.log("WS: Subscriptions changed"),m(r))},200);l.setOnSubscriptionsChange(r=>E(r));const[p,a]=e.useState(!1),[O,j]=e.useState(!1);e.useEffect(()=>(p&&(O||(w.toast.warning(b.jsxRuntimeExports.jsx(J.RefreshToast,{}),{autoClose:!1,closeButton:!1}),j(!0))),()=>{a(!1)}),[p,a]);const u=e.useRef({callCount:0,lastCall:Date.now()}),I=e.useCallback(r=>{if(u.current.callCount>1e3)return a(!0),console.log("Overload: Over 1000 messages per second. Ignoring subsequent messages.");let i;try{i=JSON.parse(r.data)}catch(M){console.error("Failed to parse websocket message:",M,r.data);return}const{topic:s,sender:P,summary:D}=i||{};if(s==="heartbeat"||(s==="server.restart_requested"&&o(!0),P===window.senderId))return;const h=Date.now();h-u.current.lastCall<1e3?u.current.callCount+=1:u.current.callCount=0,u.current.lastCall=h,s==="shout"&&i?.summary?.text&&w.toast.info(D.text),console.log("Event RX",i),l.publish(s,i)},[o]);return e.useEffect(()=>{n===C.distExports.ReadyState.OPEN&&(S&&(o(!1),v($.api.util.resetApiState())),c().onmessage=I,g(),l.publish("client.connected",{topic:"client.connected"}))},[n,c]),b.jsxRuntimeExports.jsx(d.Provider,{value:{getWebSocket:c,readyState:n,serverRestartingVisible:S},children:q})},z=()=>{const q=e.useContext(d);if(q===void 0)throw new Error("useSocketContext must be used within a SocketProvider");return q};exports.SocketContext=d;exports.SocketProvider=W;exports.useSocketContext=z;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("../../../_virtual/jsx-runtime.cjs.js"),e=require("react"),w=require("react-toastify"),x=require("lodash");require("uuid");const l=require("../util/pubsub.cjs.js"),C=require("../../../_virtual/index.cjs2.js"),$=require("../api/base/client.cjs.js");require("../api/generated/graphql.cjs.js");require("../api/generated/graphqlLinks.cjs.js");require("../api/generated/access.cjs.js");require("../api/generated/actions.cjs.js");require("../api/generated/activityFeed.cjs.js");require("../api/generated/addons.cjs.js");require("../api/generated/anatomy.cjs.js");require("../api/generated/attributes.cjs.js");require("../api/generated/authentication.cjs.js");require("../api/generated/bundles.cjs.js");require("../api/generated/configuration.cjs.js");require("../api/generated/desktop.cjs.js");require("../api/generated/entityLists.cjs.js");require("../api/generated/events.cjs.js");require("../api/generated/files.cjs.js");require("../api/generated/folders.cjs.js");require("../api/generated/inbox.cjs.js");require("../api/generated/links.cjs.js");require("../api/generated/market.cjs.js");require("../api/generated/onboarding.cjs.js");require("../api/generated/operations.cjs.js");require("../api/generated/products.cjs.js");require("../api/generated/projectDashboard.cjs.js");require("../api/generated/projects.cjs.js");require("../api/generated/projectFolders.cjs.js");require("../api/generated/reviewables.cjs.js");require("../api/generated/services.cjs.js");require("../api/generated/system.cjs.js");require("../api/generated/tasks.cjs.js");require("../api/generated/teams.cjs.js");require("../api/generated/thumbnails.cjs.js");require("../api/generated/uRIs.cjs.js");require("../api/generated/users.cjs.js");require("../api/generated/versions.cjs.js");require("../api/generated/workfiles.cjs.js");require("../api/generated/ynputCloud.cjs.js");require("../api/generated/grouping.cjs.js");require("../api/generated/views.cjs.js");require("../api/queries/actions/getActions.cjs.js");require("../api/queries/activities/getActivities.cjs.js");require("../api/queries/activities/updateActivities.cjs.js");require("../api/queries/activities/updateReaction.cjs.js");require("../api/queries/activities/getMentions.cjs.js");require("../api/queries/activities/getCategories.cjs.js");require("../api/queries/addons/getAddons.cjs.js");require("../api/queries/addons/updateAddons.cjs.js");require("../api/queries/attributes/getAttributes.cjs.js");require("../api/queries/attributes/updateAttributes.cjs.js");require("../api/queries/authentication/getAuthentication.cjs.js");require("../api/queries/cloud/cloud.cjs.js");require("../api/queries/config/getConfig.cjs.js");require("../api/queries/config/updateConfig.cjs.js");require("../api/queries/entities/getEntity.cjs.js");require("../api/queries/entities/getEntityPanel.cjs.js");require("../api/queries/entities/updateEntity.cjs.js");require("../api/queries/entityLists/getLists.cjs.js");require("../api/queries/entityLists/updateLists.cjs.js");require("../api/queries/entityLists/getListsAttributes.cjs.js");require("../api/queries/entityLists/updateListsAttributes.cjs.js");require("../api/queries/entityLists/listFolders.cjs.js");require("../api/queries/folders/getFolders.cjs.js");require("../api/queries/grouping/getGrouping.cjs.js");require("../api/queries/links/updateLinks.cjs.js");require("../api/queries/links/getLinks.cjs.js");require("../api/queries/links/getEntityLinks.cjs.js");require("../api/queries/overview/getOverview.cjs.js");require("../api/queries/overview/updateOverview.cjs.js");require("../api/queries/versions/getVersionsProducts.cjs.js");require("../api/queries/permissions/getPermissions.cjs.js");require("../api/queries/products/createProduct.cjs.js");require("../api/queries/project/getProject.cjs.js");require("../api/queries/project/updateProject.cjs.js");require("../api/queries/projectFolders/projectFolders.cjs.js");require("../api/queries/review/getReview.cjs.js");require("../api/queries/review/updateReview.cjs.js");require("../api/queries/share/share.cjs.js");const A=require("../api/queries/system/getSystem.cjs.js");require("../api/queries/tasks/getTasks.cjs.js");require("../api/queries/tasks/updateTasks.cjs.js");require("../api/queries/userDashboard/getUserDashboard.cjs.js");require("../api/queries/users/getUsers.cjs.js");require("../api/queries/users/updateUsers.cjs.js");require("../api/queries/users/guests.cjs.js");require("../api/queries/versions/updateVersions.cjs.js");require("../api/queries/views/getViews.cjs.js");require("../api/queries/views/updateViews.cjs.js");require("../api/queries/watchers/getWatchers.cjs.js");require("../api/queries/uris/getUris.cjs.js");require("../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("@ynput/ayon-react-components");require("../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../components/AccessUser/AccessUser.cjs.js");require("clsx");require("../components/AttributeEditor/components/MinMaxField.cjs.js");require("react-dom");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../components/EnumEditor/EnumEditor.styled.cjs.js");require("../components/Badge/Badge.cjs.js");require("../components/Chips/Chips.cjs.js");require("date-fns");require("../components/DateRangePicker/DateRangePicker.styled.cjs.js");require("../components/LinksManager/CellEditingDialog.cjs.js");require("../../../_virtual/index.cjs.js");require("../../../node_modules/refractor/lib/common.cjs.js");require("../../../node_modules/refractor/lib/all.cjs.js");;/* empty css */require("../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../components/DoneCheckbox/DoneCheckbox.cjs.js");require("../components/EarlyPreview/EarlyPreview.cjs.js");require("../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../containers/ContextMenu/ContextMenuContext.cjs.js");;/* empty css */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("./RemoteModulesContext.cjs.js");require("./DetailsPanelContext.cjs.js");require("./SubtasksModulesContext.cjs.js");require("./ThumbnailUploaderContext.cjs.js");require("./SettingsPanelContext.cjs.js");require("./pip/PiPProvider.cjs.js");require("./pip/PiPWrapper.cjs.js");require("./AddonProjectContext.cjs.js");require("./AddonContext.cjs.js");require("./PowerpackContext.cjs.js");require("./MoveEntityContext.cjs.js");require("./MenuContext.cjs.js");require("./GlobalContext.cjs.js");require("./ProjectContext.cjs.js");require("./ProjectFoldersContext.cjs.js");require("./UriContext.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("../containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("../containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../containers/Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("@tanstack/react-virtual");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("../containers/ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../components/LinksManager/LinksManager.styled.cjs.js");require("../containers/ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../containers/ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../containers/ProjectTreeTable/context/CellEditingContext.cjs.js");require("short-uuid");require("../containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../containers/ProjectTreeTable/context/ProjectTableQueriesContext.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/ProjectTreeTable.styled.cjs.js");require("../containers/ProjectTreeTable/components/SelectionCell.cjs.js");require("../containers/ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../containers/ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../containers/ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js");require("../containers/EntityPickerDialog/EntityPickerDialog.cjs.js");require("../containers/SimpleTable/SimpleTable.styled.cjs.js");require("@tanstack/match-sorter-utils");require("../containers/SimpleTable/context/SimpleTableContext.cjs.js");require("../containers/SimpleTable/SimpleTableRowTemplate.cjs.js");require("../containers/Slicer/hooks/useTableDataBySlice.cjs.js");require("../containers/Slicer/components/SlicerSearch.cjs.js");require("../containers/Slicer/context/SlicerContext.cjs.js");require("../containers/DetailsPanel/DetailsPanel.styled.cjs.js");require("../containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../components/PlayableIcon/PlayableIcon.cjs.js");require("../containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../containers/DetailsPanel/components/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("../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../components/EntityPath/EntityPath.styled.cjs.js");require("../components/EntityPath/SegmentProvider.cjs.js");require("../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../components/Feedback/FeedbackContext.cjs.js");require("../components/Feedback/SupportBubble.cjs.js");require("../components/FileThumbnail/FileThumbnail.cjs.js");require("../components/LegacyBadge/LegacyBadge.cjs.js");require("../components/Powerpack/PowerpackButton.cjs.js");require("../components/Powerpack/PricingLink.cjs.js");require("../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../components/Powerpack/CTAButton.cjs.js");require("../components/Powerpack/RequiredAddonVersion.cjs.js");require("../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../components/SizeSlider/SizeSlider.cjs.js");const J=require("../components/RefreshToast/RefreshToast.cjs.js");require("../components/ReviewableCard/ReviewableCard.cjs.js");require("../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../components/SearchFilter/filterDates.cjs.js");require("../components/SettingsPanel/SettingsPanel.cjs.js");require("../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../components/SortingSetting/SortingSetting.styled.cjs.js");require("../components/StyledLink/StyledLink.cjs.js");require("../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../components/Thumbnail/Thumbnail.styled.cjs.js");require("../components/Thumbnail/StackedThumbnails.cjs.js");require("../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../components/Watchers/Watchers.cjs.js");require("../components/Menu/Menu.styled.cjs.js");require("../components/Menu/MenuItem.cjs.js");require("../components/ReviewablesSelector/ReviewablesSelector.styled.cjs.js");const d=e.createContext(void 0),N=window.location.protocol.replace("http","ws"),V=`${N}//${window.location.host}/ws`,W=({children:q,userName:k,projectName:f,dispatch:v})=>{const[S,o]=e.useState(!1),[t,m]=e.useState([]),[R]=A.useLazyGetSiteInfoQuery(),y={shouldReconnect:()=>!k||!localStorage.getItem("accessToken")?!1:(R({full:!1}).unwrap(),!0)},{sendMessage:T,readyState:n,getWebSocket:c}=C.default(V,y),g=()=>{T(JSON.stringify({topic:"auth",token:localStorage.getItem("accessToken"),subscribe:t,project:f}))};e.useEffect(()=>{console.debug("Topics changed",t),g()},[t,f]);const E=x.debounce(r=>{x.isEqual(t,r)||(console.log("WS: Subscriptions changed"),m(r))},200);l.setOnSubscriptionsChange(r=>E(r));const[p,a]=e.useState(!1),[O,j]=e.useState(!1);e.useEffect(()=>(p&&(O||(w.toast.warning(b.jsxRuntimeExports.jsx(J.RefreshToast,{}),{autoClose:!1,closeButton:!1}),j(!0))),()=>{a(!1)}),[p,a]);const u=e.useRef({callCount:0,lastCall:Date.now()}),I=e.useCallback(r=>{if(u.current.callCount>1e3)return a(!0),console.log("Overload: Over 1000 messages per second. Ignoring subsequent messages.");let i;try{i=JSON.parse(r.data)}catch(M){console.error("Failed to parse websocket message:",M,r.data);return}const{topic:s,sender:P,summary:D}=i||{};if(s==="heartbeat"||(s==="server.restart_requested"&&o(!0),P===window.senderId))return;const h=Date.now();h-u.current.lastCall<1e3?u.current.callCount+=1:u.current.callCount=0,u.current.lastCall=h,s==="shout"&&i?.summary?.text&&w.toast.info(D.text),console.log("Event RX",i),l.publish(s,i)},[o]);return e.useEffect(()=>{n===C.distExports.ReadyState.OPEN&&(S&&(o(!1),v($.api.util.resetApiState())),c().onmessage=I,g(),l.publish("client.connected",{topic:"client.connected"}))},[n,c]),b.jsxRuntimeExports.jsx(d.Provider,{value:{getWebSocket:c,readyState:n,serverRestartingVisible:S},children:q})},z=()=>{const q=e.useContext(d);if(q===void 0)throw new Error("useSocketContext must be used within a SocketProvider");return q};exports.SocketContext=d;exports.SocketProvider=W;exports.useSocketContext=z;
|
|
2
2
|
//# sourceMappingURL=WebsocketContext.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebsocketContext.cjs.js","sources":["../../../../src/context/WebsocketContext.tsx"],"sourcesContent":["import { useEffect, useState, createContext, useCallback, useRef, useContext } from 'react'\nimport { toast } from 'react-toastify'\nimport { PubSub } from '@shared/util'\nimport useWebSocket, { ReadyState } from 'react-use-websocket'\nimport { debounce, isEqual } from 'lodash'\nimport api from '@shared/api'\nimport { RefreshToast } from '@shared/components'\nimport { useLazyGetSiteInfoQuery } from '@shared/api'\nimport { WebSocketLike } from 'react-use-websocket/dist/lib/types'\n\nexport type WebsocketContextType = {\n getWebSocket: () => WebSocketLike | null\n readyState: ReadyState\n serverRestartingVisible: boolean\n}\n\nexport const SocketContext = createContext<WebsocketContextType | undefined>(undefined)\n\nconst proto = window.location.protocol.replace('http', 'ws')\nconst wsAddress = `${proto}//${window.location.host}/ws`\n\n// define global window senderId type\ndeclare global {\n interface Window {\n senderId: string\n }\n}\n\nexport type SocketProviderProps = {\n children: React.ReactNode\n userName?: string\n projectName?: string\n dispatch: any\n}\n\nexport const SocketProvider = ({\n children,\n userName,\n projectName,\n dispatch,\n}: SocketProviderProps) => {\n // get user logged in\n const [serverRestartingVisible, setServerRestartingVisible] = useState(false)\n const [topics, setTopics] = useState([])\n const [getInfo] = useLazyGetSiteInfoQuery()\n\n const wsOpts = {\n shouldReconnect: () => {\n if (!userName) return false\n // check if there is a token\n const accessToken = localStorage.getItem('accessToken')\n if (!accessToken) return false\n\n // test if the token is valid\n // if it's not then this will automatically log out the user\n getInfo({ full: false }).unwrap()\n\n return true\n },\n }\n\n const { sendMessage, readyState, getWebSocket } = useWebSocket(wsAddress, wsOpts)\n\n const subscribe = () => {\n sendMessage(\n JSON.stringify({\n topic: 'auth',\n token: localStorage.getItem('accessToken'),\n subscribe: topics,\n project: projectName,\n }),\n )\n }\n\n useEffect(() => {\n console.debug('Topics changed', topics)\n subscribe()\n }, [topics, projectName])\n\n const updateTopicsDebounce = debounce((newTopics) => {\n if (isEqual(topics, newTopics)) return\n console.log('WS: Subscriptions changed')\n setTopics(newTopics)\n }, 200)\n\n PubSub.setOnSubscriptionsChange((newTopics: string[]) => updateTopicsDebounce(newTopics))\n\n const [overloaded, setOverloaded] = useState(false)\n const [toastShown, setToastShown] = useState(false)\n\n // when overloaded is true, activate toast\n useEffect(() => {\n if (overloaded)\n if (!toastShown) {\n toast.warning(<RefreshToast />, {\n autoClose: false,\n closeButton: false,\n })\n setToastShown(true)\n }\n\n return () => {\n setOverloaded(false)\n }\n }, [overloaded, setOverloaded])\n\n // onMessage is a function that is called when a message comes in from the websocket\n // it is a closure that keeps track of the number of calls and the last call time\n // Using useRef to persist the closure state across renders\n const messageStatsRef = useRef({ callCount: 0, lastCall: Date.now() })\n\n const onMessage = useCallback(\n (message: any) => {\n // If the function is called more than 100 times per second, return early.\n const threshold = 1000\n if (messageStatsRef.current.callCount > threshold) {\n setOverloaded(true)\n return console.log(\n `Overload: Over ${threshold} messages per second. Ignoring subsequent messages.`,\n )\n }\n\n let data\n try {\n data = JSON.parse(message.data)\n } catch (error) {\n console.error('Failed to parse websocket message:', error, message.data)\n return\n }\n\n const { topic, sender, summary } = data || {}\n if (topic === 'heartbeat') return\n\n if (topic === 'server.restart_requested') setServerRestartingVisible(true)\n\n if (sender === window.senderId) {\n return // my own message. ignore\n }\n\n const now = Date.now()\n if (now - messageStatsRef.current.lastCall < 1000) {\n messageStatsRef.current.callCount += 1\n } else {\n messageStatsRef.current.callCount = 0\n }\n\n messageStatsRef.current.lastCall = now\n\n if (topic === 'shout' && data?.summary?.text) toast.info(summary.text)\n\n console.log('Event RX', data)\n PubSub.publish(topic, data)\n },\n [setServerRestartingVisible],\n )\n\n useEffect(() => {\n if (readyState === ReadyState.OPEN) {\n if (serverRestartingVisible) {\n setServerRestartingVisible(false)\n // clear ayonApi\n dispatch(api.util.resetApiState())\n }\n // @ts-ignore\n getWebSocket().onmessage = onMessage\n subscribe()\n // Dispatch a fake event to the frontend components\n // in case they depend on the event stream and may\n // miss some messages - this should force reloading\n // events using graphql\n PubSub.publish('client.connected', {\n topic: 'client.connected',\n })\n }\n }, [readyState, getWebSocket])\n\n return (\n <SocketContext.Provider\n value={{\n getWebSocket,\n readyState,\n serverRestartingVisible,\n }}\n >\n {children}\n </SocketContext.Provider>\n )\n}\n\nexport const useSocketContext = () => {\n const context = useContext(SocketContext)\n if (context === undefined) {\n throw new Error('useSocketContext must be used within a SocketProvider')\n }\n return context\n}\n"],"names":["SocketContext","createContext","proto","wsAddress","SocketProvider","children","userName","projectName","dispatch","serverRestartingVisible","setServerRestartingVisible","useState","topics","setTopics","getInfo","useLazyGetSiteInfoQuery","wsOpts","sendMessage","readyState","getWebSocket","useWebSocket","subscribe","useEffect","updateTopicsDebounce","debounce","newTopics","isEqual","PubSub","overloaded","setOverloaded","toastShown","setToastShown","toast","jsx","RefreshToast","messageStatsRef","useRef","onMessage","useCallback","message","data","error","topic","sender","summary","now","ReadyState","api","useSocketContext","context","useContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"WebsocketContext.cjs.js","sources":["../../../../src/context/WebsocketContext.tsx"],"sourcesContent":["import { useEffect, useState, createContext, useCallback, useRef, useContext } from 'react'\nimport { toast } from 'react-toastify'\nimport { PubSub } from '@shared/util'\nimport useWebSocket, { ReadyState } from 'react-use-websocket'\nimport { debounce, isEqual } from 'lodash'\nimport api from '@shared/api'\nimport { RefreshToast } from '@shared/components'\nimport { useLazyGetSiteInfoQuery } from '@shared/api'\nimport { WebSocketLike } from 'react-use-websocket/dist/lib/types'\n\nexport type WebsocketContextType = {\n getWebSocket: () => WebSocketLike | null\n readyState: ReadyState\n serverRestartingVisible: boolean\n}\n\nexport const SocketContext = createContext<WebsocketContextType | undefined>(undefined)\n\nconst proto = window.location.protocol.replace('http', 'ws')\nconst wsAddress = `${proto}//${window.location.host}/ws`\n\n// define global window senderId type\ndeclare global {\n interface Window {\n senderId: string\n }\n}\n\nexport type SocketProviderProps = {\n children: React.ReactNode\n userName?: string\n projectName?: string\n dispatch: any\n}\n\nexport const SocketProvider = ({\n children,\n userName,\n projectName,\n dispatch,\n}: SocketProviderProps) => {\n // get user logged in\n const [serverRestartingVisible, setServerRestartingVisible] = useState(false)\n const [topics, setTopics] = useState([])\n const [getInfo] = useLazyGetSiteInfoQuery()\n\n const wsOpts = {\n shouldReconnect: () => {\n if (!userName) return false\n // check if there is a token\n const accessToken = localStorage.getItem('accessToken')\n if (!accessToken) return false\n\n // test if the token is valid\n // if it's not then this will automatically log out the user\n getInfo({ full: false }).unwrap()\n\n return true\n },\n }\n\n const { sendMessage, readyState, getWebSocket } = useWebSocket(wsAddress, wsOpts)\n\n const subscribe = () => {\n sendMessage(\n JSON.stringify({\n topic: 'auth',\n token: localStorage.getItem('accessToken'),\n subscribe: topics,\n project: projectName,\n }),\n )\n }\n\n useEffect(() => {\n console.debug('Topics changed', topics)\n subscribe()\n }, [topics, projectName])\n\n const updateTopicsDebounce = debounce((newTopics) => {\n if (isEqual(topics, newTopics)) return\n console.log('WS: Subscriptions changed')\n setTopics(newTopics)\n }, 200)\n\n PubSub.setOnSubscriptionsChange((newTopics: string[]) => updateTopicsDebounce(newTopics))\n\n const [overloaded, setOverloaded] = useState(false)\n const [toastShown, setToastShown] = useState(false)\n\n // when overloaded is true, activate toast\n useEffect(() => {\n if (overloaded)\n if (!toastShown) {\n toast.warning(<RefreshToast />, {\n autoClose: false,\n closeButton: false,\n })\n setToastShown(true)\n }\n\n return () => {\n setOverloaded(false)\n }\n }, [overloaded, setOverloaded])\n\n // onMessage is a function that is called when a message comes in from the websocket\n // it is a closure that keeps track of the number of calls and the last call time\n // Using useRef to persist the closure state across renders\n const messageStatsRef = useRef({ callCount: 0, lastCall: Date.now() })\n\n const onMessage = useCallback(\n (message: any) => {\n // If the function is called more than 100 times per second, return early.\n const threshold = 1000\n if (messageStatsRef.current.callCount > threshold) {\n setOverloaded(true)\n return console.log(\n `Overload: Over ${threshold} messages per second. Ignoring subsequent messages.`,\n )\n }\n\n let data\n try {\n data = JSON.parse(message.data)\n } catch (error) {\n console.error('Failed to parse websocket message:', error, message.data)\n return\n }\n\n const { topic, sender, summary } = data || {}\n if (topic === 'heartbeat') return\n\n if (topic === 'server.restart_requested') setServerRestartingVisible(true)\n\n if (sender === window.senderId) {\n return // my own message. ignore\n }\n\n const now = Date.now()\n if (now - messageStatsRef.current.lastCall < 1000) {\n messageStatsRef.current.callCount += 1\n } else {\n messageStatsRef.current.callCount = 0\n }\n\n messageStatsRef.current.lastCall = now\n\n if (topic === 'shout' && data?.summary?.text) toast.info(summary.text)\n\n console.log('Event RX', data)\n PubSub.publish(topic, data)\n },\n [setServerRestartingVisible],\n )\n\n useEffect(() => {\n if (readyState === ReadyState.OPEN) {\n if (serverRestartingVisible) {\n setServerRestartingVisible(false)\n // clear ayonApi\n dispatch(api.util.resetApiState())\n }\n // @ts-ignore\n getWebSocket().onmessage = onMessage\n subscribe()\n // Dispatch a fake event to the frontend components\n // in case they depend on the event stream and may\n // miss some messages - this should force reloading\n // events using graphql\n PubSub.publish('client.connected', {\n topic: 'client.connected',\n })\n }\n }, [readyState, getWebSocket])\n\n return (\n <SocketContext.Provider\n value={{\n getWebSocket,\n readyState,\n serverRestartingVisible,\n }}\n >\n {children}\n </SocketContext.Provider>\n )\n}\n\nexport const useSocketContext = () => {\n const context = useContext(SocketContext)\n if (context === undefined) {\n throw new Error('useSocketContext must be used within a SocketProvider')\n }\n return context\n}\n"],"names":["SocketContext","createContext","proto","wsAddress","SocketProvider","children","userName","projectName","dispatch","serverRestartingVisible","setServerRestartingVisible","useState","topics","setTopics","getInfo","useLazyGetSiteInfoQuery","wsOpts","sendMessage","readyState","getWebSocket","useWebSocket","subscribe","useEffect","updateTopicsDebounce","debounce","newTopics","isEqual","PubSub","overloaded","setOverloaded","toastShown","setToastShown","toast","jsx","RefreshToast","messageStatsRef","useRef","onMessage","useCallback","message","data","error","topic","sender","summary","now","ReadyState","api","useSocketContext","context","useContext"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { toast as w } from "react-toastify";
|
|
|
4
4
|
import { debounce as M, isEqual as N } from "lodash";
|
|
5
5
|
import "uuid";
|
|
6
6
|
import u from "../util/pubsub.es.js";
|
|
7
|
-
import V, { d as z } from "../../../_virtual/index.
|
|
7
|
+
import V, { d as z } from "../../../_virtual/index.es2.js";
|
|
8
8
|
import { api as B } from "../api/base/client.es.js";
|
|
9
9
|
import "../api/generated/graphql.es.js";
|
|
10
10
|
import "../api/generated/graphqlLinks.es.js";
|
|
@@ -110,6 +110,10 @@ import "../components/Chips/Chips.es.js";
|
|
|
110
110
|
import "date-fns";
|
|
111
111
|
import "../components/DateRangePicker/DateRangePicker.styled.es.js";
|
|
112
112
|
import "../components/LinksManager/CellEditingDialog.es.js";
|
|
113
|
+
import "../../../_virtual/index.es.js";
|
|
114
|
+
import "../../../node_modules/refractor/lib/common.es.js";
|
|
115
|
+
import "../../../node_modules/refractor/lib/all.es.js";
|
|
116
|
+
/* empty css */
|
|
113
117
|
import "../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js";
|
|
114
118
|
import "../components/DetailsPanelDetails/DetailsPanelDetails.es.js";
|
|
115
119
|
import "../components/DetailsPanelDetails/DetailsSection.es.js";
|
|
@@ -262,7 +266,7 @@ import "../components/Watchers/Watchers.es.js";
|
|
|
262
266
|
import "../components/Menu/Menu.styled.es.js";
|
|
263
267
|
import "../components/Menu/MenuItem.es.js";
|
|
264
268
|
import "../components/ReviewablesSelector/ReviewablesSelector.styled.es.js";
|
|
265
|
-
const C = W(void 0), L = window.location.protocol.replace("http", "ws"), Q = `${L}//${window.location.host}/ws`,
|
|
269
|
+
const C = W(void 0), L = window.location.protocol.replace("http", "ws"), Q = `${L}//${window.location.host}/ws`, Xp = ({
|
|
266
270
|
children: i,
|
|
267
271
|
userName: k,
|
|
268
272
|
projectName: f,
|
|
@@ -330,7 +334,7 @@ const C = W(void 0), L = window.location.protocol.replace("http", "ws"), Q = `${
|
|
|
330
334
|
children: i
|
|
331
335
|
}
|
|
332
336
|
);
|
|
333
|
-
},
|
|
337
|
+
}, _p = () => {
|
|
334
338
|
const i = J(C);
|
|
335
339
|
if (i === void 0)
|
|
336
340
|
throw new Error("useSocketContext must be used within a SocketProvider");
|
|
@@ -338,7 +342,7 @@ const C = W(void 0), L = window.location.protocol.replace("http", "ws"), Q = `${
|
|
|
338
342
|
};
|
|
339
343
|
export {
|
|
340
344
|
C as SocketContext,
|
|
341
|
-
|
|
342
|
-
|
|
345
|
+
Xp as SocketProvider,
|
|
346
|
+
_p as useSocketContext
|
|
343
347
|
};
|
|
344
348
|
//# sourceMappingURL=WebsocketContext.es.js.map
|