@ynput/ayon-frontend-shared 0.3.42 → 0.3.44

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 (1133) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +34 -31
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +230 -218
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/Slicer.cjs.js +1 -1
  8. package/dist/Slicer.es.js +29 -29
  9. package/dist/Slicer.es.js.map +1 -1
  10. package/dist/_virtual/index.cjs15.js +1 -1
  11. package/dist/_virtual/index.cjs19.js +1 -1
  12. package/dist/_virtual/index.cjs6.js +1 -1
  13. package/dist/_virtual/index.cjs8.js +1 -1
  14. package/dist/_virtual/index.es15.js +2 -2
  15. package/dist/_virtual/index.es16.js +2 -2
  16. package/dist/_virtual/index.es17.js +2 -2
  17. package/dist/_virtual/index.es18.js +2 -2
  18. package/dist/_virtual/index.es19.js +2 -2
  19. package/dist/_virtual/index.es6.js +2 -2
  20. package/dist/_virtual/index.es8.js +2 -2
  21. package/dist/api.cjs.js +1 -1
  22. package/dist/api.es.js +375 -355
  23. package/dist/api.es.js.map +1 -1
  24. package/dist/components.cjs.js +1 -1
  25. package/dist/components.es.js +149 -144
  26. package/dist/components.es.js.map +1 -1
  27. package/dist/hooks.cjs.js +1 -1
  28. package/dist/hooks.es.js +34 -30
  29. package/dist/hooks.es.js.map +1 -1
  30. package/dist/index.cjs.js +1 -1
  31. package/dist/index.es.js +21 -18
  32. package/dist/index.es.js.map +1 -1
  33. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  34. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  35. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  36. package/dist/node_modules/remove-accents/index.es.js +1 -1
  37. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  38. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  39. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  40. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  41. package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.cjs.js +1 -1
  42. package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.es.js +1 -1
  43. package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.cjs.js +1 -1
  44. package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.es.js +1 -1
  45. package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.cjs.js +1 -1
  46. package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.es.js +1 -1
  47. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.cjs.js +1 -1
  48. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.es.js +1 -1
  49. package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
  50. package/dist/shared/node_modules/prop-types/index.es.js +1 -1
  51. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  52. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  53. package/dist/shared/src/api/generated/graphql.cjs.js +33 -12
  54. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  55. package/dist/shared/src/api/generated/graphql.es.js +93 -215
  56. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  57. package/dist/shared/src/api/generated/graphqlLinks.cjs.js +12 -12
  58. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  59. package/dist/shared/src/api/generated/graphqlLinks.es.js +28 -78
  60. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  61. package/dist/shared/src/api/queries/activities/getActivities.cjs.js +1 -1
  62. package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
  63. package/dist/shared/src/api/queries/activities/getActivities.es.js +176 -73
  64. package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
  65. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js.map +1 -1
  66. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js +8 -1
  67. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js.map +1 -1
  68. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
  69. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
  70. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +35 -32
  71. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
  72. package/dist/shared/src/api/queries/bundles/getBundles.cjs.js +2 -0
  73. package/dist/shared/src/api/queries/bundles/getBundles.cjs.js.map +1 -0
  74. package/dist/shared/src/api/queries/bundles/getBundles.es.js +65 -0
  75. package/dist/shared/src/api/queries/bundles/getBundles.es.js.map +1 -0
  76. package/dist/shared/src/api/queries/bundles/updateBundles.cjs.js +2 -0
  77. package/dist/shared/src/api/queries/bundles/updateBundles.cjs.js.map +1 -0
  78. package/dist/shared/src/api/queries/bundles/updateBundles.es.js +159 -0
  79. package/dist/shared/src/api/queries/bundles/updateBundles.es.js.map +1 -0
  80. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js +1 -1
  81. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js.map +1 -1
  82. package/dist/shared/src/api/queries/columnStats/columnStats.es.js +32 -28
  83. package/dist/shared/src/api/queries/columnStats/columnStats.es.js.map +1 -1
  84. package/dist/shared/src/api/queries/columnStats/groupCounts.cjs.js +2 -0
  85. package/dist/shared/src/api/queries/columnStats/groupCounts.cjs.js.map +1 -0
  86. package/dist/shared/src/api/queries/columnStats/groupCounts.es.js +83 -0
  87. package/dist/shared/src/api/queries/columnStats/groupCounts.es.js.map +1 -0
  88. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js +1 -1
  89. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -1
  90. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js +60 -41
  91. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -1
  92. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
  93. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  94. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +6 -4
  95. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  96. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  97. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  98. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  99. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  100. package/dist/shared/src/api/queries/entityLists/getLists.es.js +45 -43
  101. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  102. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js +1 -1
  103. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js.map +1 -1
  104. package/dist/shared/src/api/queries/entityLists/listFolders.es.js +11 -9
  105. package/dist/shared/src/api/queries/entityLists/listFolders.es.js.map +1 -1
  106. package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.cjs.js +1 -1
  107. package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.cjs.js.map +1 -1
  108. package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.es.js +5 -4
  109. package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.es.js.map +1 -1
  110. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -1
  111. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  112. package/dist/shared/src/api/queries/folders/getFolders.es.js +6 -4
  113. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  114. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +1 -1
  115. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -1
  116. package/dist/shared/src/api/queries/links/getEntityLinks.es.js +5 -3
  117. package/dist/shared/src/api/queries/links/getEntityLinks.es.js.map +1 -1
  118. package/dist/shared/src/api/queries/links/getLinks.cjs.js +1 -1
  119. package/dist/shared/src/api/queries/links/getLinks.cjs.js.map +1 -1
  120. package/dist/shared/src/api/queries/links/getLinks.es.js +60 -119
  121. package/dist/shared/src/api/queries/links/getLinks.es.js.map +1 -1
  122. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  123. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  124. package/dist/shared/src/api/queries/overview/getOverview.es.js +276 -239
  125. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  126. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  127. package/dist/shared/src/api/queries/overview/updateOverview.es.js +1 -3
  128. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  129. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js +1 -1
  130. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js.map +1 -1
  131. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js +15 -13
  132. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js.map +1 -1
  133. package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -1
  134. package/dist/shared/src/api/queries/review/getReview.cjs.js.map +1 -1
  135. package/dist/shared/src/api/queries/review/getReview.es.js +78 -133
  136. package/dist/shared/src/api/queries/review/getReview.es.js.map +1 -1
  137. package/dist/shared/src/api/queries/review/updateReview.cjs.js +1 -1
  138. package/dist/shared/src/api/queries/review/updateReview.cjs.js.map +1 -1
  139. package/dist/shared/src/api/queries/review/updateReview.es.js +1 -1
  140. package/dist/shared/src/api/queries/review/updateReview.es.js.map +1 -1
  141. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  142. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  143. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +9 -7
  144. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  145. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  146. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  147. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +128 -124
  148. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  149. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js +1 -1
  150. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js.map +1 -1
  151. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js +11 -9
  152. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js.map +1 -1
  153. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +1 -1
  154. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
  155. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +6 -4
  156. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
  157. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +1 -1
  158. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  159. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +5 -3
  160. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  161. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +5 -5
  162. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
  163. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +5 -3
  164. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
  165. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  166. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  167. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +11 -8
  168. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  169. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  170. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  171. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +6 -4
  172. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  173. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +1 -1
  174. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  175. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +6 -4
  176. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  177. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js +4 -4
  178. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js.map +1 -1
  179. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js +5 -3
  180. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js.map +1 -1
  181. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js +1 -1
  182. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js.map +1 -1
  183. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js +5 -3
  184. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js.map +1 -1
  185. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  186. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  187. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +6 -4
  188. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  189. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js +1 -1
  190. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js.map +1 -1
  191. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js +5 -3
  192. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js.map +1 -1
  193. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js +1 -1
  194. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js.map +1 -1
  195. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js +5 -3
  196. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js.map +1 -1
  197. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
  198. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
  199. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +6 -4
  200. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
  201. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  202. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  203. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +12 -9
  204. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  205. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  206. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  207. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +14 -11
  208. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  209. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  210. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  211. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +6 -4
  212. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  213. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  214. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  215. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +44 -41
  216. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  217. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.cjs.js +4 -0
  218. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.cjs.js.map +1 -0
  219. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.es.js +133 -0
  220. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.es.js.map +1 -0
  221. package/dist/shared/src/components/InfoMessage/InfoMessage.cjs.js +2 -0
  222. package/dist/shared/src/components/InfoMessage/InfoMessage.cjs.js.map +1 -0
  223. package/dist/shared/src/components/InfoMessage/InfoMessage.es.js +48 -0
  224. package/dist/shared/src/components/InfoMessage/InfoMessage.es.js.map +1 -0
  225. package/dist/shared/src/components/InfoMessage/InfoMessage.styled.cjs.js +77 -0
  226. package/dist/shared/src/components/InfoMessage/InfoMessage.styled.cjs.js.map +1 -0
  227. package/dist/shared/src/components/InfoMessage/InfoMessage.styled.es.js +81 -0
  228. package/dist/shared/src/components/InfoMessage/InfoMessage.styled.es.js.map +1 -0
  229. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  230. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  231. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +6 -4
  232. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  233. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
  234. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  235. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +5 -3
  236. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  237. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  238. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  239. package/dist/shared/src/components/LinksManager/LinksManager.es.js +6 -4
  240. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  241. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  242. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  243. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +13 -10
  244. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  245. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  246. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  247. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +6 -4
  248. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  249. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
  250. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
  251. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +6 -4
  252. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
  253. package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
  254. package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
  255. package/dist/shared/src/components/Menu/Menu.es.js +6 -4
  256. package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
  257. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  258. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  259. package/dist/shared/src/components/Menu/MenuItem.es.js +4 -2
  260. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  261. package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
  262. package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
  263. package/dist/shared/src/components/Menu/MenuList.es.js +24 -22
  264. package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
  265. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +1 -1
  266. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  267. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +6 -4
  268. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  269. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  270. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  271. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +6 -4
  272. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  273. package/dist/shared/src/components/Powerpack/useFreeTrialLink.cjs.js +1 -1
  274. package/dist/shared/src/components/Powerpack/useFreeTrialLink.cjs.js.map +1 -1
  275. package/dist/shared/src/components/Powerpack/useFreeTrialLink.es.js +5 -3
  276. package/dist/shared/src/components/Powerpack/useFreeTrialLink.es.js.map +1 -1
  277. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +1 -1
  278. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  279. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +10 -7
  280. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  281. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  282. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  283. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +11 -8
  284. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  285. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  286. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  287. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +6 -4
  288. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  289. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  290. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  291. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +13 -10
  292. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  293. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  294. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  295. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +13 -10
  296. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  297. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  298. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  299. package/dist/shared/src/components/RenameForm/RenameForm.es.js +13 -10
  300. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  301. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +1 -1
  302. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  303. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +5 -3
  304. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  305. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  306. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  307. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +14 -11
  308. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  309. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  310. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  311. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +15 -12
  312. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  313. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  314. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  315. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +14 -11
  316. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  317. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
  318. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  319. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +5 -3
  320. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  321. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  322. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  323. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +14 -11
  324. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  325. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  326. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  327. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +112 -110
  328. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  329. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +1 -1
  330. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  331. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +6 -4
  332. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  333. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
  334. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  335. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +16 -13
  336. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  337. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +2 -2
  338. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  339. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +32 -21
  340. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  341. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
  342. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
  343. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +5 -3
  344. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
  345. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +1 -1
  346. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  347. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +6 -4
  348. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  349. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js +1 -1
  350. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js.map +1 -1
  351. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js +5 -3
  352. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js.map +1 -1
  353. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js +1 -1
  354. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js.map +1 -1
  355. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js +5 -3
  356. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js.map +1 -1
  357. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  358. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  359. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +13 -10
  360. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  361. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  362. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  363. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +42 -38
  364. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  365. package/dist/shared/src/components/VersionUploader/context/VersionUploadContextInstance.cjs.js +2 -0
  366. package/dist/shared/src/components/VersionUploader/context/VersionUploadContextInstance.cjs.js.map +1 -0
  367. package/dist/shared/src/components/VersionUploader/context/VersionUploadContextInstance.es.js +6 -0
  368. package/dist/shared/src/components/VersionUploader/context/VersionUploadContextInstance.es.js.map +1 -0
  369. package/dist/shared/src/components/Watchers/Watchers.cjs.js +1 -1
  370. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  371. package/dist/shared/src/components/Watchers/Watchers.es.js +5 -3
  372. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  373. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  374. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  375. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +14 -11
  376. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  377. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  378. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  379. package/dist/shared/src/containers/Actions/Actions.es.js +117 -103
  380. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  381. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js +2 -2
  382. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
  383. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js +47 -46
  384. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
  385. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  386. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  387. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +14 -11
  388. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  389. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  390. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  391. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +14 -11
  392. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  393. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  394. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  395. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +14 -11
  396. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  397. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  398. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  399. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +14 -11
  400. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  401. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  402. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  403. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +14 -11
  404. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  405. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js +1 -1
  406. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js.map +1 -1
  407. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js +6 -4
  408. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js.map +1 -1
  409. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  410. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  411. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +14 -11
  412. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  413. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js +1 -1
  414. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js.map +1 -1
  415. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js +5 -3
  416. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js.map +1 -1
  417. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  418. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  419. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +13 -10
  420. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  421. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  422. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  423. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +6 -4
  424. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  425. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  426. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  427. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +25 -22
  428. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  429. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  430. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  431. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +14 -11
  432. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  433. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  434. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  435. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +14 -11
  436. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  437. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  438. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  439. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +6 -4
  440. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  441. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js +1 -1
  442. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js.map +1 -1
  443. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js +5 -3
  444. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js.map +1 -1
  445. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  446. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  447. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +6 -4
  448. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  449. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +2 -2
  450. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  451. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +74 -69
  452. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  453. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  454. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  455. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +14 -11
  456. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  457. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  458. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  459. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +14 -11
  460. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  461. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  462. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  463. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +14 -11
  464. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  465. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js +1 -1
  466. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js.map +1 -1
  467. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js +5 -3
  468. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js.map +1 -1
  469. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  470. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  471. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +6 -4
  472. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  473. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js +1 -1
  474. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js.map +1 -1
  475. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js +7 -5
  476. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js.map +1 -1
  477. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  478. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  479. package/dist/shared/src/containers/Feed/Feed.es.js +24 -22
  480. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  481. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  482. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  483. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +14 -11
  484. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  485. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  486. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  487. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +14 -11
  488. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  489. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  490. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  491. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +14 -11
  492. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  493. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js +1 -1
  494. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js.map +1 -1
  495. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js +5 -3
  496. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js.map +1 -1
  497. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js +1 -1
  498. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js.map +1 -1
  499. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js +16 -13
  500. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js.map +1 -1
  501. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  502. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  503. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +6 -4
  504. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  505. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
  506. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  507. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +15 -11
  508. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  509. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  510. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  511. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +18 -15
  512. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  513. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  514. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  515. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +6 -4
  516. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  517. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js +1 -1
  518. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js.map +1 -1
  519. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js +5 -3
  520. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js.map +1 -1
  521. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  522. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  523. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +6 -4
  524. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  525. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +1 -1
  526. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -1
  527. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +6 -4
  528. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -1
  529. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  530. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  531. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +6 -4
  532. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  533. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  534. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  535. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +14 -11
  536. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  537. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.cjs.js +1 -1
  538. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.cjs.js.map +1 -1
  539. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.es.js +5 -3
  540. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.es.js.map +1 -1
  541. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  542. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  543. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +13 -11
  544. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  545. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js +1 -1
  546. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js.map +1 -1
  547. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js +5 -3
  548. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js.map +1 -1
  549. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js +1 -1
  550. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
  551. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js +5 -3
  552. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js.map +1 -1
  553. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +1 -1
  554. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  555. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +5 -3
  556. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  557. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js +1 -1
  558. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js.map +1 -1
  559. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js +5 -3
  560. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js.map +1 -1
  561. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js +1 -1
  562. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js.map +1 -1
  563. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js +5 -3
  564. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js.map +1 -1
  565. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js +1 -1
  566. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js.map +1 -1
  567. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js +5 -3
  568. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js.map +1 -1
  569. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  570. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  571. package/dist/shared/src/containers/ListTable/ListTable.es.js +184 -172
  572. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  573. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  574. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  575. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +11 -8
  576. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  577. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  578. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  579. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +19 -16
  580. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  581. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  582. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  583. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +824 -787
  584. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  585. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +15 -1
  586. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  587. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +16 -0
  588. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  589. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  590. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  591. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +15 -11
  592. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  593. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  594. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  595. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +13 -10
  596. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  597. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  598. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  599. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +15 -12
  600. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  601. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  602. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  603. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +14 -11
  604. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  605. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js +31 -5
  606. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js.map +1 -1
  607. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js +200 -44
  608. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js.map +1 -1
  609. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  610. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  611. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +9 -6
  612. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  613. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +5 -5
  614. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  615. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +139 -130
  616. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  617. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  618. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  619. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +10 -7
  620. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  621. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  622. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  623. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +17 -14
  624. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  625. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContextInstance.cjs.js +2 -0
  626. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContextInstance.cjs.js.map +1 -0
  627. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContextInstance.es.js +6 -0
  628. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContextInstance.es.js.map +1 -0
  629. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +1 -1
  630. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  631. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +338 -7
  632. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  633. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContextInstance.cjs.js +2 -0
  634. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContextInstance.cjs.js.map +1 -0
  635. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContextInstance.es.js +6 -0
  636. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContextInstance.es.js.map +1 -0
  637. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  638. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  639. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +124 -121
  640. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  641. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js +1 -1
  642. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js.map +1 -1
  643. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js +5 -3
  644. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js.map +1 -1
  645. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  646. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  647. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +6 -4
  648. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  649. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  650. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  651. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +158 -131
  652. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  653. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  654. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  655. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +73 -67
  656. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  657. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  658. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  659. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +8 -5
  660. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  661. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  662. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  663. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +9 -6
  664. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  665. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  666. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  667. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +9 -6
  668. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  669. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  670. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  671. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +9 -6
  672. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  673. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  674. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  675. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +456 -260
  676. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  677. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  678. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  679. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +9 -6
  680. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  681. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  682. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  683. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +9 -6
  684. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  685. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupCounts.cjs.js +2 -0
  686. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupCounts.cjs.js.map +1 -0
  687. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupCounts.es.js +141 -0
  688. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupCounts.es.js.map +1 -0
  689. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  690. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  691. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +8 -5
  692. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  693. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  694. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  695. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +8 -5
  696. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  697. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  698. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  699. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +9 -6
  700. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  701. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  702. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  703. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +11 -8
  704. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  705. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.cjs.js +1 -1
  706. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.cjs.js.map +1 -1
  707. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.es.js +8 -8
  708. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.es.js.map +1 -1
  709. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  710. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  711. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +9 -6
  712. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  713. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  714. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  715. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +6 -4
  716. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  717. package/dist/shared/src/containers/ProjectTreeTable/types/summaryTypes.cjs.js.map +1 -1
  718. package/dist/shared/src/containers/ProjectTreeTable/types/summaryTypes.es.js.map +1 -1
  719. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  720. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  721. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +21 -19
  722. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  723. package/dist/shared/src/containers/ProjectTreeTable/utils/filterError.cjs.js +2 -0
  724. package/dist/shared/src/containers/ProjectTreeTable/utils/filterError.cjs.js.map +1 -0
  725. package/dist/shared/src/containers/ProjectTreeTable/utils/filterError.es.js +30 -0
  726. package/dist/shared/src/containers/ProjectTreeTable/utils/filterError.es.js.map +1 -0
  727. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.cjs.js +2 -0
  728. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.cjs.js.map +1 -0
  729. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.es.js +22 -0
  730. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.es.js.map +1 -0
  731. package/dist/shared/src/containers/ProjectTreeTable/utils/getGroupQueries.cjs.js +2 -0
  732. package/dist/shared/src/containers/ProjectTreeTable/utils/getGroupQueries.cjs.js.map +1 -0
  733. package/dist/shared/src/containers/ProjectTreeTable/utils/getGroupQueries.es.js +36 -0
  734. package/dist/shared/src/containers/ProjectTreeTable/utils/getGroupQueries.es.js.map +1 -0
  735. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.cjs.js +1 -1
  736. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.cjs.js.map +1 -1
  737. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.es.js +4 -5
  738. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.es.js.map +1 -1
  739. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +1 -1
  740. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  741. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +14 -11
  742. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  743. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
  744. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  745. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +12 -9
  746. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  747. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +1 -1
  748. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
  749. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +14 -11
  750. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
  751. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js +10 -10
  752. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js.map +1 -1
  753. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.es.js +36 -32
  754. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.es.js.map +1 -1
  755. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +2 -2
  756. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  757. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +22 -19
  758. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  759. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +1 -1
  760. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
  761. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +6 -4
  762. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
  763. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  764. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  765. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +12 -9
  766. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  767. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  768. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  769. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +9 -6
  770. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  771. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +1 -1
  772. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
  773. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +6 -4
  774. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
  775. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +1 -1
  776. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  777. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +5 -3
  778. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  779. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +1 -1
  780. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  781. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +5 -3
  782. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  783. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  784. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  785. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +71 -46
  786. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  787. package/dist/shared/src/containers/RepresentationsList/versionsToRepresentations.cjs.js +1 -1
  788. package/dist/shared/src/containers/RepresentationsList/versionsToRepresentations.cjs.js.map +1 -1
  789. package/dist/shared/src/containers/RepresentationsList/versionsToRepresentations.es.js +11 -10
  790. package/dist/shared/src/containers/RepresentationsList/versionsToRepresentations.es.js.map +1 -1
  791. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  792. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  793. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +271 -206
  794. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  795. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.cjs.js +83 -5
  796. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.cjs.js.map +1 -1
  797. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.es.js +89 -11
  798. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.es.js.map +1 -1
  799. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.cjs.js +1 -1
  800. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.cjs.js.map +1 -1
  801. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.es.js +149 -97
  802. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.es.js.map +1 -1
  803. package/dist/shared/src/containers/SimpleTable/hooks/useRowKeydown.cjs.js +1 -1
  804. package/dist/shared/src/containers/SimpleTable/hooks/useRowKeydown.cjs.js.map +1 -1
  805. package/dist/shared/src/containers/SimpleTable/hooks/useRowKeydown.es.js +14 -10
  806. package/dist/shared/src/containers/SimpleTable/hooks/useRowKeydown.es.js.map +1 -1
  807. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -2
  808. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -1
  809. package/dist/shared/src/containers/Slicer/components/Slicer.es.js +22 -22
  810. package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -1
  811. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +1 -1
  812. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
  813. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +6 -4
  814. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
  815. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  816. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  817. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +14 -11
  818. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  819. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  820. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  821. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +90 -238
  822. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  823. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
  824. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
  825. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +6 -4
  826. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
  827. package/dist/shared/src/containers/Slicer/hooks/useFiltersWithHierarchy.cjs.js +1 -1
  828. package/dist/shared/src/containers/Slicer/hooks/useFiltersWithHierarchy.cjs.js.map +1 -1
  829. package/dist/shared/src/containers/Slicer/hooks/useFiltersWithHierarchy.es.js +11 -14
  830. package/dist/shared/src/containers/Slicer/hooks/useFiltersWithHierarchy.es.js.map +1 -1
  831. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
  832. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
  833. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +6 -4
  834. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
  835. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js +1 -1
  836. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js.map +1 -1
  837. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js +50 -57
  838. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js.map +1 -1
  839. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
  840. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
  841. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +6 -4
  842. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
  843. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js +1 -1
  844. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js.map +1 -1
  845. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js +6 -4
  846. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js.map +1 -1
  847. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js +1 -1
  848. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js.map +1 -1
  849. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js +30 -44
  850. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js.map +1 -1
  851. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js +1 -1
  852. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js.map +1 -1
  853. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js +8 -6
  854. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js.map +1 -1
  855. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  856. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  857. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +6 -4
  858. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  859. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js +1 -1
  860. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -1
  861. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js +5 -3
  862. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -1
  863. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.cjs.js +1 -1
  864. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.cjs.js.map +1 -1
  865. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.es.js +7 -7
  866. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.es.js.map +1 -1
  867. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js +1 -1
  868. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js.map +1 -1
  869. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js +5 -3
  870. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js.map +1 -1
  871. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  872. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  873. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +6 -4
  874. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  875. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  876. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  877. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +13 -10
  878. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  879. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +1 -1
  880. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  881. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +6 -4
  882. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  883. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  884. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  885. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +23 -21
  886. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  887. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js +1 -1
  888. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js.map +1 -1
  889. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js +5 -3
  890. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js.map +1 -1
  891. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
  892. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  893. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +5 -3
  894. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  895. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
  896. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
  897. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +5 -3
  898. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
  899. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  900. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  901. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +9 -7
  902. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  903. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +1 -1
  904. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -1
  905. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +5 -3
  906. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -1
  907. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +1 -1
  908. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  909. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +5 -3
  910. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  911. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  912. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  913. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +5 -3
  914. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  915. package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
  916. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  917. package/dist/shared/src/context/AddonProjectContext.es.js +7 -5
  918. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  919. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  920. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  921. package/dist/shared/src/context/DetailsPanelContext.es.js +28 -25
  922. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  923. package/dist/shared/src/context/GlobalContext.cjs.js +1 -1
  924. package/dist/shared/src/context/GlobalContext.cjs.js.map +1 -1
  925. package/dist/shared/src/context/GlobalContext.es.js +7 -5
  926. package/dist/shared/src/context/GlobalContext.es.js.map +1 -1
  927. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  928. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  929. package/dist/shared/src/context/PowerpackContext.es.js +10 -8
  930. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  931. package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
  932. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
  933. package/dist/shared/src/context/ProjectContext.es.js +16 -14
  934. package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
  935. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  936. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  937. package/dist/shared/src/context/ProjectFoldersContext.es.js +36 -33
  938. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  939. package/dist/shared/src/context/ProjectFoldersContextInstance.cjs.js +2 -0
  940. package/dist/shared/src/context/ProjectFoldersContextInstance.cjs.js.map +1 -0
  941. package/dist/shared/src/context/ProjectFoldersContextInstance.es.js +8 -0
  942. package/dist/shared/src/context/ProjectFoldersContextInstance.es.js.map +1 -0
  943. package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
  944. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  945. package/dist/shared/src/context/RemoteModulesContext.es.js +7 -5
  946. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  947. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  948. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  949. package/dist/shared/src/context/SubtasksModulesContext.es.js +8 -6
  950. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  951. package/dist/shared/src/context/UriContext.cjs.js +1 -1
  952. package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
  953. package/dist/shared/src/context/UriContext.es.js +8 -6
  954. package/dist/shared/src/context/UriContext.es.js.map +1 -1
  955. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  956. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  957. package/dist/shared/src/context/WebsocketContext.es.js +50 -44
  958. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  959. package/dist/shared/src/hooks/useActionTriggers.cjs.js +1 -1
  960. package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
  961. package/dist/shared/src/hooks/useActionTriggers.es.js +5 -3
  962. package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
  963. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  964. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  965. package/dist/shared/src/hooks/useEntityUpdate.es.js +6 -4
  966. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  967. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js +1 -1
  968. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js.map +1 -1
  969. package/dist/shared/src/hooks/useGetEntityGroups.es.js +5 -3
  970. package/dist/shared/src/hooks/useGetEntityGroups.es.js.map +1 -1
  971. package/dist/shared/src/hooks/useGetProductionAddon.cjs.js +1 -1
  972. package/dist/shared/src/hooks/useGetProductionAddon.cjs.js.map +1 -1
  973. package/dist/shared/src/hooks/useGetProductionAddon.es.js +5 -3
  974. package/dist/shared/src/hooks/useGetProductionAddon.es.js.map +1 -1
  975. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  976. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  977. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +16 -23
  978. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  979. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
  980. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
  981. package/dist/shared/src/hooks/useHierarchyTable.es.js +5 -3
  982. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
  983. package/dist/shared/src/hooks/useLocalStorage.cjs.js +1 -1
  984. package/dist/shared/src/hooks/useLocalStorage.cjs.js.map +1 -1
  985. package/dist/shared/src/hooks/useLocalStorage.es.js +3 -1
  986. package/dist/shared/src/hooks/useLocalStorage.es.js.map +1 -1
  987. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js +1 -1
  988. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js.map +1 -1
  989. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js +5 -3
  990. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js.map +1 -1
  991. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +1 -1
  992. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  993. package/dist/shared/src/hooks/useScopedStatuses.es.js +7 -5
  994. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  995. package/dist/shared/src/hooks/useScopedTypes.cjs.js +1 -1
  996. package/dist/shared/src/hooks/useScopedTypes.cjs.js.map +1 -1
  997. package/dist/shared/src/hooks/useScopedTypes.es.js +5 -3
  998. package/dist/shared/src/hooks/useScopedTypes.es.js.map +1 -1
  999. package/dist/shared/src/hooks/useSessionStorage.cjs.js +2 -0
  1000. package/dist/shared/src/hooks/useSessionStorage.cjs.js.map +1 -0
  1001. package/dist/shared/src/hooks/useSessionStorage.es.js +60 -0
  1002. package/dist/shared/src/hooks/useSessionStorage.es.js.map +1 -0
  1003. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  1004. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  1005. package/dist/shared/src/hooks/useUserProjectConfig.es.js +6 -4
  1006. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  1007. package/dist/shared/src/util/checkName.cjs.js.map +1 -1
  1008. package/dist/shared/src/util/checkName.es.js.map +1 -1
  1009. package/dist/shared/src/util/getAttributeIcon.cjs.js.map +1 -1
  1010. package/dist/shared/src/util/getAttributeIcon.es.js.map +1 -1
  1011. package/dist/shared/src/util/getBundleMode.cjs.js +1 -1
  1012. package/dist/shared/src/util/getBundleMode.cjs.js.map +1 -1
  1013. package/dist/shared/src/util/getBundleMode.es.js +6 -4
  1014. package/dist/shared/src/util/getBundleMode.es.js.map +1 -1
  1015. package/dist/shared/src/util/getGroupByDataType.cjs.js.map +1 -1
  1016. package/dist/shared/src/util/getGroupByDataType.es.js.map +1 -1
  1017. package/dist/shared/src/util/getPriorityOptions.cjs.js.map +1 -1
  1018. package/dist/shared/src/util/getPriorityOptions.es.js.map +1 -1
  1019. package/dist/shared/src/util/iconUtils.cjs.js.map +1 -1
  1020. package/dist/shared/src/util/iconUtils.es.js.map +1 -1
  1021. package/dist/shared/src/util/replaceRoot.cjs.js +2 -0
  1022. package/dist/shared/src/util/replaceRoot.cjs.js.map +1 -0
  1023. package/dist/shared/src/util/replaceRoot.es.js +11 -0
  1024. package/dist/shared/src/util/replaceRoot.es.js.map +1 -0
  1025. package/dist/types/api/generated/graphql.d.ts +228 -273
  1026. package/dist/types/api/generated/graphqlLinks.d.ts +12 -7
  1027. package/dist/types/api/queries/activities/getActivities.d.ts +2303 -1448
  1028. package/dist/types/api/queries/activities/index.d.ts +0 -1
  1029. package/dist/types/api/queries/activities/util/activityRealtimeHandler.d.ts +21 -1
  1030. package/dist/types/api/queries/bundles/getBundles.d.ts +951 -0
  1031. package/dist/types/api/queries/bundles/index.d.ts +2 -0
  1032. package/dist/types/api/queries/bundles/updateBundles.d.ts +1027 -0
  1033. package/dist/types/api/queries/columnStats/columnStats.d.ts +1 -0
  1034. package/dist/types/api/queries/columnStats/groupCounts.d.ts +17 -0
  1035. package/dist/types/api/queries/columnStats/index.d.ts +1 -0
  1036. package/dist/types/api/queries/columnStats/metricTargets.d.ts +8 -1
  1037. package/dist/types/api/queries/entities/getEntity.d.ts +298 -290
  1038. package/dist/types/api/queries/entities/getEntityPanel.d.ts +234 -226
  1039. package/dist/types/api/queries/entities/updateEntity.d.ts +234 -226
  1040. package/dist/types/api/queries/entityLists/getLists.d.ts +1498 -1490
  1041. package/dist/types/api/queries/entityLists/listItemsColumnStats.d.ts +96 -96
  1042. package/dist/types/api/queries/folders/getFolderDeleteInfo.d.ts +65 -65
  1043. package/dist/types/api/queries/index.d.ts +1 -0
  1044. package/dist/types/api/queries/overview/getOverview.d.ts +953 -809
  1045. package/dist/types/api/queries/products/getFolderProducts.d.ts +32 -32
  1046. package/dist/types/api/queries/project/getProject.d.ts +474 -466
  1047. package/dist/types/api/queries/review/getReview.d.ts +2 -2
  1048. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +346 -338
  1049. package/dist/types/api/queries/users/getUsers.d.ts +428 -420
  1050. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +1012 -996
  1051. package/dist/types/api/queries/versions/updateVersions.d.ts +32 -32
  1052. package/dist/types/components/Feedback/FeedbackContext.d.ts +1 -0
  1053. package/dist/types/components/FilterErrorActions/FilterErrorActions.d.ts +5 -0
  1054. package/dist/types/components/FilterErrorActions/index.d.ts +2 -0
  1055. package/dist/types/components/InfoMessage/InfoMessage.d.ts +14 -0
  1056. package/dist/types/components/InfoMessage/InfoMessage.styled.d.ts +1 -0
  1057. package/dist/types/components/InfoMessage/index.d.ts +3 -0
  1058. package/dist/types/components/VersionUploader/context/VersionUploadContext.d.ts +1 -1
  1059. package/dist/types/components/VersionUploader/context/VersionUploadContextInstance.d.ts +2 -0
  1060. package/dist/types/components/index.d.ts +2 -0
  1061. package/dist/types/containers/Actions/ActionsDropdown/ActionsDropdown.d.ts +2 -1
  1062. package/dist/types/containers/EntityPickerDialog/EntityPickerDialog.d.ts +1 -0
  1063. package/dist/types/containers/Feed/hooks/useGetFeedActivitiesData.d.ts +36 -36
  1064. package/dist/types/containers/ListTable/ListTable.d.ts +1 -1
  1065. package/dist/types/containers/ListTable/ListTable.types.d.ts +4 -1
  1066. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +3 -1
  1067. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.styled.d.ts +1 -0
  1068. package/dist/types/containers/ProjectTreeTable/components/TableFooterRow.d.ts +2 -0
  1069. package/dist/types/containers/ProjectTreeTable/context/ProjectDataContextInstance.d.ts +2 -0
  1070. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +88 -6
  1071. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContextInstance.d.ts +2 -0
  1072. package/dist/types/containers/ProjectTreeTable/context/index.d.ts +0 -1
  1073. package/dist/types/containers/ProjectTreeTable/hooks/index.d.ts +1 -0
  1074. package/dist/types/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.d.ts +5 -2
  1075. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +7 -2
  1076. package/dist/types/containers/ProjectTreeTable/hooks/useGroupCounts.d.ts +39 -0
  1077. package/dist/types/containers/ProjectTreeTable/hooks/useSelectedFolders.d.ts +2 -4
  1078. package/dist/types/containers/ProjectTreeTable/types/index.d.ts +6 -0
  1079. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +7 -2
  1080. package/dist/types/containers/ProjectTreeTable/types/summaryTypes.d.ts +0 -29
  1081. package/dist/types/containers/ProjectTreeTable/utils/filterError.d.ts +11 -0
  1082. package/dist/types/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.d.ts +3 -0
  1083. package/dist/types/containers/ProjectTreeTable/utils/getGroupQueries.d.ts +17 -0
  1084. package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +2 -0
  1085. package/dist/types/containers/ProjectTreeTable/utils/pinningUtils.d.ts +0 -1
  1086. package/dist/types/containers/ProjectTreeTable/widgets/GroupHeaderWidget.d.ts +2 -1
  1087. package/dist/types/containers/RepresentationsList/versionsToRepresentations.d.ts +1 -0
  1088. package/dist/types/containers/SimpleTable/SimpleTable.d.ts +1 -64
  1089. package/dist/types/containers/SimpleTable/SimpleTable.types.d.ts +79 -0
  1090. package/dist/types/containers/SimpleTable/SimpleTableRowTemplate.d.ts +13 -1
  1091. package/dist/types/containers/SimpleTable/hooks/useRowKeydown.d.ts +2 -1
  1092. package/dist/types/containers/SimpleTable/index.d.ts +1 -0
  1093. package/dist/types/containers/Slicer/context/SlicerContext.d.ts +3 -4
  1094. package/dist/types/containers/Slicer/hooks/useFiltersWithHierarchy.d.ts +2 -2
  1095. package/dist/types/containers/Slicer/hooks/useSlicerRowSelection.d.ts +1 -3
  1096. package/dist/types/containers/Slicer/types.d.ts +0 -10
  1097. package/dist/types/containers/Slicer/util/createFilterFromSlicer.d.ts +3 -2
  1098. package/dist/types/containers/Slicer/util/getSelectionDataState.d.ts +1 -1
  1099. package/dist/types/containers/Slicer/util/index.d.ts +0 -1
  1100. package/dist/types/context/ProjectFoldersContextInstance.d.ts +2 -0
  1101. package/dist/types/hooks/index.d.ts +1 -0
  1102. package/dist/types/hooks/useGroupByRemoteModules.d.ts +0 -17
  1103. package/dist/types/hooks/useSessionStorage.d.ts +4 -0
  1104. package/dist/types/util/checkName.d.ts +1 -1
  1105. package/dist/types/util/getAttributeIcon.d.ts +1 -1
  1106. package/dist/types/util/getGroupByDataType.d.ts +1 -1
  1107. package/dist/types/util/getPriorityOptions.d.ts +2 -1
  1108. package/dist/types/util/iconUtils.d.ts +1 -1
  1109. package/dist/types/util/index.d.ts +1 -0
  1110. package/dist/types/util/replaceRoot.d.ts +1 -0
  1111. package/dist/util.cjs.js +1 -1
  1112. package/dist/util.es.js +21 -19
  1113. package/dist/util.es.js.map +1 -1
  1114. package/package.json +1 -1
  1115. package/dist/shared/src/api/queries/activities/updateActivities.cjs.js +0 -2
  1116. package/dist/shared/src/api/queries/activities/updateActivities.cjs.js.map +0 -1
  1117. package/dist/shared/src/api/queries/activities/updateActivities.es.js +0 -108
  1118. package/dist/shared/src/api/queries/activities/updateActivities.es.js.map +0 -1
  1119. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +0 -2
  1120. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +0 -1
  1121. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +0 -327
  1122. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +0 -1
  1123. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePrefetchFolderTasks.cjs.js +0 -2
  1124. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePrefetchFolderTasks.cjs.js.map +0 -1
  1125. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePrefetchFolderTasks.es.js +0 -27
  1126. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePrefetchFolderTasks.es.js.map +0 -1
  1127. package/dist/shared/src/containers/Slicer/util/getSelectionDataState.cjs.js +0 -2
  1128. package/dist/shared/src/containers/Slicer/util/getSelectionDataState.cjs.js.map +0 -1
  1129. package/dist/shared/src/containers/Slicer/util/getSelectionDataState.es.js +0 -8
  1130. package/dist/shared/src/containers/Slicer/util/getSelectionDataState.es.js.map +0 -1
  1131. package/dist/types/api/queries/activities/updateActivities.d.ts +0 -1336
  1132. package/dist/types/containers/ProjectTreeTable/context/ProjectTableProvider.d.ts +0 -81
  1133. package/dist/types/containers/ProjectTreeTable/hooks/usePrefetchFolderTasks.d.ts +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"listItemsColumnStats.es.js","sources":["../../../../../../src/api/queries/entityLists/listItemsColumnStats.ts"],"sourcesContent":["import { gqlApi } from '@shared/api/generated'\nimport type { GetListItemsColumnStatsQuery } from '@shared/api/generated'\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\nimport type { FieldStats, MetricTarget } from '../columnStats'\nimport { normalizeFieldStats, mergeFieldStats, hasNewTargetFields } from '../columnStats'\n\n// The list items query aliases entity columns `_entity_{col}` and merges\n// entity+item attribs into `_all_attrib`, so canonical target fields must be\n// translated out and stat column names translated back (ayon-backend#943).\nconst toBackendField = (field: string): string => {\n if (field.startsWith('attrib.')) {\n return `_all_attrib.${field.slice('attrib.'.length)}`\n }\n if (field.startsWith('inherited_attributes.')) {\n return `_all_attrib.${field.slice('inherited_attributes.'.length)}`\n }\n return `_entity_${field}`\n}\n\nconst toCanonicalColumn = (name: string): string => {\n if (name.startsWith('_all_attrib_')) return `attrib_${name.slice('_all_attrib_'.length)}`\n if (name.startsWith('_entity_')) return name.slice('_entity_'.length)\n return name\n}\n\nexport const toListItemsStatsTargets = (targets: MetricTarget[]): MetricTarget[] =>\n targets.map((t) => ({ ...t, field: toBackendField(t.field) }))\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\ntype UpdatedDefinitions = Definitions & {\n GetListItemsColumnStats: OverrideResultType<Definitions['GetListItemsColumnStats'], FieldStats[]>\n}\n\nconst listItemsColumnStatsApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // same caching as the other column stats endpoints: `targets` excluded\n // from the cache key, responses merged, only added targets refetch\n GetListItemsColumnStats: {\n transformResponse: (res: GetListItemsColumnStatsQuery) => {\n const stats = res?.project?.entityLists?.edges?.[0]?.node?.items?.fieldStats ?? []\n return normalizeFieldStats(\n stats.map((s) => ({ ...s, columnName: toCanonicalColumn(s.columnName) })),\n )\n },\n serializeQueryArgs: ({ queryArgs: { targets: _t, ...rest } }) => rest,\n merge: (cache, incoming) => mergeFieldStats(incoming, cache),\n forceRefetch: ({ currentArg, previousArg }) => hasNewTargetFields(currentArg, previousArg),\n providesTags: (_r, _e, { listId, projectName }) => [\n { type: 'entityListItemsColumnStats', id: listId },\n { type: 'entityListItemsColumnStats', id: projectName },\n ],\n },\n },\n})\n\nexport const { useGetListItemsColumnStatsQuery } = listItemsColumnStatsApi\n"],"names":["toBackendField","field","toCanonicalColumn","name","toListItemsStatsTargets","targets","t","listItemsColumnStatsApi","gqlApi","res","stats","normalizeFieldStats","s","_t","rest","cache","incoming","mergeFieldStats","currentArg","previousArg","hasNewTargetFields","_r","_e","listId","projectName","useGetListItemsColumnStatsQuery"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,MAAMA,IAAiB,CAACC,MAClBA,EAAM,WAAW,SAAS,IACrB,eAAeA,EAAM,MAAM,CAAgB,CAAC,KAEjDA,EAAM,WAAW,uBAAuB,IACnC,eAAeA,EAAM,MAAM,EAA8B,CAAC,KAE5D,WAAWA,CAAK,IAGnBC,IAAoB,CAACC,MACrBA,EAAK,WAAW,cAAc,IAAU,UAAUA,EAAK,MAAM,EAAqB,CAAC,KACnFA,EAAK,WAAW,UAAU,IAAUA,EAAK,MAAM,CAAiB,IAC7DA,GAGIC,IAA0B,CAACC,MACtCA,EAAQ,IAAI,CAACC,OAAO,EAAE,GAAGA,GAAG,OAAON,EAAeM,EAAE,KAAK,IAAI,GAQzDC,IAA0BC,EAAO,iBAA+C;AAAA,EACpF,WAAW;AAAA;AAAA;AAAA,IAGT,yBAAyB;AAAA,MACvB,mBAAmB,CAACC,MAAsC;AACxD,cAAMC,IAAQD,GAAK,SAAS,aAAa,QAAQ,CAAC,GAAG,MAAM,OAAO,cAAc,CAAA;AAChF,eAAOE;AAAA,UACLD,EAAM,IAAI,CAACE,OAAO,EAAE,GAAGA,GAAG,YAAYV,EAAkBU,EAAE,UAAU,IAAI;AAAA,QAAA;AAAA,MAE5E;AAAA,MACA,oBAAoB,CAAC,EAAE,WAAW,EAAE,SAASC,GAAI,GAAGC,EAAA,EAAK,MAAQA;AAAA,MACjE,OAAO,CAACC,GAAOC,MAAaC,EAAgBD,GAAUD,CAAK;AAAA,MAC3D,cAAc,CAAC,EAAE,YAAAG,GAAY,aAAAC,QAAkBC,EAAmBF,GAAYC,CAAW;AAAA,MACzF,cAAc,CAACE,GAAIC,GAAI,EAAE,QAAAC,GAAQ,aAAAC,QAAkB;AAAA,QACjD,EAAE,MAAM,8BAA8B,IAAID,EAAA;AAAA,QAC1C,EAAE,MAAM,8BAA8B,IAAIC,EAAA;AAAA,MAAY;AAAA,IACxD;AAAA,EACF;AAEJ,CAAC,GAEY,EAAE,iCAAAC,OAAoClB;"}
1
+ {"version":3,"file":"listItemsColumnStats.es.js","sources":["../../../../../../src/api/queries/entityLists/listItemsColumnStats.ts"],"sourcesContent":["import { gqlApi } from '@shared/api/generated'\nimport type { GetListItemsColumnStatsQuery } from '@shared/api/generated'\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\nimport type { FieldStats, MetricTarget } from '../columnStats'\nimport { normalizeFieldStats, mergeFieldStats, hasNewTargetFields } from '../columnStats'\n\n// The list items query aliases entity columns `_entity_{col}` and merges\n// entity+item attribs into `_all_attrib`, so canonical target fields must be\n// translated out and stat column names translated back (ayon-backend#943).\nconst toBackendField = (field: string): string => {\n if (field.startsWith('attrib.')) {\n return `_all_attrib.${field.slice('attrib.'.length)}`\n }\n if (field.startsWith('inherited_attributes.')) {\n return `_all_attrib.${field.slice('inherited_attributes.'.length)}`\n }\n return `_entity_${field}`\n}\n\nconst toCanonicalColumn = (name: string): string => {\n if (name.startsWith('_all_attrib_')) return `attrib_${name.slice('_all_attrib_'.length)}`\n if (name.startsWith('_entity_')) return name.slice('_entity_'.length)\n return name\n}\n\nexport const toListItemsStatsTargets = (targets: MetricTarget[]): MetricTarget[] =>\n targets.map((t) => ({ ...t, field: toBackendField(t.field) }))\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\ntype UpdatedDefinitions = Definitions & {\n GetListItemsColumnStats: OverrideResultType<Definitions['GetListItemsColumnStats'], FieldStats[]>\n}\n\nconst listItemsColumnStatsApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // same caching as the other column stats endpoints: `targets` excluded\n // from the cache key, responses merged, only added targets refetch\n GetListItemsColumnStats: {\n transformResponse: (res: GetListItemsColumnStatsQuery) => {\n const stats = res?.project?.entityLists?.edges?.[0]?.node?.items?.fieldStats ?? []\n return normalizeFieldStats(\n stats.map((s) => ({ ...s, columnName: toCanonicalColumn(s.columnName) })),\n )\n },\n serializeQueryArgs: ({ queryArgs: { targets: _t, ...rest } }) => rest,\n merge: (cache, incoming) => mergeFieldStats(incoming, cache),\n forceRefetch: ({ currentArg, previousArg }) => hasNewTargetFields(currentArg, previousArg),\n providesTags: (_r, _e, { listId, projectName }) => [\n { type: 'entityListItemsColumnStats', id: listId },\n { type: 'entityListItemsColumnStats', id: projectName },\n ],\n },\n },\n})\n\nexport const { useGetListItemsColumnStatsQuery } = listItemsColumnStatsApi\n"],"names":["toBackendField","field","toCanonicalColumn","name","toListItemsStatsTargets","targets","t","listItemsColumnStatsApi","gqlApi","res","stats","normalizeFieldStats","s","_t","rest","cache","incoming","mergeFieldStats","currentArg","previousArg","hasNewTargetFields","_r","_e","listId","projectName","useGetListItemsColumnStatsQuery"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,MAAMA,IAAiB,CAACC,MAClBA,EAAM,WAAW,SAAS,IACrB,eAAeA,EAAM,MAAM,CAAgB,CAAC,KAEjDA,EAAM,WAAW,uBAAuB,IACnC,eAAeA,EAAM,MAAM,EAA8B,CAAC,KAE5D,WAAWA,CAAK,IAGnBC,IAAoB,CAACC,MACrBA,EAAK,WAAW,cAAc,IAAU,UAAUA,EAAK,MAAM,EAAqB,CAAC,KACnFA,EAAK,WAAW,UAAU,IAAUA,EAAK,MAAM,CAAiB,IAC7DA,GAGIC,KAA0B,CAACC,MACtCA,EAAQ,IAAI,CAACC,OAAO,EAAE,GAAGA,GAAG,OAAON,EAAeM,EAAE,KAAK,IAAI,GAQzDC,IAA0BC,EAAO,iBAA+C;AAAA,EACpF,WAAW;AAAA;AAAA;AAAA,IAGT,yBAAyB;AAAA,MACvB,mBAAmB,CAACC,MAAsC;AACxD,cAAMC,IAAQD,GAAK,SAAS,aAAa,QAAQ,CAAC,GAAG,MAAM,OAAO,cAAc,CAAA;AAChF,eAAOE;AAAA,UACLD,EAAM,IAAI,CAACE,OAAO,EAAE,GAAGA,GAAG,YAAYV,EAAkBU,EAAE,UAAU,IAAI;AAAA,QAAA;AAAA,MAE5E;AAAA,MACA,oBAAoB,CAAC,EAAE,WAAW,EAAE,SAASC,GAAI,GAAGC,EAAA,EAAK,MAAQA;AAAA,MACjE,OAAO,CAACC,GAAOC,MAAaC,EAAgBD,GAAUD,CAAK;AAAA,MAC3D,cAAc,CAAC,EAAE,YAAAG,GAAY,aAAAC,QAAkBC,EAAmBF,GAAYC,CAAW;AAAA,MACzF,cAAc,CAACE,GAAIC,GAAI,EAAE,QAAAC,GAAQ,aAAAC,QAAkB;AAAA,QACjD,EAAE,MAAM,8BAA8B,IAAID,EAAA;AAAA,QAC1C,EAAE,MAAM,8BAA8B,IAAIC,EAAA;AAAA,MAAY;AAAA,IACxD;AAAA,EACF;AAEJ,CAAC,GAEY,EAAE,iCAAAC,OAAoClB;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");require("../../generated/graphql.cjs.js");require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/dataImport.cjs.js");require("../../generated/desktop.cjs.js");require("../../generated/entityLists.cjs.js");const G=require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");const E=require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/projectFolders.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");require("lodash");require("react-toastify");require("uuid");const W=require("../../../util/thumbnailWebsocket.cjs.js");require("../actions/getActions.cjs.js");require("../activities/getActivities.cjs.js");require("../activities/updateActivities.cjs.js");require("../activities/updateReaction.cjs.js");require("../activities/getMentions.cjs.js");require("../activities/getCategories.cjs.js");require("../addons/getAddons.cjs.js");require("../addons/updateAddons.cjs.js");require("../attributes/getAttributes.cjs.js");require("../attributes/updateAttributes.cjs.js");require("../authentication/getAuthentication.cjs.js");require("../cloud/cloud.cjs.js");require("../columnStats/metricTargets.cjs.js");require("../config/getConfig.cjs.js");require("../config/updateConfig.cjs.js");require("../entities/getEntity.cjs.js");require("../entities/getEntityPanel.cjs.js");require("../overview/getOverview.cjs.js");require("../overview/updateOverview.cjs.js");require("../versions/getVersionsProducts.cjs.js");require("../links/getEntityLinks.cjs.js");require("../entities/updateEntity.cjs.js");require("../entityLists/getLists.cjs.js");require("../entityLists/updateLists.cjs.js");require("../entityLists/getListsAttributes.cjs.js");require("../entityLists/listItemsColumnStats.cjs.js");require("../entityLists/updateListsAttributes.cjs.js");require("../entityLists/listFolders.cjs.js");require("./getFolderDeleteInfo.cjs.js");require("../grouping/getGrouping.cjs.js");require("../links/updateLinks.cjs.js");require("../links/getLinks.cjs.js");require("../permissions/getPermissions.cjs.js");require("../products/createProduct.cjs.js");require("../products/getFolderProducts.cjs.js");require("../project/getProject.cjs.js");require("../project/updateProject.cjs.js");require("../projectFolders/projectFolders.cjs.js");require("../review/getReview.cjs.js");require("../review/updateReview.cjs.js");require("../share/share.cjs.js");require("../system/getSystem.cjs.js");require("../tasks/getTasks.cjs.js");require("../tasks/updateTasks.cjs.js");require("../teams/getTeams.cjs.js");require("../userDashboard/getUserDashboard.cjs.js");require("../users/getUsers.cjs.js");require("../users/updateUsers.cjs.js");require("../users/guests.cjs.js");require("../versions/updateVersions.cjs.js");require("../views/getViews.cjs.js");require("../views/updateViews.cjs.js");require("../watchers/getWatchers.cjs.js");require("../uris/getUris.cjs.js");const H=require("../../../util/pubsub.cjs.js"),L=E.api.enhanceEndpoints({endpoints:{getFolderHierarchy:{providesTags:["hierarchy"]},getFolderList:{providesTags:(l,A,{projectName:b})=>["hierarchy",{type:"folder",id:"LIST"},...l?.folders.map(({id:d})=>({type:"folder",id:d}))||[],{type:"folder",id:b}],async onCacheEntryAdded(l,{cacheDataLoaded:A,cacheEntryRemoved:b,updateCachedData:d,dispatch:I}){const{projectName:S}=l||{},c=l?.patch,T={"entity.folder.label_changed":"label","entity.folder.renamed":"name","entity.folder.type_changed":"folderType","entity.folder.status_changed":"status","entity.folder.tags_changed":"tags","entity.folder.attrib_changed":"attrib"},N=["entity.folder","entity.folder.created","entity.folder.deleted"],w=[],Q=2e3,s=new Map;let f=!1,y=null,m=!1;const g=()=>{y&&(clearTimeout(y),y=null)},F=()=>{g(),y=setTimeout(V,Q)},V=async()=>{if(g(),!(m||!S)){m=!0;try{if(f){f=!1;try{const e=await I(E.api.endpoints.getFolderList.initiate({...l,realtime:!0},{forceRefetch:!0})).unwrap();d(()=>e)}catch{console.warn("Failed to refetch folder list on resync")}finally{s.clear()}return}if(s.size===0)return;const q=Array.from(s.values());s.clear();const t=[];if(await Promise.all(q.map(async e=>{try{const i=e.topic,r=e.summary||{},n=r.entityId;if(!n)return;const a=T[i];if(!a)return;if(r.value!==void 0&&a!=="attrib"){let u=r.value;a==="tags"?Array.isArray(u)||(u=typeof u=="string"?u.split(",").filter(Boolean):[]):u!==null&&typeof u!="string"&&(u=String(u));const o={[a]:u,updatedAt:e.updatedAt};r.parentId!==void 0&&(o.parentId=r.parentId),t.push({folderId:n,partial:o});return}const x=e.id,p=await I(G.api.endpoints.getEvent.initiate({eventId:x},{forceRefetch:!0})).unwrap(),h=p?.payload||{},M=p?.summary||{};if(a==="attrib"&&h?.newValue&&typeof h.newValue=="object")t.push({folderId:n,attribMerge:h.newValue,updatedAt:p.updatedAt});else{const u=h?.newValue;if(u===void 0)return;const o={updatedAt:p.updatedAt};o[a]=u,M.parentId!==void 0&&(o.parentId=M.parentId),t.push({folderId:n,partial:o})}}catch{}})),!t.length)return;d(e=>{!e||!Array.isArray(e.folders)||t.forEach(i=>{const r=e.folders.findIndex(n=>n.id===i.folderId);r!==-1&&(i.attribMerge&&(e.folders[r].attrib={...e.folders[r].attrib||{},...i.attribMerge},i.updatedAt&&(e.folders[r].updatedAt=i.updatedAt)),i.partial&&(e.folders[r]={...e.folders[r],...i.partial}))})})}finally{m=!1,(s.size>0||f)&&F()}}};let v;try{await A,v=W.subscribeToThumbnailUpdates(t=>{d(e=>{!e||!Array.isArray(e.folders)||t.forEach(i=>{if(i.summary.entityType==="folder"&&i.summary.thumbnailHash){const r=e.folders.findIndex(n=>n.id===i.summary.entityId);r!==-1&&(e.folders[r].thumbnailHash=i.summary.thumbnailHash)}})})},["folder"]);const q=(t,e)=>{if(t.endsWith(".created")||t.endsWith(".deleted")){const r=t.endsWith(".created")?"created":"deleted";if(c&&!c.includes(r))return;f=!0}else{const r=T[t];if(c&&(!r||!c.includes(r)))return;const n=e?.id;n&&s.set(n,e)}F()};N.forEach(t=>w.push(H.subscribe(t,q)))}catch{}await b,w.forEach(q=>H.unsubscribe(q)),v&&v(),g()}}}}),{useGetFolderHierarchyQuery:j,useGetFolderListQuery:P}=L;exports.foldersQueries=L;exports.useGetFolderHierarchyQuery=j;exports.useGetFolderListQuery=P;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");require("../../generated/graphql.cjs.js");require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/dataImport.cjs.js");require("../../generated/desktop.cjs.js");require("../../generated/entityLists.cjs.js");const G=require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");const E=require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/projectFolders.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");require("lodash");require("react-toastify");require("uuid");const W=require("../../../util/thumbnailWebsocket.cjs.js");require("../actions/getActions.cjs.js");require("../activities/getActivities.cjs.js");require("../activities/updateReaction.cjs.js");require("../activities/getMentions.cjs.js");require("../activities/getCategories.cjs.js");require("../addons/getAddons.cjs.js");require("../addons/updateAddons.cjs.js");require("../attributes/getAttributes.cjs.js");require("../attributes/updateAttributes.cjs.js");require("../authentication/getAuthentication.cjs.js");require("../bundles/getBundles.cjs.js");require("../bundles/updateBundles.cjs.js");require("../cloud/cloud.cjs.js");require("../columnStats/metricTargets.cjs.js");require("../columnStats/groupCounts.cjs.js");require("../config/getConfig.cjs.js");require("../config/updateConfig.cjs.js");require("../entities/getEntity.cjs.js");require("../entities/getEntityPanel.cjs.js");require("../overview/getOverview.cjs.js");require("../overview/updateOverview.cjs.js");require("../versions/getVersionsProducts.cjs.js");require("../links/getEntityLinks.cjs.js");require("../entities/updateEntity.cjs.js");require("../entityLists/getLists.cjs.js");require("../entityLists/updateLists.cjs.js");require("../entityLists/getListsAttributes.cjs.js");require("../entityLists/listItemsColumnStats.cjs.js");require("../entityLists/updateListsAttributes.cjs.js");require("../entityLists/listFolders.cjs.js");require("./getFolderDeleteInfo.cjs.js");require("../grouping/getGrouping.cjs.js");require("../links/updateLinks.cjs.js");require("../links/getLinks.cjs.js");require("../permissions/getPermissions.cjs.js");require("../products/createProduct.cjs.js");require("../products/getFolderProducts.cjs.js");require("../project/getProject.cjs.js");require("../project/updateProject.cjs.js");require("../projectFolders/projectFolders.cjs.js");require("../review/getReview.cjs.js");require("../review/updateReview.cjs.js");require("../share/share.cjs.js");require("../system/getSystem.cjs.js");require("../tasks/getTasks.cjs.js");require("../tasks/updateTasks.cjs.js");require("../teams/getTeams.cjs.js");require("../userDashboard/getUserDashboard.cjs.js");require("../users/getUsers.cjs.js");require("../users/updateUsers.cjs.js");require("../users/guests.cjs.js");require("../versions/updateVersions.cjs.js");require("../views/getViews.cjs.js");require("../views/updateViews.cjs.js");require("../watchers/getWatchers.cjs.js");require("../uris/getUris.cjs.js");const H=require("../../../util/pubsub.cjs.js"),L=E.api.enhanceEndpoints({endpoints:{getFolderHierarchy:{providesTags:["hierarchy"]},getFolderList:{providesTags:(l,A,{projectName:b})=>["hierarchy",{type:"folder",id:"LIST"},...l?.folders.map(({id:d})=>({type:"folder",id:d}))||[],{type:"folder",id:b}],async onCacheEntryAdded(l,{cacheDataLoaded:A,cacheEntryRemoved:b,updateCachedData:d,dispatch:I}){const{projectName:S}=l||{},c=l?.patch,T={"entity.folder.label_changed":"label","entity.folder.renamed":"name","entity.folder.type_changed":"folderType","entity.folder.status_changed":"status","entity.folder.tags_changed":"tags","entity.folder.attrib_changed":"attrib"},N=["entity.folder","entity.folder.created","entity.folder.deleted"],w=[],Q=2e3,s=new Map;let f=!1,y=null,m=!1;const g=()=>{y&&(clearTimeout(y),y=null)},F=()=>{g(),y=setTimeout(V,Q)},V=async()=>{if(g(),!(m||!S)){m=!0;try{if(f){f=!1;try{const e=await I(E.api.endpoints.getFolderList.initiate({...l,realtime:!0},{forceRefetch:!0})).unwrap();d(()=>e)}catch{console.warn("Failed to refetch folder list on resync")}finally{s.clear()}return}if(s.size===0)return;const q=Array.from(s.values());s.clear();const t=[];if(await Promise.all(q.map(async e=>{try{const i=e.topic,r=e.summary||{},n=r.entityId;if(!n)return;const a=T[i];if(!a)return;if(r.value!==void 0&&a!=="attrib"){let u=r.value;a==="tags"?Array.isArray(u)||(u=typeof u=="string"?u.split(",").filter(Boolean):[]):u!==null&&typeof u!="string"&&(u=String(u));const o={[a]:u,updatedAt:e.updatedAt};r.parentId!==void 0&&(o.parentId=r.parentId),t.push({folderId:n,partial:o});return}const x=e.id,p=await I(G.api.endpoints.getEvent.initiate({eventId:x},{forceRefetch:!0})).unwrap(),h=p?.payload||{},M=p?.summary||{};if(a==="attrib"&&h?.newValue&&typeof h.newValue=="object")t.push({folderId:n,attribMerge:h.newValue,updatedAt:p.updatedAt});else{const u=h?.newValue;if(u===void 0)return;const o={updatedAt:p.updatedAt};o[a]=u,M.parentId!==void 0&&(o.parentId=M.parentId),t.push({folderId:n,partial:o})}}catch{}})),!t.length)return;d(e=>{!e||!Array.isArray(e.folders)||t.forEach(i=>{const r=e.folders.findIndex(n=>n.id===i.folderId);r!==-1&&(i.attribMerge&&(e.folders[r].attrib={...e.folders[r].attrib||{},...i.attribMerge},i.updatedAt&&(e.folders[r].updatedAt=i.updatedAt)),i.partial&&(e.folders[r]={...e.folders[r],...i.partial}))})})}finally{m=!1,(s.size>0||f)&&F()}}};let v;try{await A,v=W.subscribeToThumbnailUpdates(t=>{d(e=>{!e||!Array.isArray(e.folders)||t.forEach(i=>{if(i.summary.entityType==="folder"&&i.summary.thumbnailHash){const r=e.folders.findIndex(n=>n.id===i.summary.entityId);r!==-1&&(e.folders[r].thumbnailHash=i.summary.thumbnailHash)}})})},["folder"]);const q=(t,e)=>{if(t.endsWith(".created")||t.endsWith(".deleted")){const r=t.endsWith(".created")?"created":"deleted";if(c&&!c.includes(r))return;f=!0}else{const r=T[t];if(c&&(!r||!c.includes(r)))return;const n=e?.id;n&&s.set(n,e)}F()};N.forEach(t=>w.push(H.subscribe(t,q)))}catch{}await b,w.forEach(q=>H.unsubscribe(q)),v&&v(),g()}}}}),{useGetFolderHierarchyQuery:j,useGetFolderListQuery:P}=L;exports.foldersQueries=L;exports.useGetFolderHierarchyQuery=j;exports.useGetFolderListQuery=P;
2
2
  //# sourceMappingURL=getFolders.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getFolders.cjs.js","sources":["../../../../../../src/api/queries/folders/getFolders.ts"],"sourcesContent":["import { foldersApi } from '@shared/api/generated'\nimport { api as eventsApi } from '@shared/api/generated/events'\nimport { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\n\nconst enhancedApi = foldersApi.enhanceEndpoints({\n endpoints: {\n getFolderHierarchy: {\n providesTags: ['hierarchy'],\n },\n getFolderList: {\n providesTags: (result, _e, { projectName }) => [\n 'hierarchy',\n { type: 'folder', id: 'LIST' },\n ...(result?.folders.map(({ id }) => ({ type: 'folder', id })) || []),\n { type: 'folder', id: projectName },\n ],\n async onCacheEntryAdded(\n args,\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n const { projectName } = args || {}\n const patchFields = (args as any)?.patch as string[] | undefined\n\n const topicFieldMap: Record<string, string> = {\n 'entity.folder.label_changed': 'label',\n 'entity.folder.renamed': 'name',\n 'entity.folder.type_changed': 'folderType',\n 'entity.folder.status_changed': 'status',\n 'entity.folder.tags_changed': 'tags',\n 'entity.folder.attrib_changed': 'attrib',\n }\n\n const topics = ['entity.folder', 'entity.folder.created', 'entity.folder.deleted']\n const tokens: (string | undefined)[] = []\n\n // Simplified trailing debounce approach:\n // - Collect updated folder IDs for 2000ms window\n // - If a creation topic appears, perform one full list refetch (within debounce window)\n // - Otherwise, fetch each pending event and patch existing cache entries only\n const MIN_INTERVAL = 2000\n const pendingMessages = new Map<string, any>()\n let resyncFlag = false // full list refetch needed (created or deleted)\n let timer: ReturnType<typeof setTimeout> | null = null\n let processing = false\n\n const clearTimer = () => {\n if (timer) {\n clearTimeout(timer)\n timer = null\n }\n }\n\n const schedule = () => {\n clearTimer()\n timer = setTimeout(run, MIN_INTERVAL)\n }\n\n // All non-created/deleted events are treated as incremental updates.\n const run = async () => {\n clearTimer()\n if (processing || !projectName) return\n processing = true\n try {\n if (resyncFlag) {\n resyncFlag = false\n try {\n // get full folder list and update cache - done for created events\n const result = await dispatch(\n foldersApi.endpoints.getFolderList.initiate(\n // @ts-expect-error realtime flag to avoid toggling global isFetching for watchers\n { ...args, realtime: true },\n { forceRefetch: true },\n ),\n ).unwrap()\n updateCachedData(() => result)\n } catch {\n /* ignore */\n console.warn('Failed to refetch folder list on resync')\n } finally {\n pendingMessages.clear()\n }\n return\n }\n\n if (pendingMessages.size === 0) return\n const messages = Array.from(pendingMessages.values())\n pendingMessages.clear()\n type Patch = {\n folderId: string\n partial?: Record<string, any>\n attribMerge?: Record<string, any>\n updatedAt?: string\n }\n const patches: Patch[] = []\n await Promise.all(\n messages.map(async (message) => {\n try {\n const topic = message.topic\n const summary = message.summary || {}\n const folderId = summary.entityId\n if (!folderId) return\n const fieldName = topicFieldMap[topic]\n if (!fieldName) return\n\n // OPTIMIZATION: use value from summary if available (for root level fields)\n if (summary.value !== undefined && fieldName !== 'attrib') {\n let value = summary.value\n\n // Cast value to proper type\n if (fieldName === 'tags') {\n if (!Array.isArray(value)) {\n value = typeof value === 'string' ? value.split(',').filter(Boolean) : []\n }\n } else if (value !== null && typeof value !== 'string') {\n value = String(value)\n }\n\n const partial: Record<string, any> = {\n [fieldName]: value,\n updatedAt: message.updatedAt,\n }\n if (summary.parentId !== undefined) partial.parentId = summary.parentId\n patches.push({ folderId, partial })\n return\n }\n\n // Fallback: Fetch each event and apply incremental updates\n const eventId = message.id\n const event = await dispatch(\n eventsApi.endpoints.getEvent.initiate({ eventId }, { forceRefetch: true }),\n ).unwrap()\n const payload: any = event?.payload || {}\n const eventSummary: any = event?.summary || {}\n if (\n fieldName === 'attrib' &&\n payload?.newValue &&\n typeof payload.newValue === 'object'\n ) {\n patches.push({\n folderId,\n attribMerge: payload.newValue,\n updatedAt: event.updatedAt,\n })\n } else {\n const value = payload?.newValue\n if (value === undefined) return\n const partial: Record<string, any> = { updatedAt: event.updatedAt }\n partial[fieldName] = value\n // parentId might accompany some changes in summary\n if (eventSummary.parentId !== undefined)\n partial.parentId = eventSummary.parentId\n patches.push({ folderId, partial })\n }\n } catch {\n /* ignore single event errors */\n }\n }),\n )\n if (!patches.length) return\n updateCachedData((draft: any) => {\n if (!draft || !Array.isArray(draft.folders)) return\n patches.forEach((patch) => {\n const idx = draft.folders.findIndex((f: any) => f.id === patch.folderId)\n // if folder not found, skip\n if (idx === -1) return\n // apply patch to existing folder\n if (patch.attribMerge) {\n // merge attribs if attribMerge is provided\n draft.folders[idx].attrib = {\n ...(draft.folders[idx].attrib || {}),\n ...patch.attribMerge,\n }\n // update updatedAt if provided\n if (patch.updatedAt) draft.folders[idx].updatedAt = patch.updatedAt\n }\n if (patch.partial) {\n // apply partial update\n draft.folders[idx] = { ...draft.folders[idx], ...patch.partial }\n }\n })\n })\n } finally {\n processing = false\n // If new events came in while we were processing, schedule another run\n if (pendingMessages.size > 0 || resyncFlag) {\n schedule()\n }\n }\n }\n\n let unsubscribeThumbnails: (() => void) | undefined\n\n try {\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: any) => {\n if (!draft || !Array.isArray(draft.folders)) return\n messages.forEach((message) => {\n if (message.summary.entityType === 'folder' && message.summary.thumbnailHash) {\n const idx = draft.folders.findIndex(\n (f: any) => f.id === message.summary.entityId,\n )\n if (idx !== -1) {\n draft.folders[idx].thumbnailHash = message.summary.thumbnailHash\n }\n }\n })\n })\n },\n ['folder'],\n )\n\n const handlePubSub = (_topic: string, _message: any) => {\n const isMembership = _topic.endsWith('.created') || _topic.endsWith('.deleted')\n\n if (isMembership) {\n const eventType = _topic.endsWith('.created') ? 'created' : 'deleted'\n // Backward compatibility: If no patch filters are provided, always sync membership.\n // If patch filters ARE provided, only sync if 'created'/'deleted' tokens are present.\n if (patchFields && !patchFields.includes(eventType)) return\n\n resyncFlag = true\n } else {\n const fieldName = topicFieldMap[_topic]\n // Backward compatibility: If no patch filters are provided, allow all updates (that we have mapping for).\n // If patch filters ARE provided, only allow fields explicitly listed in the patch array.\n if (patchFields && (!fieldName || !patchFields.includes(fieldName))) {\n return\n }\n\n const eventId = _message?.id\n if (eventId) {\n pendingMessages.set(eventId, _message)\n }\n }\n\n schedule()\n }\n\n topics.forEach((t) => tokens.push(PubSub.subscribe(t, handlePubSub)))\n } catch {\n // silent\n }\n\n await cacheEntryRemoved\n tokens.forEach((t) => PubSub.unsubscribe(t))\n if (unsubscribeThumbnails) unsubscribeThumbnails()\n clearTimer()\n },\n },\n },\n})\n\nexport const { useGetFolderHierarchyQuery, useGetFolderListQuery } = enhancedApi\nexport { enhancedApi as foldersQueries }\n"],"names":["enhancedApi","foldersApi","result","_e","projectName","id","args","cacheDataLoaded","cacheEntryRemoved","updateCachedData","dispatch","patchFields","topicFieldMap","topics","tokens","MIN_INTERVAL","pendingMessages","resyncFlag","timer","processing","clearTimer","schedule","run","messages","patches","message","topic","summary","folderId","fieldName","value","partial","eventId","event","eventsApi","payload","eventSummary","draft","patch","idx","f","unsubscribeThumbnails","subscribeToThumbnailUpdates","handlePubSub","_topic","_message","eventType","PubSub","t","useGetFolderHierarchyQuery","useGetFolderListQuery"],"mappings":"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"}
