@ynput/ayon-frontend-shared 0.3.49 → 0.3.51

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.
Files changed (108) hide show
  1. package/dist/Slicer.cjs.js +1 -1
  2. package/dist/Slicer.es.js +13 -11
  3. package/dist/Slicer.es.js.map +1 -1
  4. package/dist/_virtual/index.cjs10.js +1 -1
  5. package/dist/_virtual/index.cjs11.js +1 -1
  6. package/dist/_virtual/index.cjs12.js +1 -1
  7. package/dist/_virtual/index.cjs5.js +1 -1
  8. package/dist/_virtual/index.cjs6.js +1 -1
  9. package/dist/_virtual/index.es10.js +3 -3
  10. package/dist/_virtual/index.es11.js +5 -5
  11. package/dist/_virtual/index.es12.js +5 -5
  12. package/dist/_virtual/index.es5.js +5 -2
  13. package/dist/_virtual/index.es5.js.map +1 -1
  14. package/dist/_virtual/index.es6.js +2 -5
  15. package/dist/_virtual/index.es6.js.map +1 -1
  16. package/dist/components.cjs.js +1 -1
  17. package/dist/components.es.js +112 -109
  18. package/dist/components.es.js.map +1 -1
  19. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  20. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  21. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  22. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  23. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  24. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  25. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  26. package/dist/node_modules/remove-accents/index.es.js +1 -1
  27. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  28. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  29. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  30. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  31. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  32. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  33. package/dist/shared/src/api/generated/graphql.cjs.js +1 -1
  34. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  35. package/dist/shared/src/api/generated/graphql.es.js +1 -1
  36. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  37. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js +1 -1
  38. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js.map +1 -1
  39. package/dist/shared/src/api/queries/columnStats/columnStats.es.js +56 -44
  40. package/dist/shared/src/api/queries/columnStats/columnStats.es.js.map +1 -1
  41. package/dist/shared/src/api/queries/columnStats/groupCounts.cjs.js +1 -1
  42. package/dist/shared/src/api/queries/columnStats/groupCounts.cjs.js.map +1 -1
  43. package/dist/shared/src/api/queries/columnStats/groupCounts.es.js +10 -8
  44. package/dist/shared/src/api/queries/columnStats/groupCounts.es.js.map +1 -1
  45. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  46. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  47. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  48. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  49. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +220 -216
  50. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  51. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.cjs.js +1 -1
  52. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.cjs.js.map +1 -1
  53. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.es.js +1 -1
  54. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.es.js.map +1 -1
  55. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +2 -2
  56. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -1
  57. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +138 -127
  58. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -1
  59. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  60. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  61. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  62. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  63. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +56 -55
  64. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  65. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  66. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  67. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +249 -254
  68. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  69. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupCounts.cjs.js.map +1 -1
  70. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupCounts.es.js.map +1 -1
  71. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  72. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  73. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +41 -40
  74. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  75. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -2
  76. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -1
  77. package/dist/shared/src/containers/Slicer/components/Slicer.es.js +55 -47
  78. package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -1
  79. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js +2 -0
  80. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js.map +1 -0
  81. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js +319 -0
  82. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js.map +1 -0
  83. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  84. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  85. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +118 -104
  86. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  87. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  88. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  89. package/dist/shared/src/context/DetailsPanelContext.es.js +57 -55
  90. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  91. package/dist/shared/src/util/confirmDelete.cjs.js +1 -1
  92. package/dist/shared/src/util/confirmDelete.cjs.js.map +1 -1
  93. package/dist/shared/src/util/confirmDelete.es.js +28 -24
  94. package/dist/shared/src/util/confirmDelete.es.js.map +1 -1
  95. package/dist/types/components/index.d.ts +1 -0
  96. package/dist/types/containers/Feed/components/FeedSearchFilter.d.ts +2 -2
  97. package/dist/types/containers/ProjectTreeTable/hooks/useGroupCounts.d.ts +2 -3
  98. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +8 -0
  99. package/dist/types/containers/ProjectTreeTable/types/table.d.ts +0 -1
  100. package/dist/types/containers/SimpleTable/SimpleTable.types.d.ts +1 -0
  101. package/dist/types/containers/Slicer/components/Slicer.d.ts +2 -0
  102. package/dist/types/containers/Slicer/hooks/index.d.ts +1 -0
  103. package/dist/types/containers/Slicer/hooks/useSlicerCounts.d.ts +17 -0
  104. package/dist/types/containers/Slicer/hooks/useTableDataBySlice.d.ts +5 -1
  105. package/dist/types/util/confirmDelete.d.ts +3 -1
  106. package/dist/util.cjs.js +1 -1
  107. package/dist/util.es.js +77 -76
  108. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../../../_virtual/jsx-runtime.cjs.js"),Ne=require("@ynput/ayon-react-components"),u=require("react"),ke=require("./hooks/useDetailsPanelURLSync.cjs.js"),k=require("./DetailsPanel.styled.cjs.js");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/dataImport.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/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/bundles/getBundles.cjs.js");require("../../api/queries/bundles/updateBundles.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/columnStats/metricTargets.cjs.js");require("../../api/queries/columnStats/groupCounts.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");const ve=require("../../api/queries/entities/getEntityPanel.cjs.js"),Ie=require("../../api/queries/entities/transformDetailsPanelData.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/listItemsColumnStats.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/folders/getFolderDeleteInfo.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/products/getFolderProducts.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");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/tasks/getTasks.cjs.js");require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/teams/getTeams.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("../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../components/AccessUser/AccessUser.cjs.js");require("clsx");require("../../components/AttributeEditor/AttributeEditor.cjs.js");require("../../components/AttributeEditor/attributeTypeMap.cjs.js");require("../../components/Badge/Badge.cjs.js");require("../../components/Chips/Chips.cjs.js");require("react-dom");require("date-fns");require("../../components/DateRangePicker/DateRangePicker.styled.cjs.js");require("../../components/LinksManager/CellEditingDialog.cjs.js");require("../../components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js");require("react-toastify");require("../../../../_virtual/index.cjs.js");require("../../../../node_modules/refractor/lib/common.cjs.js");require("../../../../node_modules/refractor/lib/all.cjs.js");;/* empty css */require("lodash");require("uuid");const we=require("../../util/extractEntityHierarchyFromParents.cjs.js");require("../../util/pubsub.cjs.js");require("../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");const Ce=require("../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("react-quill-ayon");require("../../components/DetailsPanelDetails/BorderedSection.cjs.js");require("../../components/QuillListStyles/QuillListStyles.cjs.js");require("../../components/DetailsPanelDetails/DescriptionSection.styles.cjs.js");require("react-markdown");require("remark-gfm");require("rehype-raw");require("../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js");require("../Feed/components/CommentInput/modules/index.cjs.js");require("../../context/RemoteModulesContext.cjs.js");require("../../../node_modules/@module-federation/runtime/dist/index.cjs.js");require("../../../../_virtual/semver.cjs.js");const v=require("../../context/DetailsPanelContext.cjs.js");require("../../context/PowerpackContextInstance.cjs.js");require("../../context/SubtasksModulesContextInstance.cjs.js");const Se=require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");const Fe=require("../../context/pip/PiPProvider.cjs.js");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");const Le=require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContextInstance.cjs.js");require("../../context/EntityUpdatesContextInstance.cjs.js");require("../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../Feed/context/FeedContext.cjs.js");require("../Feed/components/Tooltips/UserTooltipItem.cjs.js");require("../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../Feed/components/Tooltips/TeamTooltip/TeamTooltip.styled.cjs.js");require("../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("remark-emoji");require("remark-directive");require("remark-directive-rehype");require("../Feed/components/CommentInput/CommentInput.cjs.js");require("../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../Feed/components/ActivityDate.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../Feed/components/ActivityStatusChange/ActivityStatusSecondary.cjs.js");require("../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../Feed/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js");require("../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../Feed/Feed.styled.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../Feed/components/FeedSearchFilter.cjs.js");require("@tanstack/react-virtual");require("@tanstack/react-table");require("../ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../ProjectTreeTable/widgets/DateWidget.cjs.js");require("../ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../ProjectTreeTable/widgets/EnumCellValue.cjs.js");require("../ProjectTreeTable/widgets/TextWidget.cjs.js");require("../ProjectTreeTable/widgets/MarkdownWidget.cjs.js");require("../ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../ProjectTreeTable/widgets/CellWidget.cjs.js");require("../ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../ProjectTreeTable/widgets/LinksWidget.cjs.js");require("../../components/LinksManager/LinksManager.styled.cjs.js");require("short-uuid");require("../../components/SearchFilter/filterDates.cjs.js");require("../ProjectTreeTable/context/CellEditingContext.cjs.js");require("../ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../ProjectTreeTable/context/ClipboardContext.cjs.js");require("../ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../ProjectTreeTable/context/ProjectDataContextInstance.cjs.js");require("../ProjectTreeTable/context/ProjectTableContextInstance.cjs.js");require("../ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../ProjectTreeTable/components/SelectionCell.cjs.js");require("../ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../ProjectTreeTable/components/HeaderActionButton.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../ProjectTreeTable/components/TableFooterRow.cjs.js");require("../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../Slicer/components/Slicer.cjs.js");require("../Slicer/context/SlicerContextInstance.cjs.js");require("../Slicer/components/SlicerDropdownFallback.cjs.js");require("../Slicer/hooks/useTableDataBySlice.cjs.js");require("react-redux");const Ue=require("./components/DetailsPanelHeader/DetailsPanelHeader.cjs.js"),Me=require("./components/DetailsPanelFiles/DetailsPanelFiles.cjs.js"),We=require("./components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js"),He=require("./hooks/useGetEntityPath.cjs.js"),Oe=require("./helpers/getAllProjectsStatuses.cjs.js"),Ae=require("./containers/FeedWrapper.cjs.js"),Be=require("./containers/FeedContextWrapper.cjs.js"),Ge=require("./helpers/mergeProjectInfo.cjs.js"),Ve=require("./helpers/buildEntityTypeIcons.cjs.js"),Qe=require("./containers/DetailsPanelSubtasks.cjs.js");require("./components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("./components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("./components/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../Actions/Actions.styled.cjs.js");require("../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../Actions/ActionIcon.cjs.js");require("../Views/ViewsMenu/ViewsMenu.cjs.js");require("../Views/context/ViewsContextInstance.cjs.js");require("../Views/Views.styled.cjs.js");require("../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../ListTable/ListTableRow.cjs.js");require("../ListTable/ListTable.styled.cjs.js");const _e=require("../../context/UriContext.cjs.js");require("../../context/DeleteEntitiesContext.cjs.js");require("custom-protocol-check");require("../ProjectTreeTable/components/GroupSettingsFallback.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/InfoMessage/InfoMessage.cjs.js");require("../../components/EnumEditor/EnumEditor.styled.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");const Ke=require("../../components/EntityPath/EntityPath.cjs.js");require("../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../components/Feedback/FeedbackContextInstance.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/FreeTrialLink.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");require("../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../components/SearchFilter/CustomDateRangeDialog.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/StyledLink/StyledLink.cjs.js");require("../../components/SyncButton/SyncButton.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/VersionUploadContextInstance.cjs.js");const Xe=require("../../components/Watchers/Watchers.cjs.js");require("../../components/Menu/Menu.styled.cjs.js");require("../../components/Menu/MenuItem.cjs.js");require("../../components/ReviewablesSelector/ReviewablesSelector.cjs.js");require("../../components/ColumnHeaderMenuUI.cjs.js");const $=["product","representation"],ze=({entityType:P,entitySubTypes:j=[],entitiesData:g=[],entities:d=[],tagsOptions:ee=[],disabledStatuses:re,projectUsers:I,disabledProjectUsers:ie,activeProjectUsers:w,projectsInfo:E={},projectNames:te=[],isSlideOut:m=!1,style:Ye={},scope:p,isCompact:ue=!1,onClose:b,onWatchersUpdate:C,onOpenViewer:S,onEntityFocus:se,onOpen:F,onUriOpen:L,annotations:U,removeAnnotation:M,exportAnnotationComposite:W,entityListId:H,guestCategories:ne={},entityListsContext:qe})=>{const{closeSlideOut:O,openPip:ae,user:A,isGuest:oe,entities:s,setEntities:T,slideOut:B,useSearchParams:ce,SubtasksManager:G,useNavigate:le}=v.useDetailsPanelContext(),{currentTab:c,setTab:x,isFeed:de}=v.useScopedDetailsPanel(p),[Ze,pe]=ce(),V=u.useRef(!1),r=s?.entityType??P,Q=s?.entities??d,ye=s?.entitySubTypes??j,fe=s?.entities?[]:g,y=s?.entities?s.entities.map(e=>e.projectName):te;u.useEffect(()=>{F&&!V.current&&(V.current=!0,F())},[]),u.useEffect(()=>{$.includes(r)&&c!=="details"&&x("details")},[r,c,x]),u.useEffect(()=>{d.length&&s&&T(null)},[d,s,T]);const R=u.useMemo(()=>Ge(E,y),[E,y]),me=u.useMemo(()=>Ve(R),[R]);u.useEffect(()=>{c==="files"&&r!=="version"&&x("feed"),c==="subtasks"&&r!=="task"&&x("feed")},[r,c,p]);let l=Q.length?Q.map(e=>({id:e.id,projectName:e.projectName})):fe.map(e=>({id:e.id,projectName:e.projectName}));l=l.filter(e=>e.id);const{data:n=[],isFetching:f,isError:xe,originalArgs:je}=ve.useGetEntitiesDetailsPanelQuery({entityType:r,entities:l},{skip:!l.length||!Ie.detailsPanelEntityTypes.includes(r)});u.useEffect(()=>{m||O()},[je,m]),u.useEffect(()=>{if(!f&&(s?.source==="uri"||s?.source==="url")&&s?.entities?.length&&L){const e=n.find(i=>i.id===s.entities[0].id);if(!e)return;L(e,s.source)}},[n,f]);const _=Oe(E),a=y[0],K=E[a]||{},q=n[0]||{},h=n[n.length-1],D=y[y.length-1],[X,Ee]=He({entity:q,entityType:r,projectName:a,isLoading:f}),{setEntityUri:he,setUri:Pe}=_e.useURIContext();u.useEffect(()=>{if(!h?.parents||!D)return;const{folderPath:e,taskName:i,versionName:o,productName:Z}=we.extractEntityHierarchyFromParents(h.parents,r,h.name);return he({projectName:D,folderPath:e,taskName:i,productName:Z,versionName:o}),()=>{Pe("")}},[n,y,r]),ke({entityData:h,project:D,activeEntityType:r,entitiesToQuery:l});const ge=()=>{pe(e=>{const i=new URLSearchParams(e);return i.delete("project"),i.delete("type"),i.delete("id"),i},{replace:!0})},N=()=>{b?.(),T(null),ge(),O()};u.useEffect(()=>{const e=i=>{if(i.key==="Escape"&&b){const o=i.target;if(["INPUT","TEXTAREA","SELECT"].includes(o.tagName)||o.isContentEditable||m===!1&&(o.closest("#viewer-dialog")||B))return;N()}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[N,m,B]);const{requestPipWindow:be}=Fe.usePiPWindow(),z=u.useRef(null),J=u.useRef(null),Te=n.length===1&&r!=="representation",Re=u.useMemo(()=>{const e=q?.label||q?.name||"",i=q?.parents||[],o=[a];switch(r){case"folder":case"task":case"product":o.push(i.at(-1),e);break;case"version":o.push(i.at(-2),i.at(-1),e);break;case"representation":o.push(i.at(-3),i.at(-2),i.at(-1),e);break;default:o.push(e)}return o.filter(Boolean).join(" - ")},[q,r,a]),De=()=>{ae({entityType:r,entities:l,scope:p}),be(500,500)},Y=()=>!(y.length>1||oe&&(!H||!Object.prototype.hasOwnProperty.call(ne,A.attrib?.email||"")));return t.jsxRuntimeExports.jsx(Se.ThumbnailUploadProvider,{thumbnailInputRef:z,versionsInputRef:J,canUploadVersion:Te,children:t.jsxRuntimeExports.jsxs(k.Panel,{className:"details-panel",children:[t.jsxRuntimeExports.jsxs(k.Toolbar,{children:[t.jsxRuntimeExports.jsx(Ke.EntityPath,{segments:X,versions:Ee,projectName:a,hideProjectName:m,isLoading:f||!X.length,entityType:r,scope:p,entityTypeIcons:me}),t.jsxRuntimeExports.jsxs(k.RightTools,{className:"right-tools",children:[t.jsxRuntimeExports.jsx(We.DetailsPanelMoreMenu,{entityType:r,entityId:q?.id,entityIds:l.map(e=>e.id).filter(Boolean),entityLabel:Re,projectName:a,selectedEntities:n.filter(e=>!!e?.id).map(e=>{const i=e.entityType||r;return{entityId:e.id,entityType:i,hasReviewables:!!e.hasReviewables,name:e.name,label:e.label,projectName:e.projectName||a,folderId:i==="task"?e.folder?.id:void 0}}),entityListsContext:qe,onOpenPip:De,onOpenViewer:S,productId:q?.product?.id,taskId:q?.task?.id,folderId:q?.folder?.id}),t.jsxRuntimeExports.jsx(Xe.Watchers,{entities:l,entityType:r,options:I||[],onWatchersUpdate:C&&C,userName:A.name}),b&&t.jsxRuntimeExports.jsx(Ne.Button,{icon:"close",variant:"text",onClick:N,"data-shortcut":"Escape"})]})]}),t.jsxRuntimeExports.jsx(Ue,{entityType:r,entitySubTypes:ye,entities:n,users:I,disabledAssignees:ie,disabledStatuses:re,tagsOptions:ee,isFetching:f,isCompact:ue,currentTab:c,onTabChange:x,projectInfo:R,onOpenViewer:e=>S?.(e),onEntityFocus:se,thumbnailInputRef:z,versionsInputRef:J}),t.jsxRuntimeExports.jsxs(Le.ProjectContextProvider,{projectName:a,children:[de&&!xe&&t.jsxRuntimeExports.jsx(Ae,{entityType:r,entities:n,activeUsers:w||[],projectInfo:K,projectName:a,disabled:!Y(),scope:p,statuses:_,readOnly:!1,entityListId:H,annotations:U,removeAnnotation:M,exportAnnotationComposite:W,isSlideOut:m}),c==="subtasks"&&r==="task"&&q?.id&&G&&t.jsxRuntimeExports.jsx(Qe,{projectName:a,taskId:q.id,subtasks:q.task?.subtasks||[],SubtasksManager:G,useNavigate:le,onNotFound:()=>x("feed")}),c==="files"&&t.jsxRuntimeExports.jsx(Me,{entities:n,scope:p,isLoadingVersion:f}),c==="details"&&t.jsxRuntimeExports.jsx(Be,{entityType:r,entities:n,activeUsers:w||[],projectInfo:K,projectName:a,disabled:!Y(),scope:p,statuses:_,readOnly:!1,annotations:U,removeAnnotation:M,exportAnnotationComposite:W,children:t.jsxRuntimeExports.jsx(Ce.DetailsPanelDetails,{entities:n,isLoading:f})})]})]})})},Je=({isOpen:P,entityType:j,...g})=>{const{entities:d}=v.useDetailsPanelContext();return!P&&!d||!j&&!d?null:t.jsxRuntimeExports.jsx(ze,{...g,entityType:j||d?.entityType})};exports.DetailsPanel=Je;exports.entitiesWithoutFeed=$;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../../../_virtual/jsx-runtime.cjs.js"),ke=require("@ynput/ayon-react-components"),u=require("react"),ve=require("./hooks/useDetailsPanelURLSync.cjs.js"),I=require("./DetailsPanel.styled.cjs.js");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/dataImport.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/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/bundles/getBundles.cjs.js");require("../../api/queries/bundles/updateBundles.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/columnStats/metricTargets.cjs.js");require("../../api/queries/columnStats/groupCounts.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");const Ie=require("../../api/queries/entities/getEntityPanel.cjs.js"),we=require("../../api/queries/entities/transformDetailsPanelData.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/listItemsColumnStats.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/folders/getFolderDeleteInfo.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/products/getFolderProducts.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");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/tasks/getTasks.cjs.js");require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/teams/getTeams.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("../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../components/AccessUser/AccessUser.cjs.js");require("clsx");require("../../components/AttributeEditor/AttributeEditor.cjs.js");require("../../components/AttributeEditor/attributeTypeMap.cjs.js");require("../../components/Badge/Badge.cjs.js");require("../../components/Chips/Chips.cjs.js");require("react-dom");require("date-fns");require("../../components/DateRangePicker/DateRangePicker.styled.cjs.js");require("../../components/LinksManager/CellEditingDialog.cjs.js");require("../../components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js");require("react-toastify");require("../../../../_virtual/index.cjs.js");require("../../../../node_modules/refractor/lib/common.cjs.js");require("../../../../node_modules/refractor/lib/all.cjs.js");;/* empty css */require("lodash");require("uuid");const Ce=require("../../util/extractEntityHierarchyFromParents.cjs.js");require("../../util/pubsub.cjs.js");require("../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");const Fe=require("../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("react-quill-ayon");require("../../components/DetailsPanelDetails/BorderedSection.cjs.js");require("../../components/QuillListStyles/QuillListStyles.cjs.js");require("../../components/DetailsPanelDetails/DescriptionSection.styles.cjs.js");require("react-markdown");require("remark-gfm");require("rehype-raw");require("../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js");require("../Feed/components/CommentInput/modules/index.cjs.js");require("../../context/RemoteModulesContext.cjs.js");require("../../../node_modules/@module-federation/runtime/dist/index.cjs.js");require("../../../../_virtual/semver.cjs.js");const w=require("../../context/DetailsPanelContext.cjs.js");require("../../context/PowerpackContextInstance.cjs.js");require("../../context/SubtasksModulesContextInstance.cjs.js");const Se=require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");const Le=require("../../context/pip/PiPProvider.cjs.js");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");const Me=require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContextInstance.cjs.js");require("../../context/EntityUpdatesContextInstance.cjs.js");require("../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../Feed/context/FeedContext.cjs.js");require("../Feed/components/Tooltips/UserTooltipItem.cjs.js");require("../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../Feed/components/Tooltips/TeamTooltip/TeamTooltip.styled.cjs.js");require("../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("remark-emoji");require("remark-directive");require("remark-directive-rehype");require("../Feed/components/CommentInput/CommentInput.cjs.js");require("../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../Feed/components/ActivityDate.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../Feed/components/ActivityStatusChange/ActivityStatusSecondary.cjs.js");require("../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../Feed/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js");require("../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../Feed/Feed.styled.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../Feed/components/FeedSearchFilter.cjs.js");require("@tanstack/react-virtual");require("@tanstack/react-table");require("../ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../ProjectTreeTable/widgets/DateWidget.cjs.js");require("../ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../ProjectTreeTable/widgets/EnumCellValue.cjs.js");require("../ProjectTreeTable/widgets/TextWidget.cjs.js");require("../ProjectTreeTable/widgets/MarkdownWidget.cjs.js");require("../ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../ProjectTreeTable/widgets/CellWidget.cjs.js");require("../ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../ProjectTreeTable/widgets/LinksWidget.cjs.js");require("../../components/LinksManager/LinksManager.styled.cjs.js");require("short-uuid");require("../../components/SearchFilter/filterDates.cjs.js");require("../ProjectTreeTable/context/CellEditingContext.cjs.js");require("../ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../ProjectTreeTable/context/ClipboardContext.cjs.js");require("../ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../ProjectTreeTable/context/ProjectDataContextInstance.cjs.js");require("../ProjectTreeTable/context/ProjectTableContextInstance.cjs.js");require("../ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../ProjectTreeTable/components/SelectionCell.cjs.js");require("../ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../ProjectTreeTable/components/HeaderActionButton.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../ProjectTreeTable/components/TableFooterRow.cjs.js");require("../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../Slicer/components/Slicer.cjs.js");require("../Slicer/context/SlicerContextInstance.cjs.js");require("../Slicer/components/SlicerDropdownFallback.cjs.js");require("../Slicer/hooks/useTableDataBySlice.cjs.js");require("react-redux");const Ue=require("./components/DetailsPanelHeader/DetailsPanelHeader.cjs.js"),We=require("./components/DetailsPanelFiles/DetailsPanelFiles.cjs.js"),He=require("./components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js"),Oe=require("./hooks/useGetEntityPath.cjs.js"),Ae=require("./helpers/getAllProjectsStatuses.cjs.js"),Be=require("./containers/FeedWrapper.cjs.js"),Ge=require("./containers/FeedContextWrapper.cjs.js"),Ve=require("./helpers/mergeProjectInfo.cjs.js"),Qe=require("./helpers/buildEntityTypeIcons.cjs.js"),_e=require("./containers/DetailsPanelSubtasks.cjs.js");require("./components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("./components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("./components/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../Actions/Actions.styled.cjs.js");require("../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../Actions/ActionIcon.cjs.js");require("../Views/ViewsMenu/ViewsMenu.cjs.js");require("../Views/context/ViewsContextInstance.cjs.js");require("../Views/Views.styled.cjs.js");require("../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../ListTable/ListTableRow.cjs.js");require("../ListTable/ListTable.styled.cjs.js");const Ke=require("../../context/UriContext.cjs.js");require("../../context/DeleteEntitiesContext.cjs.js");require("custom-protocol-check");require("../ProjectTreeTable/components/GroupSettingsFallback.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/InfoMessage/InfoMessage.cjs.js");require("../../components/EnumEditor/EnumEditor.styled.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");const Xe=require("../../components/EntityPath/EntityPath.cjs.js");require("../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../components/Feedback/FeedbackContextInstance.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/FreeTrialLink.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");require("../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../components/SearchFilter/CustomDateRangeDialog.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/StyledLink/StyledLink.cjs.js");require("../../components/SyncButton/SyncButton.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/VersionUploadContextInstance.cjs.js");const ze=require("../../components/Watchers/Watchers.cjs.js");require("../../components/Menu/Menu.styled.cjs.js");require("../../components/Menu/MenuItem.cjs.js");require("../../components/ReviewablesSelector/ReviewablesSelector.cjs.js");require("../../components/ColumnHeaderMenuUI.cjs.js");const re=["product","representation"],Je=({entityType:P,entitySubTypes:j=[],entitiesData:g=[],entities:d=[],tagsOptions:ie=[],disabledStatuses:te,projectUsers:C,disabledProjectUsers:ue,activeProjectUsers:F,projectsInfo:E={},projectNames:se=[],isSlideOut:m=!1,style:Ze={},scope:p,isCompact:ne=!1,onClose:b,onWatchersUpdate:S,onOpenViewer:L,onEntityFocus:qe,onOpen:M,onUriOpen:T,annotations:U,removeAnnotation:W,exportAnnotationComposite:H,entityListId:O,guestCategories:ae={},entityListsContext:oe})=>{const{closeSlideOut:A,openPip:ce,user:B,isGuest:le,entities:t,setEntities:R,slideOut:G,useSearchParams:de,SubtasksManager:V,useNavigate:pe}=w.useDetailsPanelContext(),{currentTab:c,setTab:x,isFeed:fe}=w.useScopedDetailsPanel(p),[$e,ye]=de(),Q=u.useRef(!1),r=t?.entityType??P,_=t?.entities??d,me=t?.entitySubTypes??j,xe=t?.entities?[]:g,f=t?.entities?t.entities.map(e=>e.projectName):se;u.useEffect(()=>{M&&!Q.current&&(Q.current=!0,M())},[]),u.useEffect(()=>{re.includes(r)&&c!=="details"&&x("details")},[r,c,x]),u.useEffect(()=>{d.length&&t&&R(null)},[d,t,R]);const D=u.useMemo(()=>Ve(E,f),[E,f]),je=u.useMemo(()=>Qe(D),[D]);u.useEffect(()=>{c==="files"&&r!=="version"&&x("feed"),c==="subtasks"&&r!=="task"&&x("feed")},[r,c,p]);let l=_.length?_.map(e=>({id:e.id,projectName:e.projectName})):xe.map(e=>({id:e.id,projectName:e.projectName}));l=l.filter(e=>e.id);const{data:n=[],isFetching:y,isError:Ee,originalArgs:he}=Ie.useGetEntitiesDetailsPanelQuery({entityType:r,entities:l},{skip:!l.length||!we.detailsPanelEntityTypes.includes(r)});u.useEffect(()=>{m||A()},[he,m]);const N=u.useRef(null);u.useEffect(()=>{t||(N.current=null)},[t]),u.useEffect(()=>{if(!y&&(t?.source==="uri"||t?.source==="url")&&t?.entities?.length&&T){const e=t.entities[0].id;if(N.current===e)return;const i=n.find(q=>q.id===e);if(!i)return;N.current=e,T(i,t.source)}},[n,y,t,T]);const K=Ae(E),o=f[0],X=E[o]||{},a=n[0]||{},h=n[n.length-1],k=f[f.length-1],[z,Pe]=Oe({entity:a,entityType:r,projectName:o,isLoading:y}),{setEntityUri:ge,setUri:J}=Ke.useURIContext();u.useEffect(()=>{if(!h?.parents||!k)return;const{folderPath:e,taskName:i,versionName:q,productName:ee}=Ce.extractEntityHierarchyFromParents(h.parents,r,h.name);return ge({projectName:k,folderPath:e,taskName:i,productName:ee,versionName:q}),()=>{J("")}},[n,f,r]),ve({entityData:h,project:k,activeEntityType:r,entitiesToQuery:l});const be=()=>{ye(e=>{const i=new URLSearchParams(e);return i.delete("project"),i.delete("type"),i.delete("id"),i},{replace:!0})},v=()=>{b?.(),R(null),J(""),be(),A()};u.useEffect(()=>{const e=i=>{if(i.key==="Escape"&&b){const q=i.target;if(["INPUT","TEXTAREA","SELECT"].includes(q.tagName)||q.isContentEditable||m===!1&&(q.closest("#viewer-dialog")||G))return;v()}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[v,m,G]);const{requestPipWindow:Te}=Le.usePiPWindow(),Y=u.useRef(null),Z=u.useRef(null),Re=n.length===1&&r!=="representation",De=u.useMemo(()=>{const e=a?.label||a?.name||"",i=a?.parents||[],q=[o];switch(r){case"folder":case"task":case"product":q.push(i.at(-1),e);break;case"version":q.push(i.at(-2),i.at(-1),e);break;case"representation":q.push(i.at(-3),i.at(-2),i.at(-1),e);break;default:q.push(e)}return q.filter(Boolean).join(" - ")},[a,r,o]),Ne=()=>{ce({entityType:r,entities:l,scope:p}),Te(500,500)},$=()=>!(f.length>1||le&&(!O||!Object.prototype.hasOwnProperty.call(ae,B.attrib?.email||"")));return s.jsxRuntimeExports.jsx(Se.ThumbnailUploadProvider,{thumbnailInputRef:Y,versionsInputRef:Z,canUploadVersion:Re,children:s.jsxRuntimeExports.jsxs(I.Panel,{className:"details-panel",children:[s.jsxRuntimeExports.jsxs(I.Toolbar,{children:[s.jsxRuntimeExports.jsx(Xe.EntityPath,{segments:z,versions:Pe,projectName:o,hideProjectName:m,isLoading:y||!z.length,entityType:r,scope:p,entityTypeIcons:je}),s.jsxRuntimeExports.jsxs(I.RightTools,{className:"right-tools",children:[s.jsxRuntimeExports.jsx(He.DetailsPanelMoreMenu,{entityType:r,entityId:a?.id,entityIds:l.map(e=>e.id).filter(Boolean),entityLabel:De,projectName:o,selectedEntities:n.filter(e=>!!e?.id).map(e=>{const i=e.entityType||r;return{entityId:e.id,entityType:i,hasReviewables:!!e.hasReviewables,name:e.name,label:e.label,projectName:e.projectName||o,folderId:i==="task"?e.folder?.id:void 0}}),entityListsContext:oe,onOpenPip:Ne,onOpenViewer:L,productId:a?.product?.id,taskId:a?.task?.id,folderId:a?.folder?.id}),s.jsxRuntimeExports.jsx(ze.Watchers,{entities:l,entityType:r,options:C||[],onWatchersUpdate:S&&S,userName:B.name}),b&&s.jsxRuntimeExports.jsx(ke.Button,{icon:"close",variant:"text",onClick:v,"data-shortcut":"Escape"})]})]}),s.jsxRuntimeExports.jsx(Ue,{entityType:r,entitySubTypes:me,entities:n,users:C,disabledAssignees:ue,disabledStatuses:te,tagsOptions:ie,isFetching:y,isCompact:ne,currentTab:c,onTabChange:x,projectInfo:D,onOpenViewer:e=>L?.(e),onEntityFocus:qe,thumbnailInputRef:Y,versionsInputRef:Z}),s.jsxRuntimeExports.jsxs(Me.ProjectContextProvider,{projectName:o,children:[fe&&!Ee&&s.jsxRuntimeExports.jsx(Be,{entityType:r,entities:n,activeUsers:F||[],projectInfo:X,projectName:o,disabled:!$(),scope:p,statuses:K,readOnly:!1,entityListId:O,annotations:U,removeAnnotation:W,exportAnnotationComposite:H,isSlideOut:m}),c==="subtasks"&&r==="task"&&a?.id&&V&&s.jsxRuntimeExports.jsx(_e,{projectName:o,taskId:a.id,subtasks:a.task?.subtasks||[],SubtasksManager:V,useNavigate:pe,onNotFound:()=>x("feed")}),c==="files"&&s.jsxRuntimeExports.jsx(We,{entities:n,scope:p,isLoadingVersion:y}),c==="details"&&s.jsxRuntimeExports.jsx(Ge,{entityType:r,entities:n,activeUsers:F||[],projectInfo:X,projectName:o,disabled:!$(),scope:p,statuses:K,readOnly:!1,annotations:U,removeAnnotation:W,exportAnnotationComposite:H,children:s.jsxRuntimeExports.jsx(Fe.DetailsPanelDetails,{entities:n,isLoading:y})})]})]})})},Ye=({isOpen:P,entityType:j,...g})=>{const{entities:d}=w.useDetailsPanelContext();return!P&&!d||!j&&!d?null:s.jsxRuntimeExports.jsx(Je,{...g,entityType:j||d?.entityType})};exports.DetailsPanel=Ye;exports.entitiesWithoutFeed=re;
2
2
  //# sourceMappingURL=DetailsPanel.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DetailsPanel.cjs.js","sources":["../../../../../src/containers/DetailsPanel/DetailsPanel.tsx"],"sourcesContent":["import { Button } from '@ynput/ayon-react-components'\nimport React, { useEffect, useMemo, useRef, useState } from 'react'\nimport useDetailsPanelURLSync from './hooks/useDetailsPanelURLSync'\nimport * as Styled from './DetailsPanel.styled'\n\n// shared\nimport { useGetEntitiesDetailsPanelQuery, detailsPanelEntityTypes } from '@shared/api'\nimport type { Tag, DetailsPanelEntityType, DetailsPanelEntityData } from '@shared/api'\nimport { DetailsPanelDetails, EntityPath, Watchers } from '@shared/components'\nimport { usePiPWindow } from '@shared/context/pip/PiPProvider'\nimport { extractEntityHierarchyFromParents } from '@shared/util'\nimport {\n ProjectContextProvider,\n ProjectModelWithProducts,\n ThumbnailUploadProvider,\n useDetailsPanelContext,\n useScopedDetailsPanel,\n useURIContext,\n FeedFilter,\n} from '@shared/context'\n\nimport DetailsPanelHeader from './components/DetailsPanelHeader/DetailsPanelHeader'\nimport DetailsPanelFiles from './components/DetailsPanelFiles'\nimport {\n DetailsPanelMoreMenu,\n type DetailsPanelEntityListsContext,\n} from './components/DetailsPanelMoreMenu'\nimport useGetEntityPath from './hooks/useGetEntityPath'\nimport getAllProjectStatuses from './helpers/getAllProjectsStatuses'\nimport FeedWrapper from './containers/FeedWrapper'\nimport FeedContextWrapper from './containers/FeedContextWrapper'\nimport mergeProjectInfo from './helpers/mergeProjectInfo'\nimport buildEntityTypeIcons from './helpers/buildEntityTypeIcons'\nimport DetailsPanelSubtasks from './containers/DetailsPanelSubtasks'\n\nexport const entitiesWithoutFeed = ['product', 'representation']\n\ntype User = { avatarUrl: string; name: string; fullName?: string }\n\nexport type DetailsPanelProps = {\n entityType: DetailsPanelEntityType\n entitySubTypes?: string[] // used to get actions before the entity has loaded\n entitiesData?: { id: string; label: string; type: DetailsPanelEntityType }[]\n entities?: { id: string; projectName: string }[]\n tagsOptions?: Tag[]\n disabledStatuses?: string[]\n projectUsers?: User[]\n disabledProjectUsers?: string[]\n activeProjectUsers?: string[]\n projectsInfo?: Record<string, ProjectModelWithProducts>\n projectNames?: string[]\n isSlideOut?: boolean\n style?: React.CSSProperties\n scope: string\n isCompact?: boolean\n onClose?: () => void\n onWatchersUpdate?: (added: any[], removed: any[]) => void\n onOpenViewer?: (entity: any) => void\n onEntityFocus?: (id: string, entityType: DetailsPanelEntityType) => void\n onOpen?: () => void\n onUriOpen?: (entity: DetailsPanelEntityData, source: 'uri' | 'url') => void\n // annotations\n annotations?: any\n removeAnnotation?: (id: string) => void\n exportAnnotationComposite?: (id: string) => Promise<Blob | null>\n entityListId?: string\n guestCategories?: Record<string, string> // only used for guests to find if they have access to any categories\n /** Optional EntityListsContext for the \"Add to list\" sub-menu in the more-menu.\n * Hosts that already mount EntityListsProvider can pass the resolved context here;\n * otherwise wrap the panel with EntityListsContextBoundary. The shape mirrors\n * `EntityListsContextType` from `src/pages/ProjectListsPage/context` — it lives as a\n * structural type in shared/ so the layering rule (shared cannot import src/pages)\n * is preserved. */\n entityListsContext?: DetailsPanelEntityListsContext\n // optional tab state for independent tab management\n}\n\nconst DetailsPanelInner = ({\n entityType,\n entitySubTypes = [],\n // entities is data we already have from kanban\n entitiesData = [],\n // entityIds are used to get the full details data for the entities\n entities = [],\n tagsOptions = [],\n disabledStatuses,\n projectUsers,\n disabledProjectUsers,\n activeProjectUsers,\n projectsInfo = {},\n projectNames = [],\n isSlideOut = false,\n style = {},\n scope,\n isCompact = false,\n onClose,\n onWatchersUpdate,\n onOpenViewer,\n onEntityFocus,\n onOpen,\n onUriOpen, // when the details panel is opened from uri\n // annotations\n annotations,\n removeAnnotation,\n exportAnnotationComposite,\n entityListId,\n guestCategories = {},\n entityListsContext,\n}: // optional tab state for independent tab management\nDetailsPanelProps) => {\n const {\n closeSlideOut,\n openPip,\n user,\n isGuest,\n entities: contextEntities,\n setEntities,\n slideOut,\n useSearchParams,\n SubtasksManager,\n useNavigate,\n } = useDetailsPanelContext()\n const { currentTab, setTab, isFeed } = useScopedDetailsPanel(scope)\n const [_searchParams, setSearchParams] = useSearchParams()\n const hasCalledOnOpen = useRef(false)\n\n // Use context entities if available, otherwise use props\n const activeEntityType = contextEntities?.entityType ?? entityType\n const activeEntities = contextEntities?.entities ?? entities\n const activeEntitySubTypes = contextEntities?.entitySubTypes ?? entitySubTypes\n const activeEntitiesData = contextEntities?.entities ? [] : entitiesData\n const activeProjectNames = contextEntities?.entities\n ? contextEntities.entities.map((e) => e.projectName)\n : projectNames\n\n // Fire onOpen callback once when component mounts and renders\n useEffect(() => {\n if (onOpen && !hasCalledOnOpen.current) {\n hasCalledOnOpen.current = true\n onOpen()\n }\n }, [])\n\n // Force details tab for specific entity types\n useEffect(() => {\n if (entitiesWithoutFeed.includes(activeEntityType) && currentTab !== 'details') {\n setTab('details')\n }\n }, [activeEntityType, currentTab, setTab])\n\n // once component is provided with specific entities, remove context entities to avoid conflicts\n useEffect(() => {\n if (entities.length && contextEntities) {\n setEntities(null)\n }\n }, [entities, contextEntities, setEntities])\n\n // reduce projectsInfo to selected projects and into one\n const projectInfo = useMemo(\n () => mergeProjectInfo(projectsInfo, activeProjectNames),\n [projectsInfo, activeProjectNames],\n )\n\n // build icons for entity types (used by the entity path breadcrumb)\n const entityTypeIcons = useMemo(() => buildEntityTypeIcons(projectInfo), [projectInfo])\n\n // for example when switching from version to task, task doesn't have reps tab\n // if reps tab was selected, set default to feed\n useEffect(() => {\n if (currentTab === 'files') {\n // check entity type is still version\n if (activeEntityType !== 'version') {\n setTab('feed')\n }\n }\n // Reset to feed if subtasks tab is selected but entity is not a task\n if (currentTab === 'subtasks' && activeEntityType !== 'task') {\n setTab('feed')\n }\n }, [activeEntityType, currentTab, scope])\n\n // now we get the full details data for selected entities\n let entitiesToQuery = activeEntities.length\n ? activeEntities.map((entity) => ({ id: entity.id, projectName: entity.projectName }))\n : // @ts-expect-error = not sure what's going on with activeEntitiesData, we should try and remove it\n activeEntitiesData.map((entity) => ({ id: entity.id, projectName: entity.projectName }))\n\n entitiesToQuery = entitiesToQuery.filter((entity) => entity.id)\n\n const {\n data: entityDetailsData = [],\n isFetching: isFetchingEntitiesDetails,\n isError,\n originalArgs,\n } = useGetEntitiesDetailsPanelQuery(\n { entityType: activeEntityType, entities: entitiesToQuery },\n {\n skip: !entitiesToQuery.length || !detailsPanelEntityTypes.includes(activeEntityType),\n },\n )\n\n // the entity changes then we close the slide out\n useEffect(() => {\n if (!isSlideOut) {\n closeSlideOut()\n }\n }, [originalArgs, isSlideOut])\n\n // if the details panel is opened vair the uri, run callback\n useEffect(() => {\n if (isFetchingEntitiesDetails) return\n\n if (\n (contextEntities?.source === 'uri' || contextEntities?.source === 'url') &&\n contextEntities?.entities?.length &&\n !!onUriOpen\n ) {\n const uriEntity = entityDetailsData.find(\n (entity) => entity.id === contextEntities.entities[0].id,\n )\n if (!uriEntity) return\n\n onUriOpen(uriEntity, contextEntities.source)\n }\n }, [entityDetailsData, isFetchingEntitiesDetails])\n\n // TODO: merge current entities data with fresh details data\n\n const allStatuses = getAllProjectStatuses(projectsInfo)\n\n // get the first project name and info to be used in the feed.\n const firstProject = activeProjectNames[0]\n const firstProjectInfo = projectsInfo[firstProject] || {}\n const firstEntityData = entityDetailsData[0] || {}\n // Use the last entity for URI sync\n const lastEntityData = entityDetailsData[entityDetailsData.length - 1]\n const lastProject = activeProjectNames[activeProjectNames.length - 1]\n\n // build the full entity path for the first entity\n const [entityPathSegments, entityPathVersions] = useGetEntityPath({\n entity: firstEntityData,\n entityType: activeEntityType,\n projectName: firstProject,\n isLoading: isFetchingEntitiesDetails,\n })\n\n const { setEntityUri, setUri } = useURIContext()\n // sync the uri when entity changes\n useEffect(() => {\n if (!lastEntityData?.parents) return\n if (!lastProject) return\n const { folderPath, taskName, versionName, productName } = extractEntityHierarchyFromParents(\n lastEntityData.parents,\n activeEntityType,\n lastEntityData.name,\n )\n\n setEntityUri({\n projectName: lastProject,\n folderPath: folderPath,\n taskName: taskName,\n productName: productName,\n versionName: versionName,\n })\n\n // unmount cleanup: clear uri\n return () => {\n setUri('')\n }\n }, [entityDetailsData, activeProjectNames, activeEntityType])\n\n // sync the details panel url (panel) with entity\n useDetailsPanelURLSync({\n entityData: lastEntityData,\n project: lastProject,\n activeEntityType,\n entitiesToQuery,\n })\n\n const clearSearchUrl = () => {\n // remove URL params when closing\n setSearchParams(\n (prev) => {\n const newParams = new URLSearchParams(prev)\n newParams.delete('project')\n newParams.delete('type')\n newParams.delete('id')\n return newParams\n },\n { replace: true },\n )\n }\n\n const handleClose = () => {\n onClose?.()\n // also remove any entities in context\n setEntities(null)\n clearSearchUrl()\n closeSlideOut()\n }\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && onClose) {\n // Don't trigger if we're in an input element\n const target = e.target as HTMLElement\n const isInputElement =\n ['INPUT', 'TEXTAREA', 'SELECT'].includes(target.tagName) || target.isContentEditable\n\n if (isInputElement) return\n\n // don't trigger if the viewer is open and panel not in slideout mode\n if (isSlideOut === false && (target.closest('#viewer-dialog') || !!slideOut)) return\n\n handleClose()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [handleClose, isSlideOut, slideOut])\n\n const { requestPipWindow } = usePiPWindow()\n\n // Hoisted so ThumbnailUploadProvider (wrapping the toolbar) and EntityPanelUploader\n // (inside DetailsPanelHeader) share the same ref identity — otherwise the toolbar's\n // more-menu, which sits as a sibling above the header, can't reach the inputs.\n const thumbnailInputRef = useRef<HTMLInputElement>(null)\n const versionsInputRef = useRef<HTMLInputElement>(null)\n const canUploadVersion = entityDetailsData.length === 1 && activeEntityType !== 'representation'\n\n const shareEntityLabel = useMemo(() => {\n const name = firstEntityData?.label || firstEntityData?.name || ''\n const parents: string[] = firstEntityData?.parents || []\n const parts: (string | undefined)[] = [firstProject]\n switch (activeEntityType) {\n case 'folder':\n case 'task':\n case 'product':\n parts.push(parents.at(-1), name)\n break\n case 'version':\n parts.push(parents.at(-2), parents.at(-1), name)\n break\n case 'representation':\n parts.push(parents.at(-3), parents.at(-2), parents.at(-1), name)\n break\n default:\n parts.push(name)\n }\n return parts.filter(Boolean).join(' - ')\n }, [firstEntityData, activeEntityType, firstProject])\n\n const handleOpenPip = () => {\n openPip({\n entityType: activeEntityType,\n entities: entitiesToQuery,\n scope: scope,\n })\n requestPipWindow(500, 500)\n }\n\n const isCommentingEnabled = () => {\n // cannot comment on multiple projects\n if (activeProjectNames.length > 1) return false\n if (isGuest) {\n // Guest can only comment in review sessions (for now)\n if (!entityListId) return false\n // Guest must have at least one category set for list\n const guestHasCategory = Object.prototype.hasOwnProperty.call(\n guestCategories,\n user.attrib?.email || '',\n )\n if (!guestHasCategory) return false\n }\n return true\n }\n\n return (\n <ThumbnailUploadProvider\n thumbnailInputRef={thumbnailInputRef}\n versionsInputRef={versionsInputRef}\n canUploadVersion={canUploadVersion}\n >\n <Styled.Panel className=\"details-panel\">\n <Styled.Toolbar>\n {/* TODO FIX PATH */}\n <EntityPath\n segments={entityPathSegments}\n versions={entityPathVersions}\n projectName={firstProject}\n hideProjectName={isSlideOut}\n isLoading={isFetchingEntitiesDetails || !entityPathSegments.length}\n entityType={activeEntityType}\n scope={scope}\n // @ts-ignore\n entityTypeIcons={entityTypeIcons}\n />\n <Styled.RightTools className=\"right-tools\">\n <DetailsPanelMoreMenu\n entityType={activeEntityType}\n entityId={firstEntityData?.id}\n entityIds={entitiesToQuery.map((e) => e.id).filter(Boolean)}\n entityLabel={shareEntityLabel}\n projectName={firstProject}\n selectedEntities={entityDetailsData\n .filter((e) => !!e?.id)\n .map((e) => {\n const type = e.entityType || activeEntityType\n return {\n entityId: e.id,\n entityType: type,\n hasReviewables: !!e.hasReviewables,\n name: e.name,\n label: e.label,\n projectName: e.projectName || firstProject,\n folderId: type === 'task' ? e.folder?.id : undefined,\n }\n })}\n entityListsContext={entityListsContext}\n onOpenPip={handleOpenPip}\n onOpenViewer={onOpenViewer}\n productId={firstEntityData?.product?.id}\n taskId={firstEntityData?.task?.id}\n folderId={firstEntityData?.folder?.id}\n />\n <Watchers\n entities={entitiesToQuery}\n entityType={activeEntityType}\n options={projectUsers || []}\n onWatchersUpdate={onWatchersUpdate && onWatchersUpdate}\n userName={user.name}\n />\n\n {onClose && (\n <Button\n icon=\"close\"\n variant={'text'}\n onClick={handleClose}\n data-shortcut={'Escape'}\n />\n )}\n </Styled.RightTools>\n </Styled.Toolbar>\n\n <DetailsPanelHeader\n entityType={activeEntityType}\n entitySubTypes={activeEntitySubTypes}\n entities={entityDetailsData}\n users={projectUsers}\n disabledAssignees={disabledProjectUsers}\n disabledStatuses={disabledStatuses}\n tagsOptions={tagsOptions}\n isFetching={isFetchingEntitiesDetails}\n isCompact={isCompact}\n currentTab={currentTab}\n onTabChange={setTab}\n projectInfo={projectInfo}\n onOpenViewer={(args) => onOpenViewer?.(args)}\n onEntityFocus={onEntityFocus}\n thumbnailInputRef={thumbnailInputRef}\n versionsInputRef={versionsInputRef}\n />\n\n <ProjectContextProvider projectName={firstProject}>\n {isFeed && !isError && (\n <FeedWrapper\n entityType={activeEntityType}\n entities={entityDetailsData}\n activeUsers={activeProjectUsers || []}\n projectInfo={firstProjectInfo}\n projectName={firstProject}\n disabled={!isCommentingEnabled()}\n scope={scope}\n statuses={allStatuses}\n readOnly={false}\n entityListId={entityListId}\n annotations={annotations}\n removeAnnotation={removeAnnotation}\n exportAnnotationComposite={exportAnnotationComposite}\n isSlideOut={isSlideOut}\n />\n )}\n {currentTab === 'subtasks' &&\n activeEntityType === 'task' &&\n firstEntityData?.id &&\n SubtasksManager && (\n <DetailsPanelSubtasks\n projectName={firstProject}\n taskId={firstEntityData.id}\n subtasks={firstEntityData.task?.subtasks || []}\n SubtasksManager={SubtasksManager}\n useNavigate={useNavigate!}\n onNotFound={() => setTab('feed')} // if subtasks module is not found, switch to feed tab\n />\n )}\n {currentTab === 'files' && (\n <DetailsPanelFiles\n entities={entityDetailsData}\n scope={scope}\n isLoadingVersion={isFetchingEntitiesDetails}\n />\n )}\n {currentTab === 'details' && (\n <FeedContextWrapper\n entityType={activeEntityType}\n entities={entityDetailsData}\n activeUsers={activeProjectUsers || []}\n projectInfo={firstProjectInfo}\n projectName={firstProject}\n disabled={!isCommentingEnabled()}\n scope={scope}\n statuses={allStatuses}\n readOnly={false}\n annotations={annotations}\n removeAnnotation={removeAnnotation}\n exportAnnotationComposite={exportAnnotationComposite}\n >\n <DetailsPanelDetails\n entities={entityDetailsData}\n isLoading={isFetchingEntitiesDetails}\n />\n </FeedContextWrapper>\n )}\n </ProjectContextProvider>\n </Styled.Panel>\n </ThumbnailUploadProvider>\n )\n}\n\n// create a wrapper that checks if the details panel should be open or not based on isOpen prop and entities state\nexport const DetailsPanel = ({\n isOpen,\n entityType,\n ...props\n}: Omit<DetailsPanelProps, 'entityType'> & {\n entityType?: DetailsPanelEntityType\n isOpen: boolean\n}) => {\n const { entities } = useDetailsPanelContext()\n\n if (!isOpen && !entities) return null\n if (!entityType && !entities) return null\n\n // @ts-expect-error - entityType could be undefined but we check for entities above\n return <DetailsPanelInner {...props} entityType={entityType || entities?.entityType} />\n}\n"],"names":["entitiesWithoutFeed","DetailsPanelInner","entityType","entitySubTypes","entitiesData","entities","tagsOptions","disabledStatuses","projectUsers","disabledProjectUsers","activeProjectUsers","projectsInfo","projectNames","isSlideOut","style","scope","isCompact","onClose","onWatchersUpdate","onOpenViewer","onEntityFocus","onOpen","onUriOpen","annotations","removeAnnotation","exportAnnotationComposite","entityListId","guestCategories","entityListsContext","closeSlideOut","openPip","user","isGuest","contextEntities","setEntities","slideOut","useSearchParams","SubtasksManager","useNavigate","useDetailsPanelContext","currentTab","setTab","isFeed","useScopedDetailsPanel","_searchParams","setSearchParams","hasCalledOnOpen","useRef","activeEntityType","activeEntities","activeEntitySubTypes","activeEntitiesData","activeProjectNames","useEffect","projectInfo","useMemo","mergeProjectInfo","entityTypeIcons","buildEntityTypeIcons","entitiesToQuery","entity","entityDetailsData","isFetchingEntitiesDetails","isError","originalArgs","useGetEntitiesDetailsPanelQuery","detailsPanelEntityTypes","uriEntity","allStatuses","getAllProjectStatuses","firstProject","firstProjectInfo","firstEntityData","lastEntityData","lastProject","entityPathSegments","entityPathVersions","useGetEntityPath","setEntityUri","setUri","useURIContext","folderPath","taskName","versionName","productName","extractEntityHierarchyFromParents","useDetailsPanelURLSync","clearSearchUrl","prev","newParams","handleClose","handleKeyDown","e","target","requestPipWindow","usePiPWindow","thumbnailInputRef","versionsInputRef","canUploadVersion","shareEntityLabel","name","parents","parts","handleOpenPip","isCommentingEnabled","jsx","ThumbnailUploadProvider","jsxs","Styled.Panel","Styled.Toolbar","EntityPath","Styled.RightTools","DetailsPanelMoreMenu","type","Watchers","Button","DetailsPanelHeader","args","ProjectContextProvider","FeedWrapper","DetailsPanelSubtasks","DetailsPanelFiles","FeedContextWrapper","DetailsPanelDetails","DetailsPanel","isOpen","props"],"mappings":"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"}
1
+ {"version":3,"file":"DetailsPanel.cjs.js","sources":["../../../../../src/containers/DetailsPanel/DetailsPanel.tsx"],"sourcesContent":["import { Button } from '@ynput/ayon-react-components'\nimport React, { useEffect, useMemo, useRef, useState } from 'react'\nimport useDetailsPanelURLSync from './hooks/useDetailsPanelURLSync'\nimport * as Styled from './DetailsPanel.styled'\n\n// shared\nimport { useGetEntitiesDetailsPanelQuery, detailsPanelEntityTypes } from '@shared/api'\nimport type { Tag, DetailsPanelEntityType, DetailsPanelEntityData } from '@shared/api'\nimport { DetailsPanelDetails, EntityPath, Watchers } from '@shared/components'\nimport { usePiPWindow } from '@shared/context/pip/PiPProvider'\nimport { extractEntityHierarchyFromParents } from '@shared/util'\nimport {\n ProjectContextProvider,\n ProjectModelWithProducts,\n ThumbnailUploadProvider,\n useDetailsPanelContext,\n useScopedDetailsPanel,\n useURIContext,\n FeedFilter,\n} from '@shared/context'\n\nimport DetailsPanelHeader from './components/DetailsPanelHeader/DetailsPanelHeader'\nimport DetailsPanelFiles from './components/DetailsPanelFiles'\nimport {\n DetailsPanelMoreMenu,\n type DetailsPanelEntityListsContext,\n} from './components/DetailsPanelMoreMenu'\nimport useGetEntityPath from './hooks/useGetEntityPath'\nimport getAllProjectStatuses from './helpers/getAllProjectsStatuses'\nimport FeedWrapper from './containers/FeedWrapper'\nimport FeedContextWrapper from './containers/FeedContextWrapper'\nimport mergeProjectInfo from './helpers/mergeProjectInfo'\nimport buildEntityTypeIcons from './helpers/buildEntityTypeIcons'\nimport DetailsPanelSubtasks from './containers/DetailsPanelSubtasks'\n\nexport const entitiesWithoutFeed = ['product', 'representation']\n\ntype User = { avatarUrl: string; name: string; fullName?: string }\n\nexport type DetailsPanelProps = {\n entityType: DetailsPanelEntityType\n entitySubTypes?: string[] // used to get actions before the entity has loaded\n entitiesData?: { id: string; label: string; type: DetailsPanelEntityType }[]\n entities?: { id: string; projectName: string }[]\n tagsOptions?: Tag[]\n disabledStatuses?: string[]\n projectUsers?: User[]\n disabledProjectUsers?: string[]\n activeProjectUsers?: string[]\n projectsInfo?: Record<string, ProjectModelWithProducts>\n projectNames?: string[]\n isSlideOut?: boolean\n style?: React.CSSProperties\n scope: string\n isCompact?: boolean\n onClose?: () => void\n onWatchersUpdate?: (added: any[], removed: any[]) => void\n onOpenViewer?: (entity: any) => void\n onEntityFocus?: (id: string, entityType: DetailsPanelEntityType) => void\n onOpen?: () => void\n onUriOpen?: (entity: DetailsPanelEntityData, source: 'uri' | 'url') => void\n // annotations\n annotations?: any\n removeAnnotation?: (id: string) => void\n exportAnnotationComposite?: (id: string) => Promise<Blob | null>\n entityListId?: string\n guestCategories?: Record<string, string> // only used for guests to find if they have access to any categories\n /** Optional EntityListsContext for the \"Add to list\" sub-menu in the more-menu.\n * Hosts that already mount EntityListsProvider can pass the resolved context here;\n * otherwise wrap the panel with EntityListsContextBoundary. The shape mirrors\n * `EntityListsContextType` from `src/pages/ProjectListsPage/context` — it lives as a\n * structural type in shared/ so the layering rule (shared cannot import src/pages)\n * is preserved. */\n entityListsContext?: DetailsPanelEntityListsContext\n // optional tab state for independent tab management\n}\n\nconst DetailsPanelInner = ({\n entityType,\n entitySubTypes = [],\n // entities is data we already have from kanban\n entitiesData = [],\n // entityIds are used to get the full details data for the entities\n entities = [],\n tagsOptions = [],\n disabledStatuses,\n projectUsers,\n disabledProjectUsers,\n activeProjectUsers,\n projectsInfo = {},\n projectNames = [],\n isSlideOut = false,\n style = {},\n scope,\n isCompact = false,\n onClose,\n onWatchersUpdate,\n onOpenViewer,\n onEntityFocus,\n onOpen,\n onUriOpen, // when the details panel is opened from uri\n // annotations\n annotations,\n removeAnnotation,\n exportAnnotationComposite,\n entityListId,\n guestCategories = {},\n entityListsContext,\n}: // optional tab state for independent tab management\nDetailsPanelProps) => {\n const {\n closeSlideOut,\n openPip,\n user,\n isGuest,\n entities: contextEntities,\n setEntities,\n slideOut,\n useSearchParams,\n SubtasksManager,\n useNavigate,\n } = useDetailsPanelContext()\n const { currentTab, setTab, isFeed } = useScopedDetailsPanel(scope)\n const [_searchParams, setSearchParams] = useSearchParams()\n const hasCalledOnOpen = useRef(false)\n\n // Use context entities if available, otherwise use props\n const activeEntityType = contextEntities?.entityType ?? entityType\n const activeEntities = contextEntities?.entities ?? entities\n const activeEntitySubTypes = contextEntities?.entitySubTypes ?? entitySubTypes\n const activeEntitiesData = contextEntities?.entities ? [] : entitiesData\n const activeProjectNames = contextEntities?.entities\n ? contextEntities.entities.map((e) => e.projectName)\n : projectNames\n\n // Fire onOpen callback once when component mounts and renders\n useEffect(() => {\n if (onOpen && !hasCalledOnOpen.current) {\n hasCalledOnOpen.current = true\n onOpen()\n }\n }, [])\n\n // Force details tab for specific entity types\n useEffect(() => {\n if (entitiesWithoutFeed.includes(activeEntityType) && currentTab !== 'details') {\n setTab('details')\n }\n }, [activeEntityType, currentTab, setTab])\n\n // once component is provided with specific entities, remove context entities to avoid conflicts\n useEffect(() => {\n if (entities.length && contextEntities) {\n setEntities(null)\n }\n }, [entities, contextEntities, setEntities])\n\n // reduce projectsInfo to selected projects and into one\n const projectInfo = useMemo(\n () => mergeProjectInfo(projectsInfo, activeProjectNames),\n [projectsInfo, activeProjectNames],\n )\n\n // build icons for entity types (used by the entity path breadcrumb)\n const entityTypeIcons = useMemo(() => buildEntityTypeIcons(projectInfo), [projectInfo])\n\n // for example when switching from version to task, task doesn't have reps tab\n // if reps tab was selected, set default to feed\n useEffect(() => {\n if (currentTab === 'files') {\n // check entity type is still version\n if (activeEntityType !== 'version') {\n setTab('feed')\n }\n }\n // Reset to feed if subtasks tab is selected but entity is not a task\n if (currentTab === 'subtasks' && activeEntityType !== 'task') {\n setTab('feed')\n }\n }, [activeEntityType, currentTab, scope])\n\n // now we get the full details data for selected entities\n let entitiesToQuery = activeEntities.length\n ? activeEntities.map((entity) => ({ id: entity.id, projectName: entity.projectName }))\n : // @ts-expect-error = not sure what's going on with activeEntitiesData, we should try and remove it\n activeEntitiesData.map((entity) => ({ id: entity.id, projectName: entity.projectName }))\n\n entitiesToQuery = entitiesToQuery.filter((entity) => entity.id)\n\n const {\n data: entityDetailsData = [],\n isFetching: isFetchingEntitiesDetails,\n isError,\n originalArgs,\n } = useGetEntitiesDetailsPanelQuery(\n { entityType: activeEntityType, entities: entitiesToQuery },\n {\n skip: !entitiesToQuery.length || !detailsPanelEntityTypes.includes(activeEntityType),\n },\n )\n\n // the entity changes then we close the slide out\n useEffect(() => {\n if (!isSlideOut) {\n closeSlideOut()\n }\n }, [originalArgs, isSlideOut])\n\n // fire onUriOpen once per context entity — a details refetch must not re-run the jump/filter reset\n const uriOpenFiredForId = useRef<string | null>(null)\n useEffect(() => {\n if (!contextEntities) uriOpenFiredForId.current = null\n }, [contextEntities])\n\n // if the details panel is opened via the uri, run callback\n useEffect(() => {\n if (isFetchingEntitiesDetails) return\n\n if (\n (contextEntities?.source === 'uri' || contextEntities?.source === 'url') &&\n contextEntities?.entities?.length &&\n !!onUriOpen\n ) {\n const targetId = contextEntities.entities[0].id\n if (uriOpenFiredForId.current === targetId) return\n\n const uriEntity = entityDetailsData.find((entity) => entity.id === targetId)\n if (!uriEntity) return\n\n uriOpenFiredForId.current = targetId\n onUriOpen(uriEntity, contextEntities.source)\n }\n }, [entityDetailsData, isFetchingEntitiesDetails, contextEntities, onUriOpen])\n\n // TODO: merge current entities data with fresh details data\n\n const allStatuses = getAllProjectStatuses(projectsInfo)\n\n // get the first project name and info to be used in the feed.\n const firstProject = activeProjectNames[0]\n const firstProjectInfo = projectsInfo[firstProject] || {}\n const firstEntityData = entityDetailsData[0] || {}\n // Use the last entity for URI sync\n const lastEntityData = entityDetailsData[entityDetailsData.length - 1]\n const lastProject = activeProjectNames[activeProjectNames.length - 1]\n\n // build the full entity path for the first entity\n const [entityPathSegments, entityPathVersions] = useGetEntityPath({\n entity: firstEntityData,\n entityType: activeEntityType,\n projectName: firstProject,\n isLoading: isFetchingEntitiesDetails,\n })\n\n const { setEntityUri, setUri } = useURIContext()\n // sync the uri when entity changes\n useEffect(() => {\n if (!lastEntityData?.parents) return\n if (!lastProject) return\n const { folderPath, taskName, versionName, productName } = extractEntityHierarchyFromParents(\n lastEntityData.parents,\n activeEntityType,\n lastEntityData.name,\n )\n\n setEntityUri({\n projectName: lastProject,\n folderPath: folderPath,\n taskName: taskName,\n productName: productName,\n versionName: versionName,\n })\n\n // unmount cleanup: clear uri\n return () => {\n setUri('')\n }\n }, [entityDetailsData, activeProjectNames, activeEntityType])\n\n // sync the details panel url (panel) with entity\n useDetailsPanelURLSync({\n entityData: lastEntityData,\n project: lastProject,\n activeEntityType,\n entitiesToQuery,\n })\n\n const clearSearchUrl = () => {\n // remove URL params when closing\n setSearchParams(\n (prev) => {\n const newParams = new URLSearchParams(prev)\n newParams.delete('project')\n newParams.delete('type')\n newParams.delete('id')\n return newParams\n },\n { replace: true },\n )\n }\n\n const handleClose = () => {\n onClose?.()\n // also remove any entities in context\n setEntities(null)\n // drop the uri so an in-flight resolve can't reopen the panel after close\n setUri('')\n clearSearchUrl()\n closeSlideOut()\n }\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && onClose) {\n // Don't trigger if we're in an input element\n const target = e.target as HTMLElement\n const isInputElement =\n ['INPUT', 'TEXTAREA', 'SELECT'].includes(target.tagName) || target.isContentEditable\n\n if (isInputElement) return\n\n // don't trigger if the viewer is open and panel not in slideout mode\n if (isSlideOut === false && (target.closest('#viewer-dialog') || !!slideOut)) return\n\n handleClose()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [handleClose, isSlideOut, slideOut])\n\n const { requestPipWindow } = usePiPWindow()\n\n // Hoisted so ThumbnailUploadProvider (wrapping the toolbar) and EntityPanelUploader\n // (inside DetailsPanelHeader) share the same ref identity — otherwise the toolbar's\n // more-menu, which sits as a sibling above the header, can't reach the inputs.\n const thumbnailInputRef = useRef<HTMLInputElement>(null)\n const versionsInputRef = useRef<HTMLInputElement>(null)\n const canUploadVersion = entityDetailsData.length === 1 && activeEntityType !== 'representation'\n\n const shareEntityLabel = useMemo(() => {\n const name = firstEntityData?.label || firstEntityData?.name || ''\n const parents: string[] = firstEntityData?.parents || []\n const parts: (string | undefined)[] = [firstProject]\n switch (activeEntityType) {\n case 'folder':\n case 'task':\n case 'product':\n parts.push(parents.at(-1), name)\n break\n case 'version':\n parts.push(parents.at(-2), parents.at(-1), name)\n break\n case 'representation':\n parts.push(parents.at(-3), parents.at(-2), parents.at(-1), name)\n break\n default:\n parts.push(name)\n }\n return parts.filter(Boolean).join(' - ')\n }, [firstEntityData, activeEntityType, firstProject])\n\n const handleOpenPip = () => {\n openPip({\n entityType: activeEntityType,\n entities: entitiesToQuery,\n scope: scope,\n })\n requestPipWindow(500, 500)\n }\n\n const isCommentingEnabled = () => {\n // cannot comment on multiple projects\n if (activeProjectNames.length > 1) return false\n if (isGuest) {\n // Guest can only comment in review sessions (for now)\n if (!entityListId) return false\n // Guest must have at least one category set for list\n const guestHasCategory = Object.prototype.hasOwnProperty.call(\n guestCategories,\n user.attrib?.email || '',\n )\n if (!guestHasCategory) return false\n }\n return true\n }\n\n return (\n <ThumbnailUploadProvider\n thumbnailInputRef={thumbnailInputRef}\n versionsInputRef={versionsInputRef}\n canUploadVersion={canUploadVersion}\n >\n <Styled.Panel className=\"details-panel\">\n <Styled.Toolbar>\n {/* TODO FIX PATH */}\n <EntityPath\n segments={entityPathSegments}\n versions={entityPathVersions}\n projectName={firstProject}\n hideProjectName={isSlideOut}\n isLoading={isFetchingEntitiesDetails || !entityPathSegments.length}\n entityType={activeEntityType}\n scope={scope}\n // @ts-ignore\n entityTypeIcons={entityTypeIcons}\n />\n <Styled.RightTools className=\"right-tools\">\n <DetailsPanelMoreMenu\n entityType={activeEntityType}\n entityId={firstEntityData?.id}\n entityIds={entitiesToQuery.map((e) => e.id).filter(Boolean)}\n entityLabel={shareEntityLabel}\n projectName={firstProject}\n selectedEntities={entityDetailsData\n .filter((e) => !!e?.id)\n .map((e) => {\n const type = e.entityType || activeEntityType\n return {\n entityId: e.id,\n entityType: type,\n hasReviewables: !!e.hasReviewables,\n name: e.name,\n label: e.label,\n projectName: e.projectName || firstProject,\n folderId: type === 'task' ? e.folder?.id : undefined,\n }\n })}\n entityListsContext={entityListsContext}\n onOpenPip={handleOpenPip}\n onOpenViewer={onOpenViewer}\n productId={firstEntityData?.product?.id}\n taskId={firstEntityData?.task?.id}\n folderId={firstEntityData?.folder?.id}\n />\n <Watchers\n entities={entitiesToQuery}\n entityType={activeEntityType}\n options={projectUsers || []}\n onWatchersUpdate={onWatchersUpdate && onWatchersUpdate}\n userName={user.name}\n />\n\n {onClose && (\n <Button\n icon=\"close\"\n variant={'text'}\n onClick={handleClose}\n data-shortcut={'Escape'}\n />\n )}\n </Styled.RightTools>\n </Styled.Toolbar>\n\n <DetailsPanelHeader\n entityType={activeEntityType}\n entitySubTypes={activeEntitySubTypes}\n entities={entityDetailsData}\n users={projectUsers}\n disabledAssignees={disabledProjectUsers}\n disabledStatuses={disabledStatuses}\n tagsOptions={tagsOptions}\n isFetching={isFetchingEntitiesDetails}\n isCompact={isCompact}\n currentTab={currentTab}\n onTabChange={setTab}\n projectInfo={projectInfo}\n onOpenViewer={(args) => onOpenViewer?.(args)}\n onEntityFocus={onEntityFocus}\n thumbnailInputRef={thumbnailInputRef}\n versionsInputRef={versionsInputRef}\n />\n\n <ProjectContextProvider projectName={firstProject}>\n {isFeed && !isError && (\n <FeedWrapper\n entityType={activeEntityType}\n entities={entityDetailsData}\n activeUsers={activeProjectUsers || []}\n projectInfo={firstProjectInfo}\n projectName={firstProject}\n disabled={!isCommentingEnabled()}\n scope={scope}\n statuses={allStatuses}\n readOnly={false}\n entityListId={entityListId}\n annotations={annotations}\n removeAnnotation={removeAnnotation}\n exportAnnotationComposite={exportAnnotationComposite}\n isSlideOut={isSlideOut}\n />\n )}\n {currentTab === 'subtasks' &&\n activeEntityType === 'task' &&\n firstEntityData?.id &&\n SubtasksManager && (\n <DetailsPanelSubtasks\n projectName={firstProject}\n taskId={firstEntityData.id}\n subtasks={firstEntityData.task?.subtasks || []}\n SubtasksManager={SubtasksManager}\n useNavigate={useNavigate!}\n onNotFound={() => setTab('feed')} // if subtasks module is not found, switch to feed tab\n />\n )}\n {currentTab === 'files' && (\n <DetailsPanelFiles\n entities={entityDetailsData}\n scope={scope}\n isLoadingVersion={isFetchingEntitiesDetails}\n />\n )}\n {currentTab === 'details' && (\n <FeedContextWrapper\n entityType={activeEntityType}\n entities={entityDetailsData}\n activeUsers={activeProjectUsers || []}\n projectInfo={firstProjectInfo}\n projectName={firstProject}\n disabled={!isCommentingEnabled()}\n scope={scope}\n statuses={allStatuses}\n readOnly={false}\n annotations={annotations}\n removeAnnotation={removeAnnotation}\n exportAnnotationComposite={exportAnnotationComposite}\n >\n <DetailsPanelDetails\n entities={entityDetailsData}\n isLoading={isFetchingEntitiesDetails}\n />\n </FeedContextWrapper>\n )}\n </ProjectContextProvider>\n </Styled.Panel>\n </ThumbnailUploadProvider>\n )\n}\n\n// create a wrapper that checks if the details panel should be open or not based on isOpen prop and entities state\nexport const DetailsPanel = ({\n isOpen,\n entityType,\n ...props\n}: Omit<DetailsPanelProps, 'entityType'> & {\n entityType?: DetailsPanelEntityType\n isOpen: boolean\n}) => {\n const { entities } = useDetailsPanelContext()\n\n if (!isOpen && !entities) return null\n if (!entityType && !entities) return null\n\n // @ts-expect-error - entityType could be undefined but we check for entities above\n return <DetailsPanelInner {...props} entityType={entityType || entities?.entityType} />\n}\n"],"names":["entitiesWithoutFeed","DetailsPanelInner","entityType","entitySubTypes","entitiesData","entities","tagsOptions","disabledStatuses","projectUsers","disabledProjectUsers","activeProjectUsers","projectsInfo","projectNames","isSlideOut","style","scope","isCompact","onClose","onWatchersUpdate","onOpenViewer","onEntityFocus","onOpen","onUriOpen","annotations","removeAnnotation","exportAnnotationComposite","entityListId","guestCategories","entityListsContext","closeSlideOut","openPip","user","isGuest","contextEntities","setEntities","slideOut","useSearchParams","SubtasksManager","useNavigate","useDetailsPanelContext","currentTab","setTab","isFeed","useScopedDetailsPanel","_searchParams","setSearchParams","hasCalledOnOpen","useRef","activeEntityType","activeEntities","activeEntitySubTypes","activeEntitiesData","activeProjectNames","useEffect","projectInfo","useMemo","mergeProjectInfo","entityTypeIcons","buildEntityTypeIcons","entitiesToQuery","entity","entityDetailsData","isFetchingEntitiesDetails","isError","originalArgs","useGetEntitiesDetailsPanelQuery","detailsPanelEntityTypes","uriOpenFiredForId","targetId","uriEntity","allStatuses","getAllProjectStatuses","firstProject","firstProjectInfo","firstEntityData","lastEntityData","lastProject","entityPathSegments","entityPathVersions","useGetEntityPath","setEntityUri","setUri","useURIContext","folderPath","taskName","versionName","productName","extractEntityHierarchyFromParents","useDetailsPanelURLSync","clearSearchUrl","prev","newParams","handleClose","handleKeyDown","e","target","requestPipWindow","usePiPWindow","thumbnailInputRef","versionsInputRef","canUploadVersion","shareEntityLabel","name","parents","parts","handleOpenPip","isCommentingEnabled","jsx","ThumbnailUploadProvider","jsxs","Styled.Panel","Styled.Toolbar","EntityPath","Styled.RightTools","DetailsPanelMoreMenu","type","Watchers","Button","DetailsPanelHeader","args","ProjectContextProvider","FeedWrapper","DetailsPanelSubtasks","DetailsPanelFiles","FeedContextWrapper","DetailsPanelDetails","DetailsPanel","isOpen","props"],"mappings":"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"}