@ynput/ayon-frontend-shared 0.2.39 → 0.2.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +24 -22
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/api.cjs.js +1 -1
  5. package/dist/api.es.js +256 -248
  6. package/dist/api.es.js.map +1 -1
  7. package/dist/index.cjs.js +1 -1
  8. package/dist/index.es.js +11 -9
  9. package/dist/index.es.js.map +1 -1
  10. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
  11. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
  12. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +16 -16
  13. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
  14. package/dist/shared/src/api/queries/config/getConfig.cjs.js +2 -0
  15. package/dist/shared/src/api/queries/config/getConfig.cjs.js.map +1 -0
  16. package/dist/shared/src/api/queries/config/getConfig.es.js +111 -0
  17. package/dist/shared/src/api/queries/config/getConfig.es.js.map +1 -0
  18. package/dist/shared/src/api/queries/config/updateConfig.cjs.js +2 -0
  19. package/dist/shared/src/api/queries/config/updateConfig.cjs.js.map +1 -0
  20. package/dist/shared/src/api/queries/config/updateConfig.es.js +13 -0
  21. package/dist/shared/src/api/queries/config/updateConfig.es.js.map +1 -0
  22. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +1 -1
  23. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  24. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +5 -3
  25. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  26. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +1 -1
  27. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  28. package/dist/shared/src/api/queries/entities/updateEntity.es.js +5 -3
  29. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  30. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +1 -1
  31. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -1
  32. package/dist/shared/src/api/queries/links/getEntityLinks.es.js +106 -86
  33. package/dist/shared/src/api/queries/links/getEntityLinks.es.js.map +1 -1
  34. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +1 -1
  35. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  36. package/dist/shared/src/api/queries/overview/updateOverview.es.js +68 -66
  37. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  38. package/dist/shared/src/api/queries/users/getUsers.cjs.js +2 -2
  39. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  40. package/dist/shared/src/api/queries/users/getUsers.es.js +34 -32
  41. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  42. package/dist/shared/src/components/AddonLoadingScreen/AddonLoadingScreen.cjs.js +8 -7
  43. package/dist/shared/src/components/AddonLoadingScreen/AddonLoadingScreen.cjs.js.map +1 -1
  44. package/dist/shared/src/components/AddonLoadingScreen/AddonLoadingScreen.es.js +24 -20
  45. package/dist/shared/src/components/AddonLoadingScreen/AddonLoadingScreen.es.js.map +1 -1
  46. package/dist/shared/src/components/Chips/Chips.cjs.js +10 -6
  47. package/dist/shared/src/components/Chips/Chips.cjs.js.map +1 -1
  48. package/dist/shared/src/components/Chips/Chips.es.js +44 -38
  49. package/dist/shared/src/components/Chips/Chips.es.js.map +1 -1
  50. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +1 -1
  51. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  52. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +4 -2
  53. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  54. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  55. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  56. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +4 -2
  57. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  58. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  59. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  60. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +4 -2
  61. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  62. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +1 -1
  63. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  64. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +4 -2
  65. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  66. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  67. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  68. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +4 -2
  69. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  70. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  71. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  72. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +4 -2
  73. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  74. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  75. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  76. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +6 -4
  77. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  78. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  79. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  80. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +4 -2
  81. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  82. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
  83. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  84. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +28 -25
  85. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  86. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  87. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  88. package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js +5 -0
  89. package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js.map +1 -1
  90. package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js +5 -0
  91. package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js.map +1 -1
  92. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  93. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  94. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +4 -2
  95. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  96. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  97. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  98. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +4 -2
  99. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  100. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  101. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  102. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +4 -2
  103. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  104. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  105. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  106. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +6 -4
  107. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  108. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  109. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  110. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +4 -2
  111. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  112. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  113. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  114. package/dist/shared/src/components/RenameForm/RenameForm.es.js +4 -2
  115. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  116. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +1 -1
  117. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  118. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +4 -2
  119. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  120. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  121. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  122. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +4 -2
  123. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  124. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  125. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  126. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +5 -3
  127. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  128. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  129. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  130. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +4 -2
  131. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  132. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
  133. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  134. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +4 -2
  135. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  136. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  137. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  138. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +8 -6
  139. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  140. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  141. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  142. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +4 -2
  143. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  144. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  145. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  146. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +4 -2
  147. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  148. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  149. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  150. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +6 -4
  151. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  152. package/dist/shared/src/components/Watchers/Watchers.cjs.js +1 -1
  153. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  154. package/dist/shared/src/components/Watchers/Watchers.es.js +4 -2
  155. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  156. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  157. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  158. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +4 -2
  159. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  160. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  161. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  162. package/dist/shared/src/containers/Actions/Actions.es.js +4 -2
  163. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  164. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  165. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  166. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +4 -2
  167. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  168. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  169. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  170. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +4 -2
  171. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  172. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  173. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  174. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +4 -2
  175. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  176. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  177. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  178. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +5 -3
  179. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  180. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  181. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  182. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +4 -2
  183. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  184. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  185. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  186. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +4 -2
  187. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  188. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.cjs.js +1 -1
  189. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.cjs.js.map +1 -1
  190. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.es.js +4 -2
  191. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.es.js.map +1 -1
  192. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  193. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  194. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +4 -2
  195. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  196. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  197. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  198. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +4 -2
  199. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  200. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  201. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  202. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +4 -2
  203. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  204. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  205. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  206. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +4 -2
  207. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  208. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  209. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  210. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +4 -2
  211. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  212. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  213. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  214. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +4 -2
  215. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  216. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  217. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  218. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +4 -2
  219. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  220. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  221. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  222. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +4 -2
  223. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  224. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
  225. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  226. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +4 -2
  227. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  228. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  229. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  230. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +4 -2
  231. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  232. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  233. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  234. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +7 -5
  235. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  236. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +1 -1
  237. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  238. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +4 -2
  239. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  240. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  241. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  242. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +4 -2
  243. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  244. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  245. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  246. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +4 -2
  247. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  248. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  249. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  250. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +4 -2
  251. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  252. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  253. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  254. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +4 -2
  255. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  256. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  257. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  258. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +4 -2
  259. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  260. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  261. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  262. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +6 -4
  263. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  264. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  265. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  266. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +4 -2
  267. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  268. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  269. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  270. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +7 -5
  271. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  272. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  273. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  274. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +4 -2
  275. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  276. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  277. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  278. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +4 -2
  279. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  280. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  281. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  282. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +4 -2
  283. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  284. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  285. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  286. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +4 -2
  287. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  288. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  289. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  290. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +30 -28
  291. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  292. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  293. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  294. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +4 -2
  295. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  296. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  297. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  298. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +4 -2
  299. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  300. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  301. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  302. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +4 -2
  303. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  304. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  305. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  306. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +4 -2
  307. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  308. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  309. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  310. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +4 -2
  311. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  312. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  313. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  314. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +4 -2
  315. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  316. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  317. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  318. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +15 -13
  319. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  320. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.cjs.js +1 -1
  321. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.cjs.js.map +1 -1
  322. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.es.js +34 -21
  323. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.es.js.map +1 -1
  324. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  325. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  326. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +31 -28
  327. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  328. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  329. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  330. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +4 -2
  331. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  332. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  333. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  334. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +4 -2
  335. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  336. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  337. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  338. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +4 -2
  339. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  340. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  341. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  342. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +4 -2
  343. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  344. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  345. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  346. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +6 -4
  347. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  348. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  349. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  350. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +4 -2
  351. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  352. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js +1 -1
  353. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
  354. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js +4 -2
  355. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
  356. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +1 -1
  357. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -1
  358. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +4 -2
  359. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -1
  360. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +1 -1
  361. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  362. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +4 -2
  363. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  364. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  365. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  366. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +4 -2
  367. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  368. package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
  369. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  370. package/dist/shared/src/context/AddonProjectContext.es.js +6 -4
  371. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  372. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  373. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  374. package/dist/shared/src/context/DetailsPanelContext.es.js +6 -4
  375. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  376. package/dist/shared/src/context/GlobalContext.cjs.js +1 -1
  377. package/dist/shared/src/context/GlobalContext.cjs.js.map +1 -1
  378. package/dist/shared/src/context/GlobalContext.es.js +6 -4
  379. package/dist/shared/src/context/GlobalContext.es.js.map +1 -1
  380. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  381. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  382. package/dist/shared/src/context/PowerpackContext.es.js +8 -6
  383. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  384. package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
  385. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
  386. package/dist/shared/src/context/ProjectContext.es.js +44 -38
  387. package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
  388. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  389. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  390. package/dist/shared/src/context/ProjectFoldersContext.es.js +6 -4
  391. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  392. package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
  393. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  394. package/dist/shared/src/context/RemoteModulesContext.es.js +6 -4
  395. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  396. package/dist/shared/src/context/UriContext.cjs.js +1 -1
  397. package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
  398. package/dist/shared/src/context/UriContext.es.js +7 -5
  399. package/dist/shared/src/context/UriContext.es.js.map +1 -1
  400. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  401. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  402. package/dist/shared/src/context/WebsocketContext.es.js +6 -4
  403. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  404. package/dist/shared/src/hooks/useActionTriggers.cjs.js +1 -1
  405. package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
  406. package/dist/shared/src/hooks/useActionTriggers.es.js +4 -2
  407. package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
  408. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  409. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  410. package/dist/shared/src/hooks/useEntityUpdate.es.js +4 -2
  411. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  412. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js +1 -1
  413. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js.map +1 -1
  414. package/dist/shared/src/hooks/useGetEntityGroups.es.js +4 -2
  415. package/dist/shared/src/hooks/useGetEntityGroups.es.js.map +1 -1
  416. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  417. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  418. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +4 -2
  419. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  420. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +1 -1
  421. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  422. package/dist/shared/src/hooks/useScopedStatuses.es.js +6 -4
  423. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  424. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  425. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  426. package/dist/shared/src/hooks/useUserProjectConfig.es.js +4 -2
  427. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  428. package/dist/types/api/queries/config/getConfig.d.ts +747 -0
  429. package/dist/types/api/queries/config/index.d.ts +2 -0
  430. package/dist/types/api/queries/config/updateConfig.d.ts +171 -0
  431. package/dist/types/api/queries/index.d.ts +1 -0
  432. package/dist/types/api/queries/links/getEntityLinks.d.ts +2 -1
  433. package/dist/types/components/AddonLoadingScreen/AddonLoadingScreen.d.ts +7 -2
  434. package/dist/types/components/Chips/Chips.d.ts +1 -0
  435. package/dist/types/components/LinksManager/LinksManager.d.ts +1 -0
  436. package/package.json +1 -1
@@ -55,6 +55,8 @@ import "../api/queries/attributes/getAttributes.es.js";
55
55
  import "../api/queries/attributes/updateAttributes.es.js";
56
56
  import "../api/queries/authentication/getAuthentication.es.js";
57
57
  import "../api/queries/cloud/cloud.es.js";
58
+ import "../api/queries/config/getConfig.es.js";
59
+ import "../api/queries/config/updateConfig.es.js";
58
60
  import "../api/queries/entities/getEntity.es.js";
59
61
  import "../api/queries/entities/getEntityPanel.es.js";
60
62
  import "../api/queries/entities/updateEntity.es.js";
@@ -88,7 +90,7 @@ import "../api/queries/views/getViews.es.js";
88
90
  import "../api/queries/views/updateViews.es.js";
89
91
  import "../api/queries/watchers/getWatchers.es.js";
90
92
  import { useResolveUrisMutation as j } from "../api/queries/uris/getUris.es.js";