1
+ {"version":3,"file":"getFolders.cjs.js","sources":["../../../../../../src/api/queries/folders/getFolders.ts"],"sourcesContent":["import { foldersApi } from '@shared/api/generated'\nimport { api as eventsApi } from '@shared/api/generated/events'\nimport { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\n\nconst enhancedApi = foldersApi.enhanceEndpoints({\n endpoints: {\n getFolderHierarchy: {\n providesTags: ['hierarchy'],\n },\n getFolderList: {\n providesTags: (result, _e, { projectName }) => [\n 'hierarchy',\n { type: 'folder', id: 'LIST' },\n ...(result?.folders.map(({ id }) => ({ type: 'folder', id })) || []),\n { type: 'folder', id: projectName },\n ],\n async onCacheEntryAdded(\n args,\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n const { projectName } = args || {}\n const patchFields = (args as any)?.patch as string[] | undefined\n\n const topicFieldMap: Record<string, string> = {\n 'entity.folder.label_changed': 'label',\n 'entity.folder.renamed': 'name',\n 'entity.folder.type_changed': 'folderType',\n 'entity.folder.status_changed': 'status',\n 'entity.folder.tags_changed': 'tags',\n 'entity.folder.attrib_changed': 'attrib',\n }\n\n const topics = ['entity.folder', 'entity.folder.created', 'entity.folder.deleted']\n const tokens: (string | undefined)[] = []\n\n // Simplified trailing debounce approach:\n // - Collect updated folder IDs for 2000ms window\n // - If a creation topic appears, perform one full list refetch (within debounce window)\n // - Otherwise, fetch each pending event and patch existing cache entries only\n const MIN_INTERVAL = 2000\n const pendingMessages = new Map<string, any>()\n let resyncFlag = false // full list refetch needed (created or deleted)\n let timer: ReturnType<typeof setTimeout> | null = null\n let processing = false\n\n const clearTimer = () => {\n if (timer) {\n clearTimeout(timer)\n timer = null\n }\n }\n\n const schedule = () => {\n clearTimer()\n timer = setTimeout(run, MIN_INTERVAL)\n }\n\n // All non-created/deleted events are treated as incremental updates.\n const run = async () => {\n clearTimer()\n if (processing || !projectName) return\n processing = true\n try {\n if (resyncFlag) {\n resyncFlag = false\n try {\n // get full folder list and update cache - done for created events\n const result = await dispatch(\n foldersApi.endpoints.getFolderList.initiate(\n // @ts-expect-error realtime flag to avoid toggling global isFetching for watchers\n { ...args, realtime: true },\n { forceRefetch: true },\n ),\n ).unwrap()\n updateCachedData(() => result)\n } catch {\n /* ignore */\n console.warn('Failed to refetch folder list on resync')\n } finally {\n pendingMessages.clear()\n }\n return\n }\n\n if (pendingMessages.size === 0) return\n const messages = Array.from(pendingMessages.values())\n pendingMessages.clear()\n type Patch = {\n folderId: string\n partial?: Record<string, any>\n attribMerge?: Record<string, any>\n updatedAt?: string\n }\n const patches: Patch[] = []\n await Promise.all(\n messages.map(async (message) => {\n try {\n const topic = message.topic\n const summary = message.summary || {}\n const folderId = summary.entityId\n if (!folderId) return\n const fieldName = topicFieldMap[topic]\n if (!fieldName) return\n\n // OPTIMIZATION: use value from summary if available (for root level fields)\n if (summary.value !== undefined && fieldName !== 'attrib') {\n let value = summary.value\n\n // Cast value to proper type\n if (fieldName === 'tags') {\n if (!Array.isArray(value)) {\n value = typeof value === 'string' ? value.split(',').filter(Boolean) : []\n }\n } else if (value !== null && typeof value !== 'string') {\n value = String(value)\n }\n\n const partial: Record<string, any> = {\n [fieldName]: value,\n updatedAt: message.updatedAt,\n }\n if (summary.parentId !== undefined) partial.parentId = summary.parentId\n patches.push({ folderId, partial })\n return\n }\n\n // Fallback: Fetch each event and apply incremental updates\n const eventId = message.id\n const event = await dispatch(\n eventsApi.endpoints.getEvent.initiate({ eventId }, { forceRefetch: true }),\n ).unwrap()\n const payload: any = event?.payload || {}\n const eventSummary: any = event?.summary || {}\n if (\n fieldName === 'attrib' &&\n payload?.newValue &&\n typeof payload.newValue === 'object'\n ) {\n patches.push({\n folderId,\n attribMerge: payload.newValue,\n updatedAt: event.updatedAt,\n })\n } else {\n const value = payload?.newValue\n if (value === undefined) return\n const partial: Record<string, any> = { updatedAt: event.updatedAt }\n partial[fieldName] = value\n // parentId might accompany some changes in summary\n if (eventSummary.parentId !== undefined)\n partial.parentId = eventSummary.parentId\n patches.push({ folderId, partial })\n }\n } catch {\n /* ignore single event errors */\n }\n }),\n )\n if (!patches.length) return\n updateCachedData((draft: any) => {\n if (!draft || !Array.isArray(draft.folders)) return\n patches.forEach((patch) => {\n const idx = draft.folders.findIndex((f: any) => f.id === patch.folderId)\n // if folder not found, skip\n if (idx === -1) return\n // apply patch to existing folder\n if (patch.attribMerge) {\n // merge attribs if attribMerge is provided\n draft.folders[idx].attrib = {\n ...(draft.folders[idx].attrib || {}),\n ...patch.attribMerge,\n }\n // update updatedAt if provided\n if (patch.updatedAt) draft.folders[idx].updatedAt = patch.updatedAt\n }\n if (patch.partial) {\n // apply partial update\n draft.folders[idx] = { ...draft.folders[idx], ...patch.partial }\n }\n })\n })\n } finally {\n processing = false\n // If new events came in while we were processing, schedule another run\n if (pendingMessages.size > 0 || resyncFlag) {\n schedule()\n }\n }\n }\n\n let unsubscribeThumbnails: (() => void) | undefined\n\n try {\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: any) => {\n if (!draft || !Array.isArray(draft.folders)) return\n messages.forEach((message) => {\n if (message.summary.entityType === 'folder' && message.summary.thumbnailHash) {\n const idx = draft.folders.findIndex(\n (f: any) => f.id === message.summary.entityId,\n )\n if (idx !== -1) {\n draft.folders[idx].thumbnailHash = message.summary.thumbnailHash\n }\n }\n })\n })\n },\n ['folder'],\n )\n\n const handlePubSub = (_topic: string, _message: any) => {\n const isMembership = _topic.endsWith('.created') || _topic.endsWith('.deleted')\n\n if (isMembership) {\n const eventType = _topic.endsWith('.created') ? 'created' : 'deleted'\n // Backward compatibility: If no patch filters are provided, always sync membership.\n // If patch filters ARE provided, only sync if 'created'/'deleted' tokens are present.\n if (patchFields && !patchFields.includes(eventType)) return\n\n resyncFlag = true\n } else {\n const fieldName = topicFieldMap[_topic]\n // Backward compatibility: If no patch filters are provided, allow all updates (that we have mapping for).\n // If patch filters ARE provided, only allow fields explicitly listed in the patch array.\n if (patchFields && (!fieldName || !patchFields.includes(fieldName))) {\n return\n }\n\n const eventId = _message?.id\n if (eventId) {\n pendingMessages.set(eventId, _message)\n }\n }\n\n schedule()\n }\n\n topics.forEach((t) => tokens.push(PubSub.subscribe(t, handlePubSub)))\n } catch {\n // silent\n }\n\n await cacheEntryRemoved\n tokens.forEach((t) => PubSub.unsubscribe(t))\n if (unsubscribeThumbnails) unsubscribeThumbnails()\n clearTimer()\n },\n },\n },\n})\n\nexport const { useGetFolderHierarchyQuery, useGetFolderListQuery } = enhancedApi\nexport { enhancedApi as foldersQueries }\n"],"names":["enhancedApi","foldersApi","result","_e","projectName","id","args","cacheDataLoaded","cacheEntryRemoved","updateCachedData","dispatch","patchFields","topicFieldMap","topics","tokens","MIN_INTERVAL","pendingMessages","resyncFlag","timer","processing","clearTimer","schedule","run","messages","patches","message","topic","summary","folderId","fieldName","value","partial","eventId","event","eventsApi","payload","eventSummary","draft","patch","idx","f","unsubscribeThumbnails","subscribeToThumbnailUpdates","handlePubSub","_topic","_message","eventType","PubSub","t","useGetFolderHierarchyQuery","useGetFolderListQuery"],"mappings":"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"}
@@ -44,7 +44,6 @@ import "uuid";
44
44
  import { subscribeToThumbnailUpdates as k } from "../../../util/thumbnailWebsocket.es.js";
