@ynput/ayon-frontend-shared 0.3.15 → 0.3.17

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