@ynput/ayon-frontend-shared 0.3.32 → 0.3.33

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 (836) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +26 -24
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +218 -214
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/Slicer.cjs.js +1 -1
  8. package/dist/Slicer.es.js +19 -18
  9. package/dist/Slicer.es.js.map +1 -1
  10. package/dist/_virtual/index.cjs14.js +1 -1
  11. package/dist/_virtual/index.cjs15.js +1 -1
  12. package/dist/_virtual/index.cjs19.js +1 -1
  13. package/dist/_virtual/index.cjs4.js +1 -1
  14. package/dist/_virtual/index.cjs5.js +1 -1
  15. package/dist/_virtual/index.cjs6.js +1 -1
  16. package/dist/_virtual/index.cjs7.js +1 -1
  17. package/dist/_virtual/index.cjs8.js +1 -1
  18. package/dist/_virtual/index.es10.js +2 -2
  19. package/dist/_virtual/index.es11.js +2 -2
  20. package/dist/_virtual/index.es13.js +2 -2
  21. package/dist/_virtual/index.es14.js +2 -5
  22. package/dist/_virtual/index.es14.js.map +1 -1
  23. package/dist/_virtual/index.es15.js +2 -2
  24. package/dist/_virtual/index.es16.js +2 -2
  25. package/dist/_virtual/index.es17.js +2 -2
  26. package/dist/_virtual/index.es18.js +2 -2
  27. package/dist/_virtual/index.es19.js +2 -2
  28. package/dist/_virtual/index.es4.js +5 -2
  29. package/dist/_virtual/index.es4.js.map +1 -1
  30. package/dist/_virtual/index.es5.js +2 -5
  31. package/dist/_virtual/index.es5.js.map +1 -1
  32. package/dist/_virtual/index.es6.js +2 -2
  33. package/dist/_virtual/index.es7.js +5 -2
  34. package/dist/_virtual/index.es7.js.map +1 -1
  35. package/dist/_virtual/index.es8.js +2 -2
  36. package/dist/_virtual/index.es9.js +2 -2
  37. package/dist/api.cjs.js +1 -1
  38. package/dist/api.es.js +435 -430
  39. package/dist/api.es.js.map +1 -1
  40. package/dist/components.cjs.js +1 -1
  41. package/dist/components.es.js +83 -80
  42. package/dist/components.es.js.map +1 -1
  43. package/dist/index.cjs.js +1 -1
  44. package/dist/index.es.js +13 -11
  45. package/dist/index.es.js.map +1 -1
  46. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  47. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  48. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  49. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  50. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  51. package/dist/node_modules/remove-accents/index.es.js +1 -1
  52. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  53. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  54. package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
  55. package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
  56. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  57. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  58. package/dist/shared/node_modules/@module-federation/runtime-core/dist/module/index.cjs.js +1 -1
  59. package/dist/shared/node_modules/@module-federation/runtime-core/dist/module/index.es.js +1 -1
  60. package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.cjs.js +1 -1
  61. package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.es.js +1 -1
  62. package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.cjs.js +1 -1
  63. package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.es.js +1 -1
  64. package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.cjs.js +1 -1
  65. package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.es.js +1 -1
  66. package/dist/shared/node_modules/@module-federation/runtime-core/dist/type/index.cjs.js +1 -1
  67. package/dist/shared/node_modules/@module-federation/runtime-core/dist/type/index.es.js +1 -1
  68. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.cjs.js +1 -1
  69. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.es.js +1 -1
  70. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/index.cjs.js +1 -1
  71. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/index.es.js +1 -1
  72. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.cjs.js +1 -1
  73. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.cjs.js.map +1 -1
  74. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.es.js +1 -1
  75. package/dist/shared/node_modules/@module-federation/sdk/dist/index.cjs.js +1 -1
  76. package/dist/shared/node_modules/@module-federation/sdk/dist/index.es.js +1 -1
  77. package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
  78. package/dist/shared/node_modules/prop-types/index.es.js +1 -1
  79. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  80. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  81. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  82. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js.map +1 -1
  83. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  84. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  85. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js.map +1 -1
  86. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  87. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  88. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js.map +1 -1
  89. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  90. package/dist/shared/src/api/base/client.cjs.js +1 -1
  91. package/dist/shared/src/api/base/client.cjs.js.map +1 -1
  92. package/dist/shared/src/api/base/client.es.js +1 -0
  93. package/dist/shared/src/api/base/client.es.js.map +1 -1
  94. package/dist/shared/src/api/generated/graphql.cjs.js +104 -48
  95. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  96. package/dist/shared/src/api/generated/graphql.es.js +175 -115
  97. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  98. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  99. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  100. package/dist/shared/src/api/queries/activities/getActivities.cjs.js +1 -1
  101. package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
  102. package/dist/shared/src/api/queries/activities/getActivities.es.js +26 -24
  103. package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
  104. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js +1 -1
  105. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js.map +1 -1
  106. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js +6 -6
  107. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js.map +1 -1
  108. package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.cjs.js +2 -0
  109. package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.cjs.js.map +1 -0
  110. package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.es.js +68 -0
  111. package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.es.js.map +1 -0
  112. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js +1 -1
  113. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
  114. package/dist/shared/src/api/queries/entityLists/updateLists.es.js +73 -69
  115. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
  116. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +1 -1
  117. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  118. package/dist/shared/src/api/queries/overview/updateOverview.es.js +60 -55
  119. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  120. package/dist/shared/src/api/queries/users/getUsers.cjs.js +4 -4
  121. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  122. package/dist/shared/src/api/queries/users/getUsers.es.js +11 -11
  123. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  124. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +1 -1
  125. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
  126. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +3 -2
  127. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
  128. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +1 -1
  129. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  130. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +3 -2
  131. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  132. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  133. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  134. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +6 -4
  135. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  136. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  137. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  138. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +3 -2
  139. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  140. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +1 -1
  141. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  142. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +3 -2
  143. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  144. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  145. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  146. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +3 -2
  147. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  148. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
  149. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
  150. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +3 -2
  151. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
  152. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  153. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  154. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +6 -4
  155. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  156. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  157. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  158. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +6 -4
  159. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  160. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  161. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  162. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +3 -2
  163. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  164. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  165. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  166. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +5 -4
  167. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  168. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  169. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  170. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +3 -2
  171. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  172. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
  173. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  174. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +3 -2
  175. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  176. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  177. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  178. package/dist/shared/src/components/LinksManager/LinksManager.es.js +3 -2
  179. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  180. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  181. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  182. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +6 -4
  183. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  184. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  185. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  186. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +3 -2
  187. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  188. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
  189. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
  190. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +3 -2
  191. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
  192. package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
  193. package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
  194. package/dist/shared/src/components/Menu/Menu.es.js +3 -2
  195. package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
  196. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  197. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  198. package/dist/shared/src/components/Menu/MenuItem.es.js +1 -0
  199. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  200. package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
  201. package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
  202. package/dist/shared/src/components/Menu/MenuList.es.js +3 -2
  203. package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
  204. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +1 -1
  205. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  206. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +3 -2
  207. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  208. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  209. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  210. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +3 -2
  211. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  212. package/dist/shared/src/components/Powerpack/useFreeTrialLink.cjs.js +1 -1
  213. package/dist/shared/src/components/Powerpack/useFreeTrialLink.cjs.js.map +1 -1
  214. package/dist/shared/src/components/Powerpack/useFreeTrialLink.es.js +3 -2
  215. package/dist/shared/src/components/Powerpack/useFreeTrialLink.es.js.map +1 -1
  216. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +1 -1
  217. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  218. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +6 -4
  219. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  220. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  221. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  222. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +8 -6
  223. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  224. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  225. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  226. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +3 -2
  227. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  228. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  229. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  230. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +6 -4
  231. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  232. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  233. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  234. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +6 -4
  235. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  236. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  237. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  238. package/dist/shared/src/components/RenameForm/RenameForm.es.js +6 -4
  239. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  240. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +1 -1
  241. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  242. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +3 -2
  243. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  244. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  245. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  246. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +6 -4
  247. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  248. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  249. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  250. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +7 -5
  251. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  252. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  253. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  254. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +6 -4
  255. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  256. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
  257. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  258. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +3 -2
  259. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  260. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  261. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  262. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +6 -4
  263. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  264. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js +1 -1
  265. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js.map +1 -1
  266. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js +2 -1
  267. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js.map +1 -1
  268. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.cjs.js +2 -0
  269. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.cjs.js.map +1 -0
  270. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.es.js +24 -0
  271. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.es.js.map +1 -0
  272. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  273. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  274. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +7 -6
  275. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  276. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +1 -1
  277. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  278. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +3 -2
  279. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  280. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
  281. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  282. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +8 -6
  283. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  284. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  285. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  286. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +6 -4
  287. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  288. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
  289. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
  290. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +3 -2
  291. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
  292. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +1 -1
  293. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  294. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +3 -2
  295. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  296. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  297. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  298. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +6 -4
  299. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  300. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  301. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  302. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +10 -8
  303. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  304. package/dist/shared/src/components/Watchers/Watchers.cjs.js +1 -1
  305. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  306. package/dist/shared/src/components/Watchers/Watchers.es.js +3 -2
  307. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  308. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  309. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  310. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +6 -4
  311. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  312. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  313. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  314. package/dist/shared/src/containers/Actions/Actions.es.js +3 -2
  315. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  316. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  317. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  318. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +6 -4
  319. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  320. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  321. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  322. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +6 -4
  323. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  324. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  325. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  326. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +6 -4
  327. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  328. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  329. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  330. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +6 -4
  331. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  332. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  333. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  334. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +6 -4
  335. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  336. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  337. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  338. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +6 -4
  339. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  340. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  341. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  342. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +6 -4
  343. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  344. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  345. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  346. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +3 -2
  347. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  348. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  349. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  350. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +19 -17
  351. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  352. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  353. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  354. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +6 -4
  355. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  356. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  357. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  358. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +5 -3
  359. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  360. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  361. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  362. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +10 -9
  363. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  364. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  365. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  366. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +3 -2
  367. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  368. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  369. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  370. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +6 -4
  371. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  372. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  373. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  374. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +6 -4
  375. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  376. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  377. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  378. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +6 -4
  379. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  380. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  381. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  382. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +6 -4
  383. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  384. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  385. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  386. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +3 -2
  387. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  388. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  389. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  390. package/dist/shared/src/containers/Feed/Feed.es.js +156 -140
  391. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  392. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  393. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  394. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +6 -4
  395. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  396. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  397. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  398. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +131 -144
  399. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  400. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  401. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  402. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +6 -4
  403. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  404. package/dist/shared/src/containers/Feed/components/ActivityDate.cjs.js +3 -3
  405. package/dist/shared/src/containers/Feed/components/ActivityDate.cjs.js.map +1 -1
  406. package/dist/shared/src/containers/Feed/components/ActivityDate.es.js +39 -31
  407. package/dist/shared/src/containers/Feed/components/ActivityDate.es.js.map +1 -1
  408. package/dist/shared/src/containers/Feed/components/ActivityItem.cjs.js +1 -1
  409. package/dist/shared/src/containers/Feed/components/ActivityItem.cjs.js.map +1 -1
  410. package/dist/shared/src/containers/Feed/components/ActivityItem.es.js +23 -20
  411. package/dist/shared/src/containers/Feed/components/ActivityItem.es.js.map +1 -1
  412. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js +2 -0
  413. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js.map +1 -0
  414. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js +349 -0
  415. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js.map +1 -0
  416. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js +50 -0
  417. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js.map +1 -0
  418. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.styled.es.js +56 -0
  419. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.styled.es.js.map +1 -0
  420. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  421. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  422. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +3 -2
  423. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  424. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  425. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  426. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +349 -290
  427. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  428. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.cjs.js +87 -12
  429. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.cjs.js.map +1 -1
  430. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.es.js +101 -21
  431. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.es.js.map +1 -1
  432. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.cjs.js +2 -0
  433. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.cjs.js.map +1 -0
  434. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.es.js +34 -0
  435. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.es.js.map +1 -0
  436. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  437. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  438. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +10 -8
  439. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  440. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  441. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  442. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +3 -2
  443. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  444. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  445. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  446. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +3 -2
  447. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  448. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  449. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  450. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +3 -2
  451. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  452. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  453. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  454. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +5 -3
  455. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  456. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.cjs.js +1 -1
  457. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.cjs.js.map +1 -1
  458. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.es.js +3 -2
  459. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.es.js.map +1 -1
  460. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  461. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  462. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +6 -5
  463. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  464. package/dist/shared/src/containers/Feed/hooks/useCategoryData.cjs.js +2 -0
  465. package/dist/shared/src/containers/Feed/hooks/useCategoryData.cjs.js.map +1 -0
  466. package/dist/shared/src/containers/Feed/hooks/useCategoryData.es.js +27 -0
  467. package/dist/shared/src/containers/Feed/hooks/useCategoryData.es.js.map +1 -0
  468. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js +1 -1
  469. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
  470. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js +88 -68
  471. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js.map +1 -1
  472. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +1 -1
  473. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  474. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +3 -2
  475. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  476. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js +2 -0
  477. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js.map +1 -0
  478. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js +113 -0
  479. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js.map +1 -0
  480. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  481. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  482. package/dist/shared/src/containers/ListTable/ListTable.es.js +6 -4
  483. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  484. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  485. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  486. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +6 -4
  487. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  488. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  489. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  490. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +6 -4
  491. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  492. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  493. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  494. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +34 -32
  495. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  496. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  497. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  498. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +6 -4
  499. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  500. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  501. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  502. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +6 -4
  503. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  504. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  505. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  506. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +6 -4
  507. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  508. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  509. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  510. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +6 -4
  511. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  512. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  513. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  514. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +6 -4
  515. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  516. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +1 -1
  517. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  518. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +5 -4
  519. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  520. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  521. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  522. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +6 -4
  523. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  524. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  525. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  526. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +5 -4
  527. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  528. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +1 -1
  529. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -1
  530. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +93 -90
  531. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -1
  532. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  533. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  534. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +6 -4
  535. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  536. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  537. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  538. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +3 -2
  539. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  540. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  541. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  542. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +9 -7
  543. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  544. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  545. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  546. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +121 -104
  547. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  548. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  549. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  550. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +6 -4
  551. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  552. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  553. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  554. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +6 -4
  555. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  556. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  557. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  558. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +6 -4
  559. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  560. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  561. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  562. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +6 -4
  563. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  564. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  565. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  566. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +178 -175
  567. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  568. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  569. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  570. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +6 -4
  571. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  572. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  573. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  574. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +6 -4
  575. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  576. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  577. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  578. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +6 -4
  579. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  580. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  581. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  582. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +6 -4
  583. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  584. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  585. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  586. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +6 -4
  587. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  588. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  589. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  590. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +20 -17
  591. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  592. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  593. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  594. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +6 -4
  595. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  596. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  597. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  598. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +3 -2
  599. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  600. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  601. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  602. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +17 -15
  603. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  604. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js +1 -1
  605. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js.map +1 -1
  606. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js +61 -61
  607. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js.map +1 -1
  608. package/dist/shared/src/containers/ProjectTreeTable/utils/sanitizeQueryFilter.cjs.js +2 -0
  609. package/dist/shared/src/containers/ProjectTreeTable/utils/sanitizeQueryFilter.cjs.js.map +1 -0
  610. package/dist/shared/src/containers/ProjectTreeTable/utils/sanitizeQueryFilter.es.js +15 -0
  611. package/dist/shared/src/containers/ProjectTreeTable/utils/sanitizeQueryFilter.es.js.map +1 -0
  612. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +1 -1
  613. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  614. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +6 -4
  615. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  616. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
  617. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  618. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +7 -5
  619. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  620. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  621. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  622. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +8 -6
  623. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  624. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +1 -1
  625. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
  626. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +3 -2
  627. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
  628. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  629. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  630. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +6 -4
  631. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  632. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  633. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  634. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +6 -4
  635. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  636. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +1 -1
  637. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
  638. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +3 -2
  639. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
  640. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  641. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  642. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +6 -4
  643. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  644. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  645. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  646. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +6 -4
  647. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  648. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -2
  649. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -1
  650. package/dist/shared/src/containers/Slicer/components/Slicer.es.js +52 -50
  651. package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -1
  652. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +1 -1
  653. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
  654. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +3 -2
  655. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
  656. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  657. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  658. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +6 -4
  659. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  660. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  661. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  662. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +56 -53
  663. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  664. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
  665. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
  666. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +3 -2
  667. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
  668. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
  669. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
  670. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +3 -2
  671. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
  672. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js +1 -1
  673. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js.map +1 -1
  674. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js +6 -4
  675. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js.map +1 -1
  676. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
  677. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
  678. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +3 -2
  679. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
  680. package/dist/shared/src/containers/Slicer/hooks/useSlicerViewSync.cjs.js +1 -1
  681. package/dist/shared/src/containers/Slicer/hooks/useSlicerViewSync.cjs.js.map +1 -1
  682. package/dist/shared/src/containers/Slicer/hooks/useSlicerViewSync.es.js +12 -18
  683. package/dist/shared/src/containers/Slicer/hooks/useSlicerViewSync.es.js.map +1 -1
  684. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  685. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  686. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +3 -2
  687. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  688. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js +1 -1
  689. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -1
  690. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js +3 -2
  691. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -1
  692. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  693. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  694. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +3 -2
  695. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  696. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  697. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  698. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +6 -4
  699. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  700. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +1 -1
  701. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  702. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +3 -2
  703. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  704. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  705. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  706. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +5 -4
  707. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  708. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
  709. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
  710. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +3 -2
  711. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
  712. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  713. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  714. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +6 -5
  715. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  716. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +1 -1
  717. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -1
  718. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +3 -2
  719. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -1
  720. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +1 -1
  721. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  722. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +3 -2
  723. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  724. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  725. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  726. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +3 -2
  727. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  728. package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
  729. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  730. package/dist/shared/src/context/AddonProjectContext.es.js +5 -4
  731. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  732. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  733. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  734. package/dist/shared/src/context/DetailsPanelContext.es.js +5 -4
  735. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  736. package/dist/shared/src/context/GlobalContext.cjs.js +1 -1
  737. package/dist/shared/src/context/GlobalContext.cjs.js.map +1 -1
  738. package/dist/shared/src/context/GlobalContext.es.js +5 -4
  739. package/dist/shared/src/context/GlobalContext.es.js.map +1 -1
  740. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  741. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  742. package/dist/shared/src/context/PowerpackContext.es.js +7 -6
  743. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  744. package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
  745. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
  746. package/dist/shared/src/context/ProjectContext.es.js +5 -4
  747. package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
  748. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  749. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  750. package/dist/shared/src/context/ProjectFoldersContext.es.js +5 -4
  751. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  752. package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
  753. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  754. package/dist/shared/src/context/RemoteModulesContext.es.js +5 -4
  755. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  756. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  757. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  758. package/dist/shared/src/context/SubtasksModulesContext.es.js +5 -4
  759. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  760. package/dist/shared/src/context/UriContext.cjs.js +1 -1
  761. package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
  762. package/dist/shared/src/context/UriContext.es.js +6 -5
  763. package/dist/shared/src/context/UriContext.es.js.map +1 -1
  764. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  765. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  766. package/dist/shared/src/context/WebsocketContext.es.js +8 -6
  767. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  768. package/dist/shared/src/hooks/useActionTriggers.cjs.js +1 -1
  769. package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
  770. package/dist/shared/src/hooks/useActionTriggers.es.js +3 -2
  771. package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
  772. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  773. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  774. package/dist/shared/src/hooks/useEntityUpdate.es.js +3 -2
  775. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  776. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js +1 -1
  777. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js.map +1 -1
  778. package/dist/shared/src/hooks/useGetEntityGroups.es.js +3 -2
  779. package/dist/shared/src/hooks/useGetEntityGroups.es.js.map +1 -1
  780. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  781. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  782. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +3 -2
  783. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  784. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
  785. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
  786. package/dist/shared/src/hooks/useHierarchyTable.es.js +3 -2
  787. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
  788. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +1 -1
  789. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  790. package/dist/shared/src/hooks/useScopedStatuses.es.js +5 -4
  791. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  792. package/dist/shared/src/hooks/useScopedTypes.cjs.js +1 -1
  793. package/dist/shared/src/hooks/useScopedTypes.cjs.js.map +1 -1
  794. package/dist/shared/src/hooks/useScopedTypes.es.js +3 -2
  795. package/dist/shared/src/hooks/useScopedTypes.es.js.map +1 -1
  796. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  797. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  798. package/dist/shared/src/hooks/useUserProjectConfig.es.js +3 -2
  799. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  800. package/dist/types/api/generated/graphql.d.ts +128 -0
  801. package/dist/types/api/generated/graphqlLinks.d.ts +73 -0
  802. package/dist/types/api/queries/activities/getActivities.d.ts +459 -0
  803. package/dist/types/api/queries/activities/updateActivities.d.ts +22 -0
  804. package/dist/types/api/queries/entities/getEntity.d.ts +10 -0
  805. package/dist/types/api/queries/entities/getEntityPanel.d.ts +10 -0
  806. package/dist/types/api/queries/entities/updateEntity.d.ts +10 -0
  807. package/dist/types/api/queries/entityLists/getLists.d.ts +10 -0
  808. package/dist/types/api/queries/entityLists/index.d.ts +1 -0
  809. package/dist/types/api/queries/entityLists/listItemsColumnStats.d.ts +312 -0
  810. package/dist/types/api/queries/entityLists/types.d.ts +3 -0
  811. package/dist/types/api/queries/overview/getOverview.d.ts +10 -0
  812. package/dist/types/api/queries/project/getProject.d.ts +10 -0
  813. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +10 -0
  814. package/dist/types/api/queries/users/getUsers.d.ts +10 -0
  815. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +20 -0
  816. package/dist/types/components/SearchFilter/filterScopeRegistry.d.ts +5 -0
  817. package/dist/types/components/SearchFilter/index.d.ts +1 -0
  818. package/dist/types/containers/Feed/Feed.d.ts +2 -1
  819. package/dist/types/containers/Feed/components/ActivityDate.d.ts +1 -0
  820. package/dist/types/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.d.ts +20 -0
  821. package/dist/types/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.styled.d.ts +3 -0
  822. package/dist/types/containers/Feed/components/CommentInput/CommentInput.d.ts +8 -0
  823. package/dist/types/containers/Feed/components/CommentInput/CommentInput.styled.d.ts +19 -0
  824. package/dist/types/containers/Feed/components/CommentInput/VersionReviewPill.d.ts +7 -0
  825. package/dist/types/containers/Feed/hooks/useCategoryData.d.ts +7 -0
  826. package/dist/types/containers/Feed/hooks/useCommentMutations.d.ts +2 -0
  827. package/dist/types/containers/Feed/hooks/useGetFeedActivitiesData.d.ts +3 -0
  828. package/dist/types/containers/Feed/hooks/useLastVersionReview.d.ts +11 -0
  829. package/dist/types/containers/ProjectTreeTable/context/ProjectTableProvider.d.ts +2 -1
  830. package/dist/types/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.d.ts +2 -1
  831. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +2 -1
  832. package/dist/types/containers/ProjectTreeTable/hooks/useQueryFilters.d.ts +1 -1
  833. package/dist/types/containers/ProjectTreeTable/types/table.d.ts +1 -0
  834. package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +1 -0
  835. package/dist/types/containers/ProjectTreeTable/utils/sanitizeQueryFilter.d.ts +2 -0
  836. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"viewUpdateHelper.cjs.js","sources":["../../../../../../src/containers/Views/utils/viewUpdateHelper.ts"],"sourcesContent":["/**\n * Shared helper for updating view settings with optimistic local state management.\n *\n * Sequential updateViewSettings calls in the same event tick MUST chain correctly:\n * the second call has to see the first call's changes. Closure-captured\n * `viewSettings` does not refresh between sync calls (no re-render yet), so we\n * read the latest settings from the RTK Query cache at call time instead.\n * RTK's updateView mutation performs an optimistic cache write in\n * `onQueryStarted`, so the cache is already up-to-date by the time the next\n * call reads it.\n */\n\nimport {\n CreateViewApiArg,\n EntityIdResponse,\n useCreateViewMutation,\n useUpdateViewMutation,\n viewsQueries,\n} from '@shared/api'\nimport { generateWorkingView } from './generateWorkingView'\nimport { toast } from 'react-toastify'\nimport { useCallback } from 'react'\nimport { useStore } from 'react-redux'\nimport { useViewsContext, ViewsContextValue } from '../context/ViewsContext'\n\ninterface UpdateOptions {\n successMessage?: string\n errorMessage?: string\n}\n\n// Module-level flag shared across every useViewUpdateHelper instance. Set true\n// when a mutation has been dispatched in the current tick (RTK cache is now\n// optimistically fresh); reset on the next microtask. Must be module-level so\n// that two different hook instances (e.g. ProjectOverviewDataProvider +\n// ProjectOverviewContext) coordinate correctly when writes flow through one\n// and subsequent reads come from the other in the same event tick.\nlet cacheDirtyThisTick = false\nconst markCacheDirty = () => {\n if (cacheDirtyThisTick) return\n cacheDirtyThisTick = true\n queueMicrotask(() => {\n cacheDirtyThisTick = false\n })\n}\n\nexport type UpdateViewSettingsFn = (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions,\n) => Promise<void>\n\nexport interface LatestSettingsResult {\n settings?: any\n workingViewId?: string\n}\n\nexport const updateViewSettings = async (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions = {},\n viewContext: ViewsContextValue,\n onApplyViewChanges: (arg: any, viewId?: string) => Promise<EntityIdResponse | void>,\n // Reads latest effective settings from RTK Query cache at call time. Required to\n // prevent stale-closure races when two updates fire in the same tick.\n getLatest: () => LatestSettingsResult,\n // Invoked synchronously right after the mutation is dispatched. The caller\n // uses this to flip a \"cache is fresh this tick\" flag so subsequent sync\n // calls in the same tick read the just-updated cache instead of stale state.\n markCacheDirty: () => void,\n): Promise<void> => {\n const {\n viewSettings,\n viewType,\n projectName,\n selectedView,\n setSelectedView,\n workingView,\n onSettingsChanged,\n } = viewContext\n\n if (!viewType) throw new Error('No view type provided for updating view settings')\n\n const previousSelectedViewId = selectedView?.id\n const wasWorking = selectedView?.working\n\n try {\n // Immediately update local state for fast UI response\n localStateSetter(newLocalValue)\n\n // Read latest settings from RTK cache (includes prior same-tick optimistic writes).\n // Fallback to closure-captured value if cache has nothing (first render, etc.).\n const { settings: latestSettingsFromCache, workingViewId: latestWorkingViewIdFromCache } =\n getLatest()\n const latestSettings = latestSettingsFromCache ?? viewSettings\n\n // If we have no settings baseline at all (neither from cache nor from context),\n // abort to prevent writing a partial payload that would overwrite saved settings.\n // This is a defence-in-depth guard; in normal flow isLoadingViews prevents callers\n // from triggering updates before data is available.\n if (latestSettings === undefined) {\n console.warn(\n 'updateViewSettings: no settings baseline available, aborting to prevent data loss.',\n )\n return\n }\n\n // Create settings with updates\n const newSettings = { ...latestSettings, ...updatedSettings }\n\n // always update the working view no matter what\n const newWorkingView = generateWorkingView(newSettings)\n\n // Ensure the payload uses the consistent ID if we already have a working view\n const viewId = latestWorkingViewIdFromCache ?? workingView?.id\n if (viewId) {\n newWorkingView.id = viewId\n }\n const newWorkingViewId = newWorkingView.id\n\n // Make API call in background\n // only include the fields that are updating (just settings)\n const payload = viewId ? { settings: newSettings } : newWorkingView\n\n const promise = onApplyViewChanges(\n {\n payload,\n viewType: viewType,\n projectName: projectName,\n },\n viewId,\n )\n\n // Mutation dispatch above ran onQueryStarted synchronously → RTK cache now\n // reflects `newSettings`. Signal this so any subsequent sync call in the\n // same tick reads the fresh cache instead of the stale closure baseline.\n markCacheDirty()\n\n // if not already on the working view: set that the settings have been changed to show the little blue save button and switch to the working view\n // Note: selectedView?.id is always a real UUID from the server, never the WORKING_VIEW_ID sentinel.\n if (!wasWorking || selectedView?.id !== viewId) {\n if (selectedView) {\n onSettingsChanged(true)\n }\n setSelectedView(newWorkingViewId as string)\n }\n\n await promise\n\n // Clear local state after successful API call - the server data will take over\n localStateSetter(null)\n\n if (options.successMessage) {\n toast.success(options.successMessage)\n }\n } catch (error) {\n // Revert local state on error\n localStateSetter(null)\n\n if (previousSelectedViewId) {\n setSelectedView(previousSelectedViewId)\n }\n\n if (selectedView && !wasWorking) {\n onSettingsChanged(false)\n }\n\n console.error(error)\n const errorMsg = options.errorMessage || `Failed to update view settings: ${error}`\n toast.error(errorMsg)\n }\n}\n\nexport const useViewUpdateHelper = () => {\n const [createView] = useCreateViewMutation()\n const [updateView] = useUpdateViewMutation()\n\n const viewContext = useViewsContext()\n const store = useStore()\n\n const onApplyViewChanges = useCallback(\n async (arg: any, viewId?: string) => {\n if (viewId) {\n // Filter the payload to only include valid patch fields\n // and ideally only include fields that are actually being updated.\n // Expecting the caller to provide only the fields they want to update in the payload.\n const patchPayload: any = {}\n const patchFields = ['label', 'owner', 'settings']\n patchFields.forEach((key) => {\n if (arg.payload[key] !== undefined) {\n patchPayload[key] = arg.payload[key]\n }\n })\n\n return await updateView({\n viewType: arg.viewType,\n projectName: arg.projectName,\n viewId,\n payload: patchPayload,\n }).unwrap()\n } else {\n return await createView(arg).unwrap()\n }\n },\n [createView, updateView],\n )\n\n // Returns cached settings when a same-tick prior write has refreshed the\n // cache. Otherwise returns undefined and the caller falls back to the\n // closure-captured viewSettings (correct baseline for the first write in a\n // tick, including the named-view → working-view fork).\n const getLatest = useCallback((): LatestSettingsResult => {\n const { viewType, projectName, selectedView, workingView } = viewContext\n if (!viewType) return {}\n\n const state = store.getState() as any\n\n // 1. Get the working view from the store — most authoritative after optimistic writes.\n const workingViewEntry = viewsQueries.endpoints.getWorkingView.select({\n viewType,\n projectName,\n })(state)\n const storeWorkingViewId = workingViewEntry?.data?.id\n // Prefer the store's working view ID over the potentially stale context closure value.\n const resolvedWorkingViewId = storeWorkingViewId || workingView?.id\n\n // 2. Determine the currently targeted view ID.\n // Use the store's getDefaultView cache (updated optimistically by setSelectedView) so that\n // an in-flight selection change is visible before React re-renders the context.\n const defaultViewEntry = viewsQueries.endpoints.getDefaultView.select({\n viewType,\n projectName,\n })(state)\n const targetViewId = defaultViewEntry?.data?.id || selectedView?.id\n\n // 3. Determine if the working view is active.\n // IMPORTANT: use !!resolvedWorkingViewId to avoid the undefined === undefined false-positive\n // that would occur on a new project before any working view exists.\n // Note: WORKING_VIEW_ID ('_working_') is a UI-only sentinel; it never appears in\n // server-side cache IDs, so there is no point checking for it here.\n const isWorkingViewActive =\n (!!resolvedWorkingViewId && targetViewId === resolvedWorkingViewId) || cacheDirtyThisTick\n\n // 4. If the working view is active, use its cache as the baseline to prevent stale merges.\n if (isWorkingViewActive && workingViewEntry?.data?.settings) {\n return {\n settings: workingViewEntry.data.settings,\n workingViewId: resolvedWorkingViewId,\n }\n }\n\n // 5. For named views: use the defaultView cache settings as the baseline.\n // This is populated by the initial useGetDefaultViewQuery fetch and is more reliable\n // than the getView endpoint cache (which is only fetched on-demand when editing).\n if (defaultViewEntry?.data?.settings) {\n return {\n settings: defaultViewEntry.data.settings,\n workingViewId: resolvedWorkingViewId,\n }\n }\n\n return { workingViewId: resolvedWorkingViewId }\n }, [store, viewContext])\n\n const updateViewSettingsHandler = useCallback<UpdateViewSettingsFn>(\n async (...args) =>\n await updateViewSettings(...args, viewContext, onApplyViewChanges, getLatest, markCacheDirty),\n [viewContext, onApplyViewChanges, getLatest],\n )\n\n return {\n updateViewSettings: updateViewSettingsHandler,\n onCreateView: onApplyViewChanges,\n getLatestSettings: getLatest,\n markCacheDirty,\n }\n}\n"],"names":["cacheDirtyThisTick","markCacheDirty","updateViewSettings","updatedSettings","localStateSetter","newLocalValue","options","viewContext","onApplyViewChanges","getLatest","viewSettings","viewType","projectName","selectedView","setSelectedView","workingView","onSettingsChanged","previousSelectedViewId","wasWorking","latestSettingsFromCache","latestWorkingViewIdFromCache","latestSettings","newSettings","newWorkingView","generateWorkingView","viewId","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","updateView","useUpdateViewMutation","useViewsContext","store","useStore","useCallback","arg","patchPayload","key","state","workingViewEntry","viewsQueries","resolvedWorkingViewId","defaultViewEntry","targetViewId","args"],"mappings":"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"}