45
45
  import "../actions/getActions.es.js";
46
46
  import "../activities/getActivities.es.js";
47
- import "../activities/updateActivities.es.js";
48
47
  import "../activities/updateReaction.es.js";
49
48
  import "../activities/getMentions.es.js";
50
49
  import "../activities/getCategories.es.js";
@@ -53,8 +52,11 @@ import "../addons/updateAddons.es.js";
53
52
  import "../attributes/getAttributes.es.js";
54
53
  import "../attributes/updateAttributes.es.js";
55
54
  import "../authentication/getAuthentication.es.js";
55
+ import "../bundles/getBundles.es.js";
56
+ import "../bundles/updateBundles.es.js";
56
57
  import "../cloud/cloud.es.js";
57
58
  import "../columnStats/metricTargets.es.js";
59
+ import "../columnStats/groupCounts.es.js";
58
60
  import "../config/getConfig.es.js";
59
61
  import "../config/updateConfig.es.js";
60
62
  import "../entities/getEntity.es.js";
@@ -237,10 +239,10 @@ const P = x.enhanceEndpoints({
237
239
  }
238
240
  }
239
241
  }
240
- }), { useGetFolderHierarchyQuery: Hr, useGetFolderListQuery: Lr } = P;
242
+ }), { useGetFolderHierarchyQuery: Nr, useGetFolderListQuery: Rr } = P;
241
243
  export {
242
244
  P as foldersQueries,
243
- Hr as useGetFolderHierarchyQuery,
244
- Lr as useGetFolderListQuery
245
+ Nr as useGetFolderHierarchyQuery,
246
+ Rr as useGetFolderListQuery
245
247
  };