91
- const ao = "uri", c = I(void 0), uo = ({ children: i }) => {
93
+ const lo = "uri", c = I(void 0), Uo = ({ children: i }) => {
92
94
  const e = location.pathname, [o, r] = g(""), a = ["projects", "settings", "dashboard/tasks"];
93
95
  w(() => {
94
96
  a.some((p) => e.startsWith(`/${p}`)) || r("");
@@ -117,15 +119,15 @@ const ao = "uri", c = I(void 0), uo = ({ children: i }) => {
117
119
  getUriEntities: R
118
120
  };
119
121
  return /* @__PURE__ */ y.jsx(c.Provider, { value: d, children: i });
120
- }, lo = () => {
122
+ }, Ro = () => {
121
123
  const i = C(c);
122
124
  if (i === void 0)
123
125
  throw new Error("useURIContext must be used within a URIProvider");
124
126
  return i;
125
127
  };
126
128
  export {
127
- uo as URIProvider,
128
- ao as URL_PARAM_ID,
129
- lo as useURIContext
129
+ Uo as URIProvider,
130
+ lo as URL_PARAM_ID,
131
+ Ro as useURIContext
130
132
  };
131
133
  //# sourceMappingURL=UriContext.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UriContext.es.js","sources":["../../../../src/context/UriContext.tsx"],"sourcesContent":["// The URI is a unique AYON ID for entities and settings paths\n// Entity: ayon+entity://project_name/shots/000_logo/000_0010?task=lighting\n// Settings: ayon+settings://maya/ext_mapping/0/name\n\n// Components can update the URI when changing context, like opening the details panel or navigating to a settings page\n// Components state should not be directly synced to the URI, they should only read the URI on mount to set initial state\n\nimport { createContext, useContext, useEffect, ReactNode, FC, useCallback, useState } from 'react'\nimport { buildEntityUri, parseUri } from '../util'\nimport { ResolvedUriModel, useResolveUrisMutation } from '@shared/api'\n\nexport const URL_PARAM_ID = 'uri'\n\ntype SetEntityUriFunc = ({\n projectName,\n folderPath,\n taskName,\n productName,\n versionName,\n}: {\n projectName: string\n folderPath: string\n taskName?: string\n productName?: string\n versionName?: string\n}) => void\n\nexport type EntityUri = {\n projectName: string\n entityType: 'task' | 'folder' | 'product' | 'version'\n folderPath: string\n taskName?: string\n productName?: string\n versionName?: string\n}\n\nexport type SettingsUri = {\n addonName: string\n addonVersion: string\n settingsPath: string[]\n site: string | undefined\n project: string | undefined\n}\n\ninterface URIContextValue {\n uri: string\n uriType: 'settings' | 'entity' | undefined\n entity?: EntityUri\n settings?: SettingsUri\n setUri: (uri: string) => void\n setEntityUri: SetEntityUriFunc\n getUriEntities: () => Promise<ResolvedUriModel[]>\n}\n\ninterface URIProviderProps {\n children: ReactNode\n}\n\nconst URIContext = createContext<URIContextValue | undefined>(undefined)\n\nconst URIProvider: FC<URIProviderProps> = ({ children }) => {\n const pathname = location.pathname\n\n const [uri, setUri] = useState('')\n\n // when the scope is outside settings and project, set uri to null\n const scopes = ['projects', 'settings', 'dashboard/tasks']\n useEffect(() => {\n const matchingScope = scopes.some((scope) => pathname.startsWith(`/${scope}`))\n\n if (!matchingScope) {\n setUri('')\n }\n }, [pathname, setUri])\n\n const { type: uriType, entity, settings } = parseUri(uri)\n\n // helper function to set an entity URI\n const setEntityUri = useCallback<SetEntityUriFunc>(\n ({ projectName, folderPath, taskName, productName, versionName }) => {\n const uri = buildEntityUri({ projectName, folderPath, taskName, productName, versionName })\n setUri(uri)\n },\n [setUri],\n )\n\n // helper function to get entity ids from URI so that we can actually do something with it\n const [resolveUris] = useResolveUrisMutation()\n const getUriEntities = useCallback(async () => {\n if (uriType !== 'entity' || !uri) return []\n\n try {\n const entities = await resolveUris({ resolveRequestModel: { uris: [uri] } }).unwrap()\n // we could set more detailed entity info here if needed\n // for now we just log it\n console.log('Resolved entity from URI:', entities)\n\n return entities\n } catch (error) {\n console.warn('Failed to resolve URI:', error)\n return []\n }\n }, [resolveUris, uri, uriType])\n\n const contextValue: URIContextValue = {\n uri,\n uriType,\n entity,\n settings,\n setUri,\n setEntityUri,\n getUriEntities,\n }\n\n return <URIContext.Provider value={contextValue}>{children}</URIContext.Provider>\n}\n\nconst useURIContext = (): URIContextValue => {\n const context = useContext(URIContext)\n if (context === undefined) {\n throw new Error('useURIContext must be used within a URIProvider')\n }\n return context\n}\n\nexport { URIProvider, useURIContext }\n"],"names":["URL_PARAM_ID","URIContext","createContext","URIProvider","children","pathname","uri","setUri","useState","scopes","useEffect","scope","uriType","entity","settings","parseUri","setEntityUri","useCallback","projectName","folderPath","taskName","productName","versionName","buildEntityUri","resolveUris","useResolveUrisMutation","getUriEntities","entities","error","contextValue","useURIContext","context","useContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,MAAMA,KAAe,OA+CtBC,IAAaC,EAA2C,MAAS,GAEjEC,KAAoC,CAAC,EAAE,UAAAC,QAAe;AAC1D,QAAMC,IAAW,SAAS,UAEpB,CAACC,GAAKC,CAAM,IAAIC,EAAS,EAAE,GAG3BC,IAAS,CAAC,YAAY,YAAY,iBAAiB;AACzD,EAAAC,EAAU,MAAM;AAGd,IAFsBD,EAAO,KAAK,CAACE,MAAUN,EAAS,WAAW,IAAIM,CAAK,EAAE,CAAC,KAG3EJ,EAAO,EAAE;AAAA,EACX,GACC,CAACF,GAAUE,CAAM,CAAC;AAErB,QAAM,EAAE,MAAMK,GAAS,QAAAC,GAAQ,UAAAC,EAAS,IAAIC,EAAST,CAAG,GAGlDU,IAAeC;AAAA,IACnB,CAAC,EAAE,aAAAC,GAAa,YAAAC,GAAY,UAAAC,GAAU,aAAAC,GAAa,aAAAC,QAAkB;AAC7DhB,YAAAA,IAAMiB,EAAe,EAAE,aAAAL,GAAa,YAAAC,GAAY,UAAAC,GAAU,aAAAC,GAAa,aAAAC,GAAa;AAC1F,MAAAf,EAAOD,CAAG;AAAA,IACZ;AAAA,IACA,CAACC,CAAM;AAAA,EACT,GAGM,CAACiB,CAAW,IAAIC,EAAuB,GACvCC,IAAiBT,EAAY,YAAY;AAC7C,QAAIL,MAAY,YAAY,CAACN,UAAY,CAAC;AAEtC,QAAA;AACF,YAAMqB,IAAW,MAAMH,EAAY,EAAE,qBAAqB,EAAE,MAAM,CAAClB,CAAG,EAAA,GAAK,EAAE,OAAO;AAG5E,qBAAA,IAAI,6BAA6BqB,CAAQ,GAE1CA;AAAA,aACAC,GAAO;AACN,qBAAA,KAAK,0BAA0BA,CAAK,GACrC,CAAC;AAAA,IAAA;AAAA,EAET,GAAA,CAACJ,GAAalB,GAAKM,CAAO,CAAC,GAExBiB,IAAgC;AAAA,IACpC,KAAAvB;AAAA,IACA,SAAAM;AAAA,IACA,QAAAC;AAAA,IACA,UAAAC;AAAA,IACA,QAAAP;AAAA,IACA,cAAAS;AAAA,IACA,gBAAAU;AAAA,EACF;AAEA,+BAAQzB,EAAW,UAAX,EAAoB,OAAO4B,GAAe,UAAAzB,GAAS;AAC7D,GAEM0B,KAAgB,MAAuB;AACrC,QAAAC,IAAUC,EAAW/B,CAAU;AACrC,MAAI8B,MAAY;AACR,UAAA,IAAI,MAAM,iDAAiD;AAE5D,SAAAA;AACT;"}
1
+ {"version":3,"file":"UriContext.es.js","sources":["../../../../src/context/UriContext.tsx"],"sourcesContent":["// The URI is a unique AYON ID for entities and settings paths\n// Entity: ayon+entity://project_name/shots/000_logo/000_0010?task=lighting\n// Settings: ayon+settings://maya/ext_mapping/0/name\n\n// Components can update the URI when changing context, like opening the details panel or navigating to a settings page\n// Components state should not be directly synced to the URI, they should only read the URI on mount to set initial state\n\nimport { createContext, useContext, useEffect, ReactNode, FC, useCallback, useState } from 'react'\nimport { buildEntityUri, parseUri } from '../util'\nimport { ResolvedUriModel, useResolveUrisMutation } from '@shared/api'\n\nexport const URL_PARAM_ID = 'uri'\n\ntype SetEntityUriFunc = ({\n projectName,\n folderPath,\n taskName,\n productName,\n versionName,\n}: {\n projectName: string\n folderPath: string\n taskName?: string\n productName?: string\n versionName?: string\n}) => void\n\nexport type EntityUri = {\n projectName: string\n entityType: 'task' | 'folder' | 'product' | 'version'\n folderPath: string\n taskName?: string\n productName?: string\n versionName?: string\n}\n\nexport type SettingsUri = {\n addonName: string\n addonVersion: string\n settingsPath: string[]\n site: string | undefined\n project: string | undefined\n}\n\ninterface URIContextValue {\n uri: string\n uriType: 'settings' | 'entity' | undefined\n entity?: EntityUri\n settings?: SettingsUri\n setUri: (uri: string) => void\n setEntityUri: SetEntityUriFunc\n getUriEntities: () => Promise<ResolvedUriModel[]>\n}\n\ninterface URIProviderProps {\n children: ReactNode\n}\n\nconst URIContext = createContext<URIContextValue | undefined>(undefined)\n\nconst URIProvider: FC<URIProviderProps> = ({ children }) => {\n const pathname = location.pathname\n\n const [uri, setUri] = useState('')\n\n // when the scope is outside settings and project, set uri to null\n const scopes = ['projects', 'settings', 'dashboard/tasks']\n useEffect(() => {\n const matchingScope = scopes.some((scope) => pathname.startsWith(`/${scope}`))\n\n if (!matchingScope) {\n setUri('')\n }\n }, [pathname, setUri])\n\n const { type: uriType, entity, settings } = parseUri(uri)\n\n // helper function to set an entity URI\n const setEntityUri = useCallback<SetEntityUriFunc>(\n ({ projectName, folderPath, taskName, productName, versionName }) => {\n const uri = buildEntityUri({ projectName, folderPath, taskName, productName, versionName })\n setUri(uri)\n },\n [setUri],\n )\n\n // helper function to get entity ids from URI so that we can actually do something with it\n const [resolveUris] = useResolveUrisMutation()\n const getUriEntities = useCallback(async () => {\n if (uriType !== 'entity' || !uri) return []\n\n try {\n const entities = await resolveUris({ resolveRequestModel: { uris: [uri] } }).unwrap()\n // we could set more detailed entity info here if needed\n // for now we just log it\n console.log('Resolved entity from URI:', entities)\n\n return entities\n } catch (error) {\n console.warn('Failed to resolve URI:', error)\n return []\n }\n }, [resolveUris, uri, uriType])\n\n const contextValue: URIContextValue = {\n uri,\n uriType,\n entity,\n settings,\n setUri,\n setEntityUri,\n getUriEntities,\n }\n\n return <URIContext.Provider value={contextValue}>{children}</URIContext.Provider>\n}\n\nconst useURIContext = (): URIContextValue => {\n const context = useContext(URIContext)\n if (context === undefined) {\n throw new Error('useURIContext must be used within a URIProvider')\n }\n return context\n}\n\nexport { URIProvider, useURIContext }\n"],"names":["URL_PARAM_ID","URIContext","createContext","URIProvider","children","pathname","uri","setUri","useState","scopes","useEffect","scope","uriType","entity","settings","parseUri","setEntityUri","useCallback","projectName","folderPath","taskName","productName","versionName","buildEntityUri","resolveUris","useResolveUrisMutation","getUriEntities","entities","error","contextValue","useURIContext","context","useContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,MAAMA,KAAe,OA+CtBC,IAAaC,EAA2C,MAAS,GAEjEC,KAAoC,CAAC,EAAE,UAAAC,QAAe;AAC1D,QAAMC,IAAW,SAAS,UAEpB,CAACC,GAAKC,CAAM,IAAIC,EAAS,EAAE,GAG3BC,IAAS,CAAC,YAAY,YAAY,iBAAiB;AACzD,EAAAC,EAAU,MAAM;AAGd,IAFsBD,EAAO,KAAK,CAACE,MAAUN,EAAS,WAAW,IAAIM,CAAK,EAAE,CAAC,KAG3EJ,EAAO,EAAE;AAAA,EACX,GACC,CAACF,GAAUE,CAAM,CAAC;AAErB,QAAM,EAAE,MAAMK,GAAS,QAAAC,GAAQ,UAAAC,EAAS,IAAIC,EAAST,CAAG,GAGlDU,IAAeC;AAAA,IACnB,CAAC,EAAE,aAAAC,GAAa,YAAAC,GAAY,UAAAC,GAAU,aAAAC,GAAa,aAAAC,QAAkB;AAC7DhB,YAAAA,IAAMiB,EAAe,EAAE,aAAAL,GAAa,YAAAC,GAAY,UAAAC,GAAU,aAAAC,GAAa,aAAAC,GAAa;AAC1F,MAAAf,EAAOD,CAAG;AAAA,IACZ;AAAA,IACA,CAACC,CAAM;AAAA,EACT,GAGM,CAACiB,CAAW,IAAIC,EAAuB,GACvCC,IAAiBT,EAAY,YAAY;AAC7C,QAAIL,MAAY,YAAY,CAACN,UAAY,CAAC;AAEtC,QAAA;AACF,YAAMqB,IAAW,MAAMH,EAAY,EAAE,qBAAqB,EAAE,MAAM,CAAClB,CAAG,EAAA,GAAK,EAAE,OAAO;AAG5E,qBAAA,IAAI,6BAA6BqB,CAAQ,GAE1CA;AAAA,aACAC,GAAO;AACN,qBAAA,KAAK,0BAA0BA,CAAK,GACrC,CAAC;AAAA,IAAA;AAAA,EAET,GAAA,CAACJ,GAAalB,GAAKM,CAAO,CAAC,GAExBiB,IAAgC;AAAA,IACpC,KAAAvB;AAAA,IACA,SAAAM;AAAA,IACA,QAAAC;AAAA,IACA,UAAAC;AAAA,IACA,QAAAP;AAAA,IACA,cAAAS;AAAA,IACA,gBAAAU;AAAA,EACF;AAEA,+BAAQzB,EAAW,UAAX,EAAoB,OAAO4B,GAAe,UAAAzB,GAAS;AAC7D,GAEM0B,KAAgB,MAAuB;AACrC,QAAAC,IAAUC,EAAW/B,CAAU;AACrC,MAAI8B,MAAY;AACR,UAAA,IAAI,MAAM,iDAAiD;AAE5D,SAAAA;AACT;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("../../../_virtual/jsx-runtime.cjs.js"),e=require("react"),x=require("react-toastify"),C=require("lodash");require("uuid");const l=require("../util/pubsub.cjs.js"),k=require("../../../_virtual/index.cjs.js"),A=require("../api/base/client.cjs.js");require("../api/generated/graphql.cjs.js");require("../api/generated/graphqlLinks.cjs.js");require("../api/generated/access.cjs.js");require("../api/generated/actions.cjs.js");require("../api/generated/activityFeed.cjs.js");require("../api/generated/addons.cjs.js");require("../api/generated/anatomy.cjs.js");require("../api/generated/attributes.cjs.js");require("../api/generated/authentication.cjs.js");require("../api/generated/bundles.cjs.js");require("../api/generated/configuration.cjs.js");require("../api/generated/desktop.cjs.js");require("../api/generated/entityLists.cjs.js");require("../api/generated/events.cjs.js");require("../api/generated/files.cjs.js");require("../api/generated/folders.cjs.js");require("../api/generated/inbox.cjs.js");require("../api/generated/links.cjs.js");require("../api/generated/market.cjs.js");require("../api/generated/onboarding.cjs.js");require("../api/generated/operations.cjs.js");require("../api/generated/products.cjs.js");require("../api/generated/projectDashboard.cjs.js");require("../api/generated/projects.cjs.js");require("../api/generated/reviewables.cjs.js");require("../api/generated/services.cjs.js");require("../api/generated/system.cjs.js");require("../api/generated/tasks.cjs.js");require("../api/generated/teams.cjs.js");require("../api/generated/thumbnails.cjs.js");require("../api/generated/uRIs.cjs.js");require("../api/generated/users.cjs.js");require("../api/generated/versions.cjs.js");require("../api/generated/workfiles.cjs.js");require("../api/generated/ynputCloud.cjs.js");require("../api/generated/grouping.cjs.js");require("../api/generated/views.cjs.js");require("../api/queries/actions/getActions.cjs.js");require("../api/queries/activities/getActivities.cjs.js");require("../api/queries/activities/updateActivities.cjs.js");require("../api/queries/activities/updateReaction.cjs.js");require("../api/queries/activities/getMentions.cjs.js");require("../api/queries/activities/getCategories.cjs.js");require("../api/queries/addons/getAddons.cjs.js");require("../api/queries/addons/updateAddons.cjs.js");require("../api/queries/attributes/getAttributes.cjs.js");require("../api/queries/attributes/updateAttributes.cjs.js");require("../api/queries/authentication/getAuthentication.cjs.js");require("../api/queries/cloud/cloud.cjs.js");require("../api/queries/entities/getEntity.cjs.js");require("../api/queries/entities/getEntityPanel.cjs.js");require("../api/queries/entities/updateEntity.cjs.js");require("../api/queries/entityLists/getLists.cjs.js");require("../api/queries/entityLists/updateLists.cjs.js");require("../api/queries/entityLists/getListsAttributes.cjs.js");require("../api/queries/entityLists/updateListsAttributes.cjs.js");require("../api/queries/entityLists/listFolders.cjs.js");require("../api/queries/folders/getFolders.cjs.js");require("../api/queries/grouping/getGrouping.cjs.js");require("../api/queries/links/updateLinks.cjs.js");require("../api/queries/links/getLinks.cjs.js");require("../api/queries/links/getEntityLinks.cjs.js");require("../api/queries/overview/getOverview.cjs.js");require("../api/queries/overview/updateOverview.cjs.js");require("../api/queries/versions/getVersionsProducts.cjs.js");require("../api/queries/permissions/getPermissions.cjs.js");require("../api/queries/products/createProduct.cjs.js");require("../api/queries/project/getProject.cjs.js");require("../api/queries/project/updateProject.cjs.js");require("../api/queries/review/getReview.cjs.js");require("../api/queries/review/updateReview.cjs.js");require("../api/queries/share/share.cjs.js");const J=require("../api/queries/system/getSystem.cjs.js");require("../api/queries/userDashboard/getUserDashboard.cjs.js");require("../api/queries/users/getUsers.cjs.js");require("../api/queries/users/updateUsers.cjs.js");require("../api/queries/users/guests.cjs.js");require("../api/queries/versions/updateVersions.cjs.js");require("../api/queries/views/getViews.cjs.js");require("../api/queries/views/updateViews.cjs.js");require("../api/queries/watchers/getWatchers.cjs.js");require("../api/queries/uris/getUris.cjs.js");require("../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("@ynput/ayon-react-components");require("clsx");require("../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../containers/ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("axios");require("./RemoteModulesContext.cjs.js");require("./DetailsPanelContext.cjs.js");require("./ThumbnailUploaderContext.cjs.js");require("./SettingsPanelContext.cjs.js");require("./pip/PiPProvider.cjs.js");require("react-dom");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("../components/ReviewableCard/ReviewableCard.cjs.js");require("../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../components/FileThumbnail/FileThumbnail.cjs.js");require("../components/Thumbnail/Thumbnail.styled.cjs.js");require("../components/Thumbnail/StackedThumbnails.cjs.js");require("../containers/Feed/context/FeedContext.cjs.js");require("../containers/Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../containers/Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../containers/Feed/components/CommentInput/CommentInput.cjs.js");require("../containers/Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../containers/Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../containers/Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../containers/Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../containers/Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../containers/Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../containers/Feed/components/ActivityDate.cjs.js");require("../containers/Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../containers/Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../containers/Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../containers/Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../containers/Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../containers/Feed/Feed.styled.cjs.js");require("date-fns");require("../containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../containers/Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../containers/ProjectTreeTable/ProjectTreeTable.cjs.js");require("../containers/ProjectTreeTable/context/CellEditingContext.cjs.js");require("short-uuid");require("@tanstack/react-table");require("../containers/ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/DateWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/TextWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/CellWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../components/LinksManager/CellEditingDialog.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/widgets/EmptyWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../containers/ProjectTreeTable/components/SelectionCell.cjs.js");require("../containers/ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../containers/ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../containers/ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../containers/ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../containers/ProjectTreeTable/context/ClipboardContext.cjs.js");require("../containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../containers/ProjectTreeTable/context/ProjectDataContext.cjs.js");require("../../../_virtual/runtime.cjs.js");require("../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("../containers/ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js");require("../containers/DetailsPanel/DetailsPanel.styled.cjs.js");require("../containers/DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");require("../containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../components/PlayableIcon/PlayableIcon.cjs.js");require("../containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../containers/Actions/Actions.styled.cjs.js");require("../containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../containers/Actions/ActionIcon.cjs.js");require("../containers/Views/context/ViewsContext.cjs.js");require("../containers/Views/Views.styled.cjs.js");require("../containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../containers/Views/ViewsMenu/ViewsMenu.cjs.js");require("../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../components/EntityPath/EntityPath.styled.cjs.js");require("../components/EntityPath/SegmentProvider.cjs.js");require("../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../components/Watchers/Watchers.cjs.js");require("../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../components/Powerpack/PowerpackButton.cjs.js");require("../components/Powerpack/PricingLink.cjs.js");require("../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../components/Powerpack/CTAButton.cjs.js");require("../components/Powerpack/RequiredAddonVersion.cjs.js");require("../components/SizeSlider/SizeSlider.cjs.js");require("../components/SettingsPanel/SettingsPanel.cjs.js");require("../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../components/AttributeEditor/components/MinMaxField.cjs.js");require("../components/EnumEditor/EnumEditor.styled.cjs.js");require("../components/SearchFilter/filterDates.cjs.js");require("../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../components/Badge/Badge.cjs.js");require("../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../components/Feedback/FeedbackContext.cjs.js");require("../components/Feedback/SupportBubble.cjs.js");require("../components/Chips/Chips.cjs.js");require("../containers/EntityPickerDialog/EntityPickerDialog.cjs.js");require("../components/StyledLink/StyledLink.cjs.js");require("../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../components/AccessUser/AccessUser.cjs.js");require("../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");const N=require("../components/RefreshToast/RefreshToast.cjs.js");require("../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../components/SortingSetting/SortingSetting.styled.cjs.js");require("../components/EarlyPreview/EarlyPreview.cjs.js");require("../components/LegacyBadge/LegacyBadge.cjs.js");require("../components/Menu/Menu.styled.cjs.js");require("../components/Menu/MenuItem.cjs.js");const d=e.createContext(void 0),V=window.location.protocol.replace("http","ws"),W=`${V}//${window.location.host}/ws`,z=({children:q,userName:v,projectName:f,dispatch:m})=>{const[S,o]=e.useState(!1),[t,R]=e.useState([]),[y]=J.useLazyGetSiteInfoQuery(),T={shouldReconnect:()=>!v||!localStorage.getItem("accessToken")?!1:(y({full:!1}).unwrap(),!0)},{sendMessage:E,readyState:n,getWebSocket:c}=k.default(W,T),g=()=>{E(JSON.stringify({topic:"auth",token:localStorage.getItem("accessToken"),subscribe:t,project:f}))};e.useEffect(()=>{console.debug("Topics changed",t),g()},[t,f]);const O=C.debounce(r=>{C.isEqual(t,r)||(console.log("WS: Subscriptions changed"),R(r))},200);l.setOnSubscriptionsChange(r=>O(r));const[p,a]=e.useState(!1),[j,I]=e.useState(!1);e.useEffect(()=>(p&&(j||(x.toast.warning(w.jsxRuntimeExports.jsx(N.RefreshToast,{}),{autoClose:!1,closeButton:!1}),I(!0))),()=>{a(!1)}),[p,a]);const i=e.useRef({callCount:0,lastCall:Date.now()}),P=e.useCallback(r=>{var b;if(i.current.callCount>1e3)return a(!0),console.log("Overload: Over 1000 messages per second. Ignoring subsequent messages.");let u;try{u=JSON.parse(r.data)}catch($){console.error("Failed to parse websocket message:",$,r.data);return}const{topic:s,sender:D,summary:M}=u||{};if(s==="heartbeat"||(s==="server.restart_requested"&&o(!0),D===window.senderId))return;const h=Date.now();h-i.current.lastCall<1e3?i.current.callCount+=1:i.current.callCount=0,i.current.lastCall=h,s==="shout"&&((b=u==null?void 0:u.summary)!=null&&b.text)&&x.toast.info(M.text),console.log("Event RX",u),l.publish(s,u)},[o]);return e.useEffect(()=>{n===k.distExports.ReadyState.OPEN&&(S&&(o(!1),m(A.api.util.resetApiState())),c().onmessage=P,g(),l.publish("client.connected",{topic:"client.connected"}))},[n,c]),w.jsxRuntimeExports.jsx(d.Provider,{value:{getWebSocket:c,readyState:n,serverRestartingVisible:S},children:q})},B=()=>{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=z;exports.useSocketContext=B;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("../../../_virtual/jsx-runtime.cjs.js"),e=require("react"),x=require("react-toastify"),C=require("lodash");require("uuid");const l=require("../util/pubsub.cjs.js"),k=require("../../../_virtual/index.cjs.js"),A=require("../api/base/client.cjs.js");require("../api/generated/graphql.cjs.js");require("../api/generated/graphqlLinks.cjs.js");require("../api/generated/access.cjs.js");require("../api/generated/actions.cjs.js");require("../api/generated/activityFeed.cjs.js");require("../api/generated/addons.cjs.js");require("../api/generated/anatomy.cjs.js");require("../api/generated/attributes.cjs.js");require("../api/generated/authentication.cjs.js");require("../api/generated/bundles.cjs.js");require("../api/generated/configuration.cjs.js");require("../api/generated/desktop.cjs.js");require("../api/generated/entityLists.cjs.js");require("../api/generated/events.cjs.js");require("../api/generated/files.cjs.js");require("../api/generated/folders.cjs.js");require("../api/generated/inbox.cjs.js");require("../api/generated/links.cjs.js");require("../api/generated/market.cjs.js");require("../api/generated/onboarding.cjs.js");require("../api/generated/operations.cjs.js");require("../api/generated/products.cjs.js");require("../api/generated/projectDashboard.cjs.js");require("../api/generated/projects.cjs.js");require("../api/generated/reviewables.cjs.js");require("../api/generated/services.cjs.js");require("../api/generated/system.cjs.js");require("../api/generated/tasks.cjs.js");require("../api/generated/teams.cjs.js");require("../api/generated/thumbnails.cjs.js");require("../api/generated/uRIs.cjs.js");require("../api/generated/users.cjs.js");require("../api/generated/versions.cjs.js");require("../api/generated/workfiles.cjs.js");require("../api/generated/ynputCloud.cjs.js");require("../api/generated/grouping.cjs.js");require("../api/generated/views.cjs.js");require("../api/queries/actions/getActions.cjs.js");require("../api/queries/activities/getActivities.cjs.js");require("../api/queries/activities/updateActivities.cjs.js");require("../api/queries/activities/updateReaction.cjs.js");require("../api/queries/activities/getMentions.cjs.js");require("../api/queries/activities/getCategories.cjs.js");require("../api/queries/addons/getAddons.cjs.js");require("../api/queries/addons/updateAddons.cjs.js");require("../api/queries/attributes/getAttributes.cjs.js");require("../api/queries/attributes/updateAttributes.cjs.js");require("../api/queries/authentication/getAuthentication.cjs.js");require("../api/queries/cloud/cloud.cjs.js");require("../api/queries/config/getConfig.cjs.js");require("../api/queries/config/updateConfig.cjs.js");require("../api/queries/entities/getEntity.cjs.js");require("../api/queries/entities/getEntityPanel.cjs.js");require("../api/queries/entities/updateEntity.cjs.js");require("../api/queries/entityLists/getLists.cjs.js");require("../api/queries/entityLists/updateLists.cjs.js");require("../api/queries/entityLists/getListsAttributes.cjs.js");require("../api/queries/entityLists/updateListsAttributes.cjs.js");require("../api/queries/entityLists/listFolders.cjs.js");require("../api/queries/folders/getFolders.cjs.js");require("../api/queries/grouping/getGrouping.cjs.js");require("../api/queries/links/updateLinks.cjs.js");require("../api/queries/links/getLinks.cjs.js");require("../api/queries/links/getEntityLinks.cjs.js");require("../api/queries/overview/getOverview.cjs.js");require("../api/queries/overview/updateOverview.cjs.js");require("../api/queries/versions/getVersionsProducts.cjs.js");require("../api/queries/permissions/getPermissions.cjs.js");require("../api/queries/products/createProduct.cjs.js");require("../api/queries/project/getProject.cjs.js");require("../api/queries/project/updateProject.cjs.js");require("../api/queries/review/getReview.cjs.js");require("../api/queries/review/updateReview.cjs.js");require("../api/queries/share/share.cjs.js");const J=require("../api/queries/system/getSystem.cjs.js");require("../api/queries/userDashboard/getUserDashboard.cjs.js");require("../api/queries/users/getUsers.cjs.js");require("../api/queries/users/updateUsers.cjs.js");require("../api/queries/users/guests.cjs.js");require("../api/queries/versions/updateVersions.cjs.js");require("../api/queries/views/getViews.cjs.js");require("../api/queries/views/updateViews.cjs.js");require("../api/queries/watchers/getWatchers.cjs.js");require("../api/queries/uris/getUris.cjs.js");require("../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("@ynput/ayon-react-components");require("clsx");require("../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../containers/ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("axios");require("./RemoteModulesContext.cjs.js");require("./DetailsPanelContext.cjs.js");require("./ThumbnailUploaderContext.cjs.js");require("./SettingsPanelContext.cjs.js");require("./pip/PiPProvider.cjs.js");require("react-dom");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("../components/ReviewableCard/ReviewableCard.cjs.js");require("../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../components/FileThumbnail/FileThumbnail.cjs.js");require("../components/Thumbnail/Thumbnail.styled.cjs.js");require("../components/Thumbnail/StackedThumbnails.cjs.js");require("../containers/Feed/context/FeedContext.cjs.js");require("../containers/Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../containers/Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../containers/Feed/components/CommentInput/CommentInput.cjs.js");require("../containers/Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../containers/Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../containers/Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../containers/Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../containers/Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../containers/Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../containers/Feed/components/ActivityDate.cjs.js");require("../containers/Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../containers/Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../containers/Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../containers/Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../containers/Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../containers/Feed/Feed.styled.cjs.js");require("date-fns");require("../containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../containers/Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../containers/ProjectTreeTable/ProjectTreeTable.cjs.js");require("../containers/ProjectTreeTable/context/CellEditingContext.cjs.js");require("short-uuid");require("@tanstack/react-table");require("../containers/ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/DateWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/TextWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/CellWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../components/LinksManager/CellEditingDialog.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/widgets/EmptyWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../containers/ProjectTreeTable/components/SelectionCell.cjs.js");require("../containers/ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../containers/ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../containers/ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../containers/ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../containers/ProjectTreeTable/context/ClipboardContext.cjs.js");require("../containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../containers/ProjectTreeTable/context/ProjectDataContext.cjs.js");require("../../../_virtual/runtime.cjs.js");require("../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("../containers/ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js");require("../containers/DetailsPanel/DetailsPanel.styled.cjs.js");require("../containers/DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");require("../containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../components/PlayableIcon/PlayableIcon.cjs.js");require("../containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../containers/Actions/Actions.styled.cjs.js");require("../containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../containers/Actions/ActionIcon.cjs.js");require("../containers/Views/context/ViewsContext.cjs.js");require("../containers/Views/Views.styled.cjs.js");require("../containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../containers/Views/ViewsMenu/ViewsMenu.cjs.js");require("../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../components/EntityPath/EntityPath.styled.cjs.js");require("../components/EntityPath/SegmentProvider.cjs.js");require("../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../components/Watchers/Watchers.cjs.js");require("../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../components/Powerpack/PowerpackButton.cjs.js");require("../components/Powerpack/PricingLink.cjs.js");require("../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../components/Powerpack/CTAButton.cjs.js");require("../components/Powerpack/RequiredAddonVersion.cjs.js");require("../components/SizeSlider/SizeSlider.cjs.js");require("../components/SettingsPanel/SettingsPanel.cjs.js");require("../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../components/AttributeEditor/components/MinMaxField.cjs.js");require("../components/EnumEditor/EnumEditor.styled.cjs.js");require("../components/SearchFilter/filterDates.cjs.js");require("../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../components/Badge/Badge.cjs.js");require("../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../components/Feedback/FeedbackContext.cjs.js");require("../components/Feedback/SupportBubble.cjs.js");require("../components/Chips/Chips.cjs.js");require("../containers/EntityPickerDialog/EntityPickerDialog.cjs.js");require("../components/StyledLink/StyledLink.cjs.js");require("../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../components/AccessUser/AccessUser.cjs.js");require("../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");const N=require("../components/RefreshToast/RefreshToast.cjs.js");require("../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../components/SortingSetting/SortingSetting.styled.cjs.js");require("../components/EarlyPreview/EarlyPreview.cjs.js");require("../components/LegacyBadge/LegacyBadge.cjs.js");require("../components/Menu/Menu.styled.cjs.js");require("../components/Menu/MenuItem.cjs.js");const d=e.createContext(void 0),V=window.location.protocol.replace("http","ws"),W=`${V}//${window.location.host}/ws`,z=({children:q,userName:v,projectName:f,dispatch:m})=>{const[S,o]=e.useState(!1),[t,R]=e.useState([]),[y]=J.useLazyGetSiteInfoQuery(),T={shouldReconnect:()=>!v||!localStorage.getItem("accessToken")?!1:(y({full:!1}).unwrap(),!0)},{sendMessage:E,readyState:n,getWebSocket:c}=k.default(W,T),g=()=>{E(JSON.stringify({topic:"auth",token:localStorage.getItem("accessToken"),subscribe:t,project:f}))};e.useEffect(()=>{console.debug("Topics changed",t),g()},[t,f]);const O=C.debounce(r=>{C.isEqual(t,r)||(console.log("WS: Subscriptions changed"),R(r))},200);l.setOnSubscriptionsChange(r=>O(r));const[p,a]=e.useState(!1),[j,I]=e.useState(!1);e.useEffect(()=>(p&&(j||(x.toast.warning(w.jsxRuntimeExports.jsx(N.RefreshToast,{}),{autoClose:!1,closeButton:!1}),I(!0))),()=>{a(!1)}),[p,a]);const i=e.useRef({callCount:0,lastCall:Date.now()}),P=e.useCallback(r=>{var b;if(i.current.callCount>1e3)return a(!0),console.log("Overload: Over 1000 messages per second. Ignoring subsequent messages.");let u;try{u=JSON.parse(r.data)}catch($){console.error("Failed to parse websocket message:",$,r.data);return}const{topic:s,sender:D,summary:M}=u||{};if(s==="heartbeat"||(s==="server.restart_requested"&&o(!0),D===window.senderId))return;const h=Date.now();h-i.current.lastCall<1e3?i.current.callCount+=1:i.current.callCount=0,i.current.lastCall=h,s==="shout"&&((b=u==null?void 0:u.summary)!=null&&b.text)&&x.toast.info(M.text),console.log("Event RX",u),l.publish(s,u)},[o]);return e.useEffect(()=>{n===k.distExports.ReadyState.OPEN&&(S&&(o(!1),m(A.api.util.resetApiState())),c().onmessage=P,g(),l.publish("client.connected",{topic:"client.connected"}))},[n,c]),w.jsxRuntimeExports.jsx(d.Provider,{value:{getWebSocket:c,readyState:n,serverRestartingVisible:S},children:q})},B=()=>{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=z;exports.useSocketContext=B;
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","_a","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","_a","ReadyState","api","useSocketContext","context","useContext"],"mappings":"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"}
@@ -55,6 +55,8 @@ import "../api/queries/attributes/getAttributes.es.js";
55
55
  import "../api/queries/attributes/updateAttributes.es.js";
56
56
  import "../api/queries/authentication/getAuthentication.es.js";
57
57
  import "../api/queries/cloud/cloud.es.js";
58
+ import "../api/queries/config/getConfig.es.js";
59
+ import "../api/queries/config/updateConfig.es.js";
58
60
  import "../api/queries/entities/getEntity.es.js";
59
61
  import "../api/queries/entities/getEntityPanel.es.js";
60
62
  import "../api/queries/entities/updateEntity.es.js";
@@ -244,7 +246,7 @@ import "../components/EarlyPreview/EarlyPreview.es.js";
244
246
  import "../components/LegacyBadge/LegacyBadge.es.js";
245
247
  import "../components/Menu/Menu.styled.es.js";
246
248
  import "../components/Menu/MenuItem.es.js";
247
- const k = $(void 0), Q = window.location.protocol.replace("http", "ws"), X = `${Q}//${window.location.host}/ws`, Op = ({
249
+ const k = $(void 0), Q = window.location.protocol.replace("http", "ws"), X = `${Q}//${window.location.host}/ws`, Ep = ({
248
250
  children: i,
249
251
  userName: v,
250
252
  projectName: f,
@@ -313,7 +315,7 @@ const k = $(void 0), Q = window.location.protocol.replace("http", "ws"), X = `${
313
315
  children: i
314
316
  }
315
317
  );
316
- }, Tp = () => {
318
+ }, Ip = () => {
317
319
  const i = M(k);
318
320
  if (i === void 0)
319
321
  throw new Error("useSocketContext must be used within a SocketProvider");
@@ -321,7 +323,7 @@ const k = $(void 0), Q = window.location.protocol.replace("http", "ws"), X = `${
321
323
  };
322
324
  export {
323
325
  k as SocketContext,
324
- Op as SocketProvider,
325
- Tp as useSocketContext
326
+ Ep as SocketProvider,
327
+ Ip as useSocketContext
326
328
  };
327
329
  //# sourceMappingURL=WebsocketContext.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WebsocketContext.es.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","_a","ReadyState","api","useSocketContext","context","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"WebsocketContext.es.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","_a","ReadyState","api","useSocketContext","context","useContext"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react-redux"),c=require("custom-protocol-check"),d=require("../api/base/client.cjs.js");require("../api/generated/graphql.cjs.js");require("../api/generated/graphqlLinks.cjs.js");require("../api/generated/access.cjs.js");require("../api/generated/actions.cjs.js");require("../api/generated/activityFeed.cjs.js");require("../api/generated/addons.cjs.js");require("../api/generated/anatomy.cjs.js");require("../api/generated/attributes.cjs.js");require("../api/generated/authentication.cjs.js");require("../api/generated/bundles.cjs.js");require("../api/generated/configuration.cjs.js");require("../api/generated/desktop.cjs.js");require("../api/generated/entityLists.cjs.js");require("../api/generated/events.cjs.js");require("../api/generated/files.cjs.js");require("../api/generated/folders.cjs.js");require("../api/generated/inbox.cjs.js");require("../api/generated/links.cjs.js");require("../api/generated/market.cjs.js");require("../api/generated/onboarding.cjs.js");require("../api/generated/operations.cjs.js");require("../api/generated/products.cjs.js");require("../api/generated/projectDashboard.cjs.js");require("../api/generated/projects.cjs.js");require("../api/generated/reviewables.cjs.js");require("../api/generated/services.cjs.js");require("../api/generated/system.cjs.js");require("../api/generated/tasks.cjs.js");require("../api/generated/teams.cjs.js");require("../api/generated/thumbnails.cjs.js");require("../api/generated/uRIs.cjs.js");require("../api/generated/users.cjs.js");require("../api/generated/versions.cjs.js");require("../api/generated/workfiles.cjs.js");require("../api/generated/ynputCloud.cjs.js");require("../api/generated/grouping.cjs.js");require("../api/generated/views.cjs.js");require("../api/queries/actions/getActions.cjs.js");require("../api/queries/activities/getActivities.cjs.js");require("../api/queries/activities/updateActivities.cjs.js");require("../api/queries/activities/updateReaction.cjs.js");require("../api/queries/activities/getMentions.cjs.js");require("../api/queries/activities/getCategories.cjs.js");require("../api/queries/addons/getAddons.cjs.js");require("../api/queries/addons/updateAddons.cjs.js");require("../api/queries/attributes/getAttributes.cjs.js");require("../api/queries/attributes/updateAttributes.cjs.js");require("../api/queries/authentication/getAuthentication.cjs.js");require("../api/queries/cloud/cloud.cjs.js");require("../api/queries/entities/getEntity.cjs.js");require("../api/queries/entities/getEntityPanel.cjs.js");require("../api/queries/entities/updateEntity.cjs.js");require("../api/queries/entityLists/getLists.cjs.js");require("../api/queries/entityLists/updateLists.cjs.js");require("../api/queries/entityLists/getListsAttributes.cjs.js");require("../api/queries/entityLists/updateListsAttributes.cjs.js");require("../api/queries/entityLists/listFolders.cjs.js");require("../api/queries/folders/getFolders.cjs.js");require("../api/queries/grouping/getGrouping.cjs.js");require("../api/queries/links/updateLinks.cjs.js");require("../api/queries/links/getLinks.cjs.js");require("../api/queries/links/getEntityLinks.cjs.js");require("../api/queries/overview/getOverview.cjs.js");require("../api/queries/overview/updateOverview.cjs.js");require("../api/queries/versions/getVersionsProducts.cjs.js");require("../api/queries/permissions/getPermissions.cjs.js");require("../api/queries/products/createProduct.cjs.js");require("../api/queries/project/getProject.cjs.js");require("../api/queries/project/updateProject.cjs.js");require("../api/queries/review/getReview.cjs.js");require("../api/queries/review/updateReview.cjs.js");require("../api/queries/share/share.cjs.js");require("../api/queries/system/getSystem.cjs.js");require("../api/queries/userDashboard/getUserDashboard.cjs.js");require("../api/queries/users/getUsers.cjs.js");require("../api/queries/users/updateUsers.cjs.js");require("../api/queries/users/guests.cjs.js");require("../api/queries/versions/updateVersions.cjs.js");require("../api/queries/views/getViews.cjs.js");require("../api/queries/views/updateViews.cjs.js");require("../api/queries/watchers/getWatchers.cjs.js");require("../api/queries/uris/getUris.cjs.js");const a=({searchParams:q,onSetSearchParams:t,onNavigate:n})=>{const o=s.useDispatch();return{handleActionPayload:(u,e)=>{if(e){if(u==="launcher")e!=null&&e.uri&&c(e.uri,()=>{},()=>{},2e3);else if(u==="query")if(Object.values(e.query).every(r=>typeof r=="string")){for(const[r,l]of Object.entries(e.query))q.set(r,l);t(q)}else throw new Error("Invalid payload: query");else if(u==="navigate"){if(typeof e.uri!="string")throw new Error("Invalid payload: navigate");n(e.uri)}else if(u==="redirect"){if(typeof e.uri!="string")throw new Error("Invalid payload: redirect");{const i=(e==null?void 0:e.new_tab)||!1;window.open(e.uri,i?"_blank":"_self")}}if("extra_download"in e){if(typeof e.extra_download!="string")throw new Error("Invalid payload: extra_download");{const i=new URL(e.extra_download,window.location.origin).href;console.log(i);const r=document.createElement("a");r.href=i,r.target="_blank",r.rel="noopener noreferrer",r.download="",document.body.appendChild(r),r.click(),document.body.removeChild(r)}}if("extra_clipboard"in e){if(typeof e.extra_clipboard!="string")throw new Error("Invalid payload: extra_clipboard");navigator.clipboard&&window.isSecureContext&&navigator.clipboard.writeText(e.extra_clipboard).catch(i=>{i.name!=="NotAllowedError"&&!i.message.includes("not allowed")&&console.error("Failed to copy text to clipboard:",i)})}if("extra_reload"in e){if(!Array.isArray(e.extra_reload))throw new Error("Invalid payload: extra_reload");e.extra_reload.length&&o(d.api.util.invalidateTags(e.extra_reload))}}}}};exports.useActionTriggers=a;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react-redux"),c=require("custom-protocol-check"),d=require("../api/base/client.cjs.js");require("../api/generated/graphql.cjs.js");require("../api/generated/graphqlLinks.cjs.js");require("../api/generated/access.cjs.js");require("../api/generated/actions.cjs.js");require("../api/generated/activityFeed.cjs.js");require("../api/generated/addons.cjs.js");require("../api/generated/anatomy.cjs.js");require("../api/generated/attributes.cjs.js");require("../api/generated/authentication.cjs.js");require("../api/generated/bundles.cjs.js");require("../api/generated/configuration.cjs.js");require("../api/generated/desktop.cjs.js");require("../api/generated/entityLists.cjs.js");require("../api/generated/events.cjs.js");require("../api/generated/files.cjs.js");require("../api/generated/folders.cjs.js");require("../api/generated/inbox.cjs.js");require("../api/generated/links.cjs.js");require("../api/generated/market.cjs.js");require("../api/generated/onboarding.cjs.js");require("../api/generated/operations.cjs.js");require("../api/generated/products.cjs.js");require("../api/generated/projectDashboard.cjs.js");require("../api/generated/projects.cjs.js");require("../api/generated/reviewables.cjs.js");require("../api/generated/services.cjs.js");require("../api/generated/system.cjs.js");require("../api/generated/tasks.cjs.js");require("../api/generated/teams.cjs.js");require("../api/generated/thumbnails.cjs.js");require("../api/generated/uRIs.cjs.js");require("../api/generated/users.cjs.js");require("../api/generated/versions.cjs.js");require("../api/generated/workfiles.cjs.js");require("../api/generated/ynputCloud.cjs.js");require("../api/generated/grouping.cjs.js");require("../api/generated/views.cjs.js");require("../api/queries/actions/getActions.cjs.js");require("../api/queries/activities/getActivities.cjs.js");require("../api/queries/activities/updateActivities.cjs.js");require("../api/queries/activities/updateReaction.cjs.js");require("../api/queries/activities/getMentions.cjs.js");require("../api/queries/activities/getCategories.cjs.js");require("../api/queries/addons/getAddons.cjs.js");require("../api/queries/addons/updateAddons.cjs.js");require("../api/queries/attributes/getAttributes.cjs.js");require("../api/queries/attributes/updateAttributes.cjs.js");require("../api/queries/authentication/getAuthentication.cjs.js");require("../api/queries/cloud/cloud.cjs.js");require("../api/queries/config/getConfig.cjs.js");require("../api/queries/config/updateConfig.cjs.js");require("../api/queries/entities/getEntity.cjs.js");require("../api/queries/entities/getEntityPanel.cjs.js");require("../api/queries/entities/updateEntity.cjs.js");require("../api/queries/entityLists/getLists.cjs.js");require("../api/queries/entityLists/updateLists.cjs.js");require("../api/queries/entityLists/getListsAttributes.cjs.js");require("../api/queries/entityLists/updateListsAttributes.cjs.js");require("../api/queries/entityLists/listFolders.cjs.js");require("../api/queries/folders/getFolders.cjs.js");require("../api/queries/grouping/getGrouping.cjs.js");require("../api/queries/links/updateLinks.cjs.js");require("../api/queries/links/getLinks.cjs.js");require("../api/queries/links/getEntityLinks.cjs.js");require("../api/queries/overview/getOverview.cjs.js");require("../api/queries/overview/updateOverview.cjs.js");require("../api/queries/versions/getVersionsProducts.cjs.js");require("../api/queries/permissions/getPermissions.cjs.js");require("../api/queries/products/createProduct.cjs.js");require("../api/queries/project/getProject.cjs.js");require("../api/queries/project/updateProject.cjs.js");require("../api/queries/review/getReview.cjs.js");require("../api/queries/review/updateReview.cjs.js");require("../api/queries/share/share.cjs.js");require("../api/queries/system/getSystem.cjs.js");require("../api/queries/userDashboard/getUserDashboard.cjs.js");require("../api/queries/users/getUsers.cjs.js");require("../api/queries/users/updateUsers.cjs.js");require("../api/queries/users/guests.cjs.js");require("../api/queries/versions/updateVersions.cjs.js");require("../api/queries/views/getViews.cjs.js");require("../api/queries/views/updateViews.cjs.js");require("../api/queries/watchers/getWatchers.cjs.js");require("../api/queries/uris/getUris.cjs.js");const a=({searchParams:q,onSetSearchParams:t,onNavigate:n})=>{const o=s.useDispatch();return{handleActionPayload:(u,e)=>{if(e){if(u==="launcher")e!=null&&e.uri&&c(e.uri,()=>{},()=>{},2e3);else if(u==="query")if(Object.values(e.query).every(r=>typeof r=="string")){for(const[r,l]of Object.entries(e.query))q.set(r,l);t(q)}else throw new Error("Invalid payload: query");else if(u==="navigate"){if(typeof e.uri!="string")throw new Error("Invalid payload: navigate");n(e.uri)}else if(u==="redirect"){if(typeof e.uri!="string")throw new Error("Invalid payload: redirect");{const i=(e==null?void 0:e.new_tab)||!1;window.open(e.uri,i?"_blank":"_self")}}if("extra_download"in e){if(typeof e.extra_download!="string")throw new Error("Invalid payload: extra_download");{const i=new URL(e.extra_download,window.location.origin).href;console.log(i);const r=document.createElement("a");r.href=i,r.target="_blank",r.rel="noopener noreferrer",r.download="",document.body.appendChild(r),r.click(),document.body.removeChild(r)}}if("extra_clipboard"in e){if(typeof e.extra_clipboard!="string")throw new Error("Invalid payload: extra_clipboard");navigator.clipboard&&window.isSecureContext&&navigator.clipboard.writeText(e.extra_clipboard).catch(i=>{i.name!=="NotAllowedError"&&!i.message.includes("not allowed")&&console.error("Failed to copy text to clipboard:",i)})}if("extra_reload"in e){if(!Array.isArray(e.extra_reload))throw new Error("Invalid payload: extra_reload");e.extra_reload.length&&o(d.api.util.invalidateTags(e.extra_reload))}}}}};exports.useActionTriggers=a;
2
2
  //# sourceMappingURL=useActionTriggers.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useActionTriggers.cjs.js","sources":["../../../../src/hooks/useActionTriggers.ts"],"sourcesContent":["import { useDispatch } from 'react-redux'\nimport customProtocolCheck from 'custom-protocol-check'\nimport { api } from '@shared/api'\n\n\nexport type ActionTriggersProps = {\n searchParams: URLSearchParams\n onSetSearchParams: (params: URLSearchParams) => void\n onNavigate: (uri: string) => void\n}\n\ninterface QueryParams {\n [key: string]: string\n}\n\ninterface ActionPayload {\n query?: QueryParams // adds query params to the URL\n uri?: string // navigates to a different page\n new_tab?: boolean // opens a new tab\n extra_download?: string // triggers a file download from a URL\n extra_clipboard?: string // copies string content to clipboard\n extra_reload?: string[] // list of tags to invalidate\n [key: string]: any\n}\n\nexport const useActionTriggers = ({\n searchParams,\n onSetSearchParams,\n onNavigate,\n}: ActionTriggersProps) => {\n const dispatch = useDispatch()\n const handleActionPayload = (actionType: string, payload: ActionPayload | null): void => {\n if (!payload) return\n\n if (actionType === 'launcher') {\n if (payload?.uri) {\n customProtocolCheck(\n payload.uri,\n () => {},\n () => {},\n 2000,\n )\n }\n } else if (actionType === 'query') {\n // Validate it is an object of key:value pairs with value being string\n const isValid = Object.values(payload.query as QueryParams).every((value) => {\n return typeof value === 'string'\n })\n\n if (!isValid) {\n throw new Error('Invalid payload: query')\n } else {\n // Add query params to URL\n for (const [key, value] of Object.entries(payload.query as QueryParams)) {\n searchParams.set(key, value)\n }\n onSetSearchParams(searchParams)\n }\n } else if (actionType === 'navigate') {\n // Validate it is a string\n if (typeof payload.uri !== 'string') {\n throw new Error('Invalid payload: navigate')\n } else {\n // Navigate to the specified page\n onNavigate(payload.uri)\n }\n } else if (actionType === 'redirect') {\n // Validate it is a string\n if (typeof payload.uri !== 'string') {\n throw new Error('Invalid payload: redirect')\n } else {\n const newTab = payload?.new_tab || false\n window.open(payload.uri, newTab ? '_blank' : '_self')\n }\n }\n\n //\n // Sub-actions\n //\n\n if ('extra_download' in payload) {\n // Validate it is a string\n if (typeof payload.extra_download !== 'string') {\n throw new Error('Invalid payload: extra_download')\n } else {\n // Trigger file download from the URL\n const downloadUrl = new URL(payload.extra_download, window.location.origin).href\n console.log(downloadUrl)\n // Create a hidden anchor element\n const link = document.createElement('a')\n link.href = downloadUrl\n link.target = '_blank'\n link.rel = 'noopener noreferrer'\n // Set download attribute if it's a direct file download\n // If it's an API endpoint that handles the download, this is still good\n link.download = ''\n // Append to document, click and then remove\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n }\n }\n\n if ('extra_clipboard' in payload) {\n // Validate it is a string\n if (typeof payload.extra_clipboard !== 'string') {\n throw new Error('Invalid payload: extra_clipboard')\n } else {\n // Copy content to clipboard\n if (navigator.clipboard && window.isSecureContext) {\n navigator.clipboard.writeText(payload.extra_clipboard).catch((err) => {\n // Only log unexpected errors, not permission denials\n if (err.name !== 'NotAllowedError' && !err.message.includes('not allowed')) {\n console.error('Failed to copy text to clipboard:', err)\n }\n })\n }\n }\n }\n\n if ('extra_reload' in payload) {\n if (!Array.isArray(payload.extra_reload)) {\n throw new Error('Invalid payload: extra_reload')\n }\n\n if (payload.extra_reload.length) {\n dispatch(api.util.invalidateTags(payload.extra_reload))\n }\n }\n\n }\n\n return { handleActionPayload }\n}"],"names":["useActionTriggers","searchParams","onSetSearchParams","onNavigate","dispatch","useDispatch","actionType","payload","customProtocolCheck","value","key","newTab","downloadUrl","link","err","api"],"mappings":"krIAyBO,MAAMA,EAAoB,CAAC,CAChC,aAAAC,EACA,kBAAAC,EACA,WAAAC,CACF,IAA2B,CACzB,MAAMC,EAAWC,EAAAA,YAAY,EAsG7B,MAAO,CAAE,oBArGmB,CAACC,EAAoBC,IAAwC,CACvF,GAAKA,EAEL,IAAID,IAAe,WACbC,GAAA,MAAAA,EAAS,KACXC,EACED,EAAQ,IACR,IAAM,CAAC,EACP,IAAM,CAAC,EACP,GACF,UAEOD,IAAe,QAMxB,GAJgB,OAAO,OAAOC,EAAQ,KAAoB,EAAE,MAAOE,GAC1D,OAAOA,GAAU,QACzB,EAIM,CAEM,SAAA,CAACC,EAAKD,CAAK,IAAK,OAAO,QAAQF,EAAQ,KAAoB,EACvDN,EAAA,IAAIS,EAAKD,CAAK,EAE7BP,EAAkBD,CAAY,CAAA,KANxB,OAAA,IAAI,MAAM,wBAAwB,UAQjCK,IAAe,WAAY,CAEhC,GAAA,OAAOC,EAAQ,KAAQ,SACnB,MAAA,IAAI,MAAM,2BAA2B,EAG3CJ,EAAWI,EAAQ,GAAG,CACxB,SACSD,IAAe,WAAY,CAEhC,GAAA,OAAOC,EAAQ,KAAQ,SACnB,MAAA,IAAI,MAAM,2BAA2B,EACtC,CACC,MAAAI,GAASJ,GAAA,YAAAA,EAAS,UAAW,GACnC,OAAO,KAAKA,EAAQ,IAAKI,EAAS,SAAW,OAAO,CAAA,CACtD,CAOF,GAAI,mBAAoBJ,EAAS,CAE3B,GAAA,OAAOA,EAAQ,gBAAmB,SAC9B,MAAA,IAAI,MAAM,iCAAiC,EAC5C,CAEC,MAAAK,EAAc,IAAI,IAAIL,EAAQ,eAAgB,OAAO,SAAS,MAAM,EAAE,KAC5E,QAAQ,IAAIK,CAAW,EAEjB,MAAAC,EAAO,SAAS,cAAc,GAAG,EACvCA,EAAK,KAAOD,EACZC,EAAK,OAAS,SACdA,EAAK,IAAM,sBAGXA,EAAK,SAAW,GAEP,SAAA,KAAK,YAAYA,CAAI,EAC9BA,EAAK,MAAM,EACF,SAAA,KAAK,YAAYA,CAAI,CAAA,CAChC,CAGF,GAAI,oBAAqBN,EAAS,CAE5B,GAAA,OAAOA,EAAQ,iBAAoB,SAC/B,MAAA,IAAI,MAAM,kCAAkC,EAG9C,UAAU,WAAa,OAAO,iBAChC,UAAU,UAAU,UAAUA,EAAQ,eAAe,EAAE,MAAOO,GAAQ,CAEhEA,EAAI,OAAS,mBAAqB,CAACA,EAAI,QAAQ,SAAS,aAAa,GAC/D,QAAA,MAAM,oCAAqCA,CAAG,CACxD,CACD,CAEL,CAGF,GAAI,iBAAkBP,EAAS,CAC7B,GAAI,CAAC,MAAM,QAAQA,EAAQ,YAAY,EAC/B,MAAA,IAAI,MAAM,+BAA+B,EAG7CA,EAAQ,aAAa,QACvBH,EAASW,EAAI,IAAA,KAAK,eAAeR,EAAQ,YAAY,CAAC,CACxD,EAGJ,CAE6B,CAC/B"}
1
+ {"version":3,"file":"useActionTriggers.cjs.js","sources":["../../../../src/hooks/useActionTriggers.ts"],"sourcesContent":["import { useDispatch } from 'react-redux'\nimport customProtocolCheck from 'custom-protocol-check'\nimport { api } from '@shared/api'\n\n\nexport type ActionTriggersProps = {\n searchParams: URLSearchParams\n onSetSearchParams: (params: URLSearchParams) => void\n onNavigate: (uri: string) => void\n}\n\ninterface QueryParams {\n [key: string]: string\n}\n\ninterface ActionPayload {\n query?: QueryParams // adds query params to the URL\n uri?: string // navigates to a different page\n new_tab?: boolean // opens a new tab\n extra_download?: string // triggers a file download from a URL\n extra_clipboard?: string // copies string content to clipboard\n extra_reload?: string[] // list of tags to invalidate\n [key: string]: any\n}\n\nexport const useActionTriggers = ({\n searchParams,\n onSetSearchParams,\n onNavigate,\n}: ActionTriggersProps) => {\n const dispatch = useDispatch()\n const handleActionPayload = (actionType: string, payload: ActionPayload | null): void => {\n if (!payload) return\n\n if (actionType === 'launcher') {\n if (payload?.uri) {\n customProtocolCheck(\n payload.uri,\n () => {},\n () => {},\n 2000,\n )\n }\n } else if (actionType === 'query') {\n // Validate it is an object of key:value pairs with value being string\n const isValid = Object.values(payload.query as QueryParams).every((value) => {\n return typeof value === 'string'\n })\n\n if (!isValid) {\n throw new Error('Invalid payload: query')\n } else {\n // Add query params to URL\n for (const [key, value] of Object.entries(payload.query as QueryParams)) {\n searchParams.set(key, value)\n }\n onSetSearchParams(searchParams)\n }\n } else if (actionType === 'navigate') {\n // Validate it is a string\n if (typeof payload.uri !== 'string') {\n throw new Error('Invalid payload: navigate')\n } else {\n // Navigate to the specified page\n onNavigate(payload.uri)\n }\n } else if (actionType === 'redirect') {\n // Validate it is a string\n if (typeof payload.uri !== 'string') {\n throw new Error('Invalid payload: redirect')\n } else {\n const newTab = payload?.new_tab || false\n window.open(payload.uri, newTab ? '_blank' : '_self')\n }\n }\n\n //\n // Sub-actions\n //\n\n if ('extra_download' in payload) {\n // Validate it is a string\n if (typeof payload.extra_download !== 'string') {\n throw new Error('Invalid payload: extra_download')\n } else {\n // Trigger file download from the URL\n const downloadUrl = new URL(payload.extra_download, window.location.origin).href\n console.log(downloadUrl)\n // Create a hidden anchor element\n const link = document.createElement('a')\n link.href = downloadUrl\n link.target = '_blank'\n link.rel = 'noopener noreferrer'\n // Set download attribute if it's a direct file download\n // If it's an API endpoint that handles the download, this is still good\n link.download = ''\n // Append to document, click and then remove\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n }\n }\n\n if ('extra_clipboard' in payload) {\n // Validate it is a string\n if (typeof payload.extra_clipboard !== 'string') {\n throw new Error('Invalid payload: extra_clipboard')\n } else {\n // Copy content to clipboard\n if (navigator.clipboard && window.isSecureContext) {\n navigator.clipboard.writeText(payload.extra_clipboard).catch((err) => {\n // Only log unexpected errors, not permission denials\n if (err.name !== 'NotAllowedError' && !err.message.includes('not allowed')) {\n console.error('Failed to copy text to clipboard:', err)\n }\n })\n }\n }\n }\n\n if ('extra_reload' in payload) {\n if (!Array.isArray(payload.extra_reload)) {\n throw new Error('Invalid payload: extra_reload')\n }\n\n if (payload.extra_reload.length) {\n dispatch(api.util.invalidateTags(payload.extra_reload))\n }\n }\n\n }\n\n return { handleActionPayload }\n}"],"names":["useActionTriggers","searchParams","onSetSearchParams","onNavigate","dispatch","useDispatch","actionType","payload","customProtocolCheck","value","key","newTab","downloadUrl","link","err","api"],"mappings":"yxIAyBO,MAAMA,EAAoB,CAAC,CAChC,aAAAC,EACA,kBAAAC,EACA,WAAAC,CACF,IAA2B,CACzB,MAAMC,EAAWC,EAAAA,YAAY,EAsG7B,MAAO,CAAE,oBArGmB,CAACC,EAAoBC,IAAwC,CACvF,GAAKA,EAEL,IAAID,IAAe,WACbC,GAAA,MAAAA,EAAS,KACXC,EACED,EAAQ,IACR,IAAM,CAAC,EACP,IAAM,CAAC,EACP,GACF,UAEOD,IAAe,QAMxB,GAJgB,OAAO,OAAOC,EAAQ,KAAoB,EAAE,MAAOE,GAC1D,OAAOA,GAAU,QACzB,EAIM,CAEM,SAAA,CAACC,EAAKD,CAAK,IAAK,OAAO,QAAQF,EAAQ,KAAoB,EACvDN,EAAA,IAAIS,EAAKD,CAAK,EAE7BP,EAAkBD,CAAY,CAAA,KANxB,OAAA,IAAI,MAAM,wBAAwB,UAQjCK,IAAe,WAAY,CAEhC,GAAA,OAAOC,EAAQ,KAAQ,SACnB,MAAA,IAAI,MAAM,2BAA2B,EAG3CJ,EAAWI,EAAQ,GAAG,CACxB,SACSD,IAAe,WAAY,CAEhC,GAAA,OAAOC,EAAQ,KAAQ,SACnB,MAAA,IAAI,MAAM,2BAA2B,EACtC,CACC,MAAAI,GAASJ,GAAA,YAAAA,EAAS,UAAW,GACnC,OAAO,KAAKA,EAAQ,IAAKI,EAAS,SAAW,OAAO,CAAA,CACtD,CAOF,GAAI,mBAAoBJ,EAAS,CAE3B,GAAA,OAAOA,EAAQ,gBAAmB,SAC9B,MAAA,IAAI,MAAM,iCAAiC,EAC5C,CAEC,MAAAK,EAAc,IAAI,IAAIL,EAAQ,eAAgB,OAAO,SAAS,MAAM,EAAE,KAC5E,QAAQ,IAAIK,CAAW,EAEjB,MAAAC,EAAO,SAAS,cAAc,GAAG,EACvCA,EAAK,KAAOD,EACZC,EAAK,OAAS,SACdA,EAAK,IAAM,sBAGXA,EAAK,SAAW,GAEP,SAAA,KAAK,YAAYA,CAAI,EAC9BA,EAAK,MAAM,EACF,SAAA,KAAK,YAAYA,CAAI,CAAA,CAChC,CAGF,GAAI,oBAAqBN,EAAS,CAE5B,GAAA,OAAOA,EAAQ,iBAAoB,SAC/B,MAAA,IAAI,MAAM,kCAAkC,EAG9C,UAAU,WAAa,OAAO,iBAChC,UAAU,UAAU,UAAUA,EAAQ,eAAe,EAAE,MAAOO,GAAQ,CAEhEA,EAAI,OAAS,mBAAqB,CAACA,EAAI,QAAQ,SAAS,aAAa,GAC/D,QAAA,MAAM,oCAAqCA,CAAG,CACxD,CACD,CAEL,CAGF,GAAI,iBAAkBP,EAAS,CAC7B,GAAI,CAAC,MAAM,QAAQA,EAAQ,YAAY,EAC/B,MAAA,IAAI,MAAM,+BAA+B,EAG7CA,EAAQ,aAAa,QACvBH,EAASW,EAAI,IAAA,KAAK,eAAeR,EAAQ,YAAY,CAAC,CACxD,EAGJ,CAE6B,CAC/B"}
@@ -50,6 +50,8 @@ import "../api/queries/attributes/getAttributes.es.js";
50
50
  import "../api/queries/attributes/updateAttributes.es.js";
51
51
  import "../api/queries/authentication/getAuthentication.es.js";
52
52
  import "../api/queries/cloud/cloud.es.js";
53
+ import "../api/queries/config/getConfig.es.js";
54
+ import "../api/queries/config/updateConfig.es.js";
53
55
  import "../api/queries/entities/getEntity.es.js";
54
56
  import "../api/queries/entities/getEntityPanel.es.js";
55
57
  import "../api/queries/entities/updateEntity.es.js";
@@ -83,7 +85,7 @@ import "../api/queries/views/getViews.es.js";
83
85
  import "../api/queries/views/updateViews.es.js";
84
86
  import "../api/queries/watchers/getWatchers.es.js";
85
87
  import "../api/queries/uris/getUris.es.js";
86
- const Jr = ({
88
+ const Mr = ({
87
89
  searchParams: e,
88
90
  onSetSearchParams: m,
89
91
  onNavigate: p
@@ -145,6 +147,6 @@ const Jr = ({
145
147
  } };
146
148
  };
147
149
  export {
148
- Jr as useActionTriggers
150
+ Mr as useActionTriggers
149
151
  };
150
152
  //# sourceMappingURL=useActionTriggers.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useActionTriggers.es.js","sources":["../../../../src/hooks/useActionTriggers.ts"],"sourcesContent":["import { useDispatch } from 'react-redux'\nimport customProtocolCheck from 'custom-protocol-check'\nimport { api } from '@shared/api'\n\n\nexport type ActionTriggersProps = {\n searchParams: URLSearchParams\n onSetSearchParams: (params: URLSearchParams) => void\n onNavigate: (uri: string) => void\n}\n\ninterface QueryParams {\n [key: string]: string\n}\n\ninterface ActionPayload {\n query?: QueryParams // adds query params to the URL\n uri?: string // navigates to a different page\n new_tab?: boolean // opens a new tab\n extra_download?: string // triggers a file download from a URL\n extra_clipboard?: string // copies string content to clipboard\n extra_reload?: string[] // list of tags to invalidate\n [key: string]: any\n}\n\nexport const useActionTriggers = ({\n searchParams,\n onSetSearchParams,\n onNavigate,\n}: ActionTriggersProps) => {\n const dispatch = useDispatch()\n const handleActionPayload = (actionType: string, payload: ActionPayload | null): void => {\n if (!payload) return\n\n if (actionType === 'launcher') {\n if (payload?.uri) {\n customProtocolCheck(\n payload.uri,\n () => {},\n () => {},\n 2000,\n )\n }\n } else if (actionType === 'query') {\n // Validate it is an object of key:value pairs with value being string\n const isValid = Object.values(payload.query as QueryParams).every((value) => {\n return typeof value === 'string'\n })\n\n if (!isValid) {\n throw new Error('Invalid payload: query')\n } else {\n // Add query params to URL\n for (const [key, value] of Object.entries(payload.query as QueryParams)) {\n searchParams.set(key, value)\n }\n onSetSearchParams(searchParams)\n }\n } else if (actionType === 'navigate') {\n // Validate it is a string\n if (typeof payload.uri !== 'string') {\n throw new Error('Invalid payload: navigate')\n } else {\n // Navigate to the specified page\n onNavigate(payload.uri)\n }\n } else if (actionType === 'redirect') {\n // Validate it is a string\n if (typeof payload.uri !== 'string') {\n throw new Error('Invalid payload: redirect')\n } else {\n const newTab = payload?.new_tab || false\n window.open(payload.uri, newTab ? '_blank' : '_self')\n }\n }\n\n //\n // Sub-actions\n //\n\n if ('extra_download' in payload) {\n // Validate it is a string\n if (typeof payload.extra_download !== 'string') {\n throw new Error('Invalid payload: extra_download')\n } else {\n // Trigger file download from the URL\n const downloadUrl = new URL(payload.extra_download, window.location.origin).href\n console.log(downloadUrl)\n // Create a hidden anchor element\n const link = document.createElement('a')\n link.href = downloadUrl\n link.target = '_blank'\n link.rel = 'noopener noreferrer'\n // Set download attribute if it's a direct file download\n // If it's an API endpoint that handles the download, this is still good\n link.download = ''\n // Append to document, click and then remove\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n }\n }\n\n if ('extra_clipboard' in payload) {\n // Validate it is a string\n if (typeof payload.extra_clipboard !== 'string') {\n throw new Error('Invalid payload: extra_clipboard')\n } else {\n // Copy content to clipboard\n if (navigator.clipboard && window.isSecureContext) {\n navigator.clipboard.writeText(payload.extra_clipboard).catch((err) => {\n // Only log unexpected errors, not permission denials\n if (err.name !== 'NotAllowedError' && !err.message.includes('not allowed')) {\n console.error('Failed to copy text to clipboard:', err)\n }\n })\n }\n }\n }\n\n if ('extra_reload' in payload) {\n if (!Array.isArray(payload.extra_reload)) {\n throw new Error('Invalid payload: extra_reload')\n }\n\n if (payload.extra_reload.length) {\n dispatch(api.util.invalidateTags(payload.extra_reload))\n }\n }\n\n }\n\n return { handleActionPayload }\n}"],"names":["useActionTriggers","searchParams","onSetSearchParams","onNavigate","dispatch","useDispatch","actionType","payload","customProtocolCheck","value","key","newTab","downloadUrl","link","err","api"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBO,MAAMA,KAAoB,CAAC;AAAA,EAChC,cAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,YAAAC;AACF,MAA2B;AACzB,QAAMC,IAAWC,EAAY;AAsG7B,SAAO,EAAE,qBArGmB,CAACC,GAAoBC,MAAwC;AACvF,QAAKA,GAEL;AAAA,UAAID,MAAe;AACjB,QAAIC,KAAA,QAAAA,EAAS,OACXC;AAAA,UACED,EAAQ;AAAA,UACR,MAAM;AAAA,UAAC;AAAA,UACP,MAAM;AAAA,UAAC;AAAA,UACP;AAAA,QACF;AAAA,eAEOD,MAAe;AAMxB,YAJgB,OAAO,OAAOC,EAAQ,KAAoB,EAAE,MAAM,CAACE,MAC1D,OAAOA,KAAU,QACzB,GAIM;AAEM,qBAAA,CAACC,GAAKD,CAAK,KAAK,OAAO,QAAQF,EAAQ,KAAoB;AACvD,YAAAN,EAAA,IAAIS,GAAKD,CAAK;AAE7B,UAAAP,EAAkBD,CAAY;AAAA,QAAA;AANxB,gBAAA,IAAI,MAAM,wBAAwB;AAAA,eAQjCK,MAAe,YAAY;AAEhC,YAAA,OAAOC,EAAQ,OAAQ;AACnB,gBAAA,IAAI,MAAM,2BAA2B;AAG3C,QAAAJ,EAAWI,EAAQ,GAAG;AAAA,MACxB,WACSD,MAAe,YAAY;AAEhC,YAAA,OAAOC,EAAQ,OAAQ;AACnB,gBAAA,IAAI,MAAM,2BAA2B;AACtC;AACC,gBAAAI,KAASJ,KAAA,gBAAAA,EAAS,YAAW;AACnC,iBAAO,KAAKA,EAAQ,KAAKI,IAAS,WAAW,OAAO;AAAA,QAAA;AAAA,MACtD;AAOF,UAAI,oBAAoBJ,GAAS;AAE3B,YAAA,OAAOA,EAAQ,kBAAmB;AAC9B,gBAAA,IAAI,MAAM,iCAAiC;AAC5C;AAEC,gBAAAK,IAAc,IAAI,IAAIL,EAAQ,gBAAgB,OAAO,SAAS,MAAM,EAAE;AAC5E,kBAAQ,IAAIK,CAAW;AAEjB,gBAAAC,IAAO,SAAS,cAAc,GAAG;AACvC,UAAAA,EAAK,OAAOD,GACZC,EAAK,SAAS,UACdA,EAAK,MAAM,uBAGXA,EAAK,WAAW,IAEP,SAAA,KAAK,YAAYA,CAAI,GAC9BA,EAAK,MAAM,GACF,SAAA,KAAK,YAAYA,CAAI;AAAA,QAAA;AAAA,MAChC;AAGF,UAAI,qBAAqBN,GAAS;AAE5B,YAAA,OAAOA,EAAQ,mBAAoB;AAC/B,gBAAA,IAAI,MAAM,kCAAkC;AAG9C,QAAA,UAAU,aAAa,OAAO,mBAChC,UAAU,UAAU,UAAUA,EAAQ,eAAe,EAAE,MAAM,CAACO,MAAQ;AAEhE,UAAAA,EAAI,SAAS,qBAAqB,CAACA,EAAI,QAAQ,SAAS,aAAa,KAC/D,QAAA,MAAM,qCAAqCA,CAAG;AAAA,QACxD,CACD;AAAA,MAEL;AAGF,UAAI,kBAAkBP,GAAS;AAC7B,YAAI,CAAC,MAAM,QAAQA,EAAQ,YAAY;AAC/B,gBAAA,IAAI,MAAM,+BAA+B;AAG7C,QAAAA,EAAQ,aAAa,UACvBH,EAASW,EAAI,KAAK,eAAeR,EAAQ,YAAY,CAAC;AAAA,MACxD;AAAA;AAAA,EAGJ,EAE6B;AAC/B;"}
1
+ {"version":3,"file":"useActionTriggers.es.js","sources":["../../../../src/hooks/useActionTriggers.ts"],"sourcesContent":["import { useDispatch } from 'react-redux'\nimport customProtocolCheck from 'custom-protocol-check'\nimport { api } from '@shared/api'\n\n\nexport type ActionTriggersProps = {\n searchParams: URLSearchParams\n onSetSearchParams: (params: URLSearchParams) => void\n onNavigate: (uri: string) => void\n}\n\ninterface QueryParams {\n [key: string]: string\n}\n\ninterface ActionPayload {\n query?: QueryParams // adds query params to the URL\n uri?: string // navigates to a different page\n new_tab?: boolean // opens a new tab\n extra_download?: string // triggers a file download from a URL\n extra_clipboard?: string // copies string content to clipboard\n extra_reload?: string[] // list of tags to invalidate\n [key: string]: any\n}\n\nexport const useActionTriggers = ({\n searchParams,\n onSetSearchParams,\n onNavigate,\n}: ActionTriggersProps) => {\n const dispatch = useDispatch()\n const handleActionPayload = (actionType: string, payload: ActionPayload | null): void => {\n if (!payload) return\n\n if (actionType === 'launcher') {\n if (payload?.uri) {\n customProtocolCheck(\n payload.uri,\n () => {},\n () => {},\n 2000,\n )\n }\n } else if (actionType === 'query') {\n // Validate it is an object of key:value pairs with value being string\n const isValid = Object.values(payload.query as QueryParams).every((value) => {\n return typeof value === 'string'\n })\n\n if (!isValid) {\n throw new Error('Invalid payload: query')\n } else {\n // Add query params to URL\n for (const [key, value] of Object.entries(payload.query as QueryParams)) {\n searchParams.set(key, value)\n }\n onSetSearchParams(searchParams)\n }\n } else if (actionType === 'navigate') {\n // Validate it is a string\n if (typeof payload.uri !== 'string') {\n throw new Error('Invalid payload: navigate')\n } else {\n // Navigate to the specified page\n onNavigate(payload.uri)\n }\n } else if (actionType === 'redirect') {\n // Validate it is a string\n if (typeof payload.uri !== 'string') {\n throw new Error('Invalid payload: redirect')\n } else {\n const newTab = payload?.new_tab || false\n window.open(payload.uri, newTab ? '_blank' : '_self')\n }\n }\n\n //\n // Sub-actions\n //\n\n if ('extra_download' in payload) {\n // Validate it is a string\n if (typeof payload.extra_download !== 'string') {\n throw new Error('Invalid payload: extra_download')\n } else {\n // Trigger file download from the URL\n const downloadUrl = new URL(payload.extra_download, window.location.origin).href\n console.log(downloadUrl)\n // Create a hidden anchor element\n const link = document.createElement('a')\n link.href = downloadUrl\n link.target = '_blank'\n link.rel = 'noopener noreferrer'\n // Set download attribute if it's a direct file download\n // If it's an API endpoint that handles the download, this is still good\n link.download = ''\n // Append to document, click and then remove\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n }\n }\n\n if ('extra_clipboard' in payload) {\n // Validate it is a string\n if (typeof payload.extra_clipboard !== 'string') {\n throw new Error('Invalid payload: extra_clipboard')\n } else {\n // Copy content to clipboard\n if (navigator.clipboard && window.isSecureContext) {\n navigator.clipboard.writeText(payload.extra_clipboard).catch((err) => {\n // Only log unexpected errors, not permission denials\n if (err.name !== 'NotAllowedError' && !err.message.includes('not allowed')) {\n console.error('Failed to copy text to clipboard:', err)\n }\n })\n }\n }\n }\n\n if ('extra_reload' in payload) {\n if (!Array.isArray(payload.extra_reload)) {\n throw new Error('Invalid payload: extra_reload')\n }\n\n if (payload.extra_reload.length) {\n dispatch(api.util.invalidateTags(payload.extra_reload))\n }\n }\n\n }\n\n return { handleActionPayload }\n}"],"names":["useActionTriggers","searchParams","onSetSearchParams","onNavigate","dispatch","useDispatch","actionType","payload","customProtocolCheck","value","key","newTab","downloadUrl","link","err","api"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBO,MAAMA,KAAoB,CAAC;AAAA,EAChC,cAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,YAAAC;AACF,MAA2B;AACzB,QAAMC,IAAWC,EAAY;AAsG7B,SAAO,EAAE,qBArGmB,CAACC,GAAoBC,MAAwC;AACvF,QAAKA,GAEL;AAAA,UAAID,MAAe;AACjB,QAAIC,KAAA,QAAAA,EAAS,OACXC;AAAA,UACED,EAAQ;AAAA,UACR,MAAM;AAAA,UAAC;AAAA,UACP,MAAM;AAAA,UAAC;AAAA,UACP;AAAA,QACF;AAAA,eAEOD,MAAe;AAMxB,YAJgB,OAAO,OAAOC,EAAQ,KAAoB,EAAE,MAAM,CAACE,MAC1D,OAAOA,KAAU,QACzB,GAIM;AAEM,qBAAA,CAACC,GAAKD,CAAK,KAAK,OAAO,QAAQF,EAAQ,KAAoB;AACvD,YAAAN,EAAA,IAAIS,GAAKD,CAAK;AAE7B,UAAAP,EAAkBD,CAAY;AAAA,QAAA;AANxB,gBAAA,IAAI,MAAM,wBAAwB;AAAA,eAQjCK,MAAe,YAAY;AAEhC,YAAA,OAAOC,EAAQ,OAAQ;AACnB,gBAAA,IAAI,MAAM,2BAA2B;AAG3C,QAAAJ,EAAWI,EAAQ,GAAG;AAAA,MACxB,WACSD,MAAe,YAAY;AAEhC,YAAA,OAAOC,EAAQ,OAAQ;AACnB,gBAAA,IAAI,MAAM,2BAA2B;AACtC;AACC,gBAAAI,KAASJ,KAAA,gBAAAA,EAAS,YAAW;AACnC,iBAAO,KAAKA,EAAQ,KAAKI,IAAS,WAAW,OAAO;AAAA,QAAA;AAAA,MACtD;AAOF,UAAI,oBAAoBJ,GAAS;AAE3B,YAAA,OAAOA,EAAQ,kBAAmB;AAC9B,gBAAA,IAAI,MAAM,iCAAiC;AAC5C;AAEC,gBAAAK,IAAc,IAAI,IAAIL,EAAQ,gBAAgB,OAAO,SAAS,MAAM,EAAE;AAC5E,kBAAQ,IAAIK,CAAW;AAEjB,gBAAAC,IAAO,SAAS,cAAc,GAAG;AACvC,UAAAA,EAAK,OAAOD,GACZC,EAAK,SAAS,UACdA,EAAK,MAAM,uBAGXA,EAAK,WAAW,IAEP,SAAA,KAAK,YAAYA,CAAI,GAC9BA,EAAK,MAAM,GACF,SAAA,KAAK,YAAYA,CAAI;AAAA,QAAA;AAAA,MAChC;AAGF,UAAI,qBAAqBN,GAAS;AAE5B,YAAA,OAAOA,EAAQ,mBAAoB;AAC/B,gBAAA,IAAI,MAAM,kCAAkC;AAG9C,QAAA,UAAU,aAAa,OAAO,mBAChC,UAAU,UAAU,UAAUA,EAAQ,eAAe,EAAE,MAAM,CAACO,MAAQ;AAEhE,UAAAA,EAAI,SAAS,qBAAqB,CAACA,EAAI,QAAQ,SAAS,aAAa,KAC/D,QAAA,MAAM,qCAAqCA,CAAG;AAAA,QACxD,CACD;AAAA,MAEL;AAGF,UAAI,kBAAkBP,GAAS;AAC7B,YAAI,CAAC,MAAM,QAAQA,EAAQ,YAAY;AAC/B,gBAAA,IAAI,MAAM,+BAA+B;AAG7C,QAAAA,EAAQ,aAAa,UACvBH,EAASW,EAAI,KAAK,eAAeR,EAAQ,YAAY,CAAC;AAAA,MACxD;AAAA;AAAA,EAGJ,EAE6B;AAC/B;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react-toastify");require("../api/base/client.cjs.js");require("../api/generated/graphql.cjs.js");require("../api/generated/graphqlLinks.cjs.js");require("../api/generated/access.cjs.js");require("../api/generated/actions.cjs.js");require("../api/generated/activityFeed.cjs.js");require("../api/generated/addons.cjs.js");require("../api/generated/anatomy.cjs.js");require("../api/generated/attributes.cjs.js");require("../api/generated/authentication.cjs.js");require("../api/generated/bundles.cjs.js");require("../api/generated/configuration.cjs.js");require("../api/generated/desktop.cjs.js");require("../api/generated/entityLists.cjs.js");require("../api/generated/events.cjs.js");require("../api/generated/files.cjs.js");require("../api/generated/folders.cjs.js");require("../api/generated/inbox.cjs.js");require("../api/generated/links.cjs.js");require("../api/generated/market.cjs.js");require("../api/generated/onboarding.cjs.js");require("../api/generated/operations.cjs.js");require("../api/generated/products.cjs.js");require("../api/generated/projectDashboard.cjs.js");require("../api/generated/projects.cjs.js");require("../api/generated/reviewables.cjs.js");require("../api/generated/services.cjs.js");require("../api/generated/system.cjs.js");require("../api/generated/tasks.cjs.js");require("../api/generated/teams.cjs.js");require("../api/generated/thumbnails.cjs.js");require("../api/generated/uRIs.cjs.js");require("../api/generated/users.cjs.js");require("../api/generated/versions.cjs.js");require("../api/generated/workfiles.cjs.js");require("../api/generated/ynputCloud.cjs.js");require("../api/generated/grouping.cjs.js");require("../api/generated/views.cjs.js");require("../api/queries/actions/getActions.cjs.js");require("../api/queries/activities/getActivities.cjs.js");require("../api/queries/activities/updateActivities.cjs.js");require("../api/queries/activities/updateReaction.cjs.js");require("../api/queries/activities/getMentions.cjs.js");require("../api/queries/activities/getCategories.cjs.js");require("../api/queries/addons/getAddons.cjs.js");require("../api/queries/addons/updateAddons.cjs.js");require("../api/queries/attributes/getAttributes.cjs.js");require("../api/queries/attributes/updateAttributes.cjs.js");require("../api/queries/authentication/getAuthentication.cjs.js");require("../api/queries/cloud/cloud.cjs.js");require("../api/queries/entities/getEntity.cjs.js");require("../api/queries/entities/getEntityPanel.cjs.js");const n=require("../api/queries/entities/updateEntity.cjs.js");require("../api/queries/entityLists/getLists.cjs.js");require("../api/queries/entityLists/updateLists.cjs.js");require("../api/queries/entityLists/getListsAttributes.cjs.js");require("../api/queries/entityLists/updateListsAttributes.cjs.js");require("../api/queries/entityLists/listFolders.cjs.js");require("../api/queries/folders/getFolders.cjs.js");require("../api/queries/grouping/getGrouping.cjs.js");require("../api/queries/links/updateLinks.cjs.js");require("../api/queries/links/getLinks.cjs.js");require("../api/queries/links/getEntityLinks.cjs.js");require("../api/queries/overview/getOverview.cjs.js");require("../api/queries/overview/updateOverview.cjs.js");require("../api/queries/versions/getVersionsProducts.cjs.js");require("../api/queries/permissions/getPermissions.cjs.js");require("../api/queries/products/createProduct.cjs.js");require("../api/queries/project/getProject.cjs.js");require("../api/queries/project/updateProject.cjs.js");require("../api/queries/review/getReview.cjs.js");require("../api/queries/review/updateReview.cjs.js");require("../api/queries/share/share.cjs.js");require("../api/queries/system/getSystem.cjs.js");require("../api/queries/userDashboard/getUserDashboard.cjs.js");require("../api/queries/users/getUsers.cjs.js");require("../api/queries/users/updateUsers.cjs.js");require("../api/queries/users/guests.cjs.js");require("../api/queries/versions/updateVersions.cjs.js");require("../api/queries/views/getViews.cjs.js");require("../api/queries/views/updateViews.cjs.js");require("../api/queries/watchers/getWatchers.cjs.js");require("../api/queries/uris/getUris.cjs.js");require("../context/RemoteModulesContext.cjs.js");const d=require("../context/DetailsPanelContext.cjs.js");require("../context/ThumbnailUploaderContext.cjs.js");require("../context/SettingsPanelContext.cjs.js");require("../context/pip/PiPProvider.cjs.js");require("react-dom");require("../context/pip/PiPWrapper.cjs.js");require("../context/AddonProjectContext.cjs.js");require("../context/AddonContext.cjs.js");require("../context/PowerpackContext.cjs.js");require("../context/MoveEntityContext.cjs.js");require("../context/MenuContext.cjs.js");require("../context/WebsocketContext.cjs.js");require("../context/GlobalContext.cjs.js");require("../context/ProjectContext.cjs.js");require("../context/ProjectFoldersContext.cjs.js");require("../context/UriContext.cjs.js");const c=({entities:t,entityType:r})=>{const[o]=n.useUpdateEntitiesMutation(),{onUpdateEntity:i}=d.useDetailsPanelContext();return{updateEntity:async(s,u)=>{if(u==null){console.error("value is null or undefined");return}try{const q=t.map(e=>({id:e.id,projectName:e.projectName,data:{[s]:u},currentAssignees:e.users,meta:{folderId:e.folderId}}));await o({operations:q,entityType:r}),i==null||i({operations:q,entityType:r})}catch{a.toast.error(`Error updating ${r}`)}}}};exports.useEntityUpdate=c;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react-toastify");require("../api/base/client.cjs.js");require("../api/generated/graphql.cjs.js");require("../api/generated/graphqlLinks.cjs.js");require("../api/generated/access.cjs.js");require("../api/generated/actions.cjs.js");require("../api/generated/activityFeed.cjs.js");require("../api/generated/addons.cjs.js");require("../api/generated/anatomy.cjs.js");require("../api/generated/attributes.cjs.js");require("../api/generated/authentication.cjs.js");require("../api/generated/bundles.cjs.js");require("../api/generated/configuration.cjs.js");require("../api/generated/desktop.cjs.js");require("../api/generated/entityLists.cjs.js");require("../api/generated/events.cjs.js");require("../api/generated/files.cjs.js");require("../api/generated/folders.cjs.js");require("../api/generated/inbox.cjs.js");require("../api/generated/links.cjs.js");require("../api/generated/market.cjs.js");require("../api/generated/onboarding.cjs.js");require("../api/generated/operations.cjs.js");require("../api/generated/products.cjs.js");require("../api/generated/projectDashboard.cjs.js");require("../api/generated/projects.cjs.js");require("../api/generated/reviewables.cjs.js");require("../api/generated/services.cjs.js");require("../api/generated/system.cjs.js");require("../api/generated/tasks.cjs.js");require("../api/generated/teams.cjs.js");require("../api/generated/thumbnails.cjs.js");require("../api/generated/uRIs.cjs.js");require("../api/generated/users.cjs.js");require("../api/generated/versions.cjs.js");require("../api/generated/workfiles.cjs.js");require("../api/generated/ynputCloud.cjs.js");require("../api/generated/grouping.cjs.js");require("../api/generated/views.cjs.js");require("../api/queries/actions/getActions.cjs.js");require("../api/queries/activities/getActivities.cjs.js");require("../api/queries/activities/updateActivities.cjs.js");require("../api/queries/activities/updateReaction.cjs.js");require("../api/queries/activities/getMentions.cjs.js");require("../api/queries/activities/getCategories.cjs.js");require("../api/queries/addons/getAddons.cjs.js");require("../api/queries/addons/updateAddons.cjs.js");require("../api/queries/attributes/getAttributes.cjs.js");require("../api/queries/attributes/updateAttributes.cjs.js");require("../api/queries/authentication/getAuthentication.cjs.js");require("../api/queries/cloud/cloud.cjs.js");require("../api/queries/config/getConfig.cjs.js");require("../api/queries/config/updateConfig.cjs.js");require("../api/queries/entities/getEntity.cjs.js");require("../api/queries/entities/getEntityPanel.cjs.js");const n=require("../api/queries/entities/updateEntity.cjs.js");require("../api/queries/entityLists/getLists.cjs.js");require("../api/queries/entityLists/updateLists.cjs.js");require("../api/queries/entityLists/getListsAttributes.cjs.js");require("../api/queries/entityLists/updateListsAttributes.cjs.js");require("../api/queries/entityLists/listFolders.cjs.js");require("../api/queries/folders/getFolders.cjs.js");require("../api/queries/grouping/getGrouping.cjs.js");require("../api/queries/links/updateLinks.cjs.js");require("../api/queries/links/getLinks.cjs.js");require("../api/queries/links/getEntityLinks.cjs.js");require("../api/queries/overview/getOverview.cjs.js");require("../api/queries/overview/updateOverview.cjs.js");require("../api/queries/versions/getVersionsProducts.cjs.js");require("../api/queries/permissions/getPermissions.cjs.js");require("../api/queries/products/createProduct.cjs.js");require("../api/queries/project/getProject.cjs.js");require("../api/queries/project/updateProject.cjs.js");require("../api/queries/review/getReview.cjs.js");require("../api/queries/review/updateReview.cjs.js");require("../api/queries/share/share.cjs.js");require("../api/queries/system/getSystem.cjs.js");require("../api/queries/userDashboard/getUserDashboard.cjs.js");require("../api/queries/users/getUsers.cjs.js");require("../api/queries/users/updateUsers.cjs.js");require("../api/queries/users/guests.cjs.js");require("../api/queries/versions/updateVersions.cjs.js");require("../api/queries/views/getViews.cjs.js");require("../api/queries/views/updateViews.cjs.js");require("../api/queries/watchers/getWatchers.cjs.js");require("../api/queries/uris/getUris.cjs.js");require("../context/RemoteModulesContext.cjs.js");const d=require("../context/DetailsPanelContext.cjs.js");require("../context/ThumbnailUploaderContext.cjs.js");require("../context/SettingsPanelContext.cjs.js");require("../context/pip/PiPProvider.cjs.js");require("react-dom");require("../context/pip/PiPWrapper.cjs.js");require("../context/AddonProjectContext.cjs.js");require("../context/AddonContext.cjs.js");require("../context/PowerpackContext.cjs.js");require("../context/MoveEntityContext.cjs.js");require("../context/MenuContext.cjs.js");require("../context/WebsocketContext.cjs.js");require("../context/GlobalContext.cjs.js");require("../context/ProjectContext.cjs.js");require("../context/ProjectFoldersContext.cjs.js");require("../context/UriContext.cjs.js");const c=({entities:t,entityType:r})=>{const[o]=n.useUpdateEntitiesMutation(),{onUpdateEntity:i}=d.useDetailsPanelContext();return{updateEntity:async(s,u)=>{if(u==null){console.error("value is null or undefined");return}try{const q=t.map(e=>({id:e.id,projectName:e.projectName,data:{[s]:u},currentAssignees:e.users,meta:{folderId:e.folderId}}));await o({operations:q,entityType:r}),i==null||i({operations:q,entityType:r})}catch{a.toast.error(`Error updating ${r}`)}}}};exports.useEntityUpdate=c;
2
2
  //# sourceMappingURL=useEntityUpdate.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEntityUpdate.cjs.js","sources":["../../../../src/hooks/useEntityUpdate.ts"],"sourcesContent":["import { toast } from 'react-toastify'\nimport { useUpdateEntitiesMutation } from '@shared/api'\nimport { useContext } from 'react'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface Entity {\n id: string\n projectName: string\n users: string[]\n folderId?: string\n productId?: string\n}\n\nexport interface UseEntityUpdateParams {\n entities: Entity[]\n entityType: string\n}\n\n/**\n * Hook for updating entities with proper error handling and version-specific logic\n */\nexport const useEntityUpdate = ({ entities, entityType }: UseEntityUpdateParams) => {\n const [updateEntities] = useUpdateEntitiesMutation()\n const { onUpdateEntity } = useDetailsPanelContext()\n\n /**\n * Updates entities with the specified field and value\n * @param field The field to update\n * @param value The new value for the field\n * @returns Promise that resolves when the update is complete\n */\n const updateEntity = async (field: string, value: any): Promise<void> => {\n if (value === null || value === undefined) {\n console.error('value is null or undefined')\n return\n }\n\n try {\n // Build entities operations array\n const operations = entities.map((entity) => ({\n id: entity.id,\n projectName: entity.projectName,\n data: {\n [field]: value,\n },\n currentAssignees: entity.users,\n meta: {\n folderId: entity.folderId,\n },\n }))\n\n await updateEntities({ operations, entityType })\n onUpdateEntity?.({ operations, entityType })\n } catch (error) {\n toast.error(`Error updating ${entityType}`)\n }\n }\n\n return { updateEntity }\n}\n"],"names":["useEntityUpdate","entities","entityType","updateEntities","useUpdateEntitiesMutation","onUpdateEntity","useDetailsPanelContext","updateEntity","field","value","operations","entity","toast"],"mappings":"05JAqBO,MAAMA,EAAkB,CAAC,CAAE,SAAAC,EAAU,WAAAC,KAAwC,CAC5E,KAAA,CAACC,CAAc,EAAIC,4BAA0B,EAC7C,CAAE,eAAAC,CAAe,EAAIC,yBAAuB,EAmClD,MAAO,CAAEC,aA3BY,MAAOC,EAAeC,IAA8B,CACnE,GAAAA,GAAU,KAA6B,CACzC,QAAQ,MAAM,4BAA4B,EAC1C,MAAA,CAGE,GAAA,CAEF,MAAMC,EAAaT,EAAS,IAAKU,IAAY,CAC3C,GAAIA,EAAO,GACX,YAAaA,EAAO,YACpB,KAAM,CACJ,CAACH,CAAK,EAAGC,CACX,EACA,iBAAkBE,EAAO,MACzB,KAAM,CACJ,SAAUA,EAAO,QAAA,CACnB,EACA,EAEF,MAAMR,EAAe,CAAE,WAAAO,EAAY,WAAAR,EAAY,EAC9BG,GAAA,MAAAA,EAAA,CAAE,WAAAK,EAAY,WAAAR,SACjB,CACRU,EAAAA,MAAA,MAAM,kBAAkBV,CAAU,EAAE,CAAA,CAE9C,CAEsB,CACxB"}
1
+ {"version":3,"file":"useEntityUpdate.cjs.js","sources":["../../../../src/hooks/useEntityUpdate.ts"],"sourcesContent":["import { toast } from 'react-toastify'\nimport { useUpdateEntitiesMutation } from '@shared/api'\nimport { useContext } from 'react'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface Entity {\n id: string\n projectName: string\n users: string[]\n folderId?: string\n productId?: string\n}\n\nexport interface UseEntityUpdateParams {\n entities: Entity[]\n entityType: string\n}\n\n/**\n * Hook for updating entities with proper error handling and version-specific logic\n */\nexport const useEntityUpdate = ({ entities, entityType }: UseEntityUpdateParams) => {\n const [updateEntities] = useUpdateEntitiesMutation()\n const { onUpdateEntity } = useDetailsPanelContext()\n\n /**\n * Updates entities with the specified field and value\n * @param field The field to update\n * @param value The new value for the field\n * @returns Promise that resolves when the update is complete\n */\n const updateEntity = async (field: string, value: any): Promise<void> => {\n if (value === null || value === undefined) {\n console.error('value is null or undefined')\n return\n }\n\n try {\n // Build entities operations array\n const operations = entities.map((entity) => ({\n id: entity.id,\n projectName: entity.projectName,\n data: {\n [field]: value,\n },\n currentAssignees: entity.users,\n meta: {\n folderId: entity.folderId,\n },\n }))\n\n await updateEntities({ operations, entityType })\n onUpdateEntity?.({ operations, entityType })\n } catch (error) {\n toast.error(`Error updating ${entityType}`)\n }\n }\n\n return { updateEntity }\n}\n"],"names":["useEntityUpdate","entities","entityType","updateEntities","useUpdateEntitiesMutation","onUpdateEntity","useDetailsPanelContext","updateEntity","field","value","operations","entity","toast"],"mappings":"igKAqBO,MAAMA,EAAkB,CAAC,CAAE,SAAAC,EAAU,WAAAC,KAAwC,CAC5E,KAAA,CAACC,CAAc,EAAIC,4BAA0B,EAC7C,CAAE,eAAAC,CAAe,EAAIC,yBAAuB,EAmClD,MAAO,CAAEC,aA3BY,MAAOC,EAAeC,IAA8B,CACnE,GAAAA,GAAU,KAA6B,CACzC,QAAQ,MAAM,4BAA4B,EAC1C,MAAA,CAGE,GAAA,CAEF,MAAMC,EAAaT,EAAS,IAAKU,IAAY,CAC3C,GAAIA,EAAO,GACX,YAAaA,EAAO,YACpB,KAAM,CACJ,CAACH,CAAK,EAAGC,CACX,EACA,iBAAkBE,EAAO,MACzB,KAAM,CACJ,SAAUA,EAAO,QAAA,CACnB,EACA,EAEF,MAAMR,EAAe,CAAE,WAAAO,EAAY,WAAAR,EAAY,EAC9BG,GAAA,MAAAA,EAAA,CAAE,WAAAK,EAAY,WAAAR,SACjB,CACRU,EAAAA,MAAA,MAAM,kBAAkBV,CAAU,EAAE,CAAA,CAE9C,CAEsB,CACxB"}
@@ -49,6 +49,8 @@ import "../api/queries/attributes/getAttributes.es.js";
49
49
  import "../api/queries/attributes/updateAttributes.es.js";
50
50
  import "../api/queries/authentication/getAuthentication.es.js";
51
51
  import "../api/queries/cloud/cloud.es.js";
52
+ import "../api/queries/config/getConfig.es.js";
53
+ import "../api/queries/config/updateConfig.es.js";
52
54
  import "../api/queries/entities/getEntity.es.js";
53
55
  import "../api/queries/entities/getEntityPanel.es.js";
54
56
  import { useUpdateEntitiesMutation as n } from "../api/queries/entities/updateEntity.es.js";
@@ -99,7 +101,7 @@ import "../context/GlobalContext.es.js";
99
101
  import "../context/ProjectContext.es.js";
100
102
  import "../context/ProjectFoldersContext.es.js";
101
103
  import "../context/UriContext.es.js";
102
- const mt = ({ entities: m, entityType: t }) => {
104
+ const st = ({ entities: m, entityType: t }) => {
103
105
  const [e] = n(), { onUpdateEntity: o } = d();
104
106
  return { updateEntity: async (s, i) => {
105
107
  if (i == null) {
@@ -125,6 +127,6 @@ const mt = ({ entities: m, entityType: t }) => {
125
127
  } };
126
128
  };
127
129
  export {
128
- mt as useEntityUpdate
130
+ st as useEntityUpdate
129
131
  };
130
132
  //# sourceMappingURL=useEntityUpdate.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEntityUpdate.es.js","sources":["../../../../src/hooks/useEntityUpdate.ts"],"sourcesContent":["import { toast } from 'react-toastify'\nimport { useUpdateEntitiesMutation } from '@shared/api'\nimport { useContext } from 'react'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface Entity {\n id: string\n projectName: string\n users: string[]\n folderId?: string\n productId?: string\n}\n\nexport interface UseEntityUpdateParams {\n entities: Entity[]\n entityType: string\n}\n\n/**\n * Hook for updating entities with proper error handling and version-specific logic\n */\nexport const useEntityUpdate = ({ entities, entityType }: UseEntityUpdateParams) => {\n const [updateEntities] = useUpdateEntitiesMutation()\n const { onUpdateEntity } = useDetailsPanelContext()\n\n /**\n * Updates entities with the specified field and value\n * @param field The field to update\n * @param value The new value for the field\n * @returns Promise that resolves when the update is complete\n */\n const updateEntity = async (field: string, value: any): Promise<void> => {\n if (value === null || value === undefined) {\n console.error('value is null or undefined')\n return\n }\n\n try {\n // Build entities operations array\n const operations = entities.map((entity) => ({\n id: entity.id,\n projectName: entity.projectName,\n data: {\n [field]: value,\n },\n currentAssignees: entity.users,\n meta: {\n folderId: entity.folderId,\n },\n }))\n\n await updateEntities({ operations, entityType })\n onUpdateEntity?.({ operations, entityType })\n } catch (error) {\n toast.error(`Error updating ${entityType}`)\n }\n }\n\n return { updateEntity }\n}\n"],"names":["useEntityUpdate","entities","entityType","updateEntities","useUpdateEntitiesMutation","onUpdateEntity","useDetailsPanelContext","field","value","operations","entity","toast"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBO,MAAMA,KAAkB,CAAC,EAAE,UAAAC,GAAU,YAAAC,QAAwC;AAC5E,QAAA,CAACC,CAAc,IAAIC,EAA0B,GAC7C,EAAE,gBAAAC,EAAe,IAAIC,EAAuB;AAmClD,SAAO,EAAE,cA3BY,OAAOC,GAAeC,MAA8B;AACnE,QAAAA,KAAU,MAA6B;AACzC,cAAQ,MAAM,4BAA4B;AAC1C;AAAA,IAAA;AAGE,QAAA;AAEF,YAAMC,IAAaR,EAAS,IAAI,CAACS,OAAY;AAAA,QAC3C,IAAIA,EAAO;AAAA,QACX,aAAaA,EAAO;AAAA,QACpB,MAAM;AAAA,UACJ,CAACH,CAAK,GAAGC;AAAA,QACX;AAAA,QACA,kBAAkBE,EAAO;AAAA,QACzB,MAAM;AAAA,UACJ,UAAUA,EAAO;AAAA,QAAA;AAAA,MACnB,EACA;AAEF,YAAMP,EAAe,EAAE,YAAAM,GAAY,YAAAP,GAAY,GAC9BG,KAAA,QAAAA,EAAA,EAAE,YAAAI,GAAY,YAAAP;YACjB;AACR,MAAAS,EAAA,MAAM,kBAAkBT,CAAU,EAAE;AAAA,IAAA;AAAA,EAE9C,EAEsB;AACxB;"}
1
+ {"version":3,"file":"useEntityUpdate.es.js","sources":["../../../../src/hooks/useEntityUpdate.ts"],"sourcesContent":["import { toast } from 'react-toastify'\nimport { useUpdateEntitiesMutation } from '@shared/api'\nimport { useContext } from 'react'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface Entity {\n id: string\n projectName: string\n users: string[]\n folderId?: string\n productId?: string\n}\n\nexport interface UseEntityUpdateParams {\n entities: Entity[]\n entityType: string\n}\n\n/**\n * Hook for updating entities with proper error handling and version-specific logic\n */\nexport const useEntityUpdate = ({ entities, entityType }: UseEntityUpdateParams) => {\n const [updateEntities] = useUpdateEntitiesMutation()\n const { onUpdateEntity } = useDetailsPanelContext()\n\n /**\n * Updates entities with the specified field and value\n * @param field The field to update\n * @param value The new value for the field\n * @returns Promise that resolves when the update is complete\n */\n const updateEntity = async (field: string, value: any): Promise<void> => {\n if (value === null || value === undefined) {\n console.error('value is null or undefined')\n return\n }\n\n try {\n // Build entities operations array\n const operations = entities.map((entity) => ({\n id: entity.id,\n projectName: entity.projectName,\n data: {\n [field]: value,\n },\n currentAssignees: entity.users,\n meta: {\n folderId: entity.folderId,\n },\n }))\n\n await updateEntities({ operations, entityType })\n onUpdateEntity?.({ operations, entityType })\n } catch (error) {\n toast.error(`Error updating ${entityType}`)\n }\n }\n\n return { updateEntity }\n}\n"],"names":["useEntityUpdate","entities","entityType","updateEntities","useUpdateEntitiesMutation","onUpdateEntity","useDetailsPanelContext","field","value","operations","entity","toast"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBO,MAAMA,KAAkB,CAAC,EAAE,UAAAC,GAAU,YAAAC,QAAwC;AAC5E,QAAA,CAACC,CAAc,IAAIC,EAA0B,GAC7C,EAAE,gBAAAC,EAAe,IAAIC,EAAuB;AAmClD,SAAO,EAAE,cA3BY,OAAOC,GAAeC,MAA8B;AACnE,QAAAA,KAAU,MAA6B;AACzC,cAAQ,MAAM,4BAA4B;AAC1C;AAAA,IAAA;AAGE,QAAA;AAEF,YAAMC,IAAaR,EAAS,IAAI,CAACS,OAAY;AAAA,QAC3C,IAAIA,EAAO;AAAA,QACX,aAAaA,EAAO;AAAA,QACpB,MAAM;AAAA,UACJ,CAACH,CAAK,GAAGC;AAAA,QACX;AAAA,QACA,kBAAkBE,EAAO;AAAA,QACzB,MAAM;AAAA,UACJ,UAAUA,EAAO;AAAA,QAAA;AAAA,MACnB,EACA;AAEF,YAAMP,EAAe,EAAE,YAAAM,GAAY,YAAAP,GAAY,GAC9BG,KAAA,QAAAA,EAAA,EAAE,YAAAI,GAAY,YAAAP;YACjB;AACR,MAAAS,EAAA,MAAM,kBAAkBT,CAAU,EAAE;AAAA,IAAA;AAAA,EAE9C,EAEsB;AACxB;"}