1
+ {"version":3,"file":"viewUpdateHelper.cjs.js","sources":["../../../../../../src/containers/Views/utils/viewUpdateHelper.ts"],"sourcesContent":["/**\n * Shared helper for updating view settings with optimistic local state management.\n *\n * Sequential updateViewSettings calls in the same event tick MUST chain correctly:\n * the second call has to see the first call's changes. Closure-captured\n * `viewSettings` does not refresh between sync calls (no re-render yet), so we\n * read the latest settings from the RTK Query cache at call time instead.\n * RTK's updateView mutation performs an optimistic cache write in\n * `onQueryStarted`, so the cache is already up-to-date by the time the next\n * call reads it.\n */\n\nimport {\n CreateViewApiArg,\n EntityIdResponse,\n useCreateViewMutation,\n useUpdateViewMutation,\n viewsQueries,\n} from '@shared/api'\nimport { generateWorkingView } from './generateWorkingView'\nimport { toast } from 'react-toastify'\nimport { useCallback } from 'react'\nimport { useStore } from 'react-redux'\nimport { useViewsContext, ViewsContextValue } from '../context/ViewsContext'\n\ninterface UpdateOptions {\n successMessage?: string\n errorMessage?: string\n}\n\n// Module-level flag shared across every useViewUpdateHelper instance. Set true\n// when a mutation has been dispatched in the current tick (RTK cache is now\n// optimistically fresh); reset on the next microtask. Must be module-level so\n// that two different hook instances (e.g. ProjectOverviewDataProvider +\n// ProjectOverviewContext) coordinate correctly when writes flow through one\n// and subsequent reads come from the other in the same event tick.\nlet cacheDirtyThisTick = false\nconst markCacheDirty = () => {\n if (cacheDirtyThisTick) return\n cacheDirtyThisTick = true\n queueMicrotask(() => {\n cacheDirtyThisTick = false\n })\n}\n\nexport type UpdateViewSettingsFn = (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions,\n) => Promise<void>\n\nexport interface LatestSettingsResult {\n settings?: any\n workingViewId?: string\n}\n\nexport const updateViewSettings = async (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions = {},\n viewContext: ViewsContextValue,\n onApplyViewChanges: (arg: any, viewId?: string) => Promise<EntityIdResponse | void>,\n // Reads latest effective settings from RTK Query cache at call time. Required to\n // prevent stale-closure races when two updates fire in the same tick.\n getLatest: () => LatestSettingsResult,\n // Invoked synchronously right after the mutation is dispatched. The caller\n // uses this to flip a \"cache is fresh this tick\" flag so subsequent sync\n // calls in the same tick read the just-updated cache instead of stale state.\n markCacheDirty: () => void,\n): Promise<void> => {\n const {\n viewSettings,\n viewType,\n projectName,\n selectedView,\n setSelectedView,\n workingView,\n onSettingsChanged,\n } = viewContext\n\n if (!viewType) throw new Error('No view type provided for updating view settings')\n\n const previousSelectedViewId = selectedView?.id\n const wasWorking = selectedView?.working\n\n try {\n // Immediately update local state for fast UI response\n localStateSetter(newLocalValue)\n\n // Read latest settings from RTK cache (includes prior same-tick optimistic writes).\n // Fallback to closure-captured value if cache has nothing (first render, etc.).\n const { settings: latestSettingsFromCache, workingViewId: latestWorkingViewIdFromCache } =\n getLatest()\n const latestSettings = latestSettingsFromCache ?? viewSettings\n\n // If we have no settings baseline at all (neither from cache nor from context),\n // abort to prevent writing a partial payload that would overwrite saved settings.\n // This is a defence-in-depth guard; in normal flow isLoadingViews prevents callers\n // from triggering updates before data is available.\n if (latestSettings === undefined) {\n console.warn(\n 'updateViewSettings: no settings baseline available, aborting to prevent data loss.',\n )\n return\n }\n\n // Create settings with updates\n const newSettings = { ...latestSettings, ...updatedSettings }\n\n // always update the working view no matter what\n const newWorkingView = generateWorkingView(newSettings)\n\n // Ensure the payload uses the consistent ID if we already have a working view\n const viewId = latestWorkingViewIdFromCache ?? workingView?.id\n if (viewId) {\n newWorkingView.id = viewId\n }\n const newWorkingViewId = newWorkingView.id\n\n // Make API call in background\n // only include the fields that are updating (just settings)\n const payload = viewId ? { settings: newSettings } : newWorkingView\n\n const promise = onApplyViewChanges(\n {\n payload,\n viewType: viewType,\n projectName: projectName,\n },\n viewId,\n )\n\n // Mutation dispatch above ran onQueryStarted synchronously → RTK cache now\n // reflects `newSettings`. Signal this so any subsequent sync call in the\n // same tick reads the fresh cache instead of the stale closure baseline.\n markCacheDirty()\n\n // if not already on the working view: set that the settings have been changed to show the little blue save button and switch to the working view\n // Note: selectedView?.id is always a real UUID from the server, never the WORKING_VIEW_ID sentinel.\n if (!wasWorking || selectedView?.id !== viewId) {\n if (selectedView) {\n onSettingsChanged(true)\n }\n setSelectedView(newWorkingViewId as string)\n }\n\n await promise\n\n // Clear local state after successful API call - the server data will take over\n localStateSetter(null)\n\n if (options.successMessage) {\n toast.success(options.successMessage)\n }\n } catch (error) {\n // Revert local state on error\n localStateSetter(null)\n\n if (previousSelectedViewId) {\n setSelectedView(previousSelectedViewId)\n }\n\n if (selectedView && !wasWorking) {\n onSettingsChanged(false)\n }\n\n console.error(error)\n const errorMsg = options.errorMessage || `Failed to update view settings: ${error}`\n toast.error(errorMsg)\n }\n}\n\nexport const useViewUpdateHelper = () => {\n const [createView] = useCreateViewMutation()\n const [updateView] = useUpdateViewMutation()\n\n const viewContext = useViewsContext()\n const store = useStore()\n\n const onApplyViewChanges = useCallback(\n async (arg: any, viewId?: string) => {\n if (viewId) {\n // Filter the payload to only include valid patch fields\n // and ideally only include fields that are actually being updated.\n // Expecting the caller to provide only the fields they want to update in the payload.\n const patchPayload: any = {}\n const patchFields = ['label', 'owner', 'settings']\n patchFields.forEach((key) => {\n if (arg.payload[key] !== undefined) {\n patchPayload[key] = arg.payload[key]\n }\n })\n\n return await updateView({\n viewType: arg.viewType,\n projectName: arg.projectName,\n viewId,\n payload: patchPayload,\n }).unwrap()\n } else {\n return await createView(arg).unwrap()\n }\n },\n [createView, updateView],\n )\n\n // Returns cached settings when a same-tick prior write has refreshed the\n // cache. Otherwise returns undefined and the caller falls back to the\n // closure-captured viewSettings (correct baseline for the first write in a\n // tick, including the named-view → working-view fork).\n const getLatest = useCallback((): LatestSettingsResult => {\n const { viewType, projectName, selectedView, workingView } = viewContext\n if (!viewType) return {}\n\n const state = store.getState() as any\n\n // 1. Get the working view from the store — most authoritative after optimistic writes.\n const workingViewEntry = viewsQueries.endpoints.getWorkingView.select({\n viewType,\n projectName,\n })(state)\n const storeWorkingViewId = workingViewEntry?.data?.id\n // Prefer the store's working view ID over the potentially stale context closure value.\n const resolvedWorkingViewId = storeWorkingViewId || workingView?.id\n\n // 2. Determine the currently targeted view ID.\n // Use the store's getDefaultView cache (updated optimistically by setSelectedView) so that\n // an in-flight selection change is visible before React re-renders the context.\n const defaultViewEntry = viewsQueries.endpoints.getDefaultView.select({\n viewType,\n projectName,\n })(state)\n const targetViewId = defaultViewEntry?.data?.id || selectedView?.id\n\n // 3. Determine if the working view is active.\n // IMPORTANT: use !!resolvedWorkingViewId to avoid the undefined === undefined false-positive\n // that would occur on a new project before any working view exists.\n // Note: WORKING_VIEW_ID ('_working_') is a UI-only sentinel; it never appears in\n // server-side cache IDs, so there is no point checking for it here.\n const isWorkingViewActive =\n (!!resolvedWorkingViewId && targetViewId === resolvedWorkingViewId) || cacheDirtyThisTick\n\n // 4. If the working view is active, use its cache as the baseline to prevent stale merges.\n if (isWorkingViewActive && workingViewEntry?.data?.settings) {\n return {\n settings: workingViewEntry.data.settings,\n workingViewId: resolvedWorkingViewId,\n }\n }\n\n // 5. For named views: use the defaultView cache settings as the baseline.\n // This is populated by the initial useGetDefaultViewQuery fetch and is more reliable\n // than the getView endpoint cache (which is only fetched on-demand when editing).\n if (defaultViewEntry?.data?.settings) {\n return {\n settings: defaultViewEntry.data.settings,\n workingViewId: resolvedWorkingViewId,\n }\n }\n\n return { workingViewId: resolvedWorkingViewId }\n }, [store, viewContext])\n\n const updateViewSettingsHandler = useCallback<UpdateViewSettingsFn>(\n async (...args) =>\n await updateViewSettings(...args, viewContext, onApplyViewChanges, getLatest, markCacheDirty),\n [viewContext, onApplyViewChanges, getLatest],\n )\n\n return {\n updateViewSettings: updateViewSettingsHandler,\n onCreateView: onApplyViewChanges,\n getLatestSettings: getLatest,\n markCacheDirty,\n }\n}\n"],"names":["cacheDirtyThisTick","markCacheDirty","updateViewSettings","updatedSettings","localStateSetter","newLocalValue","options","viewContext","onApplyViewChanges","getLatest","viewSettings","viewType","projectName","selectedView","setSelectedView","workingView","onSettingsChanged","previousSelectedViewId","wasWorking","latestSettingsFromCache","latestWorkingViewIdFromCache","latestSettings","newSettings","newWorkingView","generateWorkingView","viewId","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","updateView","useUpdateViewMutation","useViewsContext","store","useStore","useCallback","arg","patchPayload","key","state","workingViewEntry","viewsQueries","resolvedWorkingViewId","defaultViewEntry","targetViewId","args"],"mappings":"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"}
@@ -63,6 +63,7 @@ import "../../../api/queries/entities/updateEntity.es.js";
63
63
  import "../../../api/queries/entityLists/getLists.es.js";