246
248
  //# sourceMappingURL=getFolders.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getFolders.es.js","sources":["../../../../../../src/api/queries/folders/getFolders.ts"],"sourcesContent":["import { foldersApi } from '@shared/api/generated'\nimport { api as eventsApi } from '@shared/api/generated/events'\nimport { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\n\nconst enhancedApi = foldersApi.enhanceEndpoints({\n endpoints: {\n getFolderHierarchy: {\n providesTags: ['hierarchy'],\n },\n getFolderList: {\n providesTags: (result, _e, { projectName }) => [\n 'hierarchy',\n { type: 'folder', id: 'LIST' },\n ...(result?.folders.map(({ id }) => ({ type: 'folder', id })) || []),\n { type: 'folder', id: projectName },\n ],\n async onCacheEntryAdded(\n args,\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n const { projectName } = args || {}\n const patchFields = (args as any)?.patch as string[] | undefined\n\n const topicFieldMap: Record<string, string> = {\n 'entity.folder.label_changed': 'label',\n 'entity.folder.renamed': 'name',\n 'entity.folder.type_changed': 'folderType',\n 'entity.folder.status_changed': 'status',\n 'entity.folder.tags_changed': 'tags',\n 'entity.folder.attrib_changed': 'attrib',\n }\n\n const topics = ['entity.folder', 'entity.folder.created', 'entity.folder.deleted']\n const tokens: (string | undefined)[] = []\n\n // Simplified trailing debounce approach:\n // - Collect updated folder IDs for 2000ms window\n // - If a creation topic appears, perform one full list refetch (within debounce window)\n // - Otherwise, fetch each pending event and patch existing cache entries only\n const MIN_INTERVAL = 2000\n const pendingMessages = new Map<string, any>()\n let resyncFlag = false // full list refetch needed (created or deleted)\n let timer: ReturnType<typeof setTimeout> | null = null\n let processing = false\n\n const clearTimer = () => {\n if (timer) {\n clearTimeout(timer)\n timer = null\n }\n }\n\n const schedule = () => {\n clearTimer()\n timer = setTimeout(run, MIN_INTERVAL)\n }\n\n // All non-created/deleted events are treated as incremental updates.\n const run = async () => {\n clearTimer()\n if (processing || !projectName) return\n processing = true\n try {\n if (resyncFlag) {\n resyncFlag = false\n try {\n // get full folder list and update cache - done for created events\n const result = await dispatch(\n foldersApi.endpoints.getFolderList.initiate(\n // @ts-expect-error realtime flag to avoid toggling global isFetching for watchers\n { ...args, realtime: true },\n { forceRefetch: true },\n ),\n ).unwrap()\n updateCachedData(() => result)\n } catch {\n /* ignore */\n console.warn('Failed to refetch folder list on resync')\n } finally {\n pendingMessages.clear()\n }\n return\n }\n\n if (pendingMessages.size === 0) return\n const messages = Array.from(pendingMessages.values())\n pendingMessages.clear()\n type Patch = {\n folderId: string\n partial?: Record<string, any>\n attribMerge?: Record<string, any>\n updatedAt?: string\n }\n const patches: Patch[] = []\n await Promise.all(\n messages.map(async (message) => {\n try {\n const topic = message.topic\n const summary = message.summary || {}\n const folderId = summary.entityId\n if (!folderId) return\n const fieldName = topicFieldMap[topic]\n if (!fieldName) return\n\n // OPTIMIZATION: use value from summary if available (for root level fields)\n if (summary.value !== undefined && fieldName !== 'attrib') {\n let value = summary.value\n\n // Cast value to proper type\n if (fieldName === 'tags') {\n if (!Array.isArray(value)) {\n value = typeof value === 'string' ? value.split(',').filter(Boolean) : []\n }\n } else if (value !== null && typeof value !== 'string') {\n value = String(value)\n }\n\n const partial: Record<string, any> = {\n [fieldName]: value,\n updatedAt: message.updatedAt,\n }\n if (summary.parentId !== undefined) partial.parentId = summary.parentId\n patches.push({ folderId, partial })\n return\n }\n\n // Fallback: Fetch each event and apply incremental updates\n const eventId = message.id\n const event = await dispatch(\n eventsApi.endpoints.getEvent.initiate({ eventId }, { forceRefetch: true }),\n ).unwrap()\n const payload: any = event?.payload || {}\n const eventSummary: any = event?.summary || {}\n if (\n fieldName === 'attrib' &&\n payload?.newValue &&\n typeof payload.newValue === 'object'\n ) {\n patches.push({\n folderId,\n attribMerge: payload.newValue,\n updatedAt: event.updatedAt,\n })\n } else {\n const value = payload?.newValue\n if (value === undefined) return\n const partial: Record<string, any> = { updatedAt: event.updatedAt }\n partial[fieldName] = value\n // parentId might accompany some changes in summary\n if (eventSummary.parentId !== undefined)\n partial.parentId = eventSummary.parentId\n patches.push({ folderId, partial })\n }\n } catch {\n /* ignore single event errors */\n }\n }),\n )\n if (!patches.length) return\n updateCachedData((draft: any) => {\n if (!draft || !Array.isArray(draft.folders)) return\n patches.forEach((patch) => {\n const idx = draft.folders.findIndex((f: any) => f.id === patch.folderId)\n // if folder not found, skip\n if (idx === -1) return\n // apply patch to existing folder\n if (patch.attribMerge) {\n // merge attribs if attribMerge is provided\n draft.folders[idx].attrib = {\n ...(draft.folders[idx].attrib || {}),\n ...patch.attribMerge,\n }\n // update updatedAt if provided\n if (patch.updatedAt) draft.folders[idx].updatedAt = patch.updatedAt\n }\n if (patch.partial) {\n // apply partial update\n draft.folders[idx] = { ...draft.folders[idx], ...patch.partial }\n }\n })\n })\n } finally {\n processing = false\n // If new events came in while we were processing, schedule another run\n if (pendingMessages.size > 0 || resyncFlag) {\n schedule()\n }\n }\n }\n\n let unsubscribeThumbnails: (() => void) | undefined\n\n try {\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: any) => {\n if (!draft || !Array.isArray(draft.folders)) return\n messages.forEach((message) => {\n if (message.summary.entityType === 'folder' && message.summary.thumbnailHash) {\n const idx = draft.folders.findIndex(\n (f: any) => f.id === message.summary.entityId,\n )\n if (idx !== -1) {\n draft.folders[idx].thumbnailHash = message.summary.thumbnailHash\n }\n }\n })\n })\n },\n ['folder'],\n )\n\n const handlePubSub = (_topic: string, _message: any) => {\n const isMembership = _topic.endsWith('.created') || _topic.endsWith('.deleted')\n\n if (isMembership) {\n const eventType = _topic.endsWith('.created') ? 'created' : 'deleted'\n // Backward compatibility: If no patch filters are provided, always sync membership.\n // If patch filters ARE provided, only sync if 'created'/'deleted' tokens are present.\n if (patchFields && !patchFields.includes(eventType)) return\n\n resyncFlag = true\n } else {\n const fieldName = topicFieldMap[_topic]\n // Backward compatibility: If no patch filters are provided, allow all updates (that we have mapping for).\n // If patch filters ARE provided, only allow fields explicitly listed in the patch array.\n if (patchFields && (!fieldName || !patchFields.includes(fieldName))) {\n return\n }\n\n const eventId = _message?.id\n if (eventId) {\n pendingMessages.set(eventId, _message)\n }\n }\n\n schedule()\n }\n\n topics.forEach((t) => tokens.push(PubSub.subscribe(t, handlePubSub)))\n } catch {\n // silent\n }\n\n await cacheEntryRemoved\n tokens.forEach((t) => PubSub.unsubscribe(t))\n if (unsubscribeThumbnails) unsubscribeThumbnails()\n clearTimer()\n },\n },\n },\n})\n\nexport const { useGetFolderHierarchyQuery, useGetFolderListQuery } = enhancedApi\nexport { enhancedApi as foldersQueries }\n"],"names":["enhancedApi","foldersApi","result","_e","projectName","id","args","cacheDataLoaded","cacheEntryRemoved","updateCachedData","dispatch","patchFields","topicFieldMap","topics","tokens","MIN_INTERVAL","pendingMessages","resyncFlag","timer","processing","clearTimer","schedule","run","messages","patches","message","topic","summary","folderId","fieldName","value","partial","eventId","event","eventsApi","payload","eventSummary","draft","patch","idx","f","unsubscribeThumbnails","subscribeToThumbnailUpdates","handlePubSub","_topic","_message","eventType","t","PubSub","useGetFolderHierarchyQuery","useGetFolderListQuery"],"mappings":"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"}
1
+ {"version":3,"file":"getFolders.es.js","sources":["../../../../../../src/api/queries/folders/getFolders.ts"],"sourcesContent":["import { foldersApi } from '@shared/api/generated'\nimport { api as eventsApi } from '@shared/api/generated/events'\nimport { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\n\nconst enhancedApi = foldersApi.enhanceEndpoints({\n endpoints: {\n getFolderHierarchy: {\n providesTags: ['hierarchy'],\n },\n getFolderList: {\n providesTags: (result, _e, { projectName }) => [\n 'hierarchy',\n { type: 'folder', id: 'LIST' },\n ...(result?.folders.map(({ id }) => ({ type: 'folder', id })) || []),\n { type: 'folder', id: projectName },\n ],\n async onCacheEntryAdded(\n args,\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n const { projectName } = args || {}\n const patchFields = (args as any)?.patch as string[] | undefined\n\n const topicFieldMap: Record<string, string> = {\n 'entity.folder.label_changed': 'label',\n 'entity.folder.renamed': 'name',\n 'entity.folder.type_changed': 'folderType',\n 'entity.folder.status_changed': 'status',\n 'entity.folder.tags_changed': 'tags',\n 'entity.folder.attrib_changed': 'attrib',\n }\n\n const topics = ['entity.folder', 'entity.folder.created', 'entity.folder.deleted']\n const tokens: (string | undefined)[] = []\n\n // Simplified trailing debounce approach:\n // - Collect updated folder IDs for 2000ms window\n // - If a creation topic appears, perform one full list refetch (within debounce window)\n // - Otherwise, fetch each pending event and patch existing cache entries only\n const MIN_INTERVAL = 2000\n const pendingMessages = new Map<string, any>()\n let resyncFlag = false // full list refetch needed (created or deleted)\n let timer: ReturnType<typeof setTimeout> | null = null\n let processing = false\n\n const clearTimer = () => {\n if (timer) {\n clearTimeout(timer)\n timer = null\n }\n }\n\n const schedule = () => {\n clearTimer()\n timer = setTimeout(run, MIN_INTERVAL)\n }\n\n // All non-created/deleted events are treated as incremental updates.\n const run = async () => {\n clearTimer()\n if (processing || !projectName) return\n processing = true\n try {\n if (resyncFlag) {\n resyncFlag = false\n try {\n // get full folder list and update cache - done for created events\n const result = await dispatch(\n foldersApi.endpoints.getFolderList.initiate(\n // @ts-expect-error realtime flag to avoid toggling global isFetching for watchers\n { ...args, realtime: true },\n { forceRefetch: true },\n ),\n ).unwrap()\n updateCachedData(() => result)\n } catch {\n /* ignore */\n console.warn('Failed to refetch folder list on resync')\n } finally {\n pendingMessages.clear()\n }\n return\n }\n\n if (pendingMessages.size === 0) return\n const messages = Array.from(pendingMessages.values())\n pendingMessages.clear()\n type Patch = {\n folderId: string\n partial?: Record<string, any>\n attribMerge?: Record<string, any>\n updatedAt?: string\n }\n const patches: Patch[] = []\n await Promise.all(\n messages.map(async (message) => {\n try {\n const topic = message.topic\n const summary = message.summary || {}\n const folderId = summary.entityId\n if (!folderId) return\n const fieldName = topicFieldMap[topic]\n if (!fieldName) return\n\n // OPTIMIZATION: use value from summary if available (for root level fields)\n if (summary.value !== undefined && fieldName !== 'attrib') {\n let value = summary.value\n\n // Cast value to proper type\n if (fieldName === 'tags') {\n if (!Array.isArray(value)) {\n value = typeof value === 'string' ? value.split(',').filter(Boolean) : []\n }\n } else if (value !== null && typeof value !== 'string') {\n value = String(value)\n }\n\n const partial: Record<string, any> = {\n [fieldName]: value,\n updatedAt: message.updatedAt,\n }\n if (summary.parentId !== undefined) partial.parentId = summary.parentId\n patches.push({ folderId, partial })\n return\n }\n\n // Fallback: Fetch each event and apply incremental updates\n const eventId = message.id\n const event = await dispatch(\n eventsApi.endpoints.getEvent.initiate({ eventId }, { forceRefetch: true }),\n ).unwrap()\n const payload: any = event?.payload || {}\n const eventSummary: any = event?.summary || {}\n if (\n fieldName === 'attrib' &&\n payload?.newValue &&\n typeof payload.newValue === 'object'\n ) {\n patches.push({\n folderId,\n attribMerge: payload.newValue,\n updatedAt: event.updatedAt,\n })\n } else {\n const value = payload?.newValue\n if (value === undefined) return\n const partial: Record<string, any> = { updatedAt: event.updatedAt }\n partial[fieldName] = value\n // parentId might accompany some changes in summary\n if (eventSummary.parentId !== undefined)\n partial.parentId = eventSummary.parentId\n patches.push({ folderId, partial })\n }\n } catch {\n /* ignore single event errors */\n }\n }),\n )\n if (!patches.length) return\n updateCachedData((draft: any) => {\n if (!draft || !Array.isArray(draft.folders)) return\n patches.forEach((patch) => {\n const idx = draft.folders.findIndex((f: any) => f.id === patch.folderId)\n // if folder not found, skip\n if (idx === -1) return\n // apply patch to existing folder\n if (patch.attribMerge) {\n // merge attribs if attribMerge is provided\n draft.folders[idx].attrib = {\n ...(draft.folders[idx].attrib || {}),\n ...patch.attribMerge,\n }\n // update updatedAt if provided\n if (patch.updatedAt) draft.folders[idx].updatedAt = patch.updatedAt\n }\n if (patch.partial) {\n // apply partial update\n draft.folders[idx] = { ...draft.folders[idx], ...patch.partial }\n }\n })\n })\n } finally {\n processing = false\n // If new events came in while we were processing, schedule another run\n if (pendingMessages.size > 0 || resyncFlag) {\n schedule()\n }\n }\n }\n\n let unsubscribeThumbnails: (() => void) | undefined\n\n try {\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: any) => {\n if (!draft || !Array.isArray(draft.folders)) return\n messages.forEach((message) => {\n if (message.summary.entityType === 'folder' && message.summary.thumbnailHash) {\n const idx = draft.folders.findIndex(\n (f: any) => f.id === message.summary.entityId,\n )\n if (idx !== -1) {\n draft.folders[idx].thumbnailHash = message.summary.thumbnailHash\n }\n }\n })\n })\n },\n ['folder'],\n )\n\n const handlePubSub = (_topic: string, _message: any) => {\n const isMembership = _topic.endsWith('.created') || _topic.endsWith('.deleted')\n\n if (isMembership) {\n const eventType = _topic.endsWith('.created') ? 'created' : 'deleted'\n // Backward compatibility: If no patch filters are provided, always sync membership.\n // If patch filters ARE provided, only sync if 'created'/'deleted' tokens are present.\n if (patchFields && !patchFields.includes(eventType)) return\n\n resyncFlag = true\n } else {\n const fieldName = topicFieldMap[_topic]\n // Backward compatibility: If no patch filters are provided, allow all updates (that we have mapping for).\n // If patch filters ARE provided, only allow fields explicitly listed in the patch array.\n if (patchFields && (!fieldName || !patchFields.includes(fieldName))) {\n return\n }\n\n const eventId = _message?.id\n if (eventId) {\n pendingMessages.set(eventId, _message)\n }\n }\n\n schedule()\n }\n\n topics.forEach((t) => tokens.push(PubSub.subscribe(t, handlePubSub)))\n } catch {\n // silent\n }\n\n await cacheEntryRemoved\n tokens.forEach((t) => PubSub.unsubscribe(t))\n if (unsubscribeThumbnails) unsubscribeThumbnails()\n clearTimer()\n },\n },\n },\n})\n\nexport const { useGetFolderHierarchyQuery, useGetFolderListQuery } = enhancedApi\nexport { enhancedApi as foldersQueries }\n"],"names":["enhancedApi","foldersApi","result","_e","projectName","id","args","cacheDataLoaded","cacheEntryRemoved","updateCachedData","dispatch","patchFields","topicFieldMap","topics","tokens","MIN_INTERVAL","pendingMessages","resyncFlag","timer","processing","clearTimer","schedule","run","messages","patches","message","topic","summary","folderId","fieldName","value","partial","eventId","event","eventsApi","payload","eventSummary","draft","patch","idx","f","unsubscribeThumbnails","subscribeToThumbnailUpdates","handlePubSub","_topic","_message","eventType","t","PubSub","useGetFolderHierarchyQuery","useGetFolderListQuery"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");require("../../generated/graphql.cjs.js");const L=require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/dataImport.cjs.js");require("../../generated/desktop.cjs.js");require("../../generated/entityLists.cjs.js");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");const G=require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/projectFolders.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");const w=require("./utils/formatEntityLinks.cjs.js"),N=require("react-toastify");require("lodash");require("uuid");require("../actions/getActions.cjs.js");require("../activities/getActivities.cjs.js");require("../activities/updateActivities.cjs.js");require("../activities/updateReaction.cjs.js");require("../activities/getMentions.cjs.js");require("../activities/getCategories.cjs.js");require("../addons/getAddons.cjs.js");require("../addons/updateAddons.cjs.js");require("../attributes/getAttributes.cjs.js");require("../attributes/updateAttributes.cjs.js");require("../authentication/getAuthentication.cjs.js");require("../cloud/cloud.cjs.js");require("../columnStats/metricTargets.cjs.js");require("../config/getConfig.cjs.js");require("../config/updateConfig.cjs.js");require("../entities/getEntity.cjs.js");require("../entities/getEntityPanel.cjs.js");require("../overview/getOverview.cjs.js");require("../overview/updateOverview.cjs.js");require("../versions/getVersionsProducts.cjs.js");require("../entities/updateEntity.cjs.js");require("../entityLists/getLists.cjs.js");require("../entityLists/updateLists.cjs.js");require("../entityLists/getListsAttributes.cjs.js");require("../entityLists/listItemsColumnStats.cjs.js");require("../entityLists/updateListsAttributes.cjs.js");require("../entityLists/listFolders.cjs.js");require("../folders/getFolders.cjs.js");require("../folders/getFolderDeleteInfo.cjs.js");require("../grouping/getGrouping.cjs.js");require("./updateLinks.cjs.js");require("./getLinks.cjs.js");require("../permissions/getPermissions.cjs.js");require("../products/createProduct.cjs.js");require("../products/getFolderProducts.cjs.js");require("../project/getProject.cjs.js");require("../project/updateProject.cjs.js");require("../projectFolders/projectFolders.cjs.js");require("../review/getReview.cjs.js");require("../review/updateReview.cjs.js");require("../share/share.cjs.js");require("../system/getSystem.cjs.js");require("../tasks/getTasks.cjs.js");require("../tasks/updateTasks.cjs.js");require("../teams/getTeams.cjs.js");require("../userDashboard/getUserDashboard.cjs.js");require("../users/getUsers.cjs.js");require("../users/updateUsers.cjs.js");require("../users/guests.cjs.js");require("../versions/updateVersions.cjs.js");require("../views/getViews.cjs.js");require("../views/updateViews.cjs.js");require("../watchers/getWatchers.cjs.js");require("../uris/getUris.cjs.js");const R=require("../../../util/pubsub.cjs.js"),E={folder:"GetFoldersLinks",task:"GetTasksLinks",product:"GetProductsLinks",version:"GetVersionsLinks",representation:"GetRepresentationsLinks",workfile:"GetWorkfilesLinks"},S={folder:"folders",task:"tasks",product:"products",version:"versions",representation:"representations",workfile:"workfiles"},$=G.api.injectEndpoints({endpoints:j=>({getEntityLinks:j.query({queryFn:async({projectName:r,entityIds:u,entityType:t},{getState:i,dispatch:o,queryCacheKey:m,forced:b})=>{try{const d=i(),c=JSON.stringify({projectName:r,entityType:t}),h=d.restApi?.queries?.[m||`getEntityLinks(${c})`]?.data||[],f=new Set(h.map(n=>n.id)),y=u.filter(n=>!f?.has(n)||b);if(y.length===0)return{data:h};const k=E[t],p=S[t];return{data:(await o(L.api.endpoints[k].initiate({projectName:r,entityIds:y},{forceRefetch:!0})).unwrap()).project?.[p]?.edges?.map(({node:n})=>{const q=n.links.edges?.filter(e=>!e?.node)||[];return q.length>0&&console.log(`[RESTRICTED LINKS] Entity ${n.id} (${n.name}) has ${q.length} restricted link(s):`,q.map(e=>({linkId:e?.id,linkType:e?.linkType,direction:e?.direction,entityType:e?.entityType,nodeIsNull:!e?.node}))),{id:n.id,links:n.links.edges?.map(e=>e?.node?{...e,node:{id:e.node.id,name:e.node.name,label:w.formatEntityLabel(e.node),parents:e.node.parents||[],subType:"subType"in e.node?e.node.subType:void 0},isRestricted:!1}:{...e,node:null,isRestricted:!0})||[]}})||[]}}catch(d){return console.error(`Error in getEntityLinks queryFn for ${t}:`,d),N.toast.error(`Error fetching ${t} links`),{error:{status:"FETCH_ERROR",error:d.message}}}},serializeQueryArgs:({queryArgs:r})=>({projectName:r.projectName,entityType:r.entityType}),forceRefetch:({currentArg:r,previousArg:u})=>{if(!r||!u)return!0;const t=new Set(r.entityIds),i=new Set(u.entityIds);if(t.size!==i.size)return!0;for(const o of t)if(!i.has(o))return!0;return!1},merge:(r,u)=>{if(!r)return u;const t=new Map(r.map(i=>[i.id,i]));for(const i of u)t.set(i.id,i);r.length=0,r.push(...t.values())},providesTags:(r,u,t)=>r?[...r.flatMap(i=>i.links.filter(o=>o.node!==null).map(o=>({type:"link",id:o.node.id}))),{type:"link",id:`${t.projectName}-${t.entityType}`}]:[{type:"link",id:`${t.projectName}-${t.entityType}`}],async onCacheEntryAdded({projectName:r,entityIds:u,entityType:t},{cacheDataLoaded:i,cacheEntryRemoved:o,updateCachedData:m,dispatch:b}){let d;const c=new Set,I=100,h=500;let f=!1;const y=()=>{f||(f=!0,setTimeout(k,h))},k=async()=>{if(f=!1,!c.size)return;const p=Array.from(c).slice(0,I);p.forEach(a=>c.delete(a));try{const a=E[t],l=S[t],q=(await b(L.api.endpoints[a].initiate({projectName:r,entityIds:p},{forceRefetch:!0})).unwrap()).project?.[l]?.edges?.map(({node:e})=>({id:e.id,links:e.links.edges?.map(s=>s?.node?{...s,node:{id:s.node.id,name:s.node.name,label:w.formatEntityLabel(s.node),parents:s.node.parents||[],subType:"subType"in s.node?s.node.subType:void 0},isRestricted:!1}:{...s,node:null,isRestricted:!0})||[]}))||[];m(e=>{for(const s of q){const T=e.findIndex(v=>v.id===s.id);T>-1?e[T]=s:e.push(s)}})}catch(a){console.error("Realtime link batch update failed",a)}finally{c.size&&y()}};try{await i;const p=async(a,l)=>{if(!a.startsWith("link.created")&&!a.startsWith("link.deleted")||l?.project!==r)return;const n=l?.summary?.inputId,q=l?.summary?.outputId;!n&&!q||(n&&c.add(n),q&&c.add(q),y())};d=R.subscribe("link",p)}catch{}await o,d&&R.unsubscribe(d)}})})}),{useGetEntityLinksQuery:P}=$;exports.entityLinksApi=$;exports.useGetEntityLinksQuery=P;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");require("../../generated/graphql.cjs.js");const L=require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/dataImport.cjs.js");require("../../generated/desktop.cjs.js");require("../../generated/entityLists.cjs.js");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");const G=require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/projectFolders.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");const w=require("./utils/formatEntityLinks.cjs.js"),N=require("react-toastify");require("lodash");require("uuid");require("../actions/getActions.cjs.js");require("../activities/getActivities.cjs.js");require("../activities/updateReaction.cjs.js");require("../activities/getMentions.cjs.js");require("../activities/getCategories.cjs.js");require("../addons/getAddons.cjs.js");require("../addons/updateAddons.cjs.js");require("../attributes/getAttributes.cjs.js");require("../attributes/updateAttributes.cjs.js");require("../authentication/getAuthentication.cjs.js");require("../bundles/getBundles.cjs.js");require("../bundles/updateBundles.cjs.js");require("../cloud/cloud.cjs.js");require("../columnStats/metricTargets.cjs.js");require("../columnStats/groupCounts.cjs.js");require("../config/getConfig.cjs.js");require("../config/updateConfig.cjs.js");require("../entities/getEntity.cjs.js");require("../entities/getEntityPanel.cjs.js");require("../overview/getOverview.cjs.js");require("../overview/updateOverview.cjs.js");require("../versions/getVersionsProducts.cjs.js");require("../entities/updateEntity.cjs.js");require("../entityLists/getLists.cjs.js");require("../entityLists/updateLists.cjs.js");require("../entityLists/getListsAttributes.cjs.js");require("../entityLists/listItemsColumnStats.cjs.js");require("../entityLists/updateListsAttributes.cjs.js");require("../entityLists/listFolders.cjs.js");require("../folders/getFolders.cjs.js");require("../folders/getFolderDeleteInfo.cjs.js");require("../grouping/getGrouping.cjs.js");require("./updateLinks.cjs.js");require("./getLinks.cjs.js");require("../permissions/getPermissions.cjs.js");require("../products/createProduct.cjs.js");require("../products/getFolderProducts.cjs.js");require("../project/getProject.cjs.js");require("../project/updateProject.cjs.js");require("../projectFolders/projectFolders.cjs.js");require("../review/getReview.cjs.js");require("../review/updateReview.cjs.js");require("../share/share.cjs.js");require("../system/getSystem.cjs.js");require("../tasks/getTasks.cjs.js");require("../tasks/updateTasks.cjs.js");require("../teams/getTeams.cjs.js");require("../userDashboard/getUserDashboard.cjs.js");require("../users/getUsers.cjs.js");require("../users/updateUsers.cjs.js");require("../users/guests.cjs.js");require("../versions/updateVersions.cjs.js");require("../views/getViews.cjs.js");require("../views/updateViews.cjs.js");require("../watchers/getWatchers.cjs.js");require("../uris/getUris.cjs.js");const R=require("../../../util/pubsub.cjs.js"),E={folder:"GetFoldersLinks",task:"GetTasksLinks",product:"GetProductsLinks",version:"GetVersionsLinks",representation:"GetRepresentationsLinks",workfile:"GetWorkfilesLinks"},S={folder:"folders",task:"tasks",product:"products",version:"versions",representation:"representations",workfile:"workfiles"},$=G.api.injectEndpoints({endpoints:j=>({getEntityLinks:j.query({queryFn:async({projectName:r,entityIds:u,entityType:i},{getState:t,dispatch:o,queryCacheKey:m,forced:b})=>{try{const d=t(),c=JSON.stringify({projectName:r,entityType:i}),h=d.restApi?.queries?.[m||`getEntityLinks(${c})`]?.data||[],f=new Set(h.map(n=>n.id)),y=u.filter(n=>!f?.has(n)||b);if(y.length===0)return{data:h};const k=E[i],p=S[i];return{data:(await o(L.api.endpoints[k].initiate({projectName:r,entityIds:y},{forceRefetch:!0})).unwrap()).project?.[p]?.edges?.map(({node:n})=>{const q=n.links.edges?.filter(e=>!e?.node)||[];return q.length>0&&console.log(`[RESTRICTED LINKS] Entity ${n.id} (${n.name}) has ${q.length} restricted link(s):`,q.map(e=>({linkId:e?.id,linkType:e?.linkType,direction:e?.direction,entityType:e?.entityType,nodeIsNull:!e?.node}))),{id:n.id,links:n.links.edges?.map(e=>e?.node?{...e,node:{id:e.node.id,name:e.node.name,label:w.formatEntityLabel(e.node),parents:e.node.parents||[],subType:"subType"in e.node?e.node.subType:void 0},isRestricted:!1}:{...e,node:null,isRestricted:!0})||[]}})||[]}}catch(d){return console.error(`Error in getEntityLinks queryFn for ${i}:`,d),N.toast.error(`Error fetching ${i} links`),{error:{status:"FETCH_ERROR",error:d.message}}}},serializeQueryArgs:({queryArgs:r})=>({projectName:r.projectName,entityType:r.entityType}),forceRefetch:({currentArg:r,previousArg:u})=>{if(!r||!u)return!0;const i=new Set(r.entityIds),t=new Set(u.entityIds);if(i.size!==t.size)return!0;for(const o of i)if(!t.has(o))return!0;return!1},merge:(r,u)=>{if(!r)return u;const i=new Map(r.map(t=>[t.id,t]));for(const t of u)i.set(t.id,t);r.length=0,r.push(...i.values())},providesTags:(r,u,i)=>r?[...r.flatMap(t=>t.links.filter(o=>o.node!==null).map(o=>({type:"link",id:o.node.id}))),{type:"link",id:`${i.projectName}-${i.entityType}`}]:[{type:"link",id:`${i.projectName}-${i.entityType}`}],async onCacheEntryAdded({projectName:r,entityIds:u,entityType:i},{cacheDataLoaded:t,cacheEntryRemoved:o,updateCachedData:m,dispatch:b}){let d;const c=new Set,I=100,h=500;let f=!1;const y=()=>{f||(f=!0,setTimeout(k,h))},k=async()=>{if(f=!1,!c.size)return;const p=Array.from(c).slice(0,I);p.forEach(a=>c.delete(a));try{const a=E[i],l=S[i],q=(await b(L.api.endpoints[a].initiate({projectName:r,entityIds:p},{forceRefetch:!0})).unwrap()).project?.[l]?.edges?.map(({node:e})=>({id:e.id,links:e.links.edges?.map(s=>s?.node?{...s,node:{id:s.node.id,name:s.node.name,label:w.formatEntityLabel(s.node),parents:s.node.parents||[],subType:"subType"in s.node?s.node.subType:void 0},isRestricted:!1}:{...s,node:null,isRestricted:!0})||[]}))||[];m(e=>{for(const s of q){const T=e.findIndex(v=>v.id===s.id);T>-1?e[T]=s:e.push(s)}})}catch(a){console.error("Realtime link batch update failed",a)}finally{c.size&&y()}};try{await t;const p=async(a,l)=>{if(!a.startsWith("link.created")&&!a.startsWith("link.deleted")||l?.project!==r)return;const n=l?.summary?.inputId,q=l?.summary?.outputId;!n&&!q||(n&&c.add(n),q&&c.add(q),y())};d=R.subscribe("link",p)}catch{}await o,d&&R.unsubscribe(d)}})})}),{useGetEntityLinksQuery:P}=$;exports.entityLinksApi=$;exports.useGetEntityLinksQuery=P;
2
2
  //# sourceMappingURL=getEntityLinks.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getEntityLinks.cjs.js","sources":["../../../../../../src/api/queries/links/getEntityLinks.ts"],"sourcesContent":["import { FetchBaseQueryError } from '@reduxjs/toolkit/query'\nimport {\n GetFoldersLinksQuery,\n GetTasksLinksQuery,\n GetProductsLinksQuery,\n GetVersionsLinksQuery,\n GetRepresentationsLinksQuery,\n GetWorkfilesLinksQuery,\n gqlLinksApi,\n foldersApi,\n} from '@shared/api/generated'\nimport { formatEntityLabel } from './utils/formatEntityLinks'\nimport { toast } from 'react-toastify'\nimport { PubSub } from '@shared/util'\n\n/**\n * Custom queryFn for fetching entity links with optimized caching behavior.\n *\n * Key features:\n * 1. Single cache per project and entity type - different entityIds combinations don't create new caches\n * 2. Skips fetching entities that are already cached\n * 3. Force refetch when entityIds change\n * 4. Merges new entities into cache without duplicates\n * 5. Supports all entity types: folders, tasks, products, versions, representations, workfiles\n */\n\n// Define the arguments for the query\nexport type GetEntityLinksArgs = {\n projectName: string\n entityIds: string[]\n entityType: 'folder' | 'task' | 'product' | 'version' | 'representation' | 'workfile'\n}\n\n// Define link types for each entity\nexport type FolderLink =\n GetFoldersLinksQuery['project']['folders']['edges'][0]['node']['links']['edges'][0]\nexport type TaskLink =\n GetTasksLinksQuery['project']['tasks']['edges'][0]['node']['links']['edges'][0]\nexport type ProductLink =\n GetProductsLinksQuery['project']['products']['edges'][0]['node']['links']['edges'][0]\nexport type VersionLink =\n GetVersionsLinksQuery['project']['versions']['edges'][0]['node']['links']['edges'][0]\nexport type RepresentationLink =\n GetRepresentationsLinksQuery['project']['representations']['edges'][0]['node']['links']['edges'][0]\nexport type WorkfileLink =\n GetWorkfilesLinksQuery['project']['workfiles']['edges'][0]['node']['links']['edges'][0]\n\nexport type EntityLinkQuery =\n | FolderLink\n | TaskLink\n | ProductLink\n | VersionLink\n | RepresentationLink\n | WorkfileLink\nexport type EntityLink = Pick<EntityLinkQuery, 'direction' | 'entityType' | 'id' | 'linkType'> & {\n node: Pick<EntityLinkQuery['node'], 'name' | 'id'> & {\n label?: string | null\n parents: string[]\n subType: string | undefined\n } | null\n isRestricted?: boolean // flag to indicate if this link is restricted\n}\n\n// Define the result type for the query - simplified without edges wrapper\nexport type EntityWithLinks = {\n id: string\n links: EntityLink[]\n}\n\nexport type GetEntityLinksResult = EntityWithLinks[]\n\n// Map entity types to their corresponding GraphQL endpoints\nconst entityEndpoints = {\n folder: 'GetFoldersLinks',\n task: 'GetTasksLinks',\n product: 'GetProductsLinks',\n version: 'GetVersionsLinks',\n representation: 'GetRepresentationsLinks',\n workfile: 'GetWorkfilesLinks',\n} as const\n\n// Map entity types to their result path in the GraphQL response\nconst entityResultPaths = {\n folder: 'folders',\n task: 'tasks',\n product: 'products',\n version: 'versions',\n representation: 'representations',\n workfile: 'workfiles',\n} as const\n\nconst injectedQueries = foldersApi.injectEndpoints({\n endpoints: (build) => ({\n getEntityLinks: build.query<GetEntityLinksResult, GetEntityLinksArgs>({\n queryFn: async (\n { projectName, entityIds, entityType },\n { getState, dispatch, queryCacheKey, forced },\n ) => {\n try {\n // Get current state to access cached data\n const state = getState() as any\n const cacheKey = JSON.stringify({ projectName, entityType })\n\n // Access the cache entry for this project and entity type\n const cacheEntry =\n state.restApi?.queries?.[queryCacheKey || `getEntityLinks(${cacheKey})`]\n const cachedData = cacheEntry?.data || []\n\n // 1. When fetching new data for entityIds, we should skip entities that are already in the cache.\n const cachedEntityIds = new Set(cachedData.map((entity: EntityWithLinks) => entity.id))\n const entityIdsToFetch = entityIds.filter((id) => !cachedEntityIds?.has(id) || forced)\n\n // If all entities are already cached, return the cached data\n if (entityIdsToFetch.length === 0) {\n return { data: cachedData }\n }\n\n // Get the appropriate endpoint and parameter names\n const endpoint = entityEndpoints[entityType]\n const resultPath = entityResultPaths[entityType]\n\n // Fetch only the entities that aren't already cached\n const result = await dispatch(\n (gqlLinksApi.endpoints as any)[endpoint].initiate(\n { projectName, entityIds: entityIdsToFetch },\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const newEntities =\n result.project?.[resultPath]?.edges?.map(({ node }: { node: any }) => {\n // Log restricted links\n const restrictedLinks = node.links.edges?.filter((e: EntityLinkQuery | null) => !e?.node) || []\n if (restrictedLinks.length > 0) {\n console.log(`[RESTRICTED LINKS] Entity ${node.id} (${node.name}) has ${restrictedLinks.length} restricted link(s):`,\n restrictedLinks.map((link: any) => ({\n linkId: link?.id,\n linkType: link?.linkType,\n direction: link?.direction,\n entityType: link?.entityType,\n nodeIsNull: !link?.node\n }))\n )\n }\n\n return {\n id: node.id,\n links:\n node.links.edges\n ?.map((linkEdge: EntityLinkQuery | null) => {\n if (!linkEdge?.node) {\n // Restricted link - node is null\n return {\n ...linkEdge,\n node: null,\n isRestricted: true,\n } as EntityLink\n }\n // Normal link\n return {\n ...linkEdge,\n node: {\n id: linkEdge.node.id,\n name: linkEdge.node.name,\n label: formatEntityLabel(linkEdge.node),\n parents: linkEdge.node.parents || [],\n subType: 'subType' in linkEdge.node ? linkEdge.node.subType : undefined,\n },\n isRestricted: false,\n } as EntityLink\n }) || [], // Flatten the edges structure\n }\n }) || []\n\n // Return the new entities - the merge function will handle combining with existing cache\n return { data: newEntities }\n } catch (error: any) {\n console.error(`Error in getEntityLinks queryFn for ${entityType}:`, error)\n toast.error(`Error fetching ${entityType} links`)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n // 2. We should not create new caches when the entityIds argument changes.\n serializeQueryArgs: ({ queryArgs }) => {\n // Use only projectName and entityType for the cache key, ignoring entityIds\n return { projectName: queryArgs.projectName, entityType: queryArgs.entityType }\n },\n // 3. We should force a refetch every time the entityIds changes.\n forceRefetch: ({ currentArg, previousArg }) => {\n // Force refetch if entityIds array is different\n if (!currentArg || !previousArg) return true\n\n // Compare arrays by converting to sets\n const currentIds = new Set(currentArg.entityIds)\n const previousIds = new Set(previousArg.entityIds)\n\n if (currentIds.size !== previousIds.size) return true\n\n // Check if any IDs are different\n for (const id of currentIds) {\n if (!previousIds.has(id)) return true\n }\n\n return false\n },\n // 4. We should merge new entities into the cache ensuring there are no duplicates.\n merge: (currentCache, newItems) => {\n if (!currentCache) return newItems\n\n const cacheMap = new Map(currentCache.map((item) => [item.id, item]))\n for (const newItem of newItems) {\n cacheMap.set(newItem.id, newItem) // Overwrite if exists, add if not\n }\n // Update currentCache in-place\n currentCache.length = 0\n currentCache.push(...cacheMap.values())\n },\n // Provide tags for potential invalidation\n providesTags: (result, error, arg) =>\n result\n ? [\n ...result.flatMap((entity) =>\n entity.links\n .filter((link) => link.node !== null)\n .map((link) => ({ type: 'link', id: link.node!.id })),\n ),\n { type: 'link', id: `${arg.projectName}-${arg.entityType}` },\n ]\n : [{ type: 'link', id: `${arg.projectName}-${arg.entityType}` }],\n // Subscribe to link.created and link.deleted WebSocket events\n async onCacheEntryAdded(\n { projectName, entityIds, entityType },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n let token: any\n const pendingEntityIds = new Set<string>()\n const MAX_BATCH = 100\n const INTERVAL = 500\n let scheduled = false\n\n const schedule = () => {\n if (scheduled) return\n scheduled = true\n setTimeout(flush, INTERVAL)\n }\n\n const flush = async () => {\n scheduled = false\n if (!pendingEntityIds.size) return\n const batchIds = Array.from(pendingEntityIds).slice(0, MAX_BATCH)\n batchIds.forEach((id) => pendingEntityIds.delete(id))\n\n try {\n // Get the appropriate endpoint and parameter names\n const endpoint = entityEndpoints[entityType]\n const resultPath = entityResultPaths[entityType]\n\n // Fetch fresh data for the affected entities\n const result = await dispatch(\n (gqlLinksApi.endpoints as any)[endpoint].initiate(\n { projectName, entityIds: batchIds },\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const updatedEntities =\n result.project?.[resultPath]?.edges?.map(({ node }: { node: any }) => {\n\n return {\n id: node.id,\n links:\n node.links.edges\n ?.map((linkEdge: EntityLinkQuery | null) => {\n if (!linkEdge?.node) {\n // Restricted link - node is null\n return {\n ...linkEdge,\n node: null,\n isRestricted: true,\n } as EntityLink\n }\n // Normal link\n return {\n ...linkEdge,\n node: {\n id: linkEdge.node.id,\n name: linkEdge.node.name,\n label: formatEntityLabel(linkEdge.node),\n parents: linkEdge.node.parents || [],\n subType: 'subType' in linkEdge.node ? linkEdge.node.subType : undefined,\n },\n isRestricted: false,\n } as EntityLink\n }) || [],\n }\n }) || []\n\n updateCachedData((draft: EntityWithLinks[]) => {\n for (const updatedEntity of updatedEntities) {\n const idx = draft.findIndex((entity) => entity.id === updatedEntity.id)\n if (idx > -1) {\n // Update existing entity's links\n draft[idx] = updatedEntity\n } else {\n // Add new entity if not in cache\n draft.push(updatedEntity)\n }\n }\n })\n } catch (err) {\n console.error('Realtime link batch update failed', err)\n } finally {\n if (pendingEntityIds.size) schedule()\n }\n }\n\n try {\n await cacheDataLoaded\n\n const handlePubSub = async (_topic: string, message: any) => {\n // Only react to link.created and link.deleted events for this project\n if (!_topic.startsWith('link.created') && !_topic.startsWith('link.deleted')) return\n if (message?.project !== projectName) return\n\n // Link events have inputId and outputId in the summary (both entities affected by the link)\n const inputId = message?.summary?.inputId\n const outputId = message?.summary?.outputId\n if (!inputId && !outputId) return\n\n // Add both entities to pending list since both are affected by the link change\n if (inputId) pendingEntityIds.add(inputId)\n if (outputId) pendingEntityIds.add(outputId)\n schedule()\n }\n\n // Subscribe to link events\n // NOTE: backend emits topics like 'link.created' and 'link.deleted'.\n // PubSub supports prefix matching when subscribing.\n token = PubSub.subscribe('link', handlePubSub)\n } catch (e) {\n // cache entry removed before loaded - ignore\n }\n\n await cacheEntryRemoved\n if (token) PubSub.unsubscribe(token)\n },\n }),\n }),\n})\n\nexport const { useGetEntityLinksQuery } = injectedQueries\nexport { injectedQueries as entityLinksApi }\n"],"names":["entityEndpoints","entityResultPaths","injectedQueries","foldersApi","build","projectName","entityIds","entityType","getState","dispatch","queryCacheKey","forced","state","cacheKey","cachedData","cachedEntityIds","entity","entityIdsToFetch","id","endpoint","resultPath","gqlLinksApi","node","restrictedLinks","link","linkEdge","formatEntityLabel","error","toast","queryArgs","currentArg","previousArg","currentIds","previousIds","currentCache","newItems","cacheMap","item","newItem","result","arg","cacheDataLoaded","cacheEntryRemoved","updateCachedData","token","pendingEntityIds","MAX_BATCH","INTERVAL","scheduled","schedule","flush","batchIds","updatedEntities","draft","updatedEntity","idx","err","handlePubSub","_topic","message","inputId","outputId","PubSub","useGetEntityLinksQuery"],"mappings":"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"}