64
64
  import "../../../api/queries/entityLists/updateLists.es.js";
65
65
  import "../../../api/queries/entityLists/getListsAttributes.es.js";
66
+ import "../../../api/queries/entityLists/listItemsColumnStats.es.js";
66
67
  import "../../../api/queries/entityLists/updateListsAttributes.es.js";
67
68
  import "../../../api/queries/entityLists/listFolders.es.js";
68
69
  import "../../../api/queries/folders/getFolders.es.js";
@@ -139,7 +140,7 @@ const T = () => {
139
140
  const k = n.errorMessage || `Failed to update view settings: ${d}`;
140
141
  M.error(k);
141
142
  }
142
- }, bi = () => {
143
+ }, Fi = () => {
143
144
  const [u] = N(), [p] = j(), s = x(), n = E(), w = y(
144
145
  async (t, o) => {
145
146
  if (o) {
@@ -186,6 +187,6 @@ const T = () => {
186
187
  };
187
188
  export {
188
189
  D as updateViewSettings,
189
- bi as useViewUpdateHelper
190
+ Fi as useViewUpdateHelper
190
191
  };
191
192
  //# sourceMappingURL=viewUpdateHelper.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"viewUpdateHelper.es.js","sources":["../../../../../../src/containers/Views/utils/viewUpdateHelper.ts"],"sourcesContent":["/**\n * Shared helper for updating view settings with optimistic local state management.\n *\n * Sequential updateViewSettings calls in the same event tick MUST chain correctly:\n * the second call has to see the first call's changes. Closure-captured\n * `viewSettings` does not refresh between sync calls (no re-render yet), so we\n * read the latest settings from the RTK Query cache at call time instead.\n * RTK's updateView mutation performs an optimistic cache write in\n * `onQueryStarted`, so the cache is already up-to-date by the time the next\n * call reads it.\n */\n\nimport {\n CreateViewApiArg,\n EntityIdResponse,\n useCreateViewMutation,\n useUpdateViewMutation,\n viewsQueries,\n} from '@shared/api'\nimport { generateWorkingView } from './generateWorkingView'\nimport { toast } from 'react-toastify'\nimport { useCallback } from 'react'\nimport { useStore } from 'react-redux'\nimport { useViewsContext, ViewsContextValue } from '../context/ViewsContext'\n\ninterface UpdateOptions {\n successMessage?: string\n errorMessage?: string\n}\n\n// Module-level flag shared across every useViewUpdateHelper instance. Set true\n// when a mutation has been dispatched in the current tick (RTK cache is now\n// optimistically fresh); reset on the next microtask. Must be module-level so\n// that two different hook instances (e.g. ProjectOverviewDataProvider +\n// ProjectOverviewContext) coordinate correctly when writes flow through one\n// and subsequent reads come from the other in the same event tick.\nlet cacheDirtyThisTick = false\nconst markCacheDirty = () => {\n if (cacheDirtyThisTick) return\n cacheDirtyThisTick = true\n queueMicrotask(() => {\n cacheDirtyThisTick = false\n })\n}\n\nexport type UpdateViewSettingsFn = (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions,\n) => Promise<void>\n\nexport interface LatestSettingsResult {\n settings?: any\n workingViewId?: string\n}\n\nexport const updateViewSettings = async (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions = {},\n viewContext: ViewsContextValue,\n onApplyViewChanges: (arg: any, viewId?: string) => Promise<EntityIdResponse | void>,\n // Reads latest effective settings from RTK Query cache at call time. Required to\n // prevent stale-closure races when two updates fire in the same tick.\n getLatest: () => LatestSettingsResult,\n // Invoked synchronously right after the mutation is dispatched. The caller\n // uses this to flip a \"cache is fresh this tick\" flag so subsequent sync\n // calls in the same tick read the just-updated cache instead of stale state.\n markCacheDirty: () => void,\n): Promise<void> => {\n const {\n viewSettings,\n viewType,\n projectName,\n selectedView,\n setSelectedView,\n workingView,\n onSettingsChanged,\n } = viewContext\n\n if (!viewType) throw new Error('No view type provided for updating view settings')\n\n const previousSelectedViewId = selectedView?.id\n const wasWorking = selectedView?.working\n\n try {\n // Immediately update local state for fast UI response\n localStateSetter(newLocalValue)\n\n // Read latest settings from RTK cache (includes prior same-tick optimistic writes).\n // Fallback to closure-captured value if cache has nothing (first render, etc.).\n const { settings: latestSettingsFromCache, workingViewId: latestWorkingViewIdFromCache } =\n getLatest()\n const latestSettings = latestSettingsFromCache ?? viewSettings\n\n // If we have no settings baseline at all (neither from cache nor from context),\n // abort to prevent writing a partial payload that would overwrite saved settings.\n // This is a defence-in-depth guard; in normal flow isLoadingViews prevents callers\n // from triggering updates before data is available.\n if (latestSettings === undefined) {\n console.warn(\n 'updateViewSettings: no settings baseline available, aborting to prevent data loss.',\n )\n return\n }\n\n // Create settings with updates\n const newSettings = { ...latestSettings, ...updatedSettings }\n\n // always update the working view no matter what\n const newWorkingView = generateWorkingView(newSettings)\n\n // Ensure the payload uses the consistent ID if we already have a working view\n const viewId = latestWorkingViewIdFromCache ?? workingView?.id\n if (viewId) {\n newWorkingView.id = viewId\n }\n const newWorkingViewId = newWorkingView.id\n\n // Make API call in background\n // only include the fields that are updating (just settings)\n const payload = viewId ? { settings: newSettings } : newWorkingView\n\n const promise = onApplyViewChanges(\n {\n payload,\n viewType: viewType,\n projectName: projectName,\n },\n viewId,\n )\n\n // Mutation dispatch above ran onQueryStarted synchronously → RTK cache now\n // reflects `newSettings`. Signal this so any subsequent sync call in the\n // same tick reads the fresh cache instead of the stale closure baseline.\n markCacheDirty()\n\n // if not already on the working view: set that the settings have been changed to show the little blue save button and switch to the working view\n // Note: selectedView?.id is always a real UUID from the server, never the WORKING_VIEW_ID sentinel.\n if (!wasWorking || selectedView?.id !== viewId) {\n if (selectedView) {\n onSettingsChanged(true)\n }\n setSelectedView(newWorkingViewId as string)\n }\n\n await promise\n\n // Clear local state after successful API call - the server data will take over\n localStateSetter(null)\n\n if (options.successMessage) {\n toast.success(options.successMessage)\n }\n } catch (error) {\n // Revert local state on error\n localStateSetter(null)\n\n if (previousSelectedViewId) {\n setSelectedView(previousSelectedViewId)\n }\n\n if (selectedView && !wasWorking) {\n onSettingsChanged(false)\n }\n\n console.error(error)\n const errorMsg = options.errorMessage || `Failed to update view settings: ${error}`\n toast.error(errorMsg)\n }\n}\n\nexport const useViewUpdateHelper = () => {\n const [createView] = useCreateViewMutation()\n const [updateView] = useUpdateViewMutation()\n\n const viewContext = useViewsContext()\n const store = useStore()\n\n const onApplyViewChanges = useCallback(\n async (arg: any, viewId?: string) => {\n if (viewId) {\n // Filter the payload to only include valid patch fields\n // and ideally only include fields that are actually being updated.\n // Expecting the caller to provide only the fields they want to update in the payload.\n const patchPayload: any = {}\n const patchFields = ['label', 'owner', 'settings']\n patchFields.forEach((key) => {\n if (arg.payload[key] !== undefined) {\n patchPayload[key] = arg.payload[key]\n }\n })\n\n return await updateView({\n viewType: arg.viewType,\n projectName: arg.projectName,\n viewId,\n payload: patchPayload,\n }).unwrap()\n } else {\n return await createView(arg).unwrap()\n }\n },\n [createView, updateView],\n )\n\n // Returns cached settings when a same-tick prior write has refreshed the\n // cache. Otherwise returns undefined and the caller falls back to the\n // closure-captured viewSettings (correct baseline for the first write in a\n // tick, including the named-view → working-view fork).\n const getLatest = useCallback((): LatestSettingsResult => {\n const { viewType, projectName, selectedView, workingView } = viewContext\n if (!viewType) return {}\n\n const state = store.getState() as any\n\n // 1. Get the working view from the store — most authoritative after optimistic writes.\n const workingViewEntry = viewsQueries.endpoints.getWorkingView.select({\n viewType,\n projectName,\n })(state)\n const storeWorkingViewId = workingViewEntry?.data?.id\n // Prefer the store's working view ID over the potentially stale context closure value.\n const resolvedWorkingViewId = storeWorkingViewId || workingView?.id\n\n // 2. Determine the currently targeted view ID.\n // Use the store's getDefaultView cache (updated optimistically by setSelectedView) so that\n // an in-flight selection change is visible before React re-renders the context.\n const defaultViewEntry = viewsQueries.endpoints.getDefaultView.select({\n viewType,\n projectName,\n })(state)\n const targetViewId = defaultViewEntry?.data?.id || selectedView?.id\n\n // 3. Determine if the working view is active.\n // IMPORTANT: use !!resolvedWorkingViewId to avoid the undefined === undefined false-positive\n // that would occur on a new project before any working view exists.\n // Note: WORKING_VIEW_ID ('_working_') is a UI-only sentinel; it never appears in\n // server-side cache IDs, so there is no point checking for it here.\n const isWorkingViewActive =\n (!!resolvedWorkingViewId && targetViewId === resolvedWorkingViewId) || cacheDirtyThisTick\n\n // 4. If the working view is active, use its cache as the baseline to prevent stale merges.\n if (isWorkingViewActive && workingViewEntry?.data?.settings) {\n return {\n settings: workingViewEntry.data.settings,\n workingViewId: resolvedWorkingViewId,\n }\n }\n\n // 5. For named views: use the defaultView cache settings as the baseline.\n // This is populated by the initial useGetDefaultViewQuery fetch and is more reliable\n // than the getView endpoint cache (which is only fetched on-demand when editing).\n if (defaultViewEntry?.data?.settings) {\n return {\n settings: defaultViewEntry.data.settings,\n workingViewId: resolvedWorkingViewId,\n }\n }\n\n return { workingViewId: resolvedWorkingViewId }\n }, [store, viewContext])\n\n const updateViewSettingsHandler = useCallback<UpdateViewSettingsFn>(\n async (...args) =>\n await updateViewSettings(...args, viewContext, onApplyViewChanges, getLatest, markCacheDirty),\n [viewContext, onApplyViewChanges, getLatest],\n )\n\n return {\n updateViewSettings: updateViewSettingsHandler,\n onCreateView: onApplyViewChanges,\n getLatestSettings: getLatest,\n markCacheDirty,\n }\n}\n"],"names":["cacheDirtyThisTick","markCacheDirty","updateViewSettings","updatedSettings","localStateSetter","newLocalValue","options","viewContext","onApplyViewChanges","getLatest","viewSettings","viewType","projectName","selectedView","setSelectedView","workingView","onSettingsChanged","previousSelectedViewId","wasWorking","latestSettingsFromCache","latestWorkingViewIdFromCache","latestSettings","newSettings","newWorkingView","generateWorkingView","viewId","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","updateView","useUpdateViewMutation","useViewsContext","store","useStore","useCallback","arg","patchPayload","key","state","workingViewEntry","viewsQueries","resolvedWorkingViewId","defaultViewEntry","targetViewId","args"],"mappings":"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"}
1
+ {"version":3,"file":"viewUpdateHelper.es.js","sources":["../../../../../../src/containers/Views/utils/viewUpdateHelper.ts"],"sourcesContent":["/**\n * Shared helper for updating view settings with optimistic local state management.\n *\n * Sequential updateViewSettings calls in the same event tick MUST chain correctly:\n * the second call has to see the first call's changes. Closure-captured\n * `viewSettings` does not refresh between sync calls (no re-render yet), so we\n * read the latest settings from the RTK Query cache at call time instead.\n * RTK's updateView mutation performs an optimistic cache write in\n * `onQueryStarted`, so the cache is already up-to-date by the time the next\n * call reads it.\n */\n\nimport {\n CreateViewApiArg,\n EntityIdResponse,\n useCreateViewMutation,\n useUpdateViewMutation,\n viewsQueries,\n} from '@shared/api'\nimport { generateWorkingView } from './generateWorkingView'\nimport { toast } from 'react-toastify'\nimport { useCallback } from 'react'\nimport { useStore } from 'react-redux'\nimport { useViewsContext, ViewsContextValue } from '../context/ViewsContext'\n\ninterface UpdateOptions {\n successMessage?: string\n errorMessage?: string\n}\n\n// Module-level flag shared across every useViewUpdateHelper instance. Set true\n// when a mutation has been dispatched in the current tick (RTK cache is now\n// optimistically fresh); reset on the next microtask. Must be module-level so\n// that two different hook instances (e.g. ProjectOverviewDataProvider +\n// ProjectOverviewContext) coordinate correctly when writes flow through one\n// and subsequent reads come from the other in the same event tick.\nlet cacheDirtyThisTick = false\nconst markCacheDirty = () => {\n if (cacheDirtyThisTick) return\n cacheDirtyThisTick = true\n queueMicrotask(() => {\n cacheDirtyThisTick = false\n })\n}\n\nexport type UpdateViewSettingsFn = (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions,\n) => Promise<void>\n\nexport interface LatestSettingsResult {\n settings?: any\n workingViewId?: string\n}\n\nexport const updateViewSettings = async (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions = {},\n viewContext: ViewsContextValue,\n onApplyViewChanges: (arg: any, viewId?: string) => Promise<EntityIdResponse | void>,\n // Reads latest effective settings from RTK Query cache at call time. Required to\n // prevent stale-closure races when two updates fire in the same tick.\n getLatest: () => LatestSettingsResult,\n // Invoked synchronously right after the mutation is dispatched. The caller\n // uses this to flip a \"cache is fresh this tick\" flag so subsequent sync\n // calls in the same tick read the just-updated cache instead of stale state.\n markCacheDirty: () => void,\n): Promise<void> => {\n const {\n viewSettings,\n viewType,\n projectName,\n selectedView,\n setSelectedView,\n workingView,\n onSettingsChanged,\n } = viewContext\n\n if (!viewType) throw new Error('No view type provided for updating view settings')\n\n const previousSelectedViewId = selectedView?.id\n const wasWorking = selectedView?.working\n\n try {\n // Immediately update local state for fast UI response\n localStateSetter(newLocalValue)\n\n // Read latest settings from RTK cache (includes prior same-tick optimistic writes).\n // Fallback to closure-captured value if cache has nothing (first render, etc.).\n const { settings: latestSettingsFromCache, workingViewId: latestWorkingViewIdFromCache } =\n getLatest()\n const latestSettings = latestSettingsFromCache ?? viewSettings\n\n // If we have no settings baseline at all (neither from cache nor from context),\n // abort to prevent writing a partial payload that would overwrite saved settings.\n // This is a defence-in-depth guard; in normal flow isLoadingViews prevents callers\n // from triggering updates before data is available.\n if (latestSettings === undefined) {\n console.warn(\n 'updateViewSettings: no settings baseline available, aborting to prevent data loss.',\n )\n return\n }\n\n // Create settings with updates\n const newSettings = { ...latestSettings, ...updatedSettings }\n\n // always update the working view no matter what\n const newWorkingView = generateWorkingView(newSettings)\n\n // Ensure the payload uses the consistent ID if we already have a working view\n const viewId = latestWorkingViewIdFromCache ?? workingView?.id\n if (viewId) {\n newWorkingView.id = viewId\n }\n const newWorkingViewId = newWorkingView.id\n\n // Make API call in background\n // only include the fields that are updating (just settings)\n const payload = viewId ? { settings: newSettings } : newWorkingView\n\n const promise = onApplyViewChanges(\n {\n payload,\n viewType: viewType,\n projectName: projectName,\n },\n viewId,\n )\n\n // Mutation dispatch above ran onQueryStarted synchronously → RTK cache now\n // reflects `newSettings`. Signal this so any subsequent sync call in the\n // same tick reads the fresh cache instead of the stale closure baseline.\n markCacheDirty()\n\n // if not already on the working view: set that the settings have been changed to show the little blue save button and switch to the working view\n // Note: selectedView?.id is always a real UUID from the server, never the WORKING_VIEW_ID sentinel.\n if (!wasWorking || selectedView?.id !== viewId) {\n if (selectedView) {\n onSettingsChanged(true)\n }\n setSelectedView(newWorkingViewId as string)\n }\n\n await promise\n\n // Clear local state after successful API call - the server data will take over\n localStateSetter(null)\n\n if (options.successMessage) {\n toast.success(options.successMessage)\n }\n } catch (error) {\n // Revert local state on error\n localStateSetter(null)\n\n if (previousSelectedViewId) {\n setSelectedView(previousSelectedViewId)\n }\n\n if (selectedView && !wasWorking) {\n onSettingsChanged(false)\n }\n\n console.error(error)\n const errorMsg = options.errorMessage || `Failed to update view settings: ${error}`\n toast.error(errorMsg)\n }\n}\n\nexport const useViewUpdateHelper = () => {\n const [createView] = useCreateViewMutation()\n const [updateView] = useUpdateViewMutation()\n\n const viewContext = useViewsContext()\n const store = useStore()\n\n const onApplyViewChanges = useCallback(\n async (arg: any, viewId?: string) => {\n if (viewId) {\n // Filter the payload to only include valid patch fields\n // and ideally only include fields that are actually being updated.\n // Expecting the caller to provide only the fields they want to update in the payload.\n const patchPayload: any = {}\n const patchFields = ['label', 'owner', 'settings']\n patchFields.forEach((key) => {\n if (arg.payload[key] !== undefined) {\n patchPayload[key] = arg.payload[key]\n }\n })\n\n return await updateView({\n viewType: arg.viewType,\n projectName: arg.projectName,\n viewId,\n payload: patchPayload,\n }).unwrap()\n } else {\n return await createView(arg).unwrap()\n }\n },\n [createView, updateView],\n )\n\n // Returns cached settings when a same-tick prior write has refreshed the\n // cache. Otherwise returns undefined and the caller falls back to the\n // closure-captured viewSettings (correct baseline for the first write in a\n // tick, including the named-view → working-view fork).\n const getLatest = useCallback((): LatestSettingsResult => {\n const { viewType, projectName, selectedView, workingView } = viewContext\n if (!viewType) return {}\n\n const state = store.getState() as any\n\n // 1. Get the working view from the store — most authoritative after optimistic writes.\n const workingViewEntry = viewsQueries.endpoints.getWorkingView.select({\n viewType,\n projectName,\n })(state)\n const storeWorkingViewId = workingViewEntry?.data?.id\n // Prefer the store's working view ID over the potentially stale context closure value.\n const resolvedWorkingViewId = storeWorkingViewId || workingView?.id\n\n // 2. Determine the currently targeted view ID.\n // Use the store's getDefaultView cache (updated optimistically by setSelectedView) so that\n // an in-flight selection change is visible before React re-renders the context.\n const defaultViewEntry = viewsQueries.endpoints.getDefaultView.select({\n viewType,\n projectName,\n })(state)\n const targetViewId = defaultViewEntry?.data?.id || selectedView?.id\n\n // 3. Determine if the working view is active.\n // IMPORTANT: use !!resolvedWorkingViewId to avoid the undefined === undefined false-positive\n // that would occur on a new project before any working view exists.\n // Note: WORKING_VIEW_ID ('_working_') is a UI-only sentinel; it never appears in\n // server-side cache IDs, so there is no point checking for it here.\n const isWorkingViewActive =\n (!!resolvedWorkingViewId && targetViewId === resolvedWorkingViewId) || cacheDirtyThisTick\n\n // 4. If the working view is active, use its cache as the baseline to prevent stale merges.\n if (isWorkingViewActive && workingViewEntry?.data?.settings) {\n return {\n settings: workingViewEntry.data.settings,\n workingViewId: resolvedWorkingViewId,\n }\n }\n\n // 5. For named views: use the defaultView cache settings as the baseline.\n // This is populated by the initial useGetDefaultViewQuery fetch and is more reliable\n // than the getView endpoint cache (which is only fetched on-demand when editing).\n if (defaultViewEntry?.data?.settings) {\n return {\n settings: defaultViewEntry.data.settings,\n workingViewId: resolvedWorkingViewId,\n }\n }\n\n return { workingViewId: resolvedWorkingViewId }\n }, [store, viewContext])\n\n const updateViewSettingsHandler = useCallback<UpdateViewSettingsFn>(\n async (...args) =>\n await updateViewSettings(...args, viewContext, onApplyViewChanges, getLatest, markCacheDirty),\n [viewContext, onApplyViewChanges, getLatest],\n )\n\n return {\n updateViewSettings: updateViewSettingsHandler,\n onCreateView: onApplyViewChanges,\n getLatestSettings: getLatest,\n markCacheDirty,\n }\n}\n"],"names":["cacheDirtyThisTick","markCacheDirty","updateViewSettings","updatedSettings","localStateSetter","newLocalValue","options","viewContext","onApplyViewChanges","getLatest","viewSettings","viewType","projectName","selectedView","setSelectedView","workingView","onSettingsChanged","previousSelectedViewId","wasWorking","latestSettingsFromCache","latestWorkingViewIdFromCache","latestSettings","newSettings","newWorkingView","generateWorkingView","viewId","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","updateView","useUpdateViewMutation","useViewsContext","store","useStore","useCallback","arg","patchPayload","key","state","workingViewEntry","viewsQueries","resolvedWorkingViewId","defaultViewEntry","targetViewId","args"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../../_virtual/jsx-runtime.cjs.js");require("../api/base/client.cjs.js");require("../api/generated/graphql.cjs.js");require("../api/generated/graphqlLinks.cjs.js");require("../api/generated/access.cjs.js");require("../api/generated/actions.cjs.js");require("../api/generated/activityFeed.cjs.js");require("../api/generated/addons.cjs.js");require("../api/generated/anatomy.cjs.js");require("../api/generated/attributes.cjs.js");require("../api/generated/authentication.cjs.js");require("../api/generated/bundles.cjs.js");require("../api/generated/configuration.cjs.js");require("../api/generated/dataImport.cjs.js");require("../api/generated/desktop.cjs.js");require("../api/generated/entityLists.cjs.js");require("../api/generated/events.cjs.js");require("../api/generated/files.cjs.js");require("../api/generated/folders.cjs.js");require("../api/generated/inbox.cjs.js");require("../api/generated/links.cjs.js");require("../api/generated/market.cjs.js");require("../api/generated/onboarding.cjs.js");require("../api/generated/operations.cjs.js");require("../api/generated/products.cjs.js");require("../api/generated/projectDashboard.cjs.js");require("../api/generated/projects.cjs.js");require("../api/generated/projectFolders.cjs.js");require("../api/generated/reviewables.cjs.js");require("../api/generated/services.cjs.js");require("../api/generated/system.cjs.js");require("../api/generated/tasks.cjs.js");require("../api/generated/teams.cjs.js");require("../api/generated/thumbnails.cjs.js");require("../api/generated/uRIs.cjs.js");require("../api/generated/users.cjs.js");require("../api/generated/versions.cjs.js");require("../api/generated/workfiles.cjs.js");require("../api/generated/ynputCloud.cjs.js");require("../api/generated/grouping.cjs.js");require("../api/generated/views.cjs.js");require("../api/queries/actions/getActions.cjs.js");require("../api/queries/activities/getActivities.cjs.js");require("../api/queries/activities/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/columnStats/metricTargets.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/overview/getOverview.cjs.js");require("../api/queries/overview/updateOverview.cjs.js");require("../api/queries/versions/getVersionsProducts.cjs.js");require("../api/queries/links/getEntityLinks.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/folders/getFolderDeleteInfo.cjs.js");require("../api/queries/grouping/getGrouping.cjs.js");require("../api/queries/links/updateLinks.cjs.js");require("../api/queries/links/getLinks.cjs.js");require("../api/queries/permissions/getPermissions.cjs.js");require("../api/queries/products/createProduct.cjs.js");require("../api/queries/products/getFolderProducts.cjs.js");const c=require("../api/queries/project/getProject.cjs.js");require("../api/queries/project/updateProject.cjs.js");require("../api/queries/projectFolders/projectFolders.cjs.js");require("../api/queries/review/getReview.cjs.js");require("../api/queries/review/updateReview.cjs.js");require("../api/queries/share/share.cjs.js");require("../api/queries/system/getSystem.cjs.js");require("../api/queries/tasks/getTasks.cjs.js");require("../api/queries/tasks/updateTasks.cjs.js");require("../api/queries/teams/getTeams.cjs.js");require("../api/queries/userDashboard/getUserDashboard.cjs.js");require("../api/queries/users/getUsers.cjs.js");require("../api/queries/users/updateUsers.cjs.js");require("../api/queries/users/guests.cjs.js");require("../api/queries/versions/updateVersions.cjs.js");require("../api/queries/views/getViews.cjs.js");require("../api/queries/views/updateViews.cjs.js");require("../api/queries/watchers/getWatchers.cjs.js");require("../api/queries/uris/getUris.cjs.js");const u=require("react"),d=require("./GlobalContext.cjs.js"),i=u.createContext(void 0),x=({children:e,projectName:r,toast:q,...t})=>{const{data:o}=c.useGetProjectQuery({projectName:r},{skip:!r}),{user:n}=d.useGlobalContext();return s.jsxRuntimeExports.jsx(i.Provider,{value:{...t,projectName:r,project:o,user:n,toast:q},children:e})},P=()=>{const e=u.useContext(i);if(!e)throw new Error("useAddonProjectContext must be used within a AddonProjectContext");return e};exports.AddonProjectProvider=x;exports.useAddonProjectContext=P;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../../_virtual/jsx-runtime.cjs.js");require("../api/base/client.cjs.js");require("../api/generated/graphql.cjs.js");require("../api/generated/graphqlLinks.cjs.js");require("../api/generated/access.cjs.js");require("../api/generated/actions.cjs.js");require("../api/generated/activityFeed.cjs.js");require("../api/generated/addons.cjs.js");require("../api/generated/anatomy.cjs.js");require("../api/generated/attributes.cjs.js");require("../api/generated/authentication.cjs.js");require("../api/generated/bundles.cjs.js");require("../api/generated/configuration.cjs.js");require("../api/generated/dataImport.cjs.js");require("../api/generated/desktop.cjs.js");require("../api/generated/entityLists.cjs.js");require("../api/generated/events.cjs.js");require("../api/generated/files.cjs.js");require("../api/generated/folders.cjs.js");require("../api/generated/inbox.cjs.js");require("../api/generated/links.cjs.js");require("../api/generated/market.cjs.js");require("../api/generated/onboarding.cjs.js");require("../api/generated/operations.cjs.js");require("../api/generated/products.cjs.js");require("../api/generated/projectDashboard.cjs.js");require("../api/generated/projects.cjs.js");require("../api/generated/projectFolders.cjs.js");require("../api/generated/reviewables.cjs.js");require("../api/generated/services.cjs.js");require("../api/generated/system.cjs.js");require("../api/generated/tasks.cjs.js");require("../api/generated/teams.cjs.js");require("../api/generated/thumbnails.cjs.js");require("../api/generated/uRIs.cjs.js");require("../api/generated/users.cjs.js");require("../api/generated/versions.cjs.js");require("../api/generated/workfiles.cjs.js");require("../api/generated/ynputCloud.cjs.js");require("../api/generated/grouping.cjs.js");require("../api/generated/views.cjs.js");require("../api/queries/actions/getActions.cjs.js");require("../api/queries/activities/getActivities.cjs.js");require("../api/queries/activities/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/columnStats/metricTargets.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/overview/getOverview.cjs.js");require("../api/queries/overview/updateOverview.cjs.js");require("../api/queries/versions/getVersionsProducts.cjs.js");require("../api/queries/links/getEntityLinks.cjs.js");require("../api/queries/entities/updateEntity.cjs.js");require("../api/queries/entityLists/getLists.cjs.js");require("../api/queries/entityLists/updateLists.cjs.js");require("../api/queries/entityLists/getListsAttributes.cjs.js");require("../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../api/queries/entityLists/updateListsAttributes.cjs.js");require("../api/queries/entityLists/listFolders.cjs.js");require("../api/queries/folders/getFolders.cjs.js");require("../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../api/queries/grouping/getGrouping.cjs.js");require("../api/queries/links/updateLinks.cjs.js");require("../api/queries/links/getLinks.cjs.js");require("../api/queries/permissions/getPermissions.cjs.js");require("../api/queries/products/createProduct.cjs.js");require("../api/queries/products/getFolderProducts.cjs.js");const c=require("../api/queries/project/getProject.cjs.js");require("../api/queries/project/updateProject.cjs.js");require("../api/queries/projectFolders/projectFolders.cjs.js");require("../api/queries/review/getReview.cjs.js");require("../api/queries/review/updateReview.cjs.js");require("../api/queries/share/share.cjs.js");require("../api/queries/system/getSystem.cjs.js");require("../api/queries/tasks/getTasks.cjs.js");require("../api/queries/tasks/updateTasks.cjs.js");require("../api/queries/teams/getTeams.cjs.js");require("../api/queries/userDashboard/getUserDashboard.cjs.js");require("../api/queries/users/getUsers.cjs.js");require("../api/queries/users/updateUsers.cjs.js");require("../api/queries/users/guests.cjs.js");require("../api/queries/versions/updateVersions.cjs.js");require("../api/queries/views/getViews.cjs.js");require("../api/queries/views/updateViews.cjs.js");require("../api/queries/watchers/getWatchers.cjs.js");require("../api/queries/uris/getUris.cjs.js");const u=require("react"),d=require("./GlobalContext.cjs.js"),i=u.createContext(void 0),x=({children:e,projectName:r,toast:q,...t})=>{const{data:o}=c.useGetProjectQuery({projectName:r},{skip:!r}),{user:n}=d.useGlobalContext();return s.jsxRuntimeExports.jsx(i.Provider,{value:{...t,projectName:r,project:o,user:n,toast:q},children:e})},P=()=>{const e=u.useContext(i);if(!e)throw new Error("useAddonProjectContext must be used within a AddonProjectContext");return e};exports.AddonProjectProvider=x;exports.useAddonProjectContext=P;
2
2
  //# sourceMappingURL=AddonProjectContext.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddonProjectContext.cjs.js","sources":["../../../../src/context/AddonProjectContext.tsx"],"sourcesContent":["// NOT USED IN AYON-FRONTEND, ONLY IN ADDONS\n\nimport { ProjectModel, useGetProjectQuery, UserModel } from '@shared/api'\nimport { createContext, FC, useContext } from 'react'\nimport type { toast } from 'react-toastify'\nimport { useGlobalContext } from './GlobalContext'\nimport { RemotePageProps } from '@shared/components'\n\ntype ToastFunc = typeof toast\n\nexport interface RemoteAddonProjectProps extends RemotePageProps {}\n\nexport type RemoteAddonProjectComponent = FC<RemoteAddonProjectProps>\nexport type RemoteAddonProject = {\n id: string\n component: RemoteAddonProjectComponent\n name: string\n module: string\n viewType?: string // if the addon is using views\n slicer?: { fields: string[] }\n}\n\n// types for props passed to the provider\nexport interface AddonProjectContextValue extends RemoteAddonProjectProps {\n children: React.ReactNode\n}\n\n// types returned by context\nexport interface AddonProjectContextType extends RemoteAddonProjectProps {\n project: ProjectModel | undefined\n user: UserModel | undefined\n toast: ToastFunc\n}\n\nconst AddonProjectContext = createContext<AddonProjectContextType | undefined>(undefined)\n\nexport const AddonProjectProvider = ({\n children,\n projectName,\n // utils\n toast,\n ...props\n}: AddonProjectContextValue) => {\n // get current project data\n const { data: project } = useGetProjectQuery(\n { projectName: projectName as string },\n { skip: !projectName },\n )\n\n const { user } = useGlobalContext()\n\n return (\n <AddonProjectContext.Provider\n value={{\n ...props,\n projectName,\n project,\n user,\n toast,\n }}\n >\n {children}\n </AddonProjectContext.Provider>\n )\n}\n\nexport const useAddonProjectContext = () => {\n const context = useContext(AddonProjectContext)\n if (!context) {\n throw new Error('useAddonProjectContext must be used within a AddonProjectContext')\n }\n return context\n}\n"],"names":["AddonProjectContext","createContext","AddonProjectProvider","children","projectName","toast","props","project","useGetProjectQuery","user","useGlobalContext","jsx","useAddonProjectContext","context","useContext"],"mappings":"wzJAkCMA,EAAsBC,EAAAA,cAAmD,MAAS,EAE3EC,EAAuB,CAAC,CACnC,SAAAC,EACA,YAAAC,EAEA,MAAAC,EACA,GAAGC,CACL,IAAgC,CAE9B,KAAM,CAAE,KAAMC,CAAA,EAAYC,EAAAA,mBACxB,CAAE,YAAAJ,CAAA,EACF,CAAE,KAAM,CAACA,CAAA,CAAY,EAGjB,CAAE,KAAAK,CAAA,EAASC,mBAAA,EAEjB,OACEC,EAAAA,kBAAAA,IAACX,EAAoB,SAApB,CACC,MAAO,CACL,GAAGM,EACH,YAAAF,EACA,QAAAG,EACA,KAAAE,EACA,MAAAJ,CAAA,EAGD,SAAAF,CAAA,CAAA,CAGP,EAEaS,EAAyB,IAAM,CAC1C,MAAMC,EAAUC,EAAAA,WAAWd,CAAmB,EAC9C,GAAI,CAACa,EACH,MAAM,IAAI,MAAM,kEAAkE,EAEpF,OAAOA,CACT"}
1
+ {"version":3,"file":"AddonProjectContext.cjs.js","sources":["../../../../src/context/AddonProjectContext.tsx"],"sourcesContent":["// NOT USED IN AYON-FRONTEND, ONLY IN ADDONS\n\nimport { ProjectModel, useGetProjectQuery, UserModel } from '@shared/api'\nimport { createContext, FC, useContext } from 'react'\nimport type { toast } from 'react-toastify'\nimport { useGlobalContext } from './GlobalContext'\nimport { RemotePageProps } from '@shared/components'\n\ntype ToastFunc = typeof toast\n\nexport interface RemoteAddonProjectProps extends RemotePageProps {}\n\nexport type RemoteAddonProjectComponent = FC<RemoteAddonProjectProps>\nexport type RemoteAddonProject = {\n id: string\n component: RemoteAddonProjectComponent\n name: string\n module: string\n viewType?: string // if the addon is using views\n slicer?: { fields: string[] }\n}\n\n// types for props passed to the provider\nexport interface AddonProjectContextValue extends RemoteAddonProjectProps {\n children: React.ReactNode\n}\n\n// types returned by context\nexport interface AddonProjectContextType extends RemoteAddonProjectProps {\n project: ProjectModel | undefined\n user: UserModel | undefined\n toast: ToastFunc\n}\n\nconst AddonProjectContext = createContext<AddonProjectContextType | undefined>(undefined)\n\nexport const AddonProjectProvider = ({\n children,\n projectName,\n // utils\n toast,\n ...props\n}: AddonProjectContextValue) => {\n // get current project data\n const { data: project } = useGetProjectQuery(\n { projectName: projectName as string },\n { skip: !projectName },\n )\n\n const { user } = useGlobalContext()\n\n return (\n <AddonProjectContext.Provider\n value={{\n ...props,\n projectName,\n project,\n user,\n toast,\n }}\n >\n {children}\n </AddonProjectContext.Provider>\n )\n}\n\nexport const useAddonProjectContext = () => {\n const context = useContext(AddonProjectContext)\n if (!context) {\n throw new Error('useAddonProjectContext must be used within a AddonProjectContext')\n }\n return context\n}\n"],"names":["AddonProjectContext","createContext","AddonProjectProvider","children","projectName","toast","props","project","useGetProjectQuery","user","useGlobalContext","jsx","useAddonProjectContext","context","useContext"],"mappings":"03JAkCMA,EAAsBC,EAAAA,cAAmD,MAAS,EAE3EC,EAAuB,CAAC,CACnC,SAAAC,EACA,YAAAC,EAEA,MAAAC,EACA,GAAGC,CACL,IAAgC,CAE9B,KAAM,CAAE,KAAMC,CAAA,EAAYC,EAAAA,mBACxB,CAAE,YAAAJ,CAAA,EACF,CAAE,KAAM,CAACA,CAAA,CAAY,EAGjB,CAAE,KAAAK,CAAA,EAASC,mBAAA,EAEjB,OACEC,EAAAA,kBAAAA,IAACX,EAAoB,SAApB,CACC,MAAO,CACL,GAAGM,EACH,YAAAF,EACA,QAAAG,EACA,KAAAE,EACA,MAAAJ,CAAA,EAGD,SAAAF,CAAA,CAAA,CAGP,EAEaS,EAAyB,IAAM,CAC1C,MAAMC,EAAUC,EAAAA,WAAWd,CAAmB,EAC9C,GAAI,CAACa,EACH,MAAM,IAAI,MAAM,kEAAkE,EAEpF,OAAOA,CACT"}
@@ -64,6 +64,7 @@ import "../api/queries/entities/updateEntity.es.js";
64
64
  import "../api/queries/entityLists/getLists.es.js";
65
65
  import "../api/queries/entityLists/updateLists.es.js";
66
66
  import "../api/queries/entityLists/getListsAttributes.es.js";
67
+ import "../api/queries/entityLists/listItemsColumnStats.es.js";
67
68
  import "../api/queries/entityLists/updateListsAttributes.es.js";
68
69
  import "../api/queries/entityLists/listFolders.es.js";
69
70
  import "../api/queries/folders/getFolders.es.js";
@@ -95,7 +96,7 @@ import "../api/queries/watchers/getWatchers.es.js";
95
96
  import "../api/queries/uris/getUris.es.js";
96
97
  import { createContext as d, useContext as c } from "react";
97
98
  import { useGlobalContext as u } from "./GlobalContext.es.js";
98
- const r = d(void 0), oo = ({
99
+ const r = d(void 0), ro = ({
99
100
  children: t,
100
101
  projectName: o,
101
102
  // utils
@@ -119,14 +120,14 @@ const r = d(void 0), oo = ({
119
120
  children: t
120
121
  }
121
122
  );
122
- }, ro = () => {
123
+ }, io = () => {
123
124
  const t = c(r);
124
125
  if (!t)
125
126
  throw new Error("useAddonProjectContext must be used within a AddonProjectContext");
126
127
  return t;
127
128
  };
128
129
  export {
129
- oo as AddonProjectProvider,
130
- ro as useAddonProjectContext
130
+ ro as AddonProjectProvider,
131
+ io as useAddonProjectContext
131
132
  };
132
133
  //# sourceMappingURL=AddonProjectContext.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddonProjectContext.es.js","sources":["../../../../src/context/AddonProjectContext.tsx"],"sourcesContent":["// NOT USED IN AYON-FRONTEND, ONLY IN ADDONS\n\nimport { ProjectModel, useGetProjectQuery, UserModel } from '@shared/api'\nimport { createContext, FC, useContext } from 'react'\nimport type { toast } from 'react-toastify'\nimport { useGlobalContext } from './GlobalContext'\nimport { RemotePageProps } from '@shared/components'\n\ntype ToastFunc = typeof toast\n\nexport interface RemoteAddonProjectProps extends RemotePageProps {}\n\nexport type RemoteAddonProjectComponent = FC<RemoteAddonProjectProps>\nexport type RemoteAddonProject = {\n id: string\n component: RemoteAddonProjectComponent\n name: string\n module: string\n viewType?: string // if the addon is using views\n slicer?: { fields: string[] }\n}\n\n// types for props passed to the provider\nexport interface AddonProjectContextValue extends RemoteAddonProjectProps {\n children: React.ReactNode\n}\n\n// types returned by context\nexport interface AddonProjectContextType extends RemoteAddonProjectProps {\n project: ProjectModel | undefined\n user: UserModel | undefined\n toast: ToastFunc\n}\n\nconst AddonProjectContext = createContext<AddonProjectContextType | undefined>(undefined)\n\nexport const AddonProjectProvider = ({\n children,\n projectName,\n // utils\n toast,\n ...props\n}: AddonProjectContextValue) => {\n // get current project data\n const { data: project } = useGetProjectQuery(\n { projectName: projectName as string },\n { skip: !projectName },\n )\n\n const { user } = useGlobalContext()\n\n return (\n <AddonProjectContext.Provider\n value={{\n ...props,\n projectName,\n project,\n user,\n toast,\n }}\n >\n {children}\n </AddonProjectContext.Provider>\n )\n}\n\nexport const useAddonProjectContext = () => {\n const context = useContext(AddonProjectContext)\n if (!context) {\n throw new Error('useAddonProjectContext must be used within a AddonProjectContext')\n }\n return context\n}\n"],"names":["AddonProjectContext","createContext","AddonProjectProvider","children","projectName","toast","props","project","useGetProjectQuery","user","useGlobalContext","jsx","useAddonProjectContext","context","useContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAMA,IAAsBC,EAAmD,MAAS,GAE3EC,KAAuB,CAAC;AAAA,EACnC,UAAAC;AAAA,EACA,aAAAC;AAAA;AAAA,EAEA,OAAAC;AAAA,EACA,GAAGC;AACL,MAAgC;AAE9B,QAAM,EAAE,MAAMC,EAAA,IAAYC;AAAA,IACxB,EAAE,aAAAJ,EAAA;AAAA,IACF,EAAE,MAAM,CAACA,EAAA;AAAA,EAAY,GAGjB,EAAE,MAAAK,EAAA,IAASC,EAAA;AAEjB,SACEC,gBAAAA,EAAAA;AAAAA,IAACX,EAAoB;AAAA,IAApB;AAAA,MACC,OAAO;AAAA,QACL,GAAGM;AAAA,QACH,aAAAF;AAAA,QACA,SAAAG;AAAA,QACA,MAAAE;AAAA,QACA,OAAAJ;AAAA,MAAA;AAAA,MAGD,UAAAF;AAAA,IAAA;AAAA,EAAA;AAGP,GAEaS,KAAyB,MAAM;AAC1C,QAAMC,IAAUC,EAAWd,CAAmB;AAC9C,MAAI,CAACa;AACH,UAAM,IAAI,MAAM,kEAAkE;AAEpF,SAAOA;AACT;"}
1
+ {"version":3,"file":"AddonProjectContext.es.js","sources":["../../../../src/context/AddonProjectContext.tsx"],"sourcesContent":["// NOT USED IN AYON-FRONTEND, ONLY IN ADDONS\n\nimport { ProjectModel, useGetProjectQuery, UserModel } from '@shared/api'\nimport { createContext, FC, useContext } from 'react'\nimport type { toast } from 'react-toastify'\nimport { useGlobalContext } from './GlobalContext'\nimport { RemotePageProps } from '@shared/components'\n\ntype ToastFunc = typeof toast\n\nexport interface RemoteAddonProjectProps extends RemotePageProps {}\n\nexport type RemoteAddonProjectComponent = FC<RemoteAddonProjectProps>\nexport type RemoteAddonProject = {\n id: string\n component: RemoteAddonProjectComponent\n name: string\n module: string\n viewType?: string // if the addon is using views\n slicer?: { fields: string[] }\n}\n\n// types for props passed to the provider\nexport interface AddonProjectContextValue extends RemoteAddonProjectProps {\n children: React.ReactNode\n}\n\n// types returned by context\nexport interface AddonProjectContextType extends RemoteAddonProjectProps {\n project: ProjectModel | undefined\n user: UserModel | undefined\n toast: ToastFunc\n}\n\nconst AddonProjectContext = createContext<AddonProjectContextType | undefined>(undefined)\n\nexport const AddonProjectProvider = ({\n children,\n projectName,\n // utils\n toast,\n ...props\n}: AddonProjectContextValue) => {\n // get current project data\n const { data: project } = useGetProjectQuery(\n { projectName: projectName as string },\n { skip: !projectName },\n )\n\n const { user } = useGlobalContext()\n\n return (\n <AddonProjectContext.Provider\n value={{\n ...props,\n projectName,\n project,\n user,\n toast,\n }}\n >\n {children}\n </AddonProjectContext.Provider>\n )\n}\n\nexport const useAddonProjectContext = () => {\n const context = useContext(AddonProjectContext)\n if (!context) {\n throw new Error('useAddonProjectContext must be used within a AddonProjectContext')\n }\n return context\n}\n"],"names":["AddonProjectContext","createContext","AddonProjectProvider","children","projectName","toast","props","project","useGetProjectQuery","user","useGlobalContext","jsx","useAddonProjectContext","context","useContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAMA,IAAsBC,EAAmD,MAAS,GAE3EC,KAAuB,CAAC;AAAA,EACnC,UAAAC;AAAA,EACA,aAAAC;AAAA;AAAA,EAEA,OAAAC;AAAA,EACA,GAAGC;AACL,MAAgC;AAE9B,QAAM,EAAE,MAAMC,EAAA,IAAYC;AAAA,IACxB,EAAE,aAAAJ,EAAA;AAAA,IACF,EAAE,MAAM,CAACA,EAAA;AAAA,EAAY,GAGjB,EAAE,MAAAK,EAAA,IAASC,EAAA;AAEjB,SACEC,gBAAAA,EAAAA;AAAAA,IAACX,EAAoB;AAAA,IAApB;AAAA,MACC,OAAO;AAAA,QACL,GAAGM;AAAA,QACH,aAAAF;AAAA,QACA,SAAAG;AAAA,QACA,MAAAE;AAAA,QACA,OAAAJ;AAAA,MAAA;AAAA,MAGD,UAAAF;AAAA,IAAA;AAAA,EAAA;AAGP,GAEaS,KAAyB,MAAM;AAC1C,QAAMC,IAAUC,EAAWd,CAAmB;AAC9C,MAAI,CAACa;AACH,UAAM,IAAI,MAAM,kEAAkE;AAEpF,SAAOA;AACT;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const ee=require("../../../_virtual/jsx-runtime.cjs.js"),e=require("react"),re=require("./PowerpackContext.cjs.js"),ie=require("./UriContext.cjs.js"),w=require("../hooks/useLocalStorage.cjs.js");require("./RemoteModulesContext.cjs.js");require("../../../_virtual/runtime.cjs.js");require("../../../_virtual/semver.cjs.js");require("../api/base/client.cjs.js");require("../api/generated/graphql.cjs.js");require("../api/generated/graphqlLinks.cjs.js");require("../api/generated/access.cjs.js");require("../api/generated/actions.cjs.js");require("../api/generated/activityFeed.cjs.js");require("../api/generated/addons.cjs.js");require("../api/generated/anatomy.cjs.js");require("../api/generated/attributes.cjs.js");require("../api/generated/authentication.cjs.js");require("../api/generated/bundles.cjs.js");require("../api/generated/configuration.cjs.js");require("../api/generated/dataImport.cjs.js");require("../api/generated/desktop.cjs.js");require("../api/generated/entityLists.cjs.js");require("../api/generated/events.cjs.js");require("../api/generated/files.cjs.js");require("../api/generated/folders.cjs.js");require("../api/generated/inbox.cjs.js");require("../api/generated/links.cjs.js");require("../api/generated/market.cjs.js");require("../api/generated/onboarding.cjs.js");require("../api/generated/operations.cjs.js");require("../api/generated/products.cjs.js");require("../api/generated/projectDashboard.cjs.js");require("../api/generated/projects.cjs.js");require("../api/generated/projectFolders.cjs.js");require("../api/generated/reviewables.cjs.js");require("../api/generated/services.cjs.js");require("../api/generated/system.cjs.js");require("../api/generated/tasks.cjs.js");require("../api/generated/teams.cjs.js");require("../api/generated/thumbnails.cjs.js");require("../api/generated/uRIs.cjs.js");require("../api/generated/users.cjs.js");require("../api/generated/versions.cjs.js");require("../api/generated/workfiles.cjs.js");require("../api/generated/ynputCloud.cjs.js");require("../api/generated/grouping.cjs.js");require("../api/generated/views.cjs.js");require("../api/queries/actions/getActions.cjs.js");require("../api/queries/activities/getActivities.cjs.js");require("../api/queries/activities/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/columnStats/metricTargets.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/overview/getOverview.cjs.js");require("../api/queries/overview/updateOverview.cjs.js");require("../api/queries/versions/getVersionsProducts.cjs.js");require("../api/queries/links/getEntityLinks.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/folders/getFolderDeleteInfo.cjs.js");require("../api/queries/grouping/getGrouping.cjs.js");require("../api/queries/links/updateLinks.cjs.js");require("../api/queries/links/getLinks.cjs.js");require("../api/queries/permissions/getPermissions.cjs.js");require("../api/queries/products/createProduct.cjs.js");require("../api/queries/products/getFolderProducts.cjs.js");require("../api/queries/project/getProject.cjs.js");require("../api/queries/project/updateProject.cjs.js");require("../api/queries/projectFolders/projectFolders.cjs.js");require("../api/queries/review/getReview.cjs.js");require("../api/queries/review/updateReview.cjs.js");require("../api/queries/share/share.cjs.js");require("../api/queries/system/getSystem.cjs.js");require("../api/queries/tasks/getTasks.cjs.js");require("../api/queries/tasks/updateTasks.cjs.js");require("../api/queries/teams/getTeams.cjs.js");require("../api/queries/userDashboard/getUserDashboard.cjs.js");require("../api/queries/users/getUsers.cjs.js");require("../api/queries/users/updateUsers.cjs.js");require("../api/queries/users/guests.cjs.js");require("../api/queries/versions/updateVersions.cjs.js");require("../api/queries/views/getViews.cjs.js");require("../api/queries/views/updateViews.cjs.js");require("../api/queries/watchers/getWatchers.cjs.js");require("../api/queries/uris/getUris.cjs.js");require("lodash");require("react-toastify");const I=require("./DetailsPanelContextInstance.cjs.js");require("./SubtasksModulesContextInstance.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("./MoveEntityContext.cjs.js");require("./MenuContext.cjs.js");require("./WebsocketContext.cjs.js");require("./GlobalContext.cjs.js");require("./ProjectContext.cjs.js");require("./ProjectFoldersContext.cjs.js");require("react-redux");require("custom-protocol-check");require("../containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("uuid");require("../util/pubsub.cjs.js");const te=["feed","subtasks","details","files"],F=i=>typeof i=="string"&&te.includes(i),ue=({children:i,defaultTab:c="feed",hasLicense:y,debug:s={},...n})=>{const a=n.user,l="isDeveloperMode"in s?s.isDeveloperMode:a?.attrib?.developerMode??!1,P="isGuest"in s?s.isGuest:a?.data?.isGuest,{powerLicense:b,setPowerpackDialog:f}=re.usePowerpack(),u="hasLicense"in s?s.hasLicense:!!b||y,[q,T]=e.useState({}),[B,M]=e.useState([]),N=e.useCallback(r=>q[r]?q[r]:!1,[q]),R=e.useCallback((r,o)=>{const t={...q};t[r]=o,T(t)},[q]),[p,U]=w.useLocalStorage("details/tabs-by-scope",{}),G=e.useCallback(r=>{const o=p[r];return F(o)?o:c},[p,c]),[x,k]=e.useState(null),_=e.useCallback(r=>{k(r)},[]),O=e.useCallback(()=>{k(null),x&&v([])},[]);e.useEffect(()=>{O()},[n.useLocation().pathname]);const[H,m]=e.useState(null),z=e.useCallback(r=>{m(r)},[]),J=e.useCallback(()=>{m(null)},[]),[K,D]=e.useState(null),[Q,v]=e.useState([]),{uriType:V,uri:W,entity:d,getUriEntities:X}=ie.useURIContext(),[S]=n.useSearchParams(),g=S.get("project"),h=S.get("type"),C=S.get("id"),E=S.get("activity");e.useEffect(()=>{if(V==="entity"&&d&&d.entityType!=="product"){X().then(r=>{if(r.length===0)return;const o=r.find($=>$.uri===W),t=o?.entities?.[0];if(!o||!t)return;const L=t?.projectName||d.projectName||"",j=t.representationId||t.versionId||t.productId||t.taskId||t.folderId;if(!L||!j)return;const Z={entityType:d.entityType,entities:[{id:j,projectName:L}],source:"uri"};D(Z)}).catch(r=>{console.warn("Failed to get URI entities:",r)});return}g&&h&&C&&(D({entityType:h,entities:[{id:C,projectName:g}],source:"url"}),E&&(v([E]),U({...p,overview:"feed"})))},[g,h,C]);const Y={panelOpenByScope:q,getOpenForScope:N,setPanelOpen:R,setPanelOpenByScope:T,tabsByScope:p,getTabForScope:G,slideOut:x,openSlideOut:_,closeSlideOut:O,highlightedActivities:Q,setHighlightedActivities:v,pip:H,openPip:z,closePip:J,entities:K,setEntities:D,feedAnnotations:B,setFeedAnnotations:M,isDeveloperMode:l,isGuest:P,hasLicense:u,onPowerFeature:f,...n};return ee.jsxRuntimeExports.jsx(I.DetailsPanelContext.Provider,{value:Y,children:i})},A=()=>{const i=e.useContext(I.DetailsPanelContext);if(i===void 0)throw new Error("useDetailsPanel must be used within a DetailsPanelProvider");return i},se=i=>{const{getOpenForScope:c,setPanelOpen:y,getTabForScope:s}=A(),[n,a]=w.useLocalStorage("details/tabs-by-scope",{}),[l,P]=e.useState(()=>{const u=n[i];return F(u)?u:s(i)}),b=e.useCallback(u=>{P(u),a({...n,[i]:u})},[i,a]),f=l==="feed";return{isOpen:c(i),setOpen:u=>y(i,u),currentTab:l,setTab:b,isFeed:f}};exports.DetailsPanelProvider=ue;exports.useDetailsPanelContext=A;exports.useScopedDetailsPanel=se;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const ee=require("../../../_virtual/jsx-runtime.cjs.js"),e=require("react"),re=require("./PowerpackContext.cjs.js"),ie=require("./UriContext.cjs.js"),w=require("../hooks/useLocalStorage.cjs.js");require("./RemoteModulesContext.cjs.js");require("../../../_virtual/runtime.cjs.js");require("../../../_virtual/semver.cjs.js");require("../api/base/client.cjs.js");require("../api/generated/graphql.cjs.js");require("../api/generated/graphqlLinks.cjs.js");require("../api/generated/access.cjs.js");require("../api/generated/actions.cjs.js");require("../api/generated/activityFeed.cjs.js");require("../api/generated/addons.cjs.js");require("../api/generated/anatomy.cjs.js");require("../api/generated/attributes.cjs.js");require("../api/generated/authentication.cjs.js");require("../api/generated/bundles.cjs.js");require("../api/generated/configuration.cjs.js");require("../api/generated/dataImport.cjs.js");require("../api/generated/desktop.cjs.js");require("../api/generated/entityLists.cjs.js");require("../api/generated/events.cjs.js");require("../api/generated/files.cjs.js");require("../api/generated/folders.cjs.js");require("../api/generated/inbox.cjs.js");require("../api/generated/links.cjs.js");require("../api/generated/market.cjs.js");require("../api/generated/onboarding.cjs.js");require("../api/generated/operations.cjs.js");require("../api/generated/products.cjs.js");require("../api/generated/projectDashboard.cjs.js");require("../api/generated/projects.cjs.js");require("../api/generated/projectFolders.cjs.js");require("../api/generated/reviewables.cjs.js");require("../api/generated/services.cjs.js");require("../api/generated/system.cjs.js");require("../api/generated/tasks.cjs.js");require("../api/generated/teams.cjs.js");require("../api/generated/thumbnails.cjs.js");require("../api/generated/uRIs.cjs.js");require("../api/generated/users.cjs.js");require("../api/generated/versions.cjs.js");require("../api/generated/workfiles.cjs.js");require("../api/generated/ynputCloud.cjs.js");require("../api/generated/grouping.cjs.js");require("../api/generated/views.cjs.js");require("../api/queries/actions/getActions.cjs.js");require("../api/queries/activities/getActivities.cjs.js");require("../api/queries/activities/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/columnStats/metricTargets.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/overview/getOverview.cjs.js");require("../api/queries/overview/updateOverview.cjs.js");require("../api/queries/versions/getVersionsProducts.cjs.js");require("../api/queries/links/getEntityLinks.cjs.js");require("../api/queries/entities/updateEntity.cjs.js");require("../api/queries/entityLists/getLists.cjs.js");require("../api/queries/entityLists/updateLists.cjs.js");require("../api/queries/entityLists/getListsAttributes.cjs.js");require("../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../api/queries/entityLists/updateListsAttributes.cjs.js");require("../api/queries/entityLists/listFolders.cjs.js");require("../api/queries/folders/getFolders.cjs.js");require("../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../api/queries/grouping/getGrouping.cjs.js");require("../api/queries/links/updateLinks.cjs.js");require("../api/queries/links/getLinks.cjs.js");require("../api/queries/permissions/getPermissions.cjs.js");require("../api/queries/products/createProduct.cjs.js");require("../api/queries/products/getFolderProducts.cjs.js");require("../api/queries/project/getProject.cjs.js");require("../api/queries/project/updateProject.cjs.js");require("../api/queries/projectFolders/projectFolders.cjs.js");require("../api/queries/review/getReview.cjs.js");require("../api/queries/review/updateReview.cjs.js");require("../api/queries/share/share.cjs.js");require("../api/queries/system/getSystem.cjs.js");require("../api/queries/tasks/getTasks.cjs.js");require("../api/queries/tasks/updateTasks.cjs.js");require("../api/queries/teams/getTeams.cjs.js");require("../api/queries/userDashboard/getUserDashboard.cjs.js");require("../api/queries/users/getUsers.cjs.js");require("../api/queries/users/updateUsers.cjs.js");require("../api/queries/users/guests.cjs.js");require("../api/queries/versions/updateVersions.cjs.js");require("../api/queries/views/getViews.cjs.js");require("../api/queries/views/updateViews.cjs.js");require("../api/queries/watchers/getWatchers.cjs.js");require("../api/queries/uris/getUris.cjs.js");require("lodash");require("react-toastify");const I=require("./DetailsPanelContextInstance.cjs.js");require("./SubtasksModulesContextInstance.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("./MoveEntityContext.cjs.js");require("./MenuContext.cjs.js");require("./WebsocketContext.cjs.js");require("./GlobalContext.cjs.js");require("./ProjectContext.cjs.js");require("./ProjectFoldersContext.cjs.js");require("react-redux");require("custom-protocol-check");require("../containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("uuid");require("../util/pubsub.cjs.js");const te=["feed","subtasks","details","files"],F=i=>typeof i=="string"&&te.includes(i),ue=({children:i,defaultTab:c="feed",hasLicense:y,debug:s={},...n})=>{const a=n.user,l="isDeveloperMode"in s?s.isDeveloperMode:a?.attrib?.developerMode??!1,P="isGuest"in s?s.isGuest:a?.data?.isGuest,{powerLicense:b,setPowerpackDialog:f}=re.usePowerpack(),u="hasLicense"in s?s.hasLicense:!!b||y,[q,T]=e.useState({}),[B,M]=e.useState([]),N=e.useCallback(r=>q[r]?q[r]:!1,[q]),R=e.useCallback((r,o)=>{const t={...q};t[r]=o,T(t)},[q]),[p,U]=w.useLocalStorage("details/tabs-by-scope",{}),G=e.useCallback(r=>{const o=p[r];return F(o)?o:c},[p,c]),[x,k]=e.useState(null),_=e.useCallback(r=>{k(r)},[]),O=e.useCallback(()=>{k(null),x&&v([])},[]);e.useEffect(()=>{O()},[n.useLocation().pathname]);const[H,m]=e.useState(null),z=e.useCallback(r=>{m(r)},[]),J=e.useCallback(()=>{m(null)},[]),[K,D]=e.useState(null),[Q,v]=e.useState([]),{uriType:V,uri:W,entity:d,getUriEntities:X}=ie.useURIContext(),[S]=n.useSearchParams(),g=S.get("project"),h=S.get("type"),C=S.get("id"),E=S.get("activity");e.useEffect(()=>{if(V==="entity"&&d&&d.entityType!=="product"){X().then(r=>{if(r.length===0)return;const o=r.find($=>$.uri===W),t=o?.entities?.[0];if(!o||!t)return;const L=t?.projectName||d.projectName||"",j=t.representationId||t.versionId||t.productId||t.taskId||t.folderId;if(!L||!j)return;const Z={entityType:d.entityType,entities:[{id:j,projectName:L}],source:"uri"};D(Z)}).catch(r=>{console.warn("Failed to get URI entities:",r)});return}g&&h&&C&&(D({entityType:h,entities:[{id:C,projectName:g}],source:"url"}),E&&(v([E]),U({...p,overview:"feed"})))},[g,h,C]);const Y={panelOpenByScope:q,getOpenForScope:N,setPanelOpen:R,setPanelOpenByScope:T,tabsByScope:p,getTabForScope:G,slideOut:x,openSlideOut:_,closeSlideOut:O,highlightedActivities:Q,setHighlightedActivities:v,pip:H,openPip:z,closePip:J,entities:K,setEntities:D,feedAnnotations:B,setFeedAnnotations:M,isDeveloperMode:l,isGuest:P,hasLicense:u,onPowerFeature:f,...n};return ee.jsxRuntimeExports.jsx(I.DetailsPanelContext.Provider,{value:Y,children:i})},A=()=>{const i=e.useContext(I.DetailsPanelContext);if(i===void 0)throw new Error("useDetailsPanel must be used within a DetailsPanelProvider");return i},se=i=>{const{getOpenForScope:c,setPanelOpen:y,getTabForScope:s}=A(),[n,a]=w.useLocalStorage("details/tabs-by-scope",{}),[l,P]=e.useState(()=>{const u=n[i];return F(u)?u:s(i)}),b=e.useCallback(u=>{P(u),a({...n,[i]:u})},[i,a]),f=l==="feed";return{isOpen:c(i),setOpen:u=>y(i,u),currentTab:l,setTab:b,isFeed:f}};exports.DetailsPanelProvider=ue;exports.useDetailsPanelContext=A;exports.useScopedDetailsPanel=se;
2
2
  //# sourceMappingURL=DetailsPanelContext.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DetailsPanelContext.cjs.js","sources":["../../../../src/context/DetailsPanelContext.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useContext, useEffect, useState } from 'react'\nimport { QueryFilter, UserModel, DetailsPanelEntityType } from '@shared/api'\nimport { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom'\nimport { SavedAnnotationMetadata } from '@shared/containers'\nimport { PowerpackFeature, usePowerpack } from './PowerpackContext'\nimport { useURIContext } from './UriContext'\nimport { useLocalStorage } from '@shared/hooks'\nimport type { SubtasksManagerProps } from '@shared/components'\nimport { DetailsPanelContext } from './DetailsPanelContextInstance'\n\n// High-level tabs for the details panel\nexport type DetailsPanelTab = 'feed' | 'subtasks' | 'details' | 'files'\n\n// Filters within the feed tab\nexport type FeedFilter = QueryFilter\n\nexport type SlideOut = {\n entityId: string\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\nexport type DetailsPanelPip = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n scope: string\n}\n\nexport type Entities = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n entitySubTypes?: string[]\n source?: 'uri' | 'url' | 'related' // uri = ayon+entity://..., url = ?project=...&type=...&id=...\n}\n\nexport interface OpenStateByScope {\n [scope: string]: boolean\n}\n\n// Create a new interface for managing tab state by scope\nexport interface TabStateByScope {\n [scope: string]: DetailsPanelTab\n}\n\nconst DETAILS_PANEL_TABS: DetailsPanelTab[] = ['feed', 'subtasks', 'details', 'files']\n\nconst isDetailsPanelTab = (tab: unknown): tab is DetailsPanelTab =>\n typeof tab === 'string' && DETAILS_PANEL_TABS.includes(tab as DetailsPanelTab)\n\n// these props get forwarded to the details panel value\n// it's mainly redux callbacks that cannot be used in shared library\nexport interface DetailsPanelContextProps {\n dispatch?: any // this is a redux dispatch function and it's quite annoying we need to do this\n user: UserModel\n viewer?: {\n reviewableIds: string[]\n taskId?: string | null\n folderId?: string | null\n }\n // redux callback actions\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n // route hooks\n useParams: typeof useParams\n useNavigate: typeof useNavigate\n useLocation: typeof useLocation\n useSearchParams: typeof useSearchParams\n feedAnnotationsEnabled?: boolean\n hasLicense?: boolean\n // SubtasksManager component\n SubtasksManager?: React.ComponentType<SubtasksManagerProps>\n // debugging used to simulate different values\n debug?: {\n isDeveloperMode?: boolean\n isGuest?: boolean\n hasLicense?: boolean\n }\n}\n\n// Interface for our simplified context\nexport interface DetailsPanelContextType extends DetailsPanelContextProps {\n // user\n isDeveloperMode: boolean\n isGuest: boolean\n // Open state for the panel by scope\n panelOpenByScope: OpenStateByScope\n getOpenForScope: (scope: string) => boolean\n setPanelOpen: (scope: string, isOpen: boolean) => void\n setPanelOpenByScope: (newState: OpenStateByScope) => void\n\n // Tab preferences by scope\n tabsByScope: TabStateByScope\n getTabForScope: (scope: string) => DetailsPanelTab\n\n // Slide out state\n slideOut: null | SlideOut\n openSlideOut: (slideOut: SlideOut) => void\n closeSlideOut: () => void\n\n // Highlighted activities\n highlightedActivities: string[]\n setHighlightedActivities: (activities: string[]) => void\n\n // PiP state\n pip: DetailsPanelPip | null\n openPip: (pip: DetailsPanelPip) => void\n closePip: () => void\n\n // Entities state\n entities: Entities | null\n setEntities: (entities: Entities | null) => void\n\n // Annotations\n feedAnnotations: SavedAnnotationMetadata[]\n setFeedAnnotations: (annotations: SavedAnnotationMetadata[]) => void\n\n // powerpack\n onPowerFeature: (feature: PowerpackFeature) => void\n}\n\n// Provider component\nexport interface DetailsPanelProviderProps extends DetailsPanelContextProps {\n children: ReactNode\n defaultTab?: DetailsPanelTab\n}\n\nexport const DetailsPanelProvider: React.FC<DetailsPanelProviderProps> = ({\n children,\n defaultTab = 'feed',\n hasLicense: hasLicenseProp,\n debug = {},\n ...forwardedProps\n}) => {\n const user = forwardedProps.user\n const isDeveloperMode =\n 'isDeveloperMode' in debug\n ? (debug.isDeveloperMode as boolean)\n : user?.attrib?.developerMode ?? false\n const isGuest = 'isGuest' in debug ? (debug.isGuest as boolean) : user?.data?.isGuest\n\n // get license from powerpack or forwarded down from props\n const { powerLicense, setPowerpackDialog } = usePowerpack()\n const hasLicense =\n 'hasLicense' in debug ? (debug.hasLicense as boolean) : !!powerLicense || hasLicenseProp\n\n // keep track of the currently open panel by scope\n const [panelOpenByScope, setPanelOpenByScope] = useState<OpenStateByScope>({})\n const [feedAnnotations, setFeedAnnotations] = useState<SavedAnnotationMetadata[]>([])\n\n // get the current open state for a specific scope\n const getOpenForScope = useCallback(\n (scope: string): boolean => {\n // Check if we have a saved preference for this scope\n if (panelOpenByScope[scope]) {\n return panelOpenByScope[scope]\n }\n\n // Fall back to default\n return false\n },\n [panelOpenByScope],\n )\n // Set open state for a scope\n const setPanelOpen = useCallback(\n (scope: string, isOpen: boolean) => {\n // Create a new state object based on current open state\n const newState = { ...panelOpenByScope }\n newState[scope] = isOpen\n\n // Update the state with the new object\n setPanelOpenByScope(newState)\n },\n [panelOpenByScope],\n )\n\n // Use localStorage to persist tab preferences by scope\n const [tabsByScope, setTabByScope] = useLocalStorage<TabStateByScope>('details/tabs-by-scope', {})\n\n // Get the current tab for a specific scope\n const getTabForScope = useCallback(\n (scope: string): DetailsPanelTab => {\n // Check if we have a saved preference for this scope\n const tab = tabsByScope[scope]\n if (isDetailsPanelTab(tab)) {\n return tab\n }\n\n // Fall back to default\n return defaultTab\n },\n [tabsByScope, defaultTab],\n )\n\n // Set tab for a scope\n\n // is the slide out open?\n const [slideOut, setSlideOut] = useState<null | SlideOut>(null)\n\n // open the slide out\n const openSlideOut = useCallback<DetailsPanelContextType['openSlideOut']>((params) => {\n setSlideOut(params)\n }, [])\n\n // close the slide out\n const closeSlideOut = useCallback(() => {\n setSlideOut(null)\n if (slideOut) {\n setHighlightedActivities([])\n }\n }, [])\n\n // close slide out whenever the page changes\n useEffect(() => {\n closeSlideOut()\n }, [forwardedProps.useLocation().pathname])\n\n const [pip, setPip] = useState<DetailsPanelPip | null>(null)\n\n const openPip = useCallback((pip: DetailsPanelPip) => {\n setPip(pip)\n }, [])\n const closePip = useCallback(() => {\n setPip(null)\n }, [])\n\n const [entities, setEntities] = useState<Entities | null>(null)\n\n const [highlightedActivities, setHighlightedActivities] = useState<string[]>([])\n\n const { uriType, uri, entity, getUriEntities } = useURIContext()\n const [searchParams] = forwardedProps.useSearchParams()\n\n const project = searchParams.get('project')\n const type = searchParams.get('type')\n const id = searchParams.get('id')\n const activity = searchParams.get('activity')\n\n // on first load or URL param change, check if there is a uri or URL params and open details panel if present\n useEffect(() => {\n // Priority 1: Check for 'uri' parameter (ayon+entity://...)\n if (uriType === 'entity' && entity && entity.entityType !== 'product') {\n getUriEntities()\n .then((result) => {\n if (result.length === 0) return\n\n const entityUriData = result.find((r) => r.uri === uri)\n const entityData = entityUriData?.entities?.[0]\n\n if (!entityUriData || !entityData) return\n const projectName = entityData?.projectName || entity.projectName || ''\n const id =\n entityData.representationId ||\n entityData.versionId ||\n entityData.productId ||\n entityData.taskId ||\n entityData.folderId\n\n if (!projectName || !id) return\n\n const newEntities: Entities = {\n entityType: entity.entityType as DetailsPanelEntityType,\n entities: [\n {\n id: id,\n projectName: projectName,\n },\n ],\n source: 'uri',\n }\n\n setEntities(newEntities)\n })\n .catch((err) => {\n console.warn('Failed to get URI entities:', err)\n })\n return\n }\n\n // Priority 2: Check for URL params (project, type, id)\n if (project && type && id) {\n const newEntities: Entities = {\n entityType: type as DetailsPanelEntityType,\n entities: [\n {\n id,\n projectName: project,\n },\n ],\n source: 'url',\n }\n\n setEntities(newEntities)\n\n // if there is an activity param, open the feed tab (activity is shown by default)\n\n if (activity) {\n setHighlightedActivities([activity])\n setTabByScope({\n ...tabsByScope,\n overview: 'feed',\n })\n }\n }\n }, [project, type, id])\n\n const value = {\n // open state for the panel by scope\n panelOpenByScope,\n getOpenForScope,\n setPanelOpen,\n setPanelOpenByScope,\n // tab preferences\n tabsByScope,\n getTabForScope,\n // slide out state\n slideOut,\n openSlideOut,\n closeSlideOut,\n // highlighted activities\n highlightedActivities,\n setHighlightedActivities,\n // PiP state\n pip,\n openPip,\n closePip,\n // entities state\n entities,\n setEntities,\n feedAnnotations,\n setFeedAnnotations,\n isDeveloperMode,\n isGuest,\n hasLicense,\n onPowerFeature: setPowerpackDialog,\n ...forwardedProps,\n }\n\n return <DetailsPanelContext.Provider value={value}>{children}</DetailsPanelContext.Provider>\n}\n\n// Custom hook to use the details context\nexport const useDetailsPanelContext = (): DetailsPanelContextType => {\n const context = useContext(DetailsPanelContext)\n if (context === undefined) {\n throw new Error('useDetailsPanel must be used within a DetailsPanelProvider')\n }\n return context\n}\n\n// Add a specialized hook for using a panel in a specific scope\nexport const useScopedDetailsPanel = (scope: string) => {\n const { getOpenForScope, setPanelOpen, getTabForScope } = useDetailsPanelContext()\n\n const [tabsByScope, setTabsByScope] = useLocalStorage<TabStateByScope>(\n 'details/tabs-by-scope',\n {},\n )\n\n const [currentTab, setTab] = useState<DetailsPanelTab>(() => {\n const tab = tabsByScope[scope]\n return isDetailsPanelTab(tab) ? tab : getTabForScope(scope)\n })\n\n // Keep localStorage and local state in sync\n const updateTab = useCallback(\n (newTab: DetailsPanelTab) => {\n setTab(newTab)\n setTabsByScope({ ...tabsByScope, [scope]: newTab })\n },\n [scope, setTabsByScope],\n )\n\n const isFeed = currentTab === 'feed'\n\n return {\n isOpen: getOpenForScope(scope),\n setOpen: (isOpen: boolean) => setPanelOpen(scope, isOpen),\n currentTab,\n setTab: updateTab,\n isFeed,\n }\n}\n"],"names":["DETAILS_PANEL_TABS","isDetailsPanelTab","tab","DetailsPanelProvider","children","defaultTab","hasLicenseProp","debug","forwardedProps","user","isDeveloperMode","isGuest","powerLicense","setPowerpackDialog","usePowerpack","hasLicense","panelOpenByScope","setPanelOpenByScope","useState","feedAnnotations","setFeedAnnotations","getOpenForScope","useCallback","scope","setPanelOpen","isOpen","newState","tabsByScope","setTabByScope","useLocalStorage","getTabForScope","slideOut","setSlideOut","openSlideOut","params","closeSlideOut","setHighlightedActivities","useEffect","pip","setPip","openPip","closePip","entities","setEntities","highlightedActivities","uriType","uri","entity","getUriEntities","useURIContext","searchParams","project","type","id","activity","result","entityUriData","r","entityData","projectName","newEntities","err","value","jsx","DetailsPanelContext","useDetailsPanelContext","context","useContext","useScopedDetailsPanel","setTabsByScope","currentTab","setTab","updateTab","newTab","isFeed"],"mappings":"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"}
1
+ {"version":3,"file":"DetailsPanelContext.cjs.js","sources":["../../../../src/context/DetailsPanelContext.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useContext, useEffect, useState } from 'react'\nimport { QueryFilter, UserModel, DetailsPanelEntityType } from '@shared/api'\nimport { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom'\nimport { SavedAnnotationMetadata } from '@shared/containers'\nimport { PowerpackFeature, usePowerpack } from './PowerpackContext'\nimport { useURIContext } from './UriContext'\nimport { useLocalStorage } from '@shared/hooks'\nimport type { SubtasksManagerProps } from '@shared/components'\nimport { DetailsPanelContext } from './DetailsPanelContextInstance'\n\n// High-level tabs for the details panel\nexport type DetailsPanelTab = 'feed' | 'subtasks' | 'details' | 'files'\n\n// Filters within the feed tab\nexport type FeedFilter = QueryFilter\n\nexport type SlideOut = {\n entityId: string\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\nexport type DetailsPanelPip = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n scope: string\n}\n\nexport type Entities = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n entitySubTypes?: string[]\n source?: 'uri' | 'url' | 'related' // uri = ayon+entity://..., url = ?project=...&type=...&id=...\n}\n\nexport interface OpenStateByScope {\n [scope: string]: boolean\n}\n\n// Create a new interface for managing tab state by scope\nexport interface TabStateByScope {\n [scope: string]: DetailsPanelTab\n}\n\nconst DETAILS_PANEL_TABS: DetailsPanelTab[] = ['feed', 'subtasks', 'details', 'files']\n\nconst isDetailsPanelTab = (tab: unknown): tab is DetailsPanelTab =>\n typeof tab === 'string' && DETAILS_PANEL_TABS.includes(tab as DetailsPanelTab)\n\n// these props get forwarded to the details panel value\n// it's mainly redux callbacks that cannot be used in shared library\nexport interface DetailsPanelContextProps {\n dispatch?: any // this is a redux dispatch function and it's quite annoying we need to do this\n user: UserModel\n viewer?: {\n reviewableIds: string[]\n taskId?: string | null\n folderId?: string | null\n }\n // redux callback actions\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n // route hooks\n useParams: typeof useParams\n useNavigate: typeof useNavigate\n useLocation: typeof useLocation\n useSearchParams: typeof useSearchParams\n feedAnnotationsEnabled?: boolean\n hasLicense?: boolean\n // SubtasksManager component\n SubtasksManager?: React.ComponentType<SubtasksManagerProps>\n // debugging used to simulate different values\n debug?: {\n isDeveloperMode?: boolean\n isGuest?: boolean\n hasLicense?: boolean\n }\n}\n\n// Interface for our simplified context\nexport interface DetailsPanelContextType extends DetailsPanelContextProps {\n // user\n isDeveloperMode: boolean\n isGuest: boolean\n // Open state for the panel by scope\n panelOpenByScope: OpenStateByScope\n getOpenForScope: (scope: string) => boolean\n setPanelOpen: (scope: string, isOpen: boolean) => void\n setPanelOpenByScope: (newState: OpenStateByScope) => void\n\n // Tab preferences by scope\n tabsByScope: TabStateByScope\n getTabForScope: (scope: string) => DetailsPanelTab\n\n // Slide out state\n slideOut: null | SlideOut\n openSlideOut: (slideOut: SlideOut) => void\n closeSlideOut: () => void\n\n // Highlighted activities\n highlightedActivities: string[]\n setHighlightedActivities: (activities: string[]) => void\n\n // PiP state\n pip: DetailsPanelPip | null\n openPip: (pip: DetailsPanelPip) => void\n closePip: () => void\n\n // Entities state\n entities: Entities | null\n setEntities: (entities: Entities | null) => void\n\n // Annotations\n feedAnnotations: SavedAnnotationMetadata[]\n setFeedAnnotations: (annotations: SavedAnnotationMetadata[]) => void\n\n // powerpack\n onPowerFeature: (feature: PowerpackFeature) => void\n}\n\n// Provider component\nexport interface DetailsPanelProviderProps extends DetailsPanelContextProps {\n children: ReactNode\n defaultTab?: DetailsPanelTab\n}\n\nexport const DetailsPanelProvider: React.FC<DetailsPanelProviderProps> = ({\n children,\n defaultTab = 'feed',\n hasLicense: hasLicenseProp,\n debug = {},\n ...forwardedProps\n}) => {\n const user = forwardedProps.user\n const isDeveloperMode =\n 'isDeveloperMode' in debug\n ? (debug.isDeveloperMode as boolean)\n : user?.attrib?.developerMode ?? false\n const isGuest = 'isGuest' in debug ? (debug.isGuest as boolean) : user?.data?.isGuest\n\n // get license from powerpack or forwarded down from props\n const { powerLicense, setPowerpackDialog } = usePowerpack()\n const hasLicense =\n 'hasLicense' in debug ? (debug.hasLicense as boolean) : !!powerLicense || hasLicenseProp\n\n // keep track of the currently open panel by scope\n const [panelOpenByScope, setPanelOpenByScope] = useState<OpenStateByScope>({})\n const [feedAnnotations, setFeedAnnotations] = useState<SavedAnnotationMetadata[]>([])\n\n // get the current open state for a specific scope\n const getOpenForScope = useCallback(\n (scope: string): boolean => {\n // Check if we have a saved preference for this scope\n if (panelOpenByScope[scope]) {\n return panelOpenByScope[scope]\n }\n\n // Fall back to default\n return false\n },\n [panelOpenByScope],\n )\n // Set open state for a scope\n const setPanelOpen = useCallback(\n (scope: string, isOpen: boolean) => {\n // Create a new state object based on current open state\n const newState = { ...panelOpenByScope }\n newState[scope] = isOpen\n\n // Update the state with the new object\n setPanelOpenByScope(newState)\n },\n [panelOpenByScope],\n )\n\n // Use localStorage to persist tab preferences by scope\n const [tabsByScope, setTabByScope] = useLocalStorage<TabStateByScope>('details/tabs-by-scope', {})\n\n // Get the current tab for a specific scope\n const getTabForScope = useCallback(\n (scope: string): DetailsPanelTab => {\n // Check if we have a saved preference for this scope\n const tab = tabsByScope[scope]\n if (isDetailsPanelTab(tab)) {\n return tab\n }\n\n // Fall back to default\n return defaultTab\n },\n [tabsByScope, defaultTab],\n )\n\n // Set tab for a scope\n\n // is the slide out open?\n const [slideOut, setSlideOut] = useState<null | SlideOut>(null)\n\n // open the slide out\n const openSlideOut = useCallback<DetailsPanelContextType['openSlideOut']>((params) => {\n setSlideOut(params)\n }, [])\n\n // close the slide out\n const closeSlideOut = useCallback(() => {\n setSlideOut(null)\n if (slideOut) {\n setHighlightedActivities([])\n }\n }, [])\n\n // close slide out whenever the page changes\n useEffect(() => {\n closeSlideOut()\n }, [forwardedProps.useLocation().pathname])\n\n const [pip, setPip] = useState<DetailsPanelPip | null>(null)\n\n const openPip = useCallback((pip: DetailsPanelPip) => {\n setPip(pip)\n }, [])\n const closePip = useCallback(() => {\n setPip(null)\n }, [])\n\n const [entities, setEntities] = useState<Entities | null>(null)\n\n const [highlightedActivities, setHighlightedActivities] = useState<string[]>([])\n\n const { uriType, uri, entity, getUriEntities } = useURIContext()\n const [searchParams] = forwardedProps.useSearchParams()\n\n const project = searchParams.get('project')\n const type = searchParams.get('type')\n const id = searchParams.get('id')\n const activity = searchParams.get('activity')\n\n // on first load or URL param change, check if there is a uri or URL params and open details panel if present\n useEffect(() => {\n // Priority 1: Check for 'uri' parameter (ayon+entity://...)\n if (uriType === 'entity' && entity && entity.entityType !== 'product') {\n getUriEntities()\n .then((result) => {\n if (result.length === 0) return\n\n const entityUriData = result.find((r) => r.uri === uri)\n const entityData = entityUriData?.entities?.[0]\n\n if (!entityUriData || !entityData) return\n const projectName = entityData?.projectName || entity.projectName || ''\n const id =\n entityData.representationId ||\n entityData.versionId ||\n entityData.productId ||\n entityData.taskId ||\n entityData.folderId\n\n if (!projectName || !id) return\n\n const newEntities: Entities = {\n entityType: entity.entityType as DetailsPanelEntityType,\n entities: [\n {\n id: id,\n projectName: projectName,\n },\n ],\n source: 'uri',\n }\n\n setEntities(newEntities)\n })\n .catch((err) => {\n console.warn('Failed to get URI entities:', err)\n })\n return\n }\n\n // Priority 2: Check for URL params (project, type, id)\n if (project && type && id) {\n const newEntities: Entities = {\n entityType: type as DetailsPanelEntityType,\n entities: [\n {\n id,\n projectName: project,\n },\n ],\n source: 'url',\n }\n\n setEntities(newEntities)\n\n // if there is an activity param, open the feed tab (activity is shown by default)\n\n if (activity) {\n setHighlightedActivities([activity])\n setTabByScope({\n ...tabsByScope,\n overview: 'feed',\n })\n }\n }\n }, [project, type, id])\n\n const value = {\n // open state for the panel by scope\n panelOpenByScope,\n getOpenForScope,\n setPanelOpen,\n setPanelOpenByScope,\n // tab preferences\n tabsByScope,\n getTabForScope,\n // slide out state\n slideOut,\n openSlideOut,\n closeSlideOut,\n // highlighted activities\n highlightedActivities,\n setHighlightedActivities,\n // PiP state\n pip,\n openPip,\n closePip,\n // entities state\n entities,\n setEntities,\n feedAnnotations,\n setFeedAnnotations,\n isDeveloperMode,\n isGuest,\n hasLicense,\n onPowerFeature: setPowerpackDialog,\n ...forwardedProps,\n }\n\n return <DetailsPanelContext.Provider value={value}>{children}</DetailsPanelContext.Provider>\n}\n\n// Custom hook to use the details context\nexport const useDetailsPanelContext = (): DetailsPanelContextType => {\n const context = useContext(DetailsPanelContext)\n if (context === undefined) {\n throw new Error('useDetailsPanel must be used within a DetailsPanelProvider')\n }\n return context\n}\n\n// Add a specialized hook for using a panel in a specific scope\nexport const useScopedDetailsPanel = (scope: string) => {\n const { getOpenForScope, setPanelOpen, getTabForScope } = useDetailsPanelContext()\n\n const [tabsByScope, setTabsByScope] = useLocalStorage<TabStateByScope>(\n 'details/tabs-by-scope',\n {},\n )\n\n const [currentTab, setTab] = useState<DetailsPanelTab>(() => {\n const tab = tabsByScope[scope]\n return isDetailsPanelTab(tab) ? tab : getTabForScope(scope)\n })\n\n // Keep localStorage and local state in sync\n const updateTab = useCallback(\n (newTab: DetailsPanelTab) => {\n setTab(newTab)\n setTabsByScope({ ...tabsByScope, [scope]: newTab })\n },\n [scope, setTabsByScope],\n )\n\n const isFeed = currentTab === 'feed'\n\n return {\n isOpen: getOpenForScope(scope),\n setOpen: (isOpen: boolean) => setPanelOpen(scope, isOpen),\n currentTab,\n setTab: updateTab,\n isFeed,\n }\n}\n"],"names":["DETAILS_PANEL_TABS","isDetailsPanelTab","tab","DetailsPanelProvider","children","defaultTab","hasLicenseProp","debug","forwardedProps","user","isDeveloperMode","isGuest","powerLicense","setPowerpackDialog","usePowerpack","hasLicense","panelOpenByScope","setPanelOpenByScope","useState","feedAnnotations","setFeedAnnotations","getOpenForScope","useCallback","scope","setPanelOpen","isOpen","newState","tabsByScope","setTabByScope","useLocalStorage","getTabForScope","slideOut","setSlideOut","openSlideOut","params","closeSlideOut","setHighlightedActivities","useEffect","pip","setPip","openPip","closePip","entities","setEntities","highlightedActivities","uriType","uri","entity","getUriEntities","useURIContext","searchParams","project","type","id","activity","result","entityUriData","r","entityData","projectName","newEntities","err","value","jsx","DetailsPanelContext","useDetailsPanelContext","context","useContext","useScopedDetailsPanel","setTabsByScope","currentTab","setTab","updateTab","newTab","isFeed"],"mappings":"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"}
@@ -71,6 +71,7 @@ import "../api/queries/entities/updateEntity.es.js";
71
71
  import "../api/queries/entityLists/getLists.es.js";
72
72
  import "../api/queries/entityLists/updateLists.es.js";
73
73
  import "../api/queries/entityLists/getListsAttributes.es.js";
74
+ import "../api/queries/entityLists/listItemsColumnStats.es.js";
74
75
  import "../api/queries/entityLists/updateListsAttributes.es.js";
75
76
  import "../api/queries/entityLists/listFolders.es.js";
76
77
  import "../api/queries/folders/getFolders.es.js";
@@ -122,7 +123,7 @@ import "custom-protocol-check";
122
123
  import "../containers/ProjectTreeTable/components/GroupSettingsFallback.es.js";
123
124
  import "uuid";
124
125
  import "../util/pubsub.es.js";
125
- const pt = ["feed", "subtasks", "details", "files"], N = (i) => typeof i == "string" && pt.includes(i), Oo = ({
126
+ const pt = ["feed", "subtasks", "details", "files"], N = (i) => typeof i == "string" && pt.includes(i), Eo = ({
126
127
  children: i,
127
128
  defaultTab: l = "feed",
128
129
  hasLicense: S,
@@ -232,7 +233,7 @@ const pt = ["feed", "subtasks", "details", "files"], N = (i) => typeof i == "str
232
233
  if (i === void 0)
233
234
  throw new Error("useDetailsPanel must be used within a DetailsPanelProvider");
234
235
  return i;
235
- }, Eo = (i) => {
236
+ }, jo = (i) => {
236
237
  const { getOpenForScope: l, setPanelOpen: S, getTabForScope: r } = st(), [s, a] = k(
237
238
  "details/tabs-by-scope",
238
239
  {}
@@ -254,8 +255,8 @@ const pt = ["feed", "subtasks", "details", "files"], N = (i) => typeof i == "str
254
255
  };
255
256
  };
256
257
  export {
257
- Oo as DetailsPanelProvider,
258
+ Eo as DetailsPanelProvider,
258
259
  st as useDetailsPanelContext,
259
- Eo as useScopedDetailsPanel
260
+ jo as useScopedDetailsPanel
260
261
  };
261
262
  //# sourceMappingURL=DetailsPanelContext.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DetailsPanelContext.es.js","sources":["../../../../src/context/DetailsPanelContext.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useContext, useEffect, useState } from 'react'\nimport { QueryFilter, UserModel, DetailsPanelEntityType } from '@shared/api'\nimport { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom'\nimport { SavedAnnotationMetadata } from '@shared/containers'\nimport { PowerpackFeature, usePowerpack } from './PowerpackContext'\nimport { useURIContext } from './UriContext'\nimport { useLocalStorage } from '@shared/hooks'\nimport type { SubtasksManagerProps } from '@shared/components'\nimport { DetailsPanelContext } from './DetailsPanelContextInstance'\n\n// High-level tabs for the details panel\nexport type DetailsPanelTab = 'feed' | 'subtasks' | 'details' | 'files'\n\n// Filters within the feed tab\nexport type FeedFilter = QueryFilter\n\nexport type SlideOut = {\n entityId: string\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\nexport type DetailsPanelPip = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n scope: string\n}\n\nexport type Entities = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n entitySubTypes?: string[]\n source?: 'uri' | 'url' | 'related' // uri = ayon+entity://..., url = ?project=...&type=...&id=...\n}\n\nexport interface OpenStateByScope {\n [scope: string]: boolean\n}\n\n// Create a new interface for managing tab state by scope\nexport interface TabStateByScope {\n [scope: string]: DetailsPanelTab\n}\n\nconst DETAILS_PANEL_TABS: DetailsPanelTab[] = ['feed', 'subtasks', 'details', 'files']\n\nconst isDetailsPanelTab = (tab: unknown): tab is DetailsPanelTab =>\n typeof tab === 'string' && DETAILS_PANEL_TABS.includes(tab as DetailsPanelTab)\n\n// these props get forwarded to the details panel value\n// it's mainly redux callbacks that cannot be used in shared library\nexport interface DetailsPanelContextProps {\n dispatch?: any // this is a redux dispatch function and it's quite annoying we need to do this\n user: UserModel\n viewer?: {\n reviewableIds: string[]\n taskId?: string | null\n folderId?: string | null\n }\n // redux callback actions\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n // route hooks\n useParams: typeof useParams\n useNavigate: typeof useNavigate\n useLocation: typeof useLocation\n useSearchParams: typeof useSearchParams\n feedAnnotationsEnabled?: boolean\n hasLicense?: boolean\n // SubtasksManager component\n SubtasksManager?: React.ComponentType<SubtasksManagerProps>\n // debugging used to simulate different values\n debug?: {\n isDeveloperMode?: boolean\n isGuest?: boolean\n hasLicense?: boolean\n }\n}\n\n// Interface for our simplified context\nexport interface DetailsPanelContextType extends DetailsPanelContextProps {\n // user\n isDeveloperMode: boolean\n isGuest: boolean\n // Open state for the panel by scope\n panelOpenByScope: OpenStateByScope\n getOpenForScope: (scope: string) => boolean\n setPanelOpen: (scope: string, isOpen: boolean) => void\n setPanelOpenByScope: (newState: OpenStateByScope) => void\n\n // Tab preferences by scope\n tabsByScope: TabStateByScope\n getTabForScope: (scope: string) => DetailsPanelTab\n\n // Slide out state\n slideOut: null | SlideOut\n openSlideOut: (slideOut: SlideOut) => void\n closeSlideOut: () => void\n\n // Highlighted activities\n highlightedActivities: string[]\n setHighlightedActivities: (activities: string[]) => void\n\n // PiP state\n pip: DetailsPanelPip | null\n openPip: (pip: DetailsPanelPip) => void\n closePip: () => void\n\n // Entities state\n entities: Entities | null\n setEntities: (entities: Entities | null) => void\n\n // Annotations\n feedAnnotations: SavedAnnotationMetadata[]\n setFeedAnnotations: (annotations: SavedAnnotationMetadata[]) => void\n\n // powerpack\n onPowerFeature: (feature: PowerpackFeature) => void\n}\n\n// Provider component\nexport interface DetailsPanelProviderProps extends DetailsPanelContextProps {\n children: ReactNode\n defaultTab?: DetailsPanelTab\n}\n\nexport const DetailsPanelProvider: React.FC<DetailsPanelProviderProps> = ({\n children,\n defaultTab = 'feed',\n hasLicense: hasLicenseProp,\n debug = {},\n ...forwardedProps\n}) => {\n const user = forwardedProps.user\n const isDeveloperMode =\n 'isDeveloperMode' in debug\n ? (debug.isDeveloperMode as boolean)\n : user?.attrib?.developerMode ?? false\n const isGuest = 'isGuest' in debug ? (debug.isGuest as boolean) : user?.data?.isGuest\n\n // get license from powerpack or forwarded down from props\n const { powerLicense, setPowerpackDialog } = usePowerpack()\n const hasLicense =\n 'hasLicense' in debug ? (debug.hasLicense as boolean) : !!powerLicense || hasLicenseProp\n\n // keep track of the currently open panel by scope\n const [panelOpenByScope, setPanelOpenByScope] = useState<OpenStateByScope>({})\n const [feedAnnotations, setFeedAnnotations] = useState<SavedAnnotationMetadata[]>([])\n\n // get the current open state for a specific scope\n const getOpenForScope = useCallback(\n (scope: string): boolean => {\n // Check if we have a saved preference for this scope\n if (panelOpenByScope[scope]) {\n return panelOpenByScope[scope]\n }\n\n // Fall back to default\n return false\n },\n [panelOpenByScope],\n )\n // Set open state for a scope\n const setPanelOpen = useCallback(\n (scope: string, isOpen: boolean) => {\n // Create a new state object based on current open state\n const newState = { ...panelOpenByScope }\n newState[scope] = isOpen\n\n // Update the state with the new object\n setPanelOpenByScope(newState)\n },\n [panelOpenByScope],\n )\n\n // Use localStorage to persist tab preferences by scope\n const [tabsByScope, setTabByScope] = useLocalStorage<TabStateByScope>('details/tabs-by-scope', {})\n\n // Get the current tab for a specific scope\n const getTabForScope = useCallback(\n (scope: string): DetailsPanelTab => {\n // Check if we have a saved preference for this scope\n const tab = tabsByScope[scope]\n if (isDetailsPanelTab(tab)) {\n return tab\n }\n\n // Fall back to default\n return defaultTab\n },\n [tabsByScope, defaultTab],\n )\n\n // Set tab for a scope\n\n // is the slide out open?\n const [slideOut, setSlideOut] = useState<null | SlideOut>(null)\n\n // open the slide out\n const openSlideOut = useCallback<DetailsPanelContextType['openSlideOut']>((params) => {\n setSlideOut(params)\n }, [])\n\n // close the slide out\n const closeSlideOut = useCallback(() => {\n setSlideOut(null)\n if (slideOut) {\n setHighlightedActivities([])\n }\n }, [])\n\n // close slide out whenever the page changes\n useEffect(() => {\n closeSlideOut()\n }, [forwardedProps.useLocation().pathname])\n\n const [pip, setPip] = useState<DetailsPanelPip | null>(null)\n\n const openPip = useCallback((pip: DetailsPanelPip) => {\n setPip(pip)\n }, [])\n const closePip = useCallback(() => {\n setPip(null)\n }, [])\n\n const [entities, setEntities] = useState<Entities | null>(null)\n\n const [highlightedActivities, setHighlightedActivities] = useState<string[]>([])\n\n const { uriType, uri, entity, getUriEntities } = useURIContext()\n const [searchParams] = forwardedProps.useSearchParams()\n\n const project = searchParams.get('project')\n const type = searchParams.get('type')\n const id = searchParams.get('id')\n const activity = searchParams.get('activity')\n\n // on first load or URL param change, check if there is a uri or URL params and open details panel if present\n useEffect(() => {\n // Priority 1: Check for 'uri' parameter (ayon+entity://...)\n if (uriType === 'entity' && entity && entity.entityType !== 'product') {\n getUriEntities()\n .then((result) => {\n if (result.length === 0) return\n\n const entityUriData = result.find((r) => r.uri === uri)\n const entityData = entityUriData?.entities?.[0]\n\n if (!entityUriData || !entityData) return\n const projectName = entityData?.projectName || entity.projectName || ''\n const id =\n entityData.representationId ||\n entityData.versionId ||\n entityData.productId ||\n entityData.taskId ||\n entityData.folderId\n\n if (!projectName || !id) return\n\n const newEntities: Entities = {\n entityType: entity.entityType as DetailsPanelEntityType,\n entities: [\n {\n id: id,\n projectName: projectName,\n },\n ],\n source: 'uri',\n }\n\n setEntities(newEntities)\n })\n .catch((err) => {\n console.warn('Failed to get URI entities:', err)\n })\n return\n }\n\n // Priority 2: Check for URL params (project, type, id)\n if (project && type && id) {\n const newEntities: Entities = {\n entityType: type as DetailsPanelEntityType,\n entities: [\n {\n id,\n projectName: project,\n },\n ],\n source: 'url',\n }\n\n setEntities(newEntities)\n\n // if there is an activity param, open the feed tab (activity is shown by default)\n\n if (activity) {\n setHighlightedActivities([activity])\n setTabByScope({\n ...tabsByScope,\n overview: 'feed',\n })\n }\n }\n }, [project, type, id])\n\n const value = {\n // open state for the panel by scope\n panelOpenByScope,\n getOpenForScope,\n setPanelOpen,\n setPanelOpenByScope,\n // tab preferences\n tabsByScope,\n getTabForScope,\n // slide out state\n slideOut,\n openSlideOut,\n closeSlideOut,\n // highlighted activities\n highlightedActivities,\n setHighlightedActivities,\n // PiP state\n pip,\n openPip,\n closePip,\n // entities state\n entities,\n setEntities,\n feedAnnotations,\n setFeedAnnotations,\n isDeveloperMode,\n isGuest,\n hasLicense,\n onPowerFeature: setPowerpackDialog,\n ...forwardedProps,\n }\n\n return <DetailsPanelContext.Provider value={value}>{children}</DetailsPanelContext.Provider>\n}\n\n// Custom hook to use the details context\nexport const useDetailsPanelContext = (): DetailsPanelContextType => {\n const context = useContext(DetailsPanelContext)\n if (context === undefined) {\n throw new Error('useDetailsPanel must be used within a DetailsPanelProvider')\n }\n return context\n}\n\n// Add a specialized hook for using a panel in a specific scope\nexport const useScopedDetailsPanel = (scope: string) => {\n const { getOpenForScope, setPanelOpen, getTabForScope } = useDetailsPanelContext()\n\n const [tabsByScope, setTabsByScope] = useLocalStorage<TabStateByScope>(\n 'details/tabs-by-scope',\n {},\n )\n\n const [currentTab, setTab] = useState<DetailsPanelTab>(() => {\n const tab = tabsByScope[scope]\n return isDetailsPanelTab(tab) ? tab : getTabForScope(scope)\n })\n\n // Keep localStorage and local state in sync\n const updateTab = useCallback(\n (newTab: DetailsPanelTab) => {\n setTab(newTab)\n setTabsByScope({ ...tabsByScope, [scope]: newTab })\n },\n [scope, setTabsByScope],\n )\n\n const isFeed = currentTab === 'feed'\n\n return {\n isOpen: getOpenForScope(scope),\n setOpen: (isOpen: boolean) => setPanelOpen(scope, isOpen),\n currentTab,\n setTab: updateTab,\n isFeed,\n }\n}\n"],"names":["DETAILS_PANEL_TABS","isDetailsPanelTab","tab","DetailsPanelProvider","children","defaultTab","hasLicenseProp","debug","forwardedProps","user","isDeveloperMode","isGuest","powerLicense","setPowerpackDialog","usePowerpack","hasLicense","panelOpenByScope","setPanelOpenByScope","useState","feedAnnotations","setFeedAnnotations","getOpenForScope","useCallback","scope","setPanelOpen","isOpen","newState","tabsByScope","setTabByScope","useLocalStorage","getTabForScope","slideOut","setSlideOut","openSlideOut","params","closeSlideOut","setHighlightedActivities","useEffect","pip","setPip","openPip","closePip","entities","setEntities","highlightedActivities","uriType","uri","entity","getUriEntities","useURIContext","searchParams","project","type","id","activity","result","entityUriData","r","entityData","projectName","newEntities","err","value","jsx","DetailsPanelContext","useDetailsPanelContext","context","useContext","useScopedDetailsPanel","setTabsByScope","currentTab","setTab","updateTab","newTab","isFeed"],"mappings":"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"}
1
+ {"version":3,"file":"DetailsPanelContext.es.js","sources":["../../../../src/context/DetailsPanelContext.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useContext, useEffect, useState } from 'react'\nimport { QueryFilter, UserModel, DetailsPanelEntityType } from '@shared/api'\nimport { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom'\nimport { SavedAnnotationMetadata } from '@shared/containers'\nimport { PowerpackFeature, usePowerpack } from './PowerpackContext'\nimport { useURIContext } from './UriContext'\nimport { useLocalStorage } from '@shared/hooks'\nimport type { SubtasksManagerProps } from '@shared/components'\nimport { DetailsPanelContext } from './DetailsPanelContextInstance'\n\n// High-level tabs for the details panel\nexport type DetailsPanelTab = 'feed' | 'subtasks' | 'details' | 'files'\n\n// Filters within the feed tab\nexport type FeedFilter = QueryFilter\n\nexport type SlideOut = {\n entityId: string\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\nexport type DetailsPanelPip = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n scope: string\n}\n\nexport type Entities = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n entitySubTypes?: string[]\n source?: 'uri' | 'url' | 'related' // uri = ayon+entity://..., url = ?project=...&type=...&id=...\n}\n\nexport interface OpenStateByScope {\n [scope: string]: boolean\n}\n\n// Create a new interface for managing tab state by scope\nexport interface TabStateByScope {\n [scope: string]: DetailsPanelTab\n}\n\nconst DETAILS_PANEL_TABS: DetailsPanelTab[] = ['feed', 'subtasks', 'details', 'files']\n\nconst isDetailsPanelTab = (tab: unknown): tab is DetailsPanelTab =>\n typeof tab === 'string' && DETAILS_PANEL_TABS.includes(tab as DetailsPanelTab)\n\n// these props get forwarded to the details panel value\n// it's mainly redux callbacks that cannot be used in shared library\nexport interface DetailsPanelContextProps {\n dispatch?: any // this is a redux dispatch function and it's quite annoying we need to do this\n user: UserModel\n viewer?: {\n reviewableIds: string[]\n taskId?: string | null\n folderId?: string | null\n }\n // redux callback actions\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n // route hooks\n useParams: typeof useParams\n useNavigate: typeof useNavigate\n useLocation: typeof useLocation\n useSearchParams: typeof useSearchParams\n feedAnnotationsEnabled?: boolean\n hasLicense?: boolean\n // SubtasksManager component\n SubtasksManager?: React.ComponentType<SubtasksManagerProps>\n // debugging used to simulate different values\n debug?: {\n isDeveloperMode?: boolean\n isGuest?: boolean\n hasLicense?: boolean\n }\n}\n\n// Interface for our simplified context\nexport interface DetailsPanelContextType extends DetailsPanelContextProps {\n // user\n isDeveloperMode: boolean\n isGuest: boolean\n // Open state for the panel by scope\n panelOpenByScope: OpenStateByScope\n getOpenForScope: (scope: string) => boolean\n setPanelOpen: (scope: string, isOpen: boolean) => void\n setPanelOpenByScope: (newState: OpenStateByScope) => void\n\n // Tab preferences by scope\n tabsByScope: TabStateByScope\n getTabForScope: (scope: string) => DetailsPanelTab\n\n // Slide out state\n slideOut: null | SlideOut\n openSlideOut: (slideOut: SlideOut) => void\n closeSlideOut: () => void\n\n // Highlighted activities\n highlightedActivities: string[]\n setHighlightedActivities: (activities: string[]) => void\n\n // PiP state\n pip: DetailsPanelPip | null\n openPip: (pip: DetailsPanelPip) => void\n closePip: () => void\n\n // Entities state\n entities: Entities | null\n setEntities: (entities: Entities | null) => void\n\n // Annotations\n feedAnnotations: SavedAnnotationMetadata[]\n setFeedAnnotations: (annotations: SavedAnnotationMetadata[]) => void\n\n // powerpack\n onPowerFeature: (feature: PowerpackFeature) => void\n}\n\n// Provider component\nexport interface DetailsPanelProviderProps extends DetailsPanelContextProps {\n children: ReactNode\n defaultTab?: DetailsPanelTab\n}\n\nexport const DetailsPanelProvider: React.FC<DetailsPanelProviderProps> = ({\n children,\n defaultTab = 'feed',\n hasLicense: hasLicenseProp,\n debug = {},\n ...forwardedProps\n}) => {\n const user = forwardedProps.user\n const isDeveloperMode =\n 'isDeveloperMode' in debug\n ? (debug.isDeveloperMode as boolean)\n : user?.attrib?.developerMode ?? false\n const isGuest = 'isGuest' in debug ? (debug.isGuest as boolean) : user?.data?.isGuest\n\n // get license from powerpack or forwarded down from props\n const { powerLicense, setPowerpackDialog } = usePowerpack()\n const hasLicense =\n 'hasLicense' in debug ? (debug.hasLicense as boolean) : !!powerLicense || hasLicenseProp\n\n // keep track of the currently open panel by scope\n const [panelOpenByScope, setPanelOpenByScope] = useState<OpenStateByScope>({})\n const [feedAnnotations, setFeedAnnotations] = useState<SavedAnnotationMetadata[]>([])\n\n // get the current open state for a specific scope\n const getOpenForScope = useCallback(\n (scope: string): boolean => {\n // Check if we have a saved preference for this scope\n if (panelOpenByScope[scope]) {\n return panelOpenByScope[scope]\n }\n\n // Fall back to default\n return false\n },\n [panelOpenByScope],\n )\n // Set open state for a scope\n const setPanelOpen = useCallback(\n (scope: string, isOpen: boolean) => {\n // Create a new state object based on current open state\n const newState = { ...panelOpenByScope }\n newState[scope] = isOpen\n\n // Update the state with the new object\n setPanelOpenByScope(newState)\n },\n [panelOpenByScope],\n )\n\n // Use localStorage to persist tab preferences by scope\n const [tabsByScope, setTabByScope] = useLocalStorage<TabStateByScope>('details/tabs-by-scope', {})\n\n // Get the current tab for a specific scope\n const getTabForScope = useCallback(\n (scope: string): DetailsPanelTab => {\n // Check if we have a saved preference for this scope\n const tab = tabsByScope[scope]\n if (isDetailsPanelTab(tab)) {\n return tab\n }\n\n // Fall back to default\n return defaultTab\n },\n [tabsByScope, defaultTab],\n )\n\n // Set tab for a scope\n\n // is the slide out open?\n const [slideOut, setSlideOut] = useState<null | SlideOut>(null)\n\n // open the slide out\n const openSlideOut = useCallback<DetailsPanelContextType['openSlideOut']>((params) => {\n setSlideOut(params)\n }, [])\n\n // close the slide out\n const closeSlideOut = useCallback(() => {\n setSlideOut(null)\n if (slideOut) {\n setHighlightedActivities([])\n }\n }, [])\n\n // close slide out whenever the page changes\n useEffect(() => {\n closeSlideOut()\n }, [forwardedProps.useLocation().pathname])\n\n const [pip, setPip] = useState<DetailsPanelPip | null>(null)\n\n const openPip = useCallback((pip: DetailsPanelPip) => {\n setPip(pip)\n }, [])\n const closePip = useCallback(() => {\n setPip(null)\n }, [])\n\n const [entities, setEntities] = useState<Entities | null>(null)\n\n const [highlightedActivities, setHighlightedActivities] = useState<string[]>([])\n\n const { uriType, uri, entity, getUriEntities } = useURIContext()\n const [searchParams] = forwardedProps.useSearchParams()\n\n const project = searchParams.get('project')\n const type = searchParams.get('type')\n const id = searchParams.get('id')\n const activity = searchParams.get('activity')\n\n // on first load or URL param change, check if there is a uri or URL params and open details panel if present\n useEffect(() => {\n // Priority 1: Check for 'uri' parameter (ayon+entity://...)\n if (uriType === 'entity' && entity && entity.entityType !== 'product') {\n getUriEntities()\n .then((result) => {\n if (result.length === 0) return\n\n const entityUriData = result.find((r) => r.uri === uri)\n const entityData = entityUriData?.entities?.[0]\n\n if (!entityUriData || !entityData) return\n const projectName = entityData?.projectName || entity.projectName || ''\n const id =\n entityData.representationId ||\n entityData.versionId ||\n entityData.productId ||\n entityData.taskId ||\n entityData.folderId\n\n if (!projectName || !id) return\n\n const newEntities: Entities = {\n entityType: entity.entityType as DetailsPanelEntityType,\n entities: [\n {\n id: id,\n projectName: projectName,\n },\n ],\n source: 'uri',\n }\n\n setEntities(newEntities)\n })\n .catch((err) => {\n console.warn('Failed to get URI entities:', err)\n })\n return\n }\n\n // Priority 2: Check for URL params (project, type, id)\n if (project && type && id) {\n const newEntities: Entities = {\n entityType: type as DetailsPanelEntityType,\n entities: [\n {\n id,\n projectName: project,\n },\n ],\n source: 'url',\n }\n\n setEntities(newEntities)\n\n // if there is an activity param, open the feed tab (activity is shown by default)\n\n if (activity) {\n setHighlightedActivities([activity])\n setTabByScope({\n ...tabsByScope,\n overview: 'feed',\n })\n }\n }\n }, [project, type, id])\n\n const value = {\n // open state for the panel by scope\n panelOpenByScope,\n getOpenForScope,\n setPanelOpen,\n setPanelOpenByScope,\n // tab preferences\n tabsByScope,\n getTabForScope,\n // slide out state\n slideOut,\n openSlideOut,\n closeSlideOut,\n // highlighted activities\n highlightedActivities,\n setHighlightedActivities,\n // PiP state\n pip,\n openPip,\n closePip,\n // entities state\n entities,\n setEntities,\n feedAnnotations,\n setFeedAnnotations,\n isDeveloperMode,\n isGuest,\n hasLicense,\n onPowerFeature: setPowerpackDialog,\n ...forwardedProps,\n }\n\n return <DetailsPanelContext.Provider value={value}>{children}</DetailsPanelContext.Provider>\n}\n\n// Custom hook to use the details context\nexport const useDetailsPanelContext = (): DetailsPanelContextType => {\n const context = useContext(DetailsPanelContext)\n if (context === undefined) {\n throw new Error('useDetailsPanel must be used within a DetailsPanelProvider')\n }\n return context\n}\n\n// Add a specialized hook for using a panel in a specific scope\nexport const useScopedDetailsPanel = (scope: string) => {\n const { getOpenForScope, setPanelOpen, getTabForScope } = useDetailsPanelContext()\n\n const [tabsByScope, setTabsByScope] = useLocalStorage<TabStateByScope>(\n 'details/tabs-by-scope',\n {},\n )\n\n const [currentTab, setTab] = useState<DetailsPanelTab>(() => {\n const tab = tabsByScope[scope]\n return isDetailsPanelTab(tab) ? tab : getTabForScope(scope)\n })\n\n // Keep localStorage and local state in sync\n const updateTab = useCallback(\n (newTab: DetailsPanelTab) => {\n setTab(newTab)\n setTabsByScope({ ...tabsByScope, [scope]: newTab })\n },\n [scope, setTabsByScope],\n )\n\n const isFeed = currentTab === 'feed'\n\n return {\n isOpen: getOpenForScope(scope),\n setOpen: (isOpen: boolean) => setPanelOpen(scope, isOpen),\n currentTab,\n setTab: updateTab,\n isFeed,\n }\n}\n"],"names":["DETAILS_PANEL_TABS","isDetailsPanelTab","tab","DetailsPanelProvider","children","defaultTab","hasLicenseProp","debug","forwardedProps","user","isDeveloperMode","isGuest","powerLicense","setPowerpackDialog","usePowerpack","hasLicense","panelOpenByScope","setPanelOpenByScope","useState","feedAnnotations","setFeedAnnotations","getOpenForScope","useCallback","scope","setPanelOpen","isOpen","newState","tabsByScope","setTabByScope","useLocalStorage","getTabForScope","slideOut","setSlideOut","openSlideOut","params","closeSlideOut","setHighlightedActivities","useEffect","pip","setPip","openPip","closePip","entities","setEntities","highlightedActivities","uriType","uri","entity","getUriEntities","useURIContext","searchParams","project","type","id","activity","result","entityUriData","r","entityData","projectName","newEntities","err","value","jsx","DetailsPanelContext","useDetailsPanelContext","context","useContext","useScopedDetailsPanel","setTabsByScope","currentTab","setTab","updateTab","newTab","isFeed"],"mappings":"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"}