1
+ {"version":3,"file":"getEntityLinks.cjs.js","sources":["../../../../../../src/api/queries/links/getEntityLinks.ts"],"sourcesContent":["import { FetchBaseQueryError } from '@reduxjs/toolkit/query'\nimport {\n GetFoldersLinksQuery,\n GetTasksLinksQuery,\n GetProductsLinksQuery,\n GetVersionsLinksQuery,\n GetRepresentationsLinksQuery,\n GetWorkfilesLinksQuery,\n gqlLinksApi,\n foldersApi,\n} from '@shared/api/generated'\nimport { formatEntityLabel } from './utils/formatEntityLinks'\nimport { toast } from 'react-toastify'\nimport { PubSub } from '@shared/util'\n\n/**\n * Custom queryFn for fetching entity links with optimized caching behavior.\n *\n * Key features:\n * 1. Single cache per project and entity type - different entityIds combinations don't create new caches\n * 2. Skips fetching entities that are already cached\n * 3. Force refetch when entityIds change\n * 4. Merges new entities into cache without duplicates\n * 5. Supports all entity types: folders, tasks, products, versions, representations, workfiles\n */\n\n// Define the arguments for the query\nexport type GetEntityLinksArgs = {\n projectName: string\n entityIds: string[]\n entityType: 'folder' | 'task' | 'product' | 'version' | 'representation' | 'workfile'\n}\n\n// Define link types for each entity\nexport type FolderLink =\n GetFoldersLinksQuery['project']['folders']['edges'][0]['node']['links']['edges'][0]\nexport type TaskLink =\n GetTasksLinksQuery['project']['tasks']['edges'][0]['node']['links']['edges'][0]\nexport type ProductLink =\n GetProductsLinksQuery['project']['products']['edges'][0]['node']['links']['edges'][0]\nexport type VersionLink =\n GetVersionsLinksQuery['project']['versions']['edges'][0]['node']['links']['edges'][0]\nexport type RepresentationLink =\n GetRepresentationsLinksQuery['project']['representations']['edges'][0]['node']['links']['edges'][0]\nexport type WorkfileLink =\n GetWorkfilesLinksQuery['project']['workfiles']['edges'][0]['node']['links']['edges'][0]\n\nexport type EntityLinkQuery =\n | FolderLink\n | TaskLink\n | ProductLink\n | VersionLink\n | RepresentationLink\n | WorkfileLink\nexport type EntityLink = Pick<EntityLinkQuery, 'direction' | 'entityType' | 'id' | 'linkType'> & {\n node: Pick<EntityLinkQuery['node'], 'name' | 'id'> & {\n label?: string | null\n parents: string[]\n subType: string | undefined\n } | null\n isRestricted?: boolean // flag to indicate if this link is restricted\n}\n\n// Define the result type for the query - simplified without edges wrapper\nexport type EntityWithLinks = {\n id: string\n links: EntityLink[]\n}\n\nexport type GetEntityLinksResult = EntityWithLinks[]\n\n// Map entity types to their corresponding GraphQL endpoints\nconst entityEndpoints = {\n folder: 'GetFoldersLinks',\n task: 'GetTasksLinks',\n product: 'GetProductsLinks',\n version: 'GetVersionsLinks',\n representation: 'GetRepresentationsLinks',\n workfile: 'GetWorkfilesLinks',\n} as const\n\n// Map entity types to their result path in the GraphQL response\nconst entityResultPaths = {\n folder: 'folders',\n task: 'tasks',\n product: 'products',\n version: 'versions',\n representation: 'representations',\n workfile: 'workfiles',\n} as const\n\nconst injectedQueries = foldersApi.injectEndpoints({\n endpoints: (build) => ({\n getEntityLinks: build.query<GetEntityLinksResult, GetEntityLinksArgs>({\n queryFn: async (\n { projectName, entityIds, entityType },\n { getState, dispatch, queryCacheKey, forced },\n ) => {\n try {\n // Get current state to access cached data\n const state = getState() as any\n const cacheKey = JSON.stringify({ projectName, entityType })\n\n // Access the cache entry for this project and entity type\n const cacheEntry =\n state.restApi?.queries?.[queryCacheKey || `getEntityLinks(${cacheKey})`]\n const cachedData = cacheEntry?.data || []\n\n // 1. When fetching new data for entityIds, we should skip entities that are already in the cache.\n const cachedEntityIds = new Set(cachedData.map((entity: EntityWithLinks) => entity.id))\n const entityIdsToFetch = entityIds.filter((id) => !cachedEntityIds?.has(id) || forced)\n\n // If all entities are already cached, return the cached data\n if (entityIdsToFetch.length === 0) {\n return { data: cachedData }\n }\n\n // Get the appropriate endpoint and parameter names\n const endpoint = entityEndpoints[entityType]\n const resultPath = entityResultPaths[entityType]\n\n // Fetch only the entities that aren't already cached\n const result = await dispatch(\n (gqlLinksApi.endpoints as any)[endpoint].initiate(\n { projectName, entityIds: entityIdsToFetch },\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const newEntities =\n result.project?.[resultPath]?.edges?.map(({ node }: { node: any }) => {\n // Log restricted links\n const restrictedLinks = node.links.edges?.filter((e: EntityLinkQuery | null) => !e?.node) || []\n if (restrictedLinks.length > 0) {\n console.log(`[RESTRICTED LINKS] Entity ${node.id} (${node.name}) has ${restrictedLinks.length} restricted link(s):`,\n restrictedLinks.map((link: any) => ({\n linkId: link?.id,\n linkType: link?.linkType,\n direction: link?.direction,\n entityType: link?.entityType,\n nodeIsNull: !link?.node\n }))\n )\n }\n\n return {\n id: node.id,\n links:\n node.links.edges\n ?.map((linkEdge: EntityLinkQuery | null) => {\n if (!linkEdge?.node) {\n // Restricted link - node is null\n return {\n ...linkEdge,\n node: null,\n isRestricted: true,\n } as EntityLink\n }\n // Normal link\n return {\n ...linkEdge,\n node: {\n id: linkEdge.node.id,\n name: linkEdge.node.name,\n label: formatEntityLabel(linkEdge.node),\n parents: linkEdge.node.parents || [],\n subType: 'subType' in linkEdge.node ? linkEdge.node.subType : undefined,\n },\n isRestricted: false,\n } as EntityLink\n }) || [], // Flatten the edges structure\n }\n }) || []\n\n // Return the new entities - the merge function will handle combining with existing cache\n return { data: newEntities }\n } catch (error: any) {\n console.error(`Error in getEntityLinks queryFn for ${entityType}:`, error)\n toast.error(`Error fetching ${entityType} links`)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n // 2. We should not create new caches when the entityIds argument changes.\n serializeQueryArgs: ({ queryArgs }) => {\n // Use only projectName and entityType for the cache key, ignoring entityIds\n return { projectName: queryArgs.projectName, entityType: queryArgs.entityType }\n },\n // 3. We should force a refetch every time the entityIds changes.\n forceRefetch: ({ currentArg, previousArg }) => {\n // Force refetch if entityIds array is different\n if (!currentArg || !previousArg) return true\n\n // Compare arrays by converting to sets\n const currentIds = new Set(currentArg.entityIds)\n const previousIds = new Set(previousArg.entityIds)\n\n if (currentIds.size !== previousIds.size) return true\n\n // Check if any IDs are different\n for (const id of currentIds) {\n if (!previousIds.has(id)) return true\n }\n\n return false\n },\n // 4. We should merge new entities into the cache ensuring there are no duplicates.\n merge: (currentCache, newItems) => {\n if (!currentCache) return newItems\n\n const cacheMap = new Map(currentCache.map((item) => [item.id, item]))\n for (const newItem of newItems) {\n cacheMap.set(newItem.id, newItem) // Overwrite if exists, add if not\n }\n // Update currentCache in-place\n currentCache.length = 0\n currentCache.push(...cacheMap.values())\n },\n // Provide tags for potential invalidation\n providesTags: (result, error, arg) =>\n result\n ? [\n ...result.flatMap((entity) =>\n entity.links\n .filter((link) => link.node !== null)\n .map((link) => ({ type: 'link', id: link.node!.id })),\n ),\n { type: 'link', id: `${arg.projectName}-${arg.entityType}` },\n ]\n : [{ type: 'link', id: `${arg.projectName}-${arg.entityType}` }],\n // Subscribe to link.created and link.deleted WebSocket events\n async onCacheEntryAdded(\n { projectName, entityIds, entityType },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n let token: any\n const pendingEntityIds = new Set<string>()\n const MAX_BATCH = 100\n const INTERVAL = 500\n let scheduled = false\n\n const schedule = () => {\n if (scheduled) return\n scheduled = true\n setTimeout(flush, INTERVAL)\n }\n\n const flush = async () => {\n scheduled = false\n if (!pendingEntityIds.size) return\n const batchIds = Array.from(pendingEntityIds).slice(0, MAX_BATCH)\n batchIds.forEach((id) => pendingEntityIds.delete(id))\n\n try {\n // Get the appropriate endpoint and parameter names\n const endpoint = entityEndpoints[entityType]\n const resultPath = entityResultPaths[entityType]\n\n // Fetch fresh data for the affected entities\n const result = await dispatch(\n (gqlLinksApi.endpoints as any)[endpoint].initiate(\n { projectName, entityIds: batchIds },\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const updatedEntities =\n result.project?.[resultPath]?.edges?.map(({ node }: { node: any }) => {\n\n return {\n id: node.id,\n links:\n node.links.edges\n ?.map((linkEdge: EntityLinkQuery | null) => {\n if (!linkEdge?.node) {\n // Restricted link - node is null\n return {\n ...linkEdge,\n node: null,\n isRestricted: true,\n } as EntityLink\n }\n // Normal link\n return {\n ...linkEdge,\n node: {\n id: linkEdge.node.id,\n name: linkEdge.node.name,\n label: formatEntityLabel(linkEdge.node),\n parents: linkEdge.node.parents || [],\n subType: 'subType' in linkEdge.node ? linkEdge.node.subType : undefined,\n },\n isRestricted: false,\n } as EntityLink\n }) || [],\n }\n }) || []\n\n updateCachedData((draft: EntityWithLinks[]) => {\n for (const updatedEntity of updatedEntities) {\n const idx = draft.findIndex((entity) => entity.id === updatedEntity.id)\n if (idx > -1) {\n // Update existing entity's links\n draft[idx] = updatedEntity\n } else {\n // Add new entity if not in cache\n draft.push(updatedEntity)\n }\n }\n })\n } catch (err) {\n console.error('Realtime link batch update failed', err)\n } finally {\n if (pendingEntityIds.size) schedule()\n }\n }\n\n try {\n await cacheDataLoaded\n\n const handlePubSub = async (_topic: string, message: any) => {\n // Only react to link.created and link.deleted events for this project\n if (!_topic.startsWith('link.created') && !_topic.startsWith('link.deleted')) return\n if (message?.project !== projectName) return\n\n // Link events have inputId and outputId in the summary (both entities affected by the link)\n const inputId = message?.summary?.inputId\n const outputId = message?.summary?.outputId\n if (!inputId && !outputId) return\n\n // Add both entities to pending list since both are affected by the link change\n if (inputId) pendingEntityIds.add(inputId)\n if (outputId) pendingEntityIds.add(outputId)\n schedule()\n }\n\n // Subscribe to link events\n // NOTE: backend emits topics like 'link.created' and 'link.deleted'.\n // PubSub supports prefix matching when subscribing.\n token = PubSub.subscribe('link', handlePubSub)\n } catch (e) {\n // cache entry removed before loaded - ignore\n }\n\n await cacheEntryRemoved\n if (token) PubSub.unsubscribe(token)\n },\n }),\n }),\n})\n\nexport const { useGetEntityLinksQuery } = injectedQueries\nexport { injectedQueries as entityLinksApi }\n"],"names":["entityEndpoints","entityResultPaths","injectedQueries","foldersApi","build","projectName","entityIds","entityType","getState","dispatch","queryCacheKey","forced","state","cacheKey","cachedData","cachedEntityIds","entity","entityIdsToFetch","id","endpoint","resultPath","gqlLinksApi","node","restrictedLinks","link","linkEdge","formatEntityLabel","error","toast","queryArgs","currentArg","previousArg","currentIds","previousIds","currentCache","newItems","cacheMap","item","newItem","result","arg","cacheDataLoaded","cacheEntryRemoved","updateCachedData","token","pendingEntityIds","MAX_BATCH","INTERVAL","scheduled","schedule","flush","batchIds","updatedEntities","draft","updatedEntity","idx","err","handlePubSub","_topic","message","inputId","outputId","PubSub","useGetEntityLinksQuery"],"mappings":"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"}
@@ -44,7 +44,6 @@ import "lodash";
44
44
  import "uuid";
45
45
  import "../actions/getActions.es.js";
46
46
  import "../activities/getActivities.es.js";
47
- import "../activities/updateActivities.es.js";
48
47
  import "../activities/updateReaction.es.js";
49
48
  import "../activities/getMentions.es.js";
50
49
  import "../activities/getCategories.es.js";
@@ -53,8 +52,11 @@ import "../addons/updateAddons.es.js";
53
52
  import "../attributes/getAttributes.es.js";
54
53
  import "../attributes/updateAttributes.es.js";
55
54
  import "../authentication/getAuthentication.es.js";
55
+ import "../bundles/getBundles.es.js";
56
+ import "../bundles/updateBundles.es.js";
56
57
  import "../cloud/cloud.es.js";
57
58
  import "../columnStats/metricTargets.es.js";
59
+ import "../columnStats/groupCounts.es.js";
58
60
  import "../config/getConfig.es.js";
59
61
  import "../config/updateConfig.es.js";
60
62
  import "../entities/getEntity.es.js";
@@ -247,9 +249,9 @@ const j = {
247
249
  }
248
250
  })
249
251
  })
250
- }), { useGetEntityLinksQuery: Li } = N;
252
+ }), { useGetEntityLinksQuery: ji } = N;
251
253
  export {
252
254
  N as entityLinksApi,
253
- Li as useGetEntityLinksQuery
255
+ ji as useGetEntityLinksQuery
254
256
  };
255
257
  //# sourceMappingURL=getEntityLinks.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getEntityLinks.es.js","sources":["../../../../../../src/api/queries/links/getEntityLinks.ts"],"sourcesContent":["import { FetchBaseQueryError } from '@reduxjs/toolkit/query'\nimport {\n GetFoldersLinksQuery,\n GetTasksLinksQuery,\n GetProductsLinksQuery,\n GetVersionsLinksQuery,\n GetRepresentationsLinksQuery,\n GetWorkfilesLinksQuery,\n gqlLinksApi,\n foldersApi,\n} from '@shared/api/generated'\nimport { formatEntityLabel } from './utils/formatEntityLinks'\nimport { toast } from 'react-toastify'\nimport { PubSub } from '@shared/util'\n\n/**\n * Custom queryFn for fetching entity links with optimized caching behavior.\n *\n * Key features:\n * 1. Single cache per project and entity type - different entityIds combinations don't create new caches\n * 2. Skips fetching entities that are already cached\n * 3. Force refetch when entityIds change\n * 4. Merges new entities into cache without duplicates\n * 5. Supports all entity types: folders, tasks, products, versions, representations, workfiles\n */\n\n// Define the arguments for the query\nexport type GetEntityLinksArgs = {\n projectName: string\n entityIds: string[]\n entityType: 'folder' | 'task' | 'product' | 'version' | 'representation' | 'workfile'\n}\n\n// Define link types for each entity\nexport type FolderLink =\n GetFoldersLinksQuery['project']['folders']['edges'][0]['node']['links']['edges'][0]\nexport type TaskLink =\n GetTasksLinksQuery['project']['tasks']['edges'][0]['node']['links']['edges'][0]\nexport type ProductLink =\n GetProductsLinksQuery['project']['products']['edges'][0]['node']['links']['edges'][0]\nexport type VersionLink =\n GetVersionsLinksQuery['project']['versions']['edges'][0]['node']['links']['edges'][0]\nexport type RepresentationLink =\n GetRepresentationsLinksQuery['project']['representations']['edges'][0]['node']['links']['edges'][0]\nexport type WorkfileLink =\n GetWorkfilesLinksQuery['project']['workfiles']['edges'][0]['node']['links']['edges'][0]\n\nexport type EntityLinkQuery =\n | FolderLink\n | TaskLink\n | ProductLink\n | VersionLink\n | RepresentationLink\n | WorkfileLink\nexport type EntityLink = Pick<EntityLinkQuery, 'direction' | 'entityType' | 'id' | 'linkType'> & {\n node: Pick<EntityLinkQuery['node'], 'name' | 'id'> & {\n label?: string | null\n parents: string[]\n subType: string | undefined\n } | null\n isRestricted?: boolean // flag to indicate if this link is restricted\n}\n\n// Define the result type for the query - simplified without edges wrapper\nexport type EntityWithLinks = {\n id: string\n links: EntityLink[]\n}\n\nexport type GetEntityLinksResult = EntityWithLinks[]\n\n// Map entity types to their corresponding GraphQL endpoints\nconst entityEndpoints = {\n folder: 'GetFoldersLinks',\n task: 'GetTasksLinks',\n product: 'GetProductsLinks',\n version: 'GetVersionsLinks',\n representation: 'GetRepresentationsLinks',\n workfile: 'GetWorkfilesLinks',\n} as const\n\n// Map entity types to their result path in the GraphQL response\nconst entityResultPaths = {\n folder: 'folders',\n task: 'tasks',\n product: 'products',\n version: 'versions',\n representation: 'representations',\n workfile: 'workfiles',\n} as const\n\nconst injectedQueries = foldersApi.injectEndpoints({\n endpoints: (build) => ({\n getEntityLinks: build.query<GetEntityLinksResult, GetEntityLinksArgs>({\n queryFn: async (\n { projectName, entityIds, entityType },\n { getState, dispatch, queryCacheKey, forced },\n ) => {\n try {\n // Get current state to access cached data\n const state = getState() as any\n const cacheKey = JSON.stringify({ projectName, entityType })\n\n // Access the cache entry for this project and entity type\n const cacheEntry =\n state.restApi?.queries?.[queryCacheKey || `getEntityLinks(${cacheKey})`]\n const cachedData = cacheEntry?.data || []\n\n // 1. When fetching new data for entityIds, we should skip entities that are already in the cache.\n const cachedEntityIds = new Set(cachedData.map((entity: EntityWithLinks) => entity.id))\n const entityIdsToFetch = entityIds.filter((id) => !cachedEntityIds?.has(id) || forced)\n\n // If all entities are already cached, return the cached data\n if (entityIdsToFetch.length === 0) {\n return { data: cachedData }\n }\n\n // Get the appropriate endpoint and parameter names\n const endpoint = entityEndpoints[entityType]\n const resultPath = entityResultPaths[entityType]\n\n // Fetch only the entities that aren't already cached\n const result = await dispatch(\n (gqlLinksApi.endpoints as any)[endpoint].initiate(\n { projectName, entityIds: entityIdsToFetch },\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const newEntities =\n result.project?.[resultPath]?.edges?.map(({ node }: { node: any }) => {\n // Log restricted links\n const restrictedLinks = node.links.edges?.filter((e: EntityLinkQuery | null) => !e?.node) || []\n if (restrictedLinks.length > 0) {\n console.log(`[RESTRICTED LINKS] Entity ${node.id} (${node.name}) has ${restrictedLinks.length} restricted link(s):`,\n restrictedLinks.map((link: any) => ({\n linkId: link?.id,\n linkType: link?.linkType,\n direction: link?.direction,\n entityType: link?.entityType,\n nodeIsNull: !link?.node\n }))\n )\n }\n\n return {\n id: node.id,\n links:\n node.links.edges\n ?.map((linkEdge: EntityLinkQuery | null) => {\n if (!linkEdge?.node) {\n // Restricted link - node is null\n return {\n ...linkEdge,\n node: null,\n isRestricted: true,\n } as EntityLink\n }\n // Normal link\n return {\n ...linkEdge,\n node: {\n id: linkEdge.node.id,\n name: linkEdge.node.name,\n label: formatEntityLabel(linkEdge.node),\n parents: linkEdge.node.parents || [],\n subType: 'subType' in linkEdge.node ? linkEdge.node.subType : undefined,\n },\n isRestricted: false,\n } as EntityLink\n }) || [], // Flatten the edges structure\n }\n }) || []\n\n // Return the new entities - the merge function will handle combining with existing cache\n return { data: newEntities }\n } catch (error: any) {\n console.error(`Error in getEntityLinks queryFn for ${entityType}:`, error)\n toast.error(`Error fetching ${entityType} links`)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n // 2. We should not create new caches when the entityIds argument changes.\n serializeQueryArgs: ({ queryArgs }) => {\n // Use only projectName and entityType for the cache key, ignoring entityIds\n return { projectName: queryArgs.projectName, entityType: queryArgs.entityType }\n },\n // 3. We should force a refetch every time the entityIds changes.\n forceRefetch: ({ currentArg, previousArg }) => {\n // Force refetch if entityIds array is different\n if (!currentArg || !previousArg) return true\n\n // Compare arrays by converting to sets\n const currentIds = new Set(currentArg.entityIds)\n const previousIds = new Set(previousArg.entityIds)\n\n if (currentIds.size !== previousIds.size) return true\n\n // Check if any IDs are different\n for (const id of currentIds) {\n if (!previousIds.has(id)) return true\n }\n\n return false\n },\n // 4. We should merge new entities into the cache ensuring there are no duplicates.\n merge: (currentCache, newItems) => {\n if (!currentCache) return newItems\n\n const cacheMap = new Map(currentCache.map((item) => [item.id, item]))\n for (const newItem of newItems) {\n cacheMap.set(newItem.id, newItem) // Overwrite if exists, add if not\n }\n // Update currentCache in-place\n currentCache.length = 0\n currentCache.push(...cacheMap.values())\n },\n // Provide tags for potential invalidation\n providesTags: (result, error, arg) =>\n result\n ? [\n ...result.flatMap((entity) =>\n entity.links\n .filter((link) => link.node !== null)\n .map((link) => ({ type: 'link', id: link.node!.id })),\n ),\n { type: 'link', id: `${arg.projectName}-${arg.entityType}` },\n ]\n : [{ type: 'link', id: `${arg.projectName}-${arg.entityType}` }],\n // Subscribe to link.created and link.deleted WebSocket events\n async onCacheEntryAdded(\n { projectName, entityIds, entityType },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n let token: any\n const pendingEntityIds = new Set<string>()\n const MAX_BATCH = 100\n const INTERVAL = 500\n let scheduled = false\n\n const schedule = () => {\n if (scheduled) return\n scheduled = true\n setTimeout(flush, INTERVAL)\n }\n\n const flush = async () => {\n scheduled = false\n if (!pendingEntityIds.size) return\n const batchIds = Array.from(pendingEntityIds).slice(0, MAX_BATCH)\n batchIds.forEach((id) => pendingEntityIds.delete(id))\n\n try {\n // Get the appropriate endpoint and parameter names\n const endpoint = entityEndpoints[entityType]\n const resultPath = entityResultPaths[entityType]\n\n // Fetch fresh data for the affected entities\n const result = await dispatch(\n (gqlLinksApi.endpoints as any)[endpoint].initiate(\n { projectName, entityIds: batchIds },\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const updatedEntities =\n result.project?.[resultPath]?.edges?.map(({ node }: { node: any }) => {\n\n return {\n id: node.id,\n links:\n node.links.edges\n ?.map((linkEdge: EntityLinkQuery | null) => {\n if (!linkEdge?.node) {\n // Restricted link - node is null\n return {\n ...linkEdge,\n node: null,\n isRestricted: true,\n } as EntityLink\n }\n // Normal link\n return {\n ...linkEdge,\n node: {\n id: linkEdge.node.id,\n name: linkEdge.node.name,\n label: formatEntityLabel(linkEdge.node),\n parents: linkEdge.node.parents || [],\n subType: 'subType' in linkEdge.node ? linkEdge.node.subType : undefined,\n },\n isRestricted: false,\n } as EntityLink\n }) || [],\n }\n }) || []\n\n updateCachedData((draft: EntityWithLinks[]) => {\n for (const updatedEntity of updatedEntities) {\n const idx = draft.findIndex((entity) => entity.id === updatedEntity.id)\n if (idx > -1) {\n // Update existing entity's links\n draft[idx] = updatedEntity\n } else {\n // Add new entity if not in cache\n draft.push(updatedEntity)\n }\n }\n })\n } catch (err) {\n console.error('Realtime link batch update failed', err)\n } finally {\n if (pendingEntityIds.size) schedule()\n }\n }\n\n try {\n await cacheDataLoaded\n\n const handlePubSub = async (_topic: string, message: any) => {\n // Only react to link.created and link.deleted events for this project\n if (!_topic.startsWith('link.created') && !_topic.startsWith('link.deleted')) return\n if (message?.project !== projectName) return\n\n // Link events have inputId and outputId in the summary (both entities affected by the link)\n const inputId = message?.summary?.inputId\n const outputId = message?.summary?.outputId\n if (!inputId && !outputId) return\n\n // Add both entities to pending list since both are affected by the link change\n if (inputId) pendingEntityIds.add(inputId)\n if (outputId) pendingEntityIds.add(outputId)\n schedule()\n }\n\n // Subscribe to link events\n // NOTE: backend emits topics like 'link.created' and 'link.deleted'.\n // PubSub supports prefix matching when subscribing.\n token = PubSub.subscribe('link', handlePubSub)\n } catch (e) {\n // cache entry removed before loaded - ignore\n }\n\n await cacheEntryRemoved\n if (token) PubSub.unsubscribe(token)\n },\n }),\n }),\n})\n\nexport const { useGetEntityLinksQuery } = injectedQueries\nexport { injectedQueries as entityLinksApi }\n"],"names":["entityEndpoints","entityResultPaths","injectedQueries","foldersApi","build","projectName","entityIds","entityType","getState","dispatch","queryCacheKey","forced","state","cacheKey","cachedData","cachedEntityIds","entity","entityIdsToFetch","id","endpoint","resultPath","gqlLinksApi","node","restrictedLinks","e","link","linkEdge","formatEntityLabel","error","toast","queryArgs","currentArg","previousArg","currentIds","previousIds","currentCache","newItems","cacheMap","item","newItem","result","arg","cacheDataLoaded","cacheEntryRemoved","updateCachedData","token","pendingEntityIds","MAX_BATCH","INTERVAL","scheduled","schedule","flush","batchIds","updatedEntities","draft","updatedEntity","idx","err","handlePubSub","_topic","message","inputId","outputId","PubSub","useGetEntityLinksQuery"],"mappings":"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"}
1
+ {"version":3,"file":"getEntityLinks.es.js","sources":["../../../../../../src/api/queries/links/getEntityLinks.ts"],"sourcesContent":["import { FetchBaseQueryError } from '@reduxjs/toolkit/query'\nimport {\n GetFoldersLinksQuery,\n GetTasksLinksQuery,\n GetProductsLinksQuery,\n GetVersionsLinksQuery,\n GetRepresentationsLinksQuery,\n GetWorkfilesLinksQuery,\n gqlLinksApi,\n foldersApi,\n} from '@shared/api/generated'\nimport { formatEntityLabel } from './utils/formatEntityLinks'\nimport { toast } from 'react-toastify'\nimport { PubSub } from '@shared/util'\n\n/**\n * Custom queryFn for fetching entity links with optimized caching behavior.\n *\n * Key features:\n * 1. Single cache per project and entity type - different entityIds combinations don't create new caches\n * 2. Skips fetching entities that are already cached\n * 3. Force refetch when entityIds change\n * 4. Merges new entities into cache without duplicates\n * 5. Supports all entity types: folders, tasks, products, versions, representations, workfiles\n */\n\n// Define the arguments for the query\nexport type GetEntityLinksArgs = {\n projectName: string\n entityIds: string[]\n entityType: 'folder' | 'task' | 'product' | 'version' | 'representation' | 'workfile'\n}\n\n// Define link types for each entity\nexport type FolderLink =\n GetFoldersLinksQuery['project']['folders']['edges'][0]['node']['links']['edges'][0]\nexport type TaskLink =\n GetTasksLinksQuery['project']['tasks']['edges'][0]['node']['links']['edges'][0]\nexport type ProductLink =\n GetProductsLinksQuery['project']['products']['edges'][0]['node']['links']['edges'][0]\nexport type VersionLink =\n GetVersionsLinksQuery['project']['versions']['edges'][0]['node']['links']['edges'][0]\nexport type RepresentationLink =\n GetRepresentationsLinksQuery['project']['representations']['edges'][0]['node']['links']['edges'][0]\nexport type WorkfileLink =\n GetWorkfilesLinksQuery['project']['workfiles']['edges'][0]['node']['links']['edges'][0]\n\nexport type EntityLinkQuery =\n | FolderLink\n | TaskLink\n | ProductLink\n | VersionLink\n | RepresentationLink\n | WorkfileLink\nexport type EntityLink = Pick<EntityLinkQuery, 'direction' | 'entityType' | 'id' | 'linkType'> & {\n node: Pick<EntityLinkQuery['node'], 'name' | 'id'> & {\n label?: string | null\n parents: string[]\n subType: string | undefined\n } | null\n isRestricted?: boolean // flag to indicate if this link is restricted\n}\n\n// Define the result type for the query - simplified without edges wrapper\nexport type EntityWithLinks = {\n id: string\n links: EntityLink[]\n}\n\nexport type GetEntityLinksResult = EntityWithLinks[]\n\n// Map entity types to their corresponding GraphQL endpoints\nconst entityEndpoints = {\n folder: 'GetFoldersLinks',\n task: 'GetTasksLinks',\n product: 'GetProductsLinks',\n version: 'GetVersionsLinks',\n representation: 'GetRepresentationsLinks',\n workfile: 'GetWorkfilesLinks',\n} as const\n\n// Map entity types to their result path in the GraphQL response\nconst entityResultPaths = {\n folder: 'folders',\n task: 'tasks',\n product: 'products',\n version: 'versions',\n representation: 'representations',\n workfile: 'workfiles',\n} as const\n\nconst injectedQueries = foldersApi.injectEndpoints({\n endpoints: (build) => ({\n getEntityLinks: build.query<GetEntityLinksResult, GetEntityLinksArgs>({\n queryFn: async (\n { projectName, entityIds, entityType },\n { getState, dispatch, queryCacheKey, forced },\n ) => {\n try {\n // Get current state to access cached data\n const state = getState() as any\n const cacheKey = JSON.stringify({ projectName, entityType })\n\n // Access the cache entry for this project and entity type\n const cacheEntry =\n state.restApi?.queries?.[queryCacheKey || `getEntityLinks(${cacheKey})`]\n const cachedData = cacheEntry?.data || []\n\n // 1. When fetching new data for entityIds, we should skip entities that are already in the cache.\n const cachedEntityIds = new Set(cachedData.map((entity: EntityWithLinks) => entity.id))\n const entityIdsToFetch = entityIds.filter((id) => !cachedEntityIds?.has(id) || forced)\n\n // If all entities are already cached, return the cached data\n if (entityIdsToFetch.length === 0) {\n return { data: cachedData }\n }\n\n // Get the appropriate endpoint and parameter names\n const endpoint = entityEndpoints[entityType]\n const resultPath = entityResultPaths[entityType]\n\n // Fetch only the entities that aren't already cached\n const result = await dispatch(\n (gqlLinksApi.endpoints as any)[endpoint].initiate(\n { projectName, entityIds: entityIdsToFetch },\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const newEntities =\n result.project?.[resultPath]?.edges?.map(({ node }: { node: any }) => {\n // Log restricted links\n const restrictedLinks = node.links.edges?.filter((e: EntityLinkQuery | null) => !e?.node) || []\n if (restrictedLinks.length > 0) {\n console.log(`[RESTRICTED LINKS] Entity ${node.id} (${node.name}) has ${restrictedLinks.length} restricted link(s):`,\n restrictedLinks.map((link: any) => ({\n linkId: link?.id,\n linkType: link?.linkType,\n direction: link?.direction,\n entityType: link?.entityType,\n nodeIsNull: !link?.node\n }))\n )\n }\n\n return {\n id: node.id,\n links:\n node.links.edges\n ?.map((linkEdge: EntityLinkQuery | null) => {\n if (!linkEdge?.node) {\n // Restricted link - node is null\n return {\n ...linkEdge,\n node: null,\n isRestricted: true,\n } as EntityLink\n }\n // Normal link\n return {\n ...linkEdge,\n node: {\n id: linkEdge.node.id,\n name: linkEdge.node.name,\n label: formatEntityLabel(linkEdge.node),\n parents: linkEdge.node.parents || [],\n subType: 'subType' in linkEdge.node ? linkEdge.node.subType : undefined,\n },\n isRestricted: false,\n } as EntityLink\n }) || [], // Flatten the edges structure\n }\n }) || []\n\n // Return the new entities - the merge function will handle combining with existing cache\n return { data: newEntities }\n } catch (error: any) {\n console.error(`Error in getEntityLinks queryFn for ${entityType}:`, error)\n toast.error(`Error fetching ${entityType} links`)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n // 2. We should not create new caches when the entityIds argument changes.\n serializeQueryArgs: ({ queryArgs }) => {\n // Use only projectName and entityType for the cache key, ignoring entityIds\n return { projectName: queryArgs.projectName, entityType: queryArgs.entityType }\n },\n // 3. We should force a refetch every time the entityIds changes.\n forceRefetch: ({ currentArg, previousArg }) => {\n // Force refetch if entityIds array is different\n if (!currentArg || !previousArg) return true\n\n // Compare arrays by converting to sets\n const currentIds = new Set(currentArg.entityIds)\n const previousIds = new Set(previousArg.entityIds)\n\n if (currentIds.size !== previousIds.size) return true\n\n // Check if any IDs are different\n for (const id of currentIds) {\n if (!previousIds.has(id)) return true\n }\n\n return false\n },\n // 4. We should merge new entities into the cache ensuring there are no duplicates.\n merge: (currentCache, newItems) => {\n if (!currentCache) return newItems\n\n const cacheMap = new Map(currentCache.map((item) => [item.id, item]))\n for (const newItem of newItems) {\n cacheMap.set(newItem.id, newItem) // Overwrite if exists, add if not\n }\n // Update currentCache in-place\n currentCache.length = 0\n currentCache.push(...cacheMap.values())\n },\n // Provide tags for potential invalidation\n providesTags: (result, error, arg) =>\n result\n ? [\n ...result.flatMap((entity) =>\n entity.links\n .filter((link) => link.node !== null)\n .map((link) => ({ type: 'link', id: link.node!.id })),\n ),\n { type: 'link', id: `${arg.projectName}-${arg.entityType}` },\n ]\n : [{ type: 'link', id: `${arg.projectName}-${arg.entityType}` }],\n // Subscribe to link.created and link.deleted WebSocket events\n async onCacheEntryAdded(\n { projectName, entityIds, entityType },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n let token: any\n const pendingEntityIds = new Set<string>()\n const MAX_BATCH = 100\n const INTERVAL = 500\n let scheduled = false\n\n const schedule = () => {\n if (scheduled) return\n scheduled = true\n setTimeout(flush, INTERVAL)\n }\n\n const flush = async () => {\n scheduled = false\n if (!pendingEntityIds.size) return\n const batchIds = Array.from(pendingEntityIds).slice(0, MAX_BATCH)\n batchIds.forEach((id) => pendingEntityIds.delete(id))\n\n try {\n // Get the appropriate endpoint and parameter names\n const endpoint = entityEndpoints[entityType]\n const resultPath = entityResultPaths[entityType]\n\n // Fetch fresh data for the affected entities\n const result = await dispatch(\n (gqlLinksApi.endpoints as any)[endpoint].initiate(\n { projectName, entityIds: batchIds },\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const updatedEntities =\n result.project?.[resultPath]?.edges?.map(({ node }: { node: any }) => {\n\n return {\n id: node.id,\n links:\n node.links.edges\n ?.map((linkEdge: EntityLinkQuery | null) => {\n if (!linkEdge?.node) {\n // Restricted link - node is null\n return {\n ...linkEdge,\n node: null,\n isRestricted: true,\n } as EntityLink\n }\n // Normal link\n return {\n ...linkEdge,\n node: {\n id: linkEdge.node.id,\n name: linkEdge.node.name,\n label: formatEntityLabel(linkEdge.node),\n parents: linkEdge.node.parents || [],\n subType: 'subType' in linkEdge.node ? linkEdge.node.subType : undefined,\n },\n isRestricted: false,\n } as EntityLink\n }) || [],\n }\n }) || []\n\n updateCachedData((draft: EntityWithLinks[]) => {\n for (const updatedEntity of updatedEntities) {\n const idx = draft.findIndex((entity) => entity.id === updatedEntity.id)\n if (idx > -1) {\n // Update existing entity's links\n draft[idx] = updatedEntity\n } else {\n // Add new entity if not in cache\n draft.push(updatedEntity)\n }\n }\n })\n } catch (err) {\n console.error('Realtime link batch update failed', err)\n } finally {\n if (pendingEntityIds.size) schedule()\n }\n }\n\n try {\n await cacheDataLoaded\n\n const handlePubSub = async (_topic: string, message: any) => {\n // Only react to link.created and link.deleted events for this project\n if (!_topic.startsWith('link.created') && !_topic.startsWith('link.deleted')) return\n if (message?.project !== projectName) return\n\n // Link events have inputId and outputId in the summary (both entities affected by the link)\n const inputId = message?.summary?.inputId\n const outputId = message?.summary?.outputId\n if (!inputId && !outputId) return\n\n // Add both entities to pending list since both are affected by the link change\n if (inputId) pendingEntityIds.add(inputId)\n if (outputId) pendingEntityIds.add(outputId)\n schedule()\n }\n\n // Subscribe to link events\n // NOTE: backend emits topics like 'link.created' and 'link.deleted'.\n // PubSub supports prefix matching when subscribing.\n token = PubSub.subscribe('link', handlePubSub)\n } catch (e) {\n // cache entry removed before loaded - ignore\n }\n\n await cacheEntryRemoved\n if (token) PubSub.unsubscribe(token)\n },\n }),\n }),\n})\n\nexport const { useGetEntityLinksQuery } = injectedQueries\nexport { injectedQueries as entityLinksApi }\n"],"names":["entityEndpoints","entityResultPaths","injectedQueries","foldersApi","build","projectName","entityIds","entityType","getState","dispatch","queryCacheKey","forced","state","cacheKey","cachedData","cachedEntityIds","entity","entityIdsToFetch","id","endpoint","resultPath","gqlLinksApi","node","restrictedLinks","e","link","linkEdge","formatEntityLabel","error","toast","queryArgs","currentArg","previousArg","currentIds","previousIds","currentCache","newItems","cacheMap","item","newItem","result","arg","cacheDataLoaded","cacheEntryRemoved","updateCachedData","token","pendingEntityIds","MAX_BATCH","INTERVAL","scheduled","schedule","flush","batchIds","updatedEntities","draft","updatedEntity","idx","err","handlePubSub","_topic","message","inputId","outputId","PubSub","useGetEntityLinksQuery"],"mappings":"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"}