@ynput/ayon-frontend-shared 0.3.31 → 0.3.32

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 (877) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +24 -22
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +213 -197
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/Slicer.cjs.js +1 -1
  8. package/dist/Slicer.es.js +19 -18
  9. package/dist/Slicer.es.js.map +1 -1
  10. package/dist/_virtual/index.cjs22.js +1 -1
  11. package/dist/_virtual/index.cjs23.js +1 -1
  12. package/dist/_virtual/index.cjs24.js +1 -1
  13. package/dist/_virtual/index.cjs4.js +1 -1
  14. package/dist/_virtual/index.cjs5.js +1 -1
  15. package/dist/_virtual/index.cjs6.js +1 -1
  16. package/dist/_virtual/index.cjs8.js +1 -1
  17. package/dist/_virtual/index.es19.js +2 -2
  18. package/dist/_virtual/index.es20.js +2 -2
  19. package/dist/_virtual/index.es22.js +3 -3
  20. package/dist/_virtual/index.es23.js +5 -5
  21. package/dist/_virtual/index.es24.js +5 -5
  22. package/dist/_virtual/index.es4.js +2 -5
  23. package/dist/_virtual/index.es4.js.map +1 -1
  24. package/dist/_virtual/index.es5.js +5 -2
  25. package/dist/_virtual/index.es5.js.map +1 -1
  26. package/dist/_virtual/index.es6.js +2 -2
  27. package/dist/_virtual/index.es8.js +2 -2
  28. package/dist/api.cjs.js +1 -1
  29. package/dist/api.es.js +453 -434
  30. package/dist/api.es.js.map +1 -1
  31. package/dist/index.cjs.js +1 -1
  32. package/dist/index.es.js +11 -9
  33. package/dist/index.es.js.map +1 -1
  34. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  35. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  36. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  37. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  38. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  39. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  40. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  41. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  42. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  43. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  44. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  45. package/dist/node_modules/remove-accents/index.es.js +1 -1
  46. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  47. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  48. package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
  49. package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
  50. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  51. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  52. package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
  53. package/dist/shared/node_modules/prop-types/index.es.js +1 -1
  54. package/dist/shared/src/api/base/client.cjs.js +1 -1
  55. package/dist/shared/src/api/base/client.cjs.js.map +1 -1
  56. package/dist/shared/src/api/base/client.es.js +21 -17
  57. package/dist/shared/src/api/base/client.es.js.map +1 -1
  58. package/dist/shared/src/api/generated/folders.cjs.js +1 -1
  59. package/dist/shared/src/api/generated/folders.cjs.js.map +1 -1
  60. package/dist/shared/src/api/generated/folders.es.js +2 -14
  61. package/dist/shared/src/api/generated/folders.es.js.map +1 -1
  62. package/dist/shared/src/api/generated/graphql.cjs.js +237 -55
  63. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  64. package/dist/shared/src/api/generated/graphql.es.js +361 -161
  65. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  66. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  67. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  68. package/dist/shared/src/api/queries/activities/activityQueries.cjs.js +1 -0
  69. package/dist/shared/src/api/queries/activities/activityQueries.cjs.js.map +1 -1
  70. package/dist/shared/src/api/queries/activities/activityQueries.es.js +1 -0
  71. package/dist/shared/src/api/queries/activities/activityQueries.es.js.map +1 -1
  72. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js +1 -1
  73. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js.map +1 -1
  74. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js +33 -21
  75. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js.map +1 -1
  76. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
  77. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
  78. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +74 -60
  79. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
  80. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js +2 -0
  81. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js.map +1 -0
  82. package/dist/shared/src/api/queries/columnStats/columnStats.es.js +96 -0
  83. package/dist/shared/src/api/queries/columnStats/columnStats.es.js.map +1 -0
  84. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js +2 -0
  85. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -0
  86. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js +88 -0
  87. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -0
  88. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
  89. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  90. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +62 -48
  91. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  92. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +1 -1
  93. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  94. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +7 -3
  95. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  96. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  97. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  98. package/dist/shared/src/api/queries/entityLists/getLists.es.js +94 -79
  99. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  100. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -1
  101. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  102. package/dist/shared/src/api/queries/folders/getFolders.es.js +104 -71
  103. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  104. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  105. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  106. package/dist/shared/src/api/queries/overview/getOverview.es.js +265 -216
  107. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  108. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +1 -1
  109. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  110. package/dist/shared/src/api/queries/overview/updateOverview.es.js +198 -183
  111. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  112. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  113. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  114. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +138 -107
  115. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  116. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  117. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  118. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +332 -239
  119. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  120. package/dist/shared/src/api/queries/views/updateViews.cjs.js +1 -1
  121. package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
  122. package/dist/shared/src/api/queries/views/updateViews.es.js +38 -38
  123. package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
  124. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +1 -1
  125. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
  126. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +3 -2
  127. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
  128. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +1 -1
  129. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  130. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +3 -2
  131. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  132. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  133. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  134. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +4 -2
  135. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  136. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  137. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  138. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +3 -2
  139. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  140. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +1 -1
  141. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  142. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +3 -2
  143. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  144. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  145. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  146. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +3 -2
  147. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  148. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
  149. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
  150. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +3 -2
  151. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
  152. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  153. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  154. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +137 -158
  155. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  156. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  157. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  158. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +4 -2
  159. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  160. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  161. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  162. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +3 -2
  163. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  164. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  165. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  166. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +5 -4
  167. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  168. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  169. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  170. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +3 -2
  171. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  172. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
  173. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  174. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +3 -2
  175. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  176. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  177. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  178. package/dist/shared/src/components/LinksManager/LinksManager.es.js +3 -2
  179. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  180. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  181. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  182. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +4 -2
  183. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  184. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  185. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  186. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +3 -2
  187. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  188. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
  189. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
  190. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +3 -2
  191. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
  192. package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
  193. package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
  194. package/dist/shared/src/components/Menu/Menu.es.js +3 -2
  195. package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
  196. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  197. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  198. package/dist/shared/src/components/Menu/MenuItem.es.js +1 -0
  199. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  200. package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
  201. package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
  202. package/dist/shared/src/components/Menu/MenuList.es.js +3 -2
  203. package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
  204. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +1 -1
  205. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  206. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +3 -2
  207. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  208. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  209. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  210. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +3 -2
  211. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  212. package/dist/shared/src/components/Powerpack/useFreeTrialLink.cjs.js +1 -1
  213. package/dist/shared/src/components/Powerpack/useFreeTrialLink.cjs.js.map +1 -1
  214. package/dist/shared/src/components/Powerpack/useFreeTrialLink.es.js +3 -2
  215. package/dist/shared/src/components/Powerpack/useFreeTrialLink.es.js.map +1 -1
  216. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +1 -1
  217. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  218. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +79 -77
  219. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  220. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  221. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  222. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +6 -4
  223. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  224. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  225. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  226. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +3 -2
  227. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  228. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  229. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  230. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +4 -2
  231. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  232. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  233. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  234. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +4 -2
  235. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  236. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  237. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  238. package/dist/shared/src/components/RenameForm/RenameForm.es.js +4 -2
  239. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  240. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +1 -1
  241. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  242. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +3 -2
  243. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  244. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  245. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  246. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +4 -2
  247. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  248. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  249. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  250. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +5 -3
  251. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  252. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  253. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  254. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +4 -2
  255. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  256. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
  257. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  258. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +3 -2
  259. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  260. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  261. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  262. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +4 -2
  263. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  264. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  265. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  266. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +7 -6
  267. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  268. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +1 -1
  269. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  270. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +3 -2
  271. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  272. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
  273. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  274. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +6 -4
  275. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  276. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  277. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  278. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +4 -2
  279. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  280. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
  281. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
  282. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +3 -2
  283. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
  284. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +2 -2
  285. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  286. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +11 -10
  287. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  288. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js +1 -1
  289. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js.map +1 -1
  290. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js +49 -44
  291. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js.map +1 -1
  292. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js +3 -3
  293. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js.map +1 -1
  294. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js +32 -22
  295. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js.map +1 -1
  296. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  297. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  298. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +4 -2
  299. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  300. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  301. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  302. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +8 -6
  303. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  304. package/dist/shared/src/components/Watchers/Watchers.cjs.js +1 -1
  305. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  306. package/dist/shared/src/components/Watchers/Watchers.es.js +3 -2
  307. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  308. package/dist/shared/src/config/powerpackFeatures.cjs.js +1 -1
  309. package/dist/shared/src/config/powerpackFeatures.cjs.js.map +1 -1
  310. package/dist/shared/src/config/powerpackFeatures.es.js +7 -1
  311. package/dist/shared/src/config/powerpackFeatures.es.js.map +1 -1
  312. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  313. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  314. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +4 -2
  315. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  316. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  317. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  318. package/dist/shared/src/containers/Actions/Actions.es.js +3 -2
  319. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  320. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  321. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  322. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +4 -2
  323. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  324. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  325. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  326. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +4 -2
  327. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  328. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  329. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  330. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +4 -2
  331. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  332. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  333. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  334. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +41 -38
  335. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  336. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  337. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  338. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +4 -2
  339. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  340. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  341. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  342. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +4 -2
  343. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  344. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  345. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  346. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +4 -2
  347. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  348. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  349. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  350. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +3 -2
  351. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  352. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  353. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  354. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +18 -16
  355. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  356. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  357. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  358. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +4 -2
  359. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  360. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  361. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  362. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +4 -2
  363. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  364. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  365. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  366. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +13 -11
  367. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  368. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js +1 -1
  369. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js.map +1 -1
  370. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js +14 -14
  371. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js.map +1 -1
  372. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  373. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  374. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +13 -9
  375. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  376. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  377. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  378. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +4 -2
  379. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  380. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  381. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  382. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +4 -2
  383. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  384. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  385. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  386. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +4 -2
  387. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  388. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  389. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  390. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +4 -2
  391. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  392. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  393. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  394. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +3 -2
  395. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  396. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  397. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  398. package/dist/shared/src/containers/Feed/Feed.es.js +5 -4
  399. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  400. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  401. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  402. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +4 -2
  403. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  404. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  405. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  406. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +4 -2
  407. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  408. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  409. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  410. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +4 -2
  411. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  412. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  413. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  414. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +28 -27
  415. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  416. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
  417. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  418. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +4 -2
  419. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  420. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  421. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  422. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +8 -6
  423. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  424. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  425. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  426. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +3 -2
  427. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  428. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  429. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  430. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +3 -2
  431. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  432. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  433. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  434. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +3 -2
  435. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  436. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  437. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  438. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +37 -44
  439. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  440. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.cjs.js +1 -1
  441. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.cjs.js.map +1 -1
  442. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.es.js +3 -2
  443. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.es.js.map +1 -1
  444. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  445. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  446. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +6 -5
  447. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  448. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.cjs.js +1 -1
  449. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.cjs.js.map +1 -1
  450. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.es.js +14 -13
  451. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.es.js.map +1 -1
  452. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +1 -1
  453. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  454. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +3 -2
  455. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  456. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  457. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  458. package/dist/shared/src/containers/ListTable/ListTable.es.js +212 -204
  459. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  460. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  461. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  462. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +4 -2
  463. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  464. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  465. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  466. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +4 -2
  467. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  468. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  469. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  470. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +729 -675
  471. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  472. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +32 -10
  473. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  474. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +42 -18
  475. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  476. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  477. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  478. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +17 -14
  479. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  480. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  481. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  482. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +57 -43
  483. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  484. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  485. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  486. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +4 -2
  487. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  488. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  489. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  490. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +4 -2
  491. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  492. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js +48 -0
  493. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js.map +1 -0
  494. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js +103 -0
  495. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js.map +1 -0
  496. package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js +2 -0
  497. package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js.map +1 -0
  498. package/dist/shared/src/containers/ProjectTreeTable/constants.es.js +6 -0
  499. package/dist/shared/src/containers/ProjectTreeTable/constants.es.js.map +1 -0
  500. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  501. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  502. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +4 -2
  503. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  504. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +4 -4
  505. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  506. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +7 -5
  507. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  508. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
  509. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
  510. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  511. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  512. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +215 -181
  513. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  514. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  515. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  516. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +5 -4
  517. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  518. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +1 -1
  519. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -1
  520. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +3 -2
  521. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -1
  522. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js +1 -1
  523. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js.map +1 -1
  524. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js +21 -17
  525. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js.map +1 -1
  526. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js +1 -1
  527. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js.map +1 -1
  528. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js +1 -2
  529. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js.map +1 -1
  530. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  531. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  532. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +17 -11
  533. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  534. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  535. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  536. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +3 -2
  537. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  538. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  539. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  540. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +83 -81
  541. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  542. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  543. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  544. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +116 -111
  545. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  546. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  547. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  548. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +6 -3
  549. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  550. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  551. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  552. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +4 -2
  553. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  554. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  555. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  556. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +4 -2
  557. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  558. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  559. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  560. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +4 -2
  561. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  562. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  563. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  564. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +3 -2
  565. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  566. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.cjs.js.map +1 -1
  567. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.es.js.map +1 -1
  568. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  569. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  570. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +4 -2
  571. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  572. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  573. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  574. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +4 -2
  575. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  576. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  577. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  578. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +4 -2
  579. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  580. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  581. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  582. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +4 -2
  583. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  584. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  585. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  586. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +4 -2
  587. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  588. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  589. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  590. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +80 -78
  591. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  592. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  593. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  594. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +4 -2
  595. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  596. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  597. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  598. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +45 -44
  599. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  600. package/dist/shared/src/containers/ProjectTreeTable/types/summaryTypes.cjs.js +2 -0
  601. package/dist/shared/src/containers/ProjectTreeTable/types/summaryTypes.cjs.js.map +1 -0
  602. package/dist/shared/src/containers/ProjectTreeTable/types/summaryTypes.es.js +16 -0
  603. package/dist/shared/src/containers/ProjectTreeTable/types/summaryTypes.es.js.map +1 -0
  604. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  605. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  606. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +15 -13
  607. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  608. package/dist/shared/src/containers/ProjectTreeTable/utils/checkColumnVisibility.cjs.js +1 -1
  609. package/dist/shared/src/containers/ProjectTreeTable/utils/checkColumnVisibility.cjs.js.map +1 -1
  610. package/dist/shared/src/containers/ProjectTreeTable/utils/checkColumnVisibility.es.js +29 -25
  611. package/dist/shared/src/containers/ProjectTreeTable/utils/checkColumnVisibility.es.js.map +1 -1
  612. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.cjs.js +2 -0
  613. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.cjs.js.map +1 -0
  614. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.es.js +17 -0
  615. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.es.js.map +1 -0
  616. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +1 -1
  617. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  618. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +4 -2
  619. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  620. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
  621. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  622. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +12 -10
  623. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  624. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  625. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  626. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +6 -4
  627. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  628. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +1 -1
  629. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
  630. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +3 -2
  631. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
  632. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  633. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  634. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +4 -2
  635. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  636. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  637. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  638. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +4 -2
  639. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  640. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +1 -1
  641. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
  642. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +3 -2
  643. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
  644. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +4 -4
  645. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  646. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +24 -19
  647. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  648. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  649. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  650. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +4 -2
  651. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  652. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  653. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  654. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +4 -2
  655. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  656. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +1 -1
  657. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
  658. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +3 -2
  659. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
  660. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  661. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  662. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +4 -2
  663. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  664. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  665. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  666. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +5 -4
  667. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  668. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
  669. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
  670. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +3 -2
  671. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
  672. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
  673. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
  674. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +3 -2
  675. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
  676. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js +1 -1
  677. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js.map +1 -1
  678. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js +4 -2
  679. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js.map +1 -1
  680. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
  681. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
  682. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +3 -2
  683. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
  684. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  685. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  686. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +12 -11
  687. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  688. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js +1 -1
  689. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -1
  690. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js +3 -2
  691. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -1
  692. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  693. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  694. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +3 -2
  695. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  696. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  697. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  698. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +4 -2
  699. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  700. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +1 -1
  701. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  702. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +3 -2
  703. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  704. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  705. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  706. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +119 -118
  707. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  708. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js +1 -1
  709. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js.map +1 -1
  710. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js +18 -16
  711. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js.map +1 -1
  712. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
  713. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  714. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +79 -51
  715. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  716. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.cjs.js +1 -1
  717. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.cjs.js.map +1 -1
  718. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.es.js +19 -17
  719. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.es.js.map +1 -1
  720. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
  721. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
  722. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +3 -2
  723. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
  724. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  725. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  726. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +6 -5
  727. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  728. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +1 -1
  729. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -1
  730. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +12 -11
  731. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -1
  732. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +1 -1
  733. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  734. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +3 -2
  735. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  736. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  737. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  738. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +78 -65
  739. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  740. package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
  741. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  742. package/dist/shared/src/context/AddonProjectContext.es.js +5 -4
  743. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  744. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  745. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  746. package/dist/shared/src/context/DetailsPanelContext.es.js +5 -4
  747. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  748. package/dist/shared/src/context/GlobalContext.cjs.js +1 -1
  749. package/dist/shared/src/context/GlobalContext.cjs.js.map +1 -1
  750. package/dist/shared/src/context/GlobalContext.es.js +5 -4
  751. package/dist/shared/src/context/GlobalContext.es.js.map +1 -1
  752. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  753. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  754. package/dist/shared/src/context/PowerpackContext.es.js +7 -6
  755. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  756. package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
  757. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
  758. package/dist/shared/src/context/ProjectContext.es.js +5 -4
  759. package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
  760. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  761. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  762. package/dist/shared/src/context/ProjectFoldersContext.es.js +5 -4
  763. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  764. package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
  765. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  766. package/dist/shared/src/context/RemoteModulesContext.es.js +5 -4
  767. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  768. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  769. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  770. package/dist/shared/src/context/SubtasksModulesContext.es.js +5 -4
  771. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  772. package/dist/shared/src/context/UriContext.cjs.js +1 -1
  773. package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
  774. package/dist/shared/src/context/UriContext.es.js +6 -5
  775. package/dist/shared/src/context/UriContext.es.js.map +1 -1
  776. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  777. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  778. package/dist/shared/src/context/WebsocketContext.es.js +6 -4
  779. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  780. package/dist/shared/src/hooks/useActionTriggers.cjs.js +1 -1
  781. package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
  782. package/dist/shared/src/hooks/useActionTriggers.es.js +3 -2
  783. package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
  784. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  785. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  786. package/dist/shared/src/hooks/useEntityUpdate.es.js +3 -2
  787. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  788. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js +1 -1
  789. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js.map +1 -1
  790. package/dist/shared/src/hooks/useGetEntityGroups.es.js +3 -2
  791. package/dist/shared/src/hooks/useGetEntityGroups.es.js.map +1 -1
  792. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  793. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  794. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +3 -2
  795. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  796. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
  797. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
  798. package/dist/shared/src/hooks/useHierarchyTable.es.js +3 -2
  799. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
  800. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +1 -1
  801. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  802. package/dist/shared/src/hooks/useScopedStatuses.es.js +5 -4
  803. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  804. package/dist/shared/src/hooks/useScopedTypes.cjs.js +1 -1
  805. package/dist/shared/src/hooks/useScopedTypes.cjs.js.map +1 -1
  806. package/dist/shared/src/hooks/useScopedTypes.es.js +3 -2
  807. package/dist/shared/src/hooks/useScopedTypes.es.js.map +1 -1
  808. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  809. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  810. package/dist/shared/src/hooks/useUserProjectConfig.es.js +3 -2
  811. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  812. package/dist/shared/src/util/columnConfigConverter.cjs.js +1 -1
  813. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
  814. package/dist/shared/src/util/columnConfigConverter.es.js +86 -65
  815. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
  816. package/dist/shared/src/util/getThumbnailUrl.cjs.js +2 -0
  817. package/dist/shared/src/util/getThumbnailUrl.cjs.js.map +1 -0
  818. package/dist/shared/src/util/getThumbnailUrl.es.js +23 -0
  819. package/dist/shared/src/util/getThumbnailUrl.es.js.map +1 -0
  820. package/dist/shared/src/util/thumbnailWebsocket.cjs.js +2 -0
  821. package/dist/shared/src/util/thumbnailWebsocket.cjs.js.map +1 -0
  822. package/dist/shared/src/util/thumbnailWebsocket.es.js +54 -0
  823. package/dist/shared/src/util/thumbnailWebsocket.es.js.map +1 -0
  824. package/dist/types/api/generated/folders.d.ts +1 -6
  825. package/dist/types/api/generated/graphql.d.ts +275 -6
  826. package/dist/types/api/generated/graphqlLinks.d.ts +7 -4
  827. package/dist/types/api/queries/activities/activityQueries.d.ts +1 -0
  828. package/dist/types/api/queries/activities/getActivities.d.ts +47 -0
  829. package/dist/types/api/queries/activities/updateActivities.d.ts +94 -0
  830. package/dist/types/api/queries/activities/util/activitiesHelpers.d.ts +1 -0
  831. package/dist/types/api/queries/columnStats/columnStats.d.ts +28 -0
  832. package/dist/types/api/queries/columnStats/index.d.ts +2 -0
  833. package/dist/types/api/queries/columnStats/metricTargets.d.ts +31 -0
  834. package/dist/types/api/queries/entities/getEntity.d.ts +47 -0
  835. package/dist/types/api/queries/entities/getEntityPanel.d.ts +47 -0
  836. package/dist/types/api/queries/entities/transformDetailsPanelData.d.ts +1 -0
  837. package/dist/types/api/queries/entities/updateEntity.d.ts +47 -0
  838. package/dist/types/api/queries/entityLists/getLists.d.ts +47 -0
  839. package/dist/types/api/queries/index.d.ts +1 -0
  840. package/dist/types/api/queries/overview/getOverview.d.ts +733 -1
  841. package/dist/types/api/queries/project/getProject.d.ts +47 -0
  842. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +69 -0
  843. package/dist/types/api/queries/users/getUsers.d.ts +47 -0
  844. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +828 -1
  845. package/dist/types/components/EntityPanelUploader/EntityPanelUploader.d.ts +1 -11
  846. package/dist/types/components/Thumbnail/StackedThumbnails.d.ts +2 -2
  847. package/dist/types/components/Thumbnail/Thumbnail.d.ts +2 -2
  848. package/dist/types/components/ThumbnailSimple/ThumbnailSimple.d.ts +1 -1
  849. package/dist/types/config/powerpackFeatures.d.ts +1 -1
  850. package/dist/types/containers/DetailsPanel/containers/FeedWrapper.d.ts +1 -0
  851. package/dist/types/containers/DetailsPanel/helpers/getThumbnails.d.ts +2 -2
  852. package/dist/types/containers/Feed/components/ActivityVersions/ActivityVersions.d.ts +1 -0
  853. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +8 -3
  854. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.styled.d.ts +2 -0
  855. package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +1 -1
  856. package/dist/types/containers/ProjectTreeTable/components/TableFooterRow.d.ts +14 -0
  857. package/dist/types/containers/ProjectTreeTable/constants.d.ts +2 -0
  858. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +10 -0
  859. package/dist/types/containers/ProjectTreeTable/context/SelectionCellsContext.d.ts +0 -1
  860. package/dist/types/containers/ProjectTreeTable/index.d.ts +1 -0
  861. package/dist/types/containers/ProjectTreeTable/types/index.d.ts +17 -1
  862. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +2 -0
  863. package/dist/types/containers/ProjectTreeTable/types/summaryTypes.d.ts +50 -0
  864. package/dist/types/containers/ProjectTreeTable/types/table.d.ts +3 -0
  865. package/dist/types/containers/ProjectTreeTable/utils/checkColumnVisibility.d.ts +2 -0
  866. package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +1 -0
  867. package/dist/types/containers/ProjectTreeTable/utils/pinningUtils.d.ts +6 -0
  868. package/dist/types/containers/ProjectTreeTable/widgets/ThumbnailWidget.d.ts +1 -1
  869. package/dist/types/containers/Views/hooks/useSelectedView.d.ts +2 -1
  870. package/dist/types/containers/Views/utils/viewUpdateHelper.d.ts +7 -3
  871. package/dist/types/util/getThumbnailUrl.d.ts +18 -0
  872. package/dist/types/util/index.d.ts +2 -0
  873. package/dist/types/util/thumbnailWebsocket.d.ts +21 -0
  874. package/dist/util.cjs.js +1 -1
  875. package/dist/util.es.js +35 -30
  876. package/dist/util.es.js.map +1 -1
  877. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"activityRealtimeHandler.es.js","sources":["../../../../../../../src/api/queries/activities/util/activityRealtimeHandler.ts"],"sourcesContent":["import { PubSub } from '@shared/util'\nimport { ActivitiesResult } from './activitiesHelpers'\nimport type { GetActivitiesQueryVariables } from '@shared/api'\nimport { getActivitiesGQLApi as gqlApi } from '../getActivities'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { FeedActivity } from '../types'\n\nexport type ActivityMessage = {\n topic: string\n project: string\n user: string\n createdAt: string\n updatedAt: string\n id: string\n status: string\n summary?: {\n activity_id: string\n activity_type: string\n references: {\n entity_id: string\n entity_type: string\n reference_type: string\n }[]\n }\n}\n\ntype InfiniteDataDraft = {\n pages: ActivitiesResult[]\n}\n\ntype CacheLifecycleApi = {\n updateCachedData: (updateRecipe: (draft: InfiniteDataDraft) => void) => void\n cacheDataLoaded: Promise<unknown>\n cacheEntryRemoved: Promise<void>\n dispatch: ThunkDispatch<unknown, unknown, UnknownAction>\n getCacheEntry: () => { data?: InfiniteDataDraft }\n}\n\n/**\n * Checks if a comment body contains a checklist\n */\nconst bodyHasChecklist = (body: string): boolean => {\n if (!body) return false\n return body.includes('* [ ]') || body.includes('* [x]')\n}\n\n/**\n * Handles real-time activity updates for the infinite query cache\n */\nexport const handleActivityRealtimeUpdates = async (\n queryArg: Omit<GetActivitiesQueryVariables, 'last' | 'first' | 'cursor'> & { filter?: any },\n {\n updateCachedData,\n cacheDataLoaded,\n cacheEntryRemoved,\n dispatch,\n getCacheEntry,\n }: CacheLifecycleApi,\n) => {\n let token: string | undefined\n\n try {\n // Wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n const handlePubSub = async (topic: string, message: ActivityMessage) => {\n const activityId = message.summary?.activity_id\n if (!activityId) {\n console.warn('[Activity RT] Activity message missing activity_id', message)\n return\n }\n\n const projectName = message.project\n const references = message.summary?.references || []\n const relevantReferenceTypes = ['origin', 'mention', 'relation']\n const entityIds = references\n .filter((reference) => relevantReferenceTypes.includes(reference.reference_type))\n .map((reference) => reference.entity_id)\n\n // Check if this activity is relevant to the current cache\n const queryEntityIds = Array.isArray(queryArg.entityIds)\n ? queryArg.entityIds\n : [queryArg.entityIds]\n\n const isRelevant = queryEntityIds.some((qId) => entityIds.includes(qId))\n\n if (!isRelevant && queryEntityIds.length > 0) {\n return\n }\n\n const activityType = message.summary?.activity_type\n if (!activityType) {\n return\n }\n\n // Handle deletion\n if (topic === 'activity.deleted') {\n updateCachedData((draft) => {\n if (!draft || !draft.pages) {\n console.warn('[Activity RT] No draft or pages found for deletion')\n return\n }\n\n let deleted = false\n for (const page of draft.pages) {\n const index = page.activities?.findIndex(\n (activity) => activity.activityId === activityId,\n )\n if (index !== -1) {\n page.activities.splice(index, 1)\n deleted = true\n }\n }\n\n if (deleted) {\n } else {\n }\n })\n return\n }\n\n // Handle creation and updates\n try {\n // Fetch the updated activity data using the enhanced endpoint\n // The GetActivitiesById endpoint is enhanced to return ActivitiesResult via transformResponse\n const result = await dispatch(\n gqlApi.endpoints.GetActivitiesById.initiate(\n {\n projectName,\n activityIds: [activityId],\n entityIds,\n },\n {\n forceRefetch: true, // Always fetch fresh data\n },\n ),\n )\n\n // Check if we have an error\n if ('error' in result && result.error) {\n console.error('[Activity RT] Error fetching activity:', result.error)\n throw new Error('Failed to fetch activity')\n }\n\n // The transformResponse in enhanceActivitiesApi converts GetActivitiesByIdQuery to ActivitiesResult\n // TypeScript doesn't see this transformation, so we cast through unknown\n const unknownData: unknown = result.data\n const res = unknownData as ActivitiesResult\n const newActivities = res?.activities || []\n\n if (newActivities.length === 0) {\n console.warn('[Activity RT] No activities found for activity_id', activityId)\n return\n }\n\n const newActivity: FeedActivity = newActivities[0]\n\n // Determine activity types to check against\n const activityTypes = [activityType]\n if (activityType === 'comment') {\n const body = newActivity?.body\n const hasChecklist = bodyHasChecklist(body || '')\n if (hasChecklist) {\n activityTypes.push('checklist')\n }\n }\n\n // Check if this activity type is relevant to the query\n const queryActivityTypes = queryArg.activityTypes\n const queryActivityTypesArray = Array.isArray(queryActivityTypes)\n ? queryActivityTypes\n : queryActivityTypes\n ? [queryActivityTypes]\n : []\n const isActivityTypeRelevant =\n queryActivityTypesArray.length === 0 ||\n queryActivityTypesArray.some((type: string) => activityTypes.includes(type))\n\n if (!isActivityTypeRelevant) {\n return\n }\n\n // Update the cache\n updateCachedData((draft) => {\n if (!draft || !draft.pages) {\n console.warn('[Activity RT] No draft or pages found for update')\n return\n }\n\n // Check if activity already exists in any page\n let existingActivityFound = false\n for (const page of draft.pages) {\n const index = page.activities?.findIndex(\n (activity) => activity.activityId === activityId,\n )\n if (index !== -1) {\n // Update existing activity\n page.activities[index] = newActivity\n existingActivityFound = true\n break\n }\n }\n\n // If it's a new activity (topic is 'activity.created'), add it to the first page\n if (!existingActivityFound && topic === 'activity.created') {\n if (draft.pages.length > 0 && draft.pages[0].activities) {\n // Add to the beginning of the first page (most recent activities first)\n // Since we're using reverse chronological order (last: N), prepend to the beginning\n draft.pages[0].activities.unshift(newActivity)\n } else {\n console.warn('[Activity RT] Cannot add activity: no pages or activities array')\n }\n } else if (!existingActivityFound) {\n } else {\n }\n })\n } catch (error) {\n console.error('[Activity RT] Error fetching activity data for real-time update:', error)\n\n // Invalidate the cache for these entities to trigger a refetch\n dispatch(\n gqlApi.util.invalidateTags(\n entityIds.map((entityId) => ({ type: 'entityActivities', id: entityId })),\n ),\n )\n }\n }\n\n // Subscribe to activity topic\n token = PubSub.subscribe(['activity'], handlePubSub)\n } catch (error) {\n console.error('[Activity RT] Error in activity real-time handler setup:', error)\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`\n }\n\n // Wait for cache entry to be removed\n await cacheEntryRemoved\n\n // Cleanup: unsubscribe from PubSub\n if (token) {\n PubSub.unsubscribe(token)\n }\n}\n"],"names":["bodyHasChecklist","body","handleActivityRealtimeUpdates","queryArg","updateCachedData","cacheDataLoaded","cacheEntryRemoved","dispatch","getCacheEntry","token","handlePubSub","topic","message","activityId","projectName","references","relevantReferenceTypes","entityIds","reference","queryEntityIds","qId","activityType","draft","deleted","page","index","activity","result","gqlApi","newActivities","newActivity","activityTypes","queryActivityTypes","queryActivityTypesArray","type","existingActivityFound","error","entityId","PubSub"],"mappings":"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"}
1
+ {"version":3,"file":"activityRealtimeHandler.es.js","sources":["../../../../../../../src/api/queries/activities/util/activityRealtimeHandler.ts"],"sourcesContent":["import { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport { ActivitiesResult } from './activitiesHelpers'\nimport type { GetActivitiesQueryVariables } from '@shared/api'\nimport { getActivitiesGQLApi as gqlApi } from '../getActivities'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { FeedActivity } from '../types'\n\nexport type ActivityMessage = {\n topic: string\n project: string\n user: string\n createdAt: string\n updatedAt: string\n id: string\n status: string\n summary?: {\n activity_id: string\n activity_type: string\n references: {\n entity_id: string\n entity_type: string\n reference_type: string\n }[]\n }\n}\n\ntype InfiniteDataDraft = {\n pages: ActivitiesResult[]\n}\n\ntype CacheLifecycleApi = {\n updateCachedData: (updateRecipe: (draft: InfiniteDataDraft) => void) => void\n cacheDataLoaded: Promise<unknown>\n cacheEntryRemoved: Promise<void>\n dispatch: ThunkDispatch<unknown, unknown, UnknownAction>\n getCacheEntry: () => { data?: InfiniteDataDraft }\n}\n\n/**\n * Checks if a comment body contains a checklist\n */\nconst bodyHasChecklist = (body: string): boolean => {\n if (!body) return false\n return body.includes('* [ ]') || body.includes('* [x]')\n}\n\n/**\n * Handles real-time activity updates for the infinite query cache\n */\nexport const handleActivityRealtimeUpdates = async (\n queryArg: Omit<GetActivitiesQueryVariables, 'last' | 'first' | 'cursor'> & { filter?: any },\n {\n updateCachedData,\n cacheDataLoaded,\n cacheEntryRemoved,\n dispatch,\n getCacheEntry,\n }: CacheLifecycleApi,\n) => {\n let token: string | undefined\n let unsubscribeThumbnails: (() => void) | undefined\n\n try {\n // Wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const draftData = getCacheEntry().data\n if (!draftData?.pages?.length) return\n\n // Map version ids/entity ids to their new thumbnail hashes\n const versionHashesData = messages.reduce((acc, message) => {\n if (message.summary.entityType === 'version') {\n acc[message.summary.entityId] = message.summary.thumbnailHash || '' // Use empty string if undefined\n }\n return acc\n }, {} as Record<string, string>)\n\n if (Object.keys(versionHashesData).length === 0) return\n\n updateCachedData((draft) => {\n if (!draft || !draft.pages) return\n draft.pages.forEach((page) => {\n page.activities?.forEach((activity) => {\n // Version hashes in activities exist when Activity is on a version.\n // Or the referenceId points to the version entity.\n if (\n activity.referenceType === 'version' &&\n activity.referenceId &&\n versionHashesData[activity.referenceId] !== undefined\n ) {\n if (!activity.version) {\n activity.version = {} as any\n }\n activity.version!.thumbnailHash = versionHashesData[activity.referenceId]\n }\n // Add check for entityId as well\n if (\n activity.origin.type === 'version' &&\n activity.origin.id &&\n versionHashesData[activity.origin.id] !== undefined\n ) {\n if (!activity.version) {\n activity.version = {} as any\n }\n activity.version!.thumbnailHash = versionHashesData[activity.origin.id]\n }\n })\n })\n })\n },\n ['version'],\n )\n\n const handlePubSub = async (topic: string, message: ActivityMessage) => {\n const activityId = message.summary?.activity_id\n if (!activityId) {\n console.warn('[Activity RT] Activity message missing activity_id', message)\n return\n }\n\n const projectName = message.project\n const references = message.summary?.references || []\n const relevantReferenceTypes = ['origin', 'mention', 'relation']\n const entityIds = references\n .filter((reference) => relevantReferenceTypes.includes(reference.reference_type))\n .map((reference) => reference.entity_id)\n\n // Check if this activity is relevant to the current cache\n const queryEntityIds = Array.isArray(queryArg.entityIds)\n ? queryArg.entityIds\n : [queryArg.entityIds]\n\n const isRelevant = queryEntityIds.some((qId) => entityIds.includes(qId))\n\n if (!isRelevant && queryEntityIds.length > 0) {\n return\n }\n\n const activityType = message.summary?.activity_type\n if (!activityType) {\n return\n }\n\n // Handle deletion\n if (topic === 'activity.deleted') {\n updateCachedData((draft) => {\n if (!draft || !draft.pages) {\n console.warn('[Activity RT] No draft or pages found for deletion')\n return\n }\n\n let deleted = false\n for (const page of draft.pages) {\n const index = page.activities?.findIndex(\n (activity) => activity.activityId === activityId,\n )\n if (index !== -1) {\n page.activities.splice(index, 1)\n deleted = true\n }\n }\n\n if (deleted) {\n } else {\n }\n })\n return\n }\n\n // Handle creation and updates\n try {\n // Fetch the updated activity data using the enhanced endpoint\n // The GetActivitiesById endpoint is enhanced to return ActivitiesResult via transformResponse\n const result = await dispatch(\n gqlApi.endpoints.GetActivitiesById.initiate(\n {\n projectName,\n activityIds: [activityId],\n entityIds,\n },\n {\n forceRefetch: true, // Always fetch fresh data\n },\n ),\n )\n\n // Check if we have an error\n if ('error' in result && result.error) {\n console.error('[Activity RT] Error fetching activity:', result.error)\n throw new Error('Failed to fetch activity')\n }\n\n // The transformResponse in enhanceActivitiesApi converts GetActivitiesByIdQuery to ActivitiesResult\n // TypeScript doesn't see this transformation, so we cast through unknown\n const unknownData: unknown = result.data\n const res = unknownData as ActivitiesResult\n const newActivities = res?.activities || []\n\n if (newActivities.length === 0) {\n console.warn('[Activity RT] No activities found for activity_id', activityId)\n return\n }\n\n const newActivity: FeedActivity = newActivities[0]\n\n // Determine activity types to check against\n const activityTypes = [activityType]\n if (activityType === 'comment') {\n const body = newActivity?.body\n const hasChecklist = bodyHasChecklist(body || '')\n if (hasChecklist) {\n activityTypes.push('checklist')\n }\n }\n\n // Check if this activity type is relevant to the query\n const queryActivityTypes = queryArg.activityTypes\n const queryActivityTypesArray = Array.isArray(queryActivityTypes)\n ? queryActivityTypes\n : queryActivityTypes\n ? [queryActivityTypes]\n : []\n const isActivityTypeRelevant =\n queryActivityTypesArray.length === 0 ||\n queryActivityTypesArray.some((type: string) => activityTypes.includes(type))\n\n if (!isActivityTypeRelevant) {\n return\n }\n\n // Update the cache\n updateCachedData((draft) => {\n if (!draft || !draft.pages) {\n console.warn('[Activity RT] No draft or pages found for update')\n return\n }\n\n // Check if activity already exists in any page\n let existingActivityFound = false\n for (const page of draft.pages) {\n const index = page.activities?.findIndex(\n (activity) => activity.activityId === activityId,\n )\n if (index !== -1) {\n // Update existing activity\n page.activities[index] = newActivity\n existingActivityFound = true\n break\n }\n }\n\n // If it's a new activity (topic is 'activity.created'), add it to the first page\n if (!existingActivityFound && topic === 'activity.created') {\n if (draft.pages.length > 0 && draft.pages[0].activities) {\n // Add to the beginning of the first page (most recent activities first)\n // Since we're using reverse chronological order (last: N), prepend to the beginning\n draft.pages[0].activities.unshift(newActivity)\n } else {\n console.warn('[Activity RT] Cannot add activity: no pages or activities array')\n }\n } else if (!existingActivityFound) {\n } else {\n }\n })\n } catch (error) {\n console.error('[Activity RT] Error fetching activity data for real-time update:', error)\n\n // Invalidate the cache for these entities to trigger a refetch\n dispatch(\n gqlApi.util.invalidateTags(\n entityIds.map((entityId) => ({ type: 'entityActivities', id: entityId })),\n ),\n )\n }\n }\n\n // Subscribe to activity topic\n token = PubSub.subscribe(['activity'], handlePubSub)\n } catch (error) {\n console.error('[Activity RT] Error in activity real-time handler setup:', error)\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`\n }\n\n // Wait for cache entry to be removed\n await cacheEntryRemoved\n\n // Cleanup: unsubscribe from PubSub\n if (token) {\n PubSub.unsubscribe(token)\n }\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n}\n"],"names":["bodyHasChecklist","body","handleActivityRealtimeUpdates","queryArg","updateCachedData","cacheDataLoaded","cacheEntryRemoved","dispatch","getCacheEntry","token","unsubscribeThumbnails","subscribeToThumbnailUpdates","messages","versionHashesData","acc","message","draft","page","activity","handlePubSub","topic","activityId","projectName","references","relevantReferenceTypes","entityIds","reference","queryEntityIds","qId","activityType","deleted","index","result","gqlApi","newActivities","newActivity","activityTypes","queryActivityTypes","queryActivityTypesArray","type","existingActivityFound","error","entityId","PubSub"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=t=>t.replace(/_([a-z0-9])/g,(e,o)=>o.toUpperCase()),f={task_type:"subType",folder_type:"subType",product_type:"subType"},d=t=>t in f?f[t]:t.startsWith("project_attributes_")?"attrib_"+t.slice(19):t.startsWith("attrib_")?t:C(t),g=t=>{if(t==null)return;let e=t;if(typeof e=="string")try{e=JSON.parse(e)}catch{return}if(Array.isArray(e)){const o=new Map;for(const n of e){if(!n||n.value==null)continue;const l=Array.isArray(n.value)?n.value:[n.value];for(const c of l){const u=String(c),s=o.get(u);o.set(u,{...n,value:u,count:(s?.count??0)+(Number(n.count)||0)})}}return[...o.values()]}if(typeof e=="object")return Object.entries(e).map(([o,n])=>({value:o,count:Number(n)||0}))},p=t=>t.map(e=>({...e,distribution:g(e.distribution)})),y=(t=[],e=[])=>{const o=new Map;for(const n of e)o.set(d(n.columnName),{...n});for(const n of t){const l=d(n.columnName),c={...o.get(l)||{columnName:n.columnName}};for(const[u,s]of Object.entries(n))s!=null&&(c[u]=s);o.set(l,c)}return[...o.values()]},a=(t,e)=>t==null&&e==null?void 0:(t??0)+(e??0),h=(t,e)=>t==null?e??void 0:e==null||t<e?t:e,F=(t,e)=>t==null?e??void 0:e==null||t>e?t:e,v=(t,e)=>t!=null&&e!=null&&t+e>0?Math.round(t/(t+e)*1e4)/100:void 0,N=(t,e)=>{const o=a(t.valueFilledCount,e.valueFilledCount),n=a(t.valueNotFilledCount,e.valueNotFilledCount),l=a(t.checkedCount,e.checkedCount),c=a(t.notCheckedCount,e.notCheckedCount);let u;if(t.avg!=null&&e.avg!=null){const r=t.valueFilledCount,i=e.valueFilledCount;u=r!=null&&i!=null&&r+i>0?(t.avg*r+e.avg*i)/(r+i):(t.avg+e.avg)/2,u=Math.round(u*100)/100}else u=t.avg??e.avg??void 0;let s;if(t.distribution?.length||e.distribution?.length){const r=new Map;for(const i of[...t.distribution??[],...e.distribution??[]]){const m=r.get(i.value);r.set(i.value,m?{...m,count:m.count+i.count}:{...i})}s=[...r.values()]}return{columnName:t.columnName,min:h(t.min,e.min),max:F(t.max,e.max),avg:u,sum:a(t.sum,e.sum),valueFilledCount:o,valueNotFilledCount:n,percentageFilled:v(o,n),percentageNotFilled:v(n,o),checkedCount:l,notCheckedCount:c,checkedPercentage:v(l,c),notCheckedPercentage:v(c,l),distribution:s,primaryCount:t.primaryCount??e.primaryCount,secondaryCount:t.secondaryCount??e.secondaryCount}},S=t=>t.reduce((e,o)=>Math.max(e,(o.valueFilledCount??0)+(o.valueNotFilledCount??0)),0),k=(t,e=[])=>{const o=new Map;for(const l of t)o.set(d(l.columnName),l);const n=new Map(o);for(const l of e){const c=d(l.columnName),u=o.get(c);n.set(c,u?N(u,l):l)}return[...n.values()]};exports.canonicalColumnId=d;exports.combineFieldStats=k;exports.mergeFieldStats=y;exports.normalizeFieldStats=p;exports.totalRowsFromStats=S;
2
+ //# sourceMappingURL=columnStats.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columnStats.cjs.js","sources":["../../../../../../src/api/queries/columnStats/columnStats.ts"],"sourcesContent":["// Shape of the backend GraphQL `ColumnStats` (connection.fieldStats).\n// `sum` and `distribution` are typed ahead of backend support so wiring them is a no-op.\nexport type FieldStats = {\n columnName: string\n // numeric for number columns, ISO date string for datetime columns\n min?: number | string | null\n max?: number | string | null\n avg?: number | null\n sum?: number | null\n valueFilledCount?: number | null\n percentageFilled?: number | null\n valueNotFilledCount?: number | null\n percentageNotFilled?: number | null\n checkedCount?: number | null\n checkedPercentage?: number | null\n notCheckedCount?: number | null\n notCheckedPercentage?: number | null\n distribution?:\n | { value: string; label?: string | null; color?: string | null; count: number }[]\n | null\n // main/count column: primary/secondary entity totals (folders/tasks, products/versions)\n primaryCount?: number | null\n secondaryCount?: number | null\n}\n\nconst snakeToCamel = (s: string): string => s.replace(/_([a-z0-9])/g, (_, c) => c.toUpperCase())\n\n// Per-entity \"type\" columns all map to the unified `subType` column in the table.\n// (`product_base_type` is a separate column — productBaseType — so not aliased.)\nconst COLUMN_ALIASES: Record<string, string> = {\n task_type: 'subType',\n folder_type: 'subType',\n product_type: 'subType',\n}\n\n// Canonical frontend column id for a backend column name. Attribute columns keep\n// their `attrib_` form; everything else is snake_case on the backend but camelCase\n// in the table (product_base_type → productBaseType, created_at → createdAt).\nexport const canonicalColumnId = (name: string): string => {\n if (name in COLUMN_ALIASES) return COLUMN_ALIASES[name]\n if (name.startsWith('project_attributes_')) {\n return 'attrib_' + name.slice('project_attributes_'.length)\n }\n if (name.startsWith('attrib_')) return name\n return snakeToCamel(name)\n}\n\nconst normalizeDistribution = (raw: unknown): FieldStats['distribution'] => {\n if (raw == null) return undefined\n let value = raw\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value)\n } catch {\n return undefined\n }\n }\n if (Array.isArray(value)) {\n // dedupe by value; array buckets (tags/assignees combos) unnest per value\n const byValue = new Map<string, { value: string; count: number }>()\n for (const d of value) {\n if (!d || d.value == null) continue\n const vals = Array.isArray(d.value) ? d.value : [d.value]\n for (const raw of vals) {\n const v = String(raw)\n const prev = byValue.get(v)\n byValue.set(v, { ...d, value: v, count: (prev?.count ?? 0) + (Number(d.count) || 0) })\n }\n }\n return [...byValue.values()]\n }\n if (typeof value === 'object') {\n return Object.entries(value as Record<string, unknown>).map(([v, count]) => ({\n value: v,\n count: Number(count) || 0,\n }))\n }\n return undefined\n}\n\n// Normalize a raw fieldStats response (apply in transformResponse).\nexport const normalizeFieldStats = (stats: FieldStats[]): FieldStats[] =>\n stats.map((s) => ({ ...s, distribution: normalizeDistribution(s.distribution) }))\n\n// Merge stats lists by canonical column id, field-wise: overlay's non-null values\n// win, base fills the gaps. A single list also dedupes its own repeated columns.\nexport const mergeFieldStats = (\n overlay: FieldStats[] = [],\n base: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of base) byId.set(canonicalColumnId(s.columnName), { ...s })\n for (const s of overlay) {\n const id = canonicalColumnId(s.columnName)\n const merged: FieldStats = { ...(byId.get(id) || { columnName: s.columnName }) }\n for (const [k, v] of Object.entries(s)) {\n if (v !== null && v !== undefined) (merged as any)[k] = v\n }\n byId.set(id, merged)\n }\n return [...byId.values()]\n}\n\nconst sumN = (a?: number | null, b?: number | null): number | undefined =>\n a == null && b == null ? undefined : (a ?? 0) + (b ?? 0)\nconst lowest = <T,>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a < b ? a : b\nconst highest = <T,>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a > b ? a : b\nconst pct = (part?: number, rest?: number): number | undefined =>\n part != null && rest != null && part + rest > 0\n ? Math.round((part / (part + rest)) * 10000) / 100\n : undefined\n\n// Additive combine of one column's stats from two entity sets (e.g. folder +\n// task). Counts sum, min/max widen, percentages recompute, avg is weighted by\n// filled counts when available.\nconst combineTwo = (a: FieldStats, b: FieldStats): FieldStats => {\n const filled = sumN(a.valueFilledCount, b.valueFilledCount)\n const notFilled = sumN(a.valueNotFilledCount, b.valueNotFilledCount)\n const checked = sumN(a.checkedCount, b.checkedCount)\n const notChecked = sumN(a.notCheckedCount, b.notCheckedCount)\n\n let avg: number | undefined\n if (a.avg != null && b.avg != null) {\n const wa = a.valueFilledCount\n const wb = b.valueFilledCount\n avg =\n wa != null && wb != null && wa + wb > 0\n ? (a.avg * wa + b.avg * wb) / (wa + wb)\n : (a.avg + b.avg) / 2\n avg = Math.round(avg * 100) / 100\n } else {\n avg = a.avg ?? b.avg ?? undefined\n }\n\n let distribution: FieldStats['distribution']\n if (a.distribution?.length || b.distribution?.length) {\n const byValue = new Map<string, NonNullable<FieldStats['distribution']>[number]>()\n for (const d of [...(a.distribution ?? []), ...(b.distribution ?? [])]) {\n const prev = byValue.get(d.value)\n byValue.set(d.value, prev ? { ...prev, count: prev.count + d.count } : { ...d })\n }\n distribution = [...byValue.values()]\n }\n\n return {\n columnName: a.columnName,\n min: lowest(a.min, b.min),\n max: highest(a.max, b.max),\n avg,\n sum: sumN(a.sum, b.sum),\n valueFilledCount: filled,\n valueNotFilledCount: notFilled,\n percentageFilled: pct(filled, notFilled),\n percentageNotFilled: pct(notFilled, filled),\n checkedCount: checked,\n notCheckedCount: notChecked,\n checkedPercentage: pct(checked, notChecked),\n notCheckedPercentage: pct(notChecked, checked),\n distribution,\n primaryCount: a.primaryCount ?? b.primaryCount,\n secondaryCount: a.secondaryCount ?? b.secondaryCount,\n }\n}\n\n// Total row count for an entity set = max(filled + not-filled) across its\n// stat columns. Feeds the main folders/tasks count cell.\nexport const totalRowsFromStats = (stats: FieldStats[]): number =>\n stats.reduce(\n (max, s) => Math.max(max, (s.valueFilledCount ?? 0) + (s.valueNotFilledCount ?? 0)),\n 0,\n )\n\n// Combine primary-entity stats (tasks/versions) with group-entity stats\n// (folders/products) for the \"include groups & folders\" row scope.\nexport const combineFieldStats = (\n primary: FieldStats[],\n group: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of primary) byId.set(canonicalColumnId(s.columnName), s)\n const out = new Map(byId)\n for (const g of group) {\n const id = canonicalColumnId(g.columnName)\n const p = byId.get(id)\n out.set(id, p ? combineTwo(p, g) : g)\n }\n return [...out.values()]\n}\n"],"names":["snakeToCamel","s","_","c","COLUMN_ALIASES","canonicalColumnId","name","normalizeDistribution","raw","value","byValue","d","vals","v","prev","count","normalizeFieldStats","stats","mergeFieldStats","overlay","base","byId","id","merged","k","sumN","a","b","lowest","highest","pct","part","rest","combineTwo","filled","notFilled","checked","notChecked","avg","wa","wb","distribution","totalRowsFromStats","max","combineFieldStats","primary","group","out","g","p"],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ const C = (t) => t.replace(/_([a-z0-9])/g, (e, o) => o.toUpperCase()), f = {
2
+ task_type: "subType",
3
+ folder_type: "subType",
4
+ product_type: "subType"
5
+ }, v = (t) => t in f ? f[t] : t.startsWith("project_attributes_") ? "attrib_" + t.slice(19) : t.startsWith("attrib_") ? t : C(t), p = (t) => {
6
+ if (t == null) return;
7
+ let e = t;
8
+ if (typeof e == "string")
9
+ try {
10
+ e = JSON.parse(e);
11
+ } catch {
12
+ return;
13
+ }
14
+ if (Array.isArray(e)) {
15
+ const o = /* @__PURE__ */ new Map();
16
+ for (const n of e) {
17
+ if (!n || n.value == null) continue;
18
+ const u = Array.isArray(n.value) ? n.value : [n.value];
19
+ for (const c of u) {
20
+ const l = String(c), i = o.get(l);
21
+ o.set(l, { ...n, value: l, count: (i?.count ?? 0) + (Number(n.count) || 0) });
22
+ }
23
+ }
24
+ return [...o.values()];
25
+ }
26
+ if (typeof e == "object")
27
+ return Object.entries(e).map(([o, n]) => ({
28
+ value: o,
29
+ count: Number(n) || 0
30
+ }));
31
+ }, N = (t) => t.map((e) => ({ ...e, distribution: p(e.distribution) })), F = (t = [], e = []) => {
32
+ const o = /* @__PURE__ */ new Map();
33
+ for (const n of e) o.set(v(n.columnName), { ...n });
34
+ for (const n of t) {
35
+ const u = v(n.columnName), c = { ...o.get(u) || { columnName: n.columnName } };
36
+ for (const [l, i] of Object.entries(n))
37
+ i != null && (c[l] = i);
38
+ o.set(u, c);
39
+ }
40
+ return [...o.values()];
41
+ }, a = (t, e) => t == null && e == null ? void 0 : (t ?? 0) + (e ?? 0), g = (t, e) => t == null ? e ?? void 0 : e == null || t < e ? t : e, y = (t, e) => t == null ? e ?? void 0 : e == null || t > e ? t : e, d = (t, e) => t != null && e != null && t + e > 0 ? Math.round(t / (t + e) * 1e4) / 100 : void 0, h = (t, e) => {
42
+ const o = a(t.valueFilledCount, e.valueFilledCount), n = a(t.valueNotFilledCount, e.valueNotFilledCount), u = a(t.checkedCount, e.checkedCount), c = a(t.notCheckedCount, e.notCheckedCount);
43
+ let l;
44
+ if (t.avg != null && e.avg != null) {
45
+ const r = t.valueFilledCount, s = e.valueFilledCount;
46
+ l = r != null && s != null && r + s > 0 ? (t.avg * r + e.avg * s) / (r + s) : (t.avg + e.avg) / 2, l = Math.round(l * 100) / 100;
47
+ } else
48
+ l = t.avg ?? e.avg ?? void 0;
49
+ let i;
50
+ if (t.distribution?.length || e.distribution?.length) {
51
+ const r = /* @__PURE__ */ new Map();
52
+ for (const s of [...t.distribution ?? [], ...e.distribution ?? []]) {
53
+ const m = r.get(s.value);
54
+ r.set(s.value, m ? { ...m, count: m.count + s.count } : { ...s });
55
+ }
56
+ i = [...r.values()];
57
+ }
58
+ return {
59
+ columnName: t.columnName,
60
+ min: g(t.min, e.min),
61
+ max: y(t.max, e.max),
62
+ avg: l,
63
+ sum: a(t.sum, e.sum),
64
+ valueFilledCount: o,
65
+ valueNotFilledCount: n,
66
+ percentageFilled: d(o, n),
67
+ percentageNotFilled: d(n, o),
68
+ checkedCount: u,
69
+ notCheckedCount: c,
70
+ checkedPercentage: d(u, c),
71
+ notCheckedPercentage: d(c, u),
72
+ distribution: i,
73
+ primaryCount: t.primaryCount ?? e.primaryCount,
74
+ secondaryCount: t.secondaryCount ?? e.secondaryCount
75
+ };
76
+ }, k = (t) => t.reduce(
77
+ (e, o) => Math.max(e, (o.valueFilledCount ?? 0) + (o.valueNotFilledCount ?? 0)),
78
+ 0
79
+ ), _ = (t, e = []) => {
80
+ const o = /* @__PURE__ */ new Map();
81
+ for (const u of t) o.set(v(u.columnName), u);
82
+ const n = new Map(o);
83
+ for (const u of e) {
84
+ const c = v(u.columnName), l = o.get(c);
85
+ n.set(c, l ? h(l, u) : u);
86
+ }
87
+ return [...n.values()];
88
+ };
89
+ export {
90
+ v as canonicalColumnId,
91
+ _ as combineFieldStats,
92
+ F as mergeFieldStats,
93
+ N as normalizeFieldStats,
94
+ k as totalRowsFromStats
95
+ };
96
+ //# sourceMappingURL=columnStats.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columnStats.es.js","sources":["../../../../../../src/api/queries/columnStats/columnStats.ts"],"sourcesContent":["// Shape of the backend GraphQL `ColumnStats` (connection.fieldStats).\n// `sum` and `distribution` are typed ahead of backend support so wiring them is a no-op.\nexport type FieldStats = {\n columnName: string\n // numeric for number columns, ISO date string for datetime columns\n min?: number | string | null\n max?: number | string | null\n avg?: number | null\n sum?: number | null\n valueFilledCount?: number | null\n percentageFilled?: number | null\n valueNotFilledCount?: number | null\n percentageNotFilled?: number | null\n checkedCount?: number | null\n checkedPercentage?: number | null\n notCheckedCount?: number | null\n notCheckedPercentage?: number | null\n distribution?:\n | { value: string; label?: string | null; color?: string | null; count: number }[]\n | null\n // main/count column: primary/secondary entity totals (folders/tasks, products/versions)\n primaryCount?: number | null\n secondaryCount?: number | null\n}\n\nconst snakeToCamel = (s: string): string => s.replace(/_([a-z0-9])/g, (_, c) => c.toUpperCase())\n\n// Per-entity \"type\" columns all map to the unified `subType` column in the table.\n// (`product_base_type` is a separate column — productBaseType — so not aliased.)\nconst COLUMN_ALIASES: Record<string, string> = {\n task_type: 'subType',\n folder_type: 'subType',\n product_type: 'subType',\n}\n\n// Canonical frontend column id for a backend column name. Attribute columns keep\n// their `attrib_` form; everything else is snake_case on the backend but camelCase\n// in the table (product_base_type → productBaseType, created_at → createdAt).\nexport const canonicalColumnId = (name: string): string => {\n if (name in COLUMN_ALIASES) return COLUMN_ALIASES[name]\n if (name.startsWith('project_attributes_')) {\n return 'attrib_' + name.slice('project_attributes_'.length)\n }\n if (name.startsWith('attrib_')) return name\n return snakeToCamel(name)\n}\n\nconst normalizeDistribution = (raw: unknown): FieldStats['distribution'] => {\n if (raw == null) return undefined\n let value = raw\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value)\n } catch {\n return undefined\n }\n }\n if (Array.isArray(value)) {\n // dedupe by value; array buckets (tags/assignees combos) unnest per value\n const byValue = new Map<string, { value: string; count: number }>()\n for (const d of value) {\n if (!d || d.value == null) continue\n const vals = Array.isArray(d.value) ? d.value : [d.value]\n for (const raw of vals) {\n const v = String(raw)\n const prev = byValue.get(v)\n byValue.set(v, { ...d, value: v, count: (prev?.count ?? 0) + (Number(d.count) || 0) })\n }\n }\n return [...byValue.values()]\n }\n if (typeof value === 'object') {\n return Object.entries(value as Record<string, unknown>).map(([v, count]) => ({\n value: v,\n count: Number(count) || 0,\n }))\n }\n return undefined\n}\n\n// Normalize a raw fieldStats response (apply in transformResponse).\nexport const normalizeFieldStats = (stats: FieldStats[]): FieldStats[] =>\n stats.map((s) => ({ ...s, distribution: normalizeDistribution(s.distribution) }))\n\n// Merge stats lists by canonical column id, field-wise: overlay's non-null values\n// win, base fills the gaps. A single list also dedupes its own repeated columns.\nexport const mergeFieldStats = (\n overlay: FieldStats[] = [],\n base: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of base) byId.set(canonicalColumnId(s.columnName), { ...s })\n for (const s of overlay) {\n const id = canonicalColumnId(s.columnName)\n const merged: FieldStats = { ...(byId.get(id) || { columnName: s.columnName }) }\n for (const [k, v] of Object.entries(s)) {\n if (v !== null && v !== undefined) (merged as any)[k] = v\n }\n byId.set(id, merged)\n }\n return [...byId.values()]\n}\n\nconst sumN = (a?: number | null, b?: number | null): number | undefined =>\n a == null && b == null ? undefined : (a ?? 0) + (b ?? 0)\nconst lowest = <T,>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a < b ? a : b\nconst highest = <T,>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a > b ? a : b\nconst pct = (part?: number, rest?: number): number | undefined =>\n part != null && rest != null && part + rest > 0\n ? Math.round((part / (part + rest)) * 10000) / 100\n : undefined\n\n// Additive combine of one column's stats from two entity sets (e.g. folder +\n// task). Counts sum, min/max widen, percentages recompute, avg is weighted by\n// filled counts when available.\nconst combineTwo = (a: FieldStats, b: FieldStats): FieldStats => {\n const filled = sumN(a.valueFilledCount, b.valueFilledCount)\n const notFilled = sumN(a.valueNotFilledCount, b.valueNotFilledCount)\n const checked = sumN(a.checkedCount, b.checkedCount)\n const notChecked = sumN(a.notCheckedCount, b.notCheckedCount)\n\n let avg: number | undefined\n if (a.avg != null && b.avg != null) {\n const wa = a.valueFilledCount\n const wb = b.valueFilledCount\n avg =\n wa != null && wb != null && wa + wb > 0\n ? (a.avg * wa + b.avg * wb) / (wa + wb)\n : (a.avg + b.avg) / 2\n avg = Math.round(avg * 100) / 100\n } else {\n avg = a.avg ?? b.avg ?? undefined\n }\n\n let distribution: FieldStats['distribution']\n if (a.distribution?.length || b.distribution?.length) {\n const byValue = new Map<string, NonNullable<FieldStats['distribution']>[number]>()\n for (const d of [...(a.distribution ?? []), ...(b.distribution ?? [])]) {\n const prev = byValue.get(d.value)\n byValue.set(d.value, prev ? { ...prev, count: prev.count + d.count } : { ...d })\n }\n distribution = [...byValue.values()]\n }\n\n return {\n columnName: a.columnName,\n min: lowest(a.min, b.min),\n max: highest(a.max, b.max),\n avg,\n sum: sumN(a.sum, b.sum),\n valueFilledCount: filled,\n valueNotFilledCount: notFilled,\n percentageFilled: pct(filled, notFilled),\n percentageNotFilled: pct(notFilled, filled),\n checkedCount: checked,\n notCheckedCount: notChecked,\n checkedPercentage: pct(checked, notChecked),\n notCheckedPercentage: pct(notChecked, checked),\n distribution,\n primaryCount: a.primaryCount ?? b.primaryCount,\n secondaryCount: a.secondaryCount ?? b.secondaryCount,\n }\n}\n\n// Total row count for an entity set = max(filled + not-filled) across its\n// stat columns. Feeds the main folders/tasks count cell.\nexport const totalRowsFromStats = (stats: FieldStats[]): number =>\n stats.reduce(\n (max, s) => Math.max(max, (s.valueFilledCount ?? 0) + (s.valueNotFilledCount ?? 0)),\n 0,\n )\n\n// Combine primary-entity stats (tasks/versions) with group-entity stats\n// (folders/products) for the \"include groups & folders\" row scope.\nexport const combineFieldStats = (\n primary: FieldStats[],\n group: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of primary) byId.set(canonicalColumnId(s.columnName), s)\n const out = new Map(byId)\n for (const g of group) {\n const id = canonicalColumnId(g.columnName)\n const p = byId.get(id)\n out.set(id, p ? combineTwo(p, g) : g)\n }\n return [...out.values()]\n}\n"],"names":["snakeToCamel","s","_","c","COLUMN_ALIASES","canonicalColumnId","name","normalizeDistribution","raw","value","byValue","d","vals","v","prev","count","normalizeFieldStats","stats","mergeFieldStats","overlay","base","byId","id","merged","k","sumN","a","b","lowest","highest","pct","part","rest","combineTwo","filled","notFilled","checked","notChecked","avg","wa","wb","distribution","totalRowsFromStats","max","combineFieldStats","primary","group","out","g","p"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");const e=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");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");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 p=t=>{const s=t?.targets;return Array.isArray(s)?s:s?[s]:[]},f=(t,s)=>{if(!t)return!1;if(!s)return!0;const o=new Set(p(s).map(u=>u.field));return p(t).some(u=>!o.has(u.field))},d=[e.StatsOperation.Filled,e.StatsOperation.NotFilled],c=[e.StatsOperation.Min,e.StatsOperation.Max,e.StatsOperation.Avg,e.StatsOperation.Sum,e.StatsOperation.Filled,e.StatsOperation.NotFilled],a=[e.StatsOperation.Filled,e.StatsOperation.NotFilled,e.StatsOperation.Distribution],S={folder:"folder_type",task:"task_type",product:"product_type",version:null},h=({entity:t,attribs:s,columnVisibility:o,extraFields:u=[]})=>{const n=i=>o[i]!==!1,r=[];t==="version"?r.push({field:"status",aggregations:a}):(r.push({field:"name",aggregations:d}),n("status")&&r.push({field:"status",aggregations:a})),n("tags")&&r.push({field:"tags",aggregations:a}),t==="task"&&n("assignees")&&r.push({field:"assignees",aggregations:a});const l=S[t];l&&n("subType")&&r.push({field:l,aggregations:a});for(const i of u)r.push({field:i,aggregations:a});for(const i of s){if(i.scope&&!i.scope.includes(t)||!n(`attrib_${i.name}`))continue;const q=`attrib.${i.name}`,g=i.data?.type;g==="integer"||g==="float"?r.push({field:q,aggregations:c}):g==="string"&&r.push({field:q,aggregations:i.data?.enum?.length?a:d})}return r};exports.buildMetricTargets=h;exports.hasNewTargetFields=f;
2
+ //# sourceMappingURL=metricTargets.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metricTargets.cjs.js","sources":["../../../../../../src/api/queries/columnStats/metricTargets.ts"],"sourcesContent":["import type { VisibilityState } from '@tanstack/react-table'\nimport { StatsOperation } from '@shared/api/generated'\n\nexport type MetricTarget = {\n field: string // column or dot-path for JSONB, e.g. 'status' / 'attrib.fps'\n aggregations: StatsOperation[]\n}\n\nexport type StatsEntity = 'folder' | 'task' | 'product' | 'version'\n\n// matches both MetricTarget[] and the codegen'd single-or-array variables type\ntype TargetsArg = { targets?: { field: string }[] | { field: string } | null }\nconst targetFields = (arg?: TargetsArg): { field: string }[] => {\n const t = arg?.targets\n return Array.isArray(t) ? t : t ? [t] : []\n}\n\n// refetch only when a target was added — hiding a column needs no query\nexport const hasNewTargetFields = (current?: TargetsArg, previous?: TargetsArg): boolean => {\n if (!current) return false\n if (!previous) return true\n const prevFields = new Set(targetFields(previous).map((t) => t.field))\n return targetFields(current).some((t) => !prevFields.has(t.field))\n}\n\nconst COUNTS: StatsOperation[] = [StatsOperation.Filled, StatsOperation.NotFilled]\n// FILLED rides along so combined-scope averages can be weighted exactly\nconst NUMERIC: StatsOperation[] = [\n StatsOperation.Min,\n StatsOperation.Max,\n StatsOperation.Avg,\n StatsOperation.Sum,\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n]\n// enum columns: counts power the fallback display, distribution the colored bar\nconst ENUM: StatsOperation[] = [\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n StatsOperation.Distribution,\n]\n\n// The table's unified subType column per entity (result columnName maps back\n// to subType via COLUMN_ALIASES in columnStats).\nconst SUB_TYPE_FIELD: Record<StatsEntity, string | null> = {\n folder: 'folder_type',\n task: 'task_type',\n product: 'product_type',\n version: null,\n}\n\n// Structural subset of ProjectTableAttribute — two near-identical versions of\n// that type exist (types/index vs hooks/useAttributesList, data.type optional\n// in the latter); only these fields are needed here so accept both.\ntype AttribFieldLike = {\n name: string\n scope?: string[] | null\n data?: { type?: string; enum?: unknown[] }\n}\n\ntype BuildMetricTargetsArgs = {\n entity: StatsEntity\n attribs: AttribFieldLike[]\n columnVisibility: VisibilityState\n extraFields?: string[] // visible page-specific columns, e.g. 'product_base_type'\n}\n\n// Targets for the footer over the columns the user can actually see.\n// Skipped on purpose (backend SQL can't aggregate them safely yet):\n// datetime (numeric cast fails), boolean attribs (text-vs-bool compare on\n// JSONB), and list-type attribs.\nexport const buildMetricTargets = ({\n entity,\n attribs,\n columnVisibility,\n extraFields = [],\n}: BuildMetricTargetsArgs): MetricTarget[] => {\n // TanStack visibility map only stores toggled columns — absent means visible.\n const isVisible = (columnId: string) => columnVisibility[columnId] !== false\n\n const targets: MetricTarget[] = []\n if (entity === 'version') {\n // versions have no `name` column (display name derives from the version\n // number) — status is non-null and doubles as the row-count anchor\n targets.push({ field: 'status', aggregations: ENUM })\n } else {\n // name counts always — they feed the main folders/tasks count cell\n targets.push({ field: 'name', aggregations: COUNTS })\n if (isVisible('status')) targets.push({ field: 'status', aggregations: ENUM })\n }\n if (isVisible('tags')) targets.push({ field: 'tags', aggregations: ENUM })\n if (entity === 'task' && isVisible('assignees')) {\n targets.push({ field: 'assignees', aggregations: ENUM })\n }\n\n const subTypeField = SUB_TYPE_FIELD[entity]\n if (subTypeField && isVisible('subType')) {\n targets.push({ field: subTypeField, aggregations: ENUM })\n }\n\n for (const field of extraFields) {\n targets.push({ field, aggregations: ENUM })\n }\n\n for (const attrib of attribs) {\n if (attrib.scope && !attrib.scope.includes(entity)) continue\n if (!isVisible(`attrib_${attrib.name}`)) continue\n\n const field = `attrib.${attrib.name}`\n const type = attrib.data?.type\n if (type === 'integer' || type === 'float') {\n targets.push({ field, aggregations: NUMERIC })\n } else if (type === 'string') {\n targets.push({ field, aggregations: attrib.data?.enum?.length ? ENUM : COUNTS })\n }\n }\n\n return targets\n}\n"],"names":["targetFields","arg","t","hasNewTargetFields","current","previous","prevFields","COUNTS","StatsOperation","NUMERIC","ENUM","SUB_TYPE_FIELD","buildMetricTargets","entity","attribs","columnVisibility","extraFields","isVisible","columnId","targets","subTypeField","field","attrib","type"],"mappings":"oxDAYA,MAAMA,EAAgBC,GAA0C,CAC9D,MAAMC,EAAID,GAAK,QACf,OAAO,MAAM,QAAQC,CAAC,EAAIA,EAAIA,EAAI,CAACA,CAAC,EAAI,CAAA,CAC1C,EAGaC,EAAqB,CAACC,EAAsBC,IAAmC,CAC1F,GAAI,CAACD,EAAS,MAAO,GACrB,GAAI,CAACC,EAAU,MAAO,GACtB,MAAMC,EAAa,IAAI,IAAIN,EAAaK,CAAQ,EAAE,IAAKH,GAAMA,EAAE,KAAK,CAAC,EACrE,OAAOF,EAAaI,CAAO,EAAE,KAAMF,GAAM,CAACI,EAAW,IAAIJ,EAAE,KAAK,CAAC,CACnE,EAEMK,EAA2B,CAACC,EAAAA,eAAe,OAAQA,EAAAA,eAAe,SAAS,EAE3EC,EAA4B,CAChCD,EAAAA,eAAe,IACfA,EAAAA,eAAe,IACfA,EAAAA,eAAe,IACfA,EAAAA,eAAe,IACfA,EAAAA,eAAe,OACfA,iBAAe,SACjB,EAEME,EAAyB,CAC7BF,EAAAA,eAAe,OACfA,EAAAA,eAAe,UACfA,iBAAe,YACjB,EAIMG,EAAqD,CACzD,OAAQ,cACR,KAAM,YACN,QAAS,eACT,QAAS,IACX,EAsBaC,EAAqB,CAAC,CACjC,OAAAC,EACA,QAAAC,EACA,iBAAAC,EACA,YAAAC,EAAc,CAAA,CAChB,IAA8C,CAE5C,MAAMC,EAAaC,GAAqBH,EAAiBG,CAAQ,IAAM,GAEjEC,EAA0B,CAAA,EAC5BN,IAAW,UAGbM,EAAQ,KAAK,CAAE,MAAO,SAAU,aAAcT,EAAM,GAGpDS,EAAQ,KAAK,CAAE,MAAO,OAAQ,aAAcZ,EAAQ,EAChDU,EAAU,QAAQ,GAAGE,EAAQ,KAAK,CAAE,MAAO,SAAU,aAAcT,EAAM,GAE3EO,EAAU,MAAM,GAAGE,EAAQ,KAAK,CAAE,MAAO,OAAQ,aAAcT,EAAM,EACrEG,IAAW,QAAUI,EAAU,WAAW,GAC5CE,EAAQ,KAAK,CAAE,MAAO,YAAa,aAAcT,EAAM,EAGzD,MAAMU,EAAeT,EAAeE,CAAM,EACtCO,GAAgBH,EAAU,SAAS,GACrCE,EAAQ,KAAK,CAAE,MAAOC,EAAc,aAAcV,EAAM,EAG1D,UAAWW,KAASL,EAClBG,EAAQ,KAAK,CAAE,MAAAE,EAAO,aAAcX,EAAM,EAG5C,UAAWY,KAAUR,EAAS,CAE5B,GADIQ,EAAO,OAAS,CAACA,EAAO,MAAM,SAAST,CAAM,GAC7C,CAACI,EAAU,UAAUK,EAAO,IAAI,EAAE,EAAG,SAEzC,MAAMD,EAAQ,UAAUC,EAAO,IAAI,GAC7BC,EAAOD,EAAO,MAAM,KACtBC,IAAS,WAAaA,IAAS,QACjCJ,EAAQ,KAAK,CAAE,MAAAE,EAAO,aAAcZ,EAAS,EACpCc,IAAS,UAClBJ,EAAQ,KAAK,CAAE,MAAAE,EAAO,aAAcC,EAAO,MAAM,MAAM,OAASZ,EAAOH,CAAA,CAAQ,CAEnF,CAEA,OAAOY,CACT"}
@@ -0,0 +1,88 @@
1
+ import "../../base/client.es.js";
2
+ import { StatsOperation as t } from "../../generated/graphql.es.js";
3
+ import "../../generated/graphqlLinks.es.js";
4
+ import "../../generated/access.es.js";
5
+ import "../../generated/actions.es.js";
6
+ import "../../generated/activityFeed.es.js";
7
+ import "../../generated/addons.es.js";
8
+ import "../../generated/anatomy.es.js";
9
+ import "../../generated/attributes.es.js";
10
+ import "../../generated/authentication.es.js";
11
+ import "../../generated/bundles.es.js";
12
+ import "../../generated/configuration.es.js";
13
+ import "../../generated/dataImport.es.js";
14
+ import "../../generated/desktop.es.js";
15
+ import "../../generated/entityLists.es.js";
16
+ import "../../generated/events.es.js";
17
+ import "../../generated/files.es.js";
18
+ import "../../generated/folders.es.js";
19
+ import "../../generated/inbox.es.js";
20
+ import "../../generated/links.es.js";
21
+ import "../../generated/market.es.js";
22
+ import "../../generated/onboarding.es.js";
23
+ import "../../generated/operations.es.js";
24
+ import "../../generated/products.es.js";
25
+ import "../../generated/projectDashboard.es.js";
26
+ import "../../generated/projects.es.js";
27
+ import "../../generated/projectFolders.es.js";
28
+ import "../../generated/reviewables.es.js";
29
+ import "../../generated/services.es.js";
30
+ import "../../generated/system.es.js";
31
+ import "../../generated/tasks.es.js";
32
+ import "../../generated/teams.es.js";
33
+ import "../../generated/thumbnails.es.js";
34
+ import "../../generated/uRIs.es.js";
35
+ import "../../generated/users.es.js";
36
+ import "../../generated/versions.es.js";
37
+ import "../../generated/workfiles.es.js";
38
+ import "../../generated/ynputCloud.es.js";
39
+ import "../../generated/grouping.es.js";
40
+ import "../../generated/views.es.js";
41
+ const f = (r) => {
42
+ const e = r?.targets;
43
+ return Array.isArray(e) ? e : e ? [e] : [];
44
+ }, ot = (r, e) => {
45
+ if (!r) return !1;
46
+ if (!e) return !0;
47
+ const m = new Set(f(e).map((p) => p.field));
48
+ return f(r).some((p) => !m.has(p.field));
49
+ }, d = [t.Filled, t.NotFilled], u = [
50
+ t.Min,
51
+ t.Max,
52
+ t.Avg,
53
+ t.Sum,
54
+ t.Filled,
55
+ t.NotFilled
56
+ ], s = [
57
+ t.Filled,
58
+ t.NotFilled,
59
+ t.Distribution
60
+ ], c = {
61
+ folder: "folder_type",
62
+ task: "task_type",
63
+ product: "product_type",
64
+ version: null
65
+ }, rt = ({
66
+ entity: r,
67
+ attribs: e,
68
+ columnVisibility: m,
69
+ extraFields: p = []
70
+ }) => {
71
+ const a = (o) => m[o] !== !1, i = [];
72
+ r === "version" ? i.push({ field: "status", aggregations: s }) : (i.push({ field: "name", aggregations: d }), a("status") && i.push({ field: "status", aggregations: s })), a("tags") && i.push({ field: "tags", aggregations: s }), r === "task" && a("assignees") && i.push({ field: "assignees", aggregations: s });
73
+ const g = c[r];
74
+ g && a("subType") && i.push({ field: g, aggregations: s });
75
+ for (const o of p)
76
+ i.push({ field: o, aggregations: s });
77
+ for (const o of e) {
78
+ if (o.scope && !o.scope.includes(r) || !a(`attrib_${o.name}`)) continue;
79
+ const l = `attrib.${o.name}`, n = o.data?.type;
80
+ n === "integer" || n === "float" ? i.push({ field: l, aggregations: u }) : n === "string" && i.push({ field: l, aggregations: o.data?.enum?.length ? s : d });
81
+ }
82
+ return i;
83
+ };
84
+ export {
85
+ rt as buildMetricTargets,
86
+ ot as hasNewTargetFields
87
+ };
88
+ //# sourceMappingURL=metricTargets.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metricTargets.es.js","sources":["../../../../../../src/api/queries/columnStats/metricTargets.ts"],"sourcesContent":["import type { VisibilityState } from '@tanstack/react-table'\nimport { StatsOperation } from '@shared/api/generated'\n\nexport type MetricTarget = {\n field: string // column or dot-path for JSONB, e.g. 'status' / 'attrib.fps'\n aggregations: StatsOperation[]\n}\n\nexport type StatsEntity = 'folder' | 'task' | 'product' | 'version'\n\n// matches both MetricTarget[] and the codegen'd single-or-array variables type\ntype TargetsArg = { targets?: { field: string }[] | { field: string } | null }\nconst targetFields = (arg?: TargetsArg): { field: string }[] => {\n const t = arg?.targets\n return Array.isArray(t) ? t : t ? [t] : []\n}\n\n// refetch only when a target was added — hiding a column needs no query\nexport const hasNewTargetFields = (current?: TargetsArg, previous?: TargetsArg): boolean => {\n if (!current) return false\n if (!previous) return true\n const prevFields = new Set(targetFields(previous).map((t) => t.field))\n return targetFields(current).some((t) => !prevFields.has(t.field))\n}\n\nconst COUNTS: StatsOperation[] = [StatsOperation.Filled, StatsOperation.NotFilled]\n// FILLED rides along so combined-scope averages can be weighted exactly\nconst NUMERIC: StatsOperation[] = [\n StatsOperation.Min,\n StatsOperation.Max,\n StatsOperation.Avg,\n StatsOperation.Sum,\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n]\n// enum columns: counts power the fallback display, distribution the colored bar\nconst ENUM: StatsOperation[] = [\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n StatsOperation.Distribution,\n]\n\n// The table's unified subType column per entity (result columnName maps back\n// to subType via COLUMN_ALIASES in columnStats).\nconst SUB_TYPE_FIELD: Record<StatsEntity, string | null> = {\n folder: 'folder_type',\n task: 'task_type',\n product: 'product_type',\n version: null,\n}\n\n// Structural subset of ProjectTableAttribute — two near-identical versions of\n// that type exist (types/index vs hooks/useAttributesList, data.type optional\n// in the latter); only these fields are needed here so accept both.\ntype AttribFieldLike = {\n name: string\n scope?: string[] | null\n data?: { type?: string; enum?: unknown[] }\n}\n\ntype BuildMetricTargetsArgs = {\n entity: StatsEntity\n attribs: AttribFieldLike[]\n columnVisibility: VisibilityState\n extraFields?: string[] // visible page-specific columns, e.g. 'product_base_type'\n}\n\n// Targets for the footer over the columns the user can actually see.\n// Skipped on purpose (backend SQL can't aggregate them safely yet):\n// datetime (numeric cast fails), boolean attribs (text-vs-bool compare on\n// JSONB), and list-type attribs.\nexport const buildMetricTargets = ({\n entity,\n attribs,\n columnVisibility,\n extraFields = [],\n}: BuildMetricTargetsArgs): MetricTarget[] => {\n // TanStack visibility map only stores toggled columns — absent means visible.\n const isVisible = (columnId: string) => columnVisibility[columnId] !== false\n\n const targets: MetricTarget[] = []\n if (entity === 'version') {\n // versions have no `name` column (display name derives from the version\n // number) — status is non-null and doubles as the row-count anchor\n targets.push({ field: 'status', aggregations: ENUM })\n } else {\n // name counts always — they feed the main folders/tasks count cell\n targets.push({ field: 'name', aggregations: COUNTS })\n if (isVisible('status')) targets.push({ field: 'status', aggregations: ENUM })\n }\n if (isVisible('tags')) targets.push({ field: 'tags', aggregations: ENUM })\n if (entity === 'task' && isVisible('assignees')) {\n targets.push({ field: 'assignees', aggregations: ENUM })\n }\n\n const subTypeField = SUB_TYPE_FIELD[entity]\n if (subTypeField && isVisible('subType')) {\n targets.push({ field: subTypeField, aggregations: ENUM })\n }\n\n for (const field of extraFields) {\n targets.push({ field, aggregations: ENUM })\n }\n\n for (const attrib of attribs) {\n if (attrib.scope && !attrib.scope.includes(entity)) continue\n if (!isVisible(`attrib_${attrib.name}`)) continue\n\n const field = `attrib.${attrib.name}`\n const type = attrib.data?.type\n if (type === 'integer' || type === 'float') {\n targets.push({ field, aggregations: NUMERIC })\n } else if (type === 'string') {\n targets.push({ field, aggregations: attrib.data?.enum?.length ? ENUM : COUNTS })\n }\n }\n\n return targets\n}\n"],"names":["targetFields","arg","t","hasNewTargetFields","current","previous","prevFields","COUNTS","StatsOperation","NUMERIC","ENUM","SUB_TYPE_FIELD","buildMetricTargets","entity","attribs","columnVisibility","extraFields","isVisible","columnId","targets","subTypeField","field","attrib","type"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,MAAMA,IAAe,CAACC,MAA0C;AAC9D,QAAMC,IAAID,GAAK;AACf,SAAO,MAAM,QAAQC,CAAC,IAAIA,IAAIA,IAAI,CAACA,CAAC,IAAI,CAAA;AAC1C,GAGaC,KAAqB,CAACC,GAAsBC,MAAmC;AAC1F,MAAI,CAACD,EAAS,QAAO;AACrB,MAAI,CAACC,EAAU,QAAO;AACtB,QAAMC,IAAa,IAAI,IAAIN,EAAaK,CAAQ,EAAE,IAAI,CAACH,MAAMA,EAAE,KAAK,CAAC;AACrE,SAAOF,EAAaI,CAAO,EAAE,KAAK,CAACF,MAAM,CAACI,EAAW,IAAIJ,EAAE,KAAK,CAAC;AACnE,GAEMK,IAA2B,CAACC,EAAe,QAAQA,EAAe,SAAS,GAE3EC,IAA4B;AAAA,EAChCD,EAAe;AAAA,EACfA,EAAe;AAAA,EACfA,EAAe;AAAA,EACfA,EAAe;AAAA,EACfA,EAAe;AAAA,EACfA,EAAe;AACjB,GAEME,IAAyB;AAAA,EAC7BF,EAAe;AAAA,EACfA,EAAe;AAAA,EACfA,EAAe;AACjB,GAIMG,IAAqD;AAAA,EACzD,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AACX,GAsBaC,KAAqB,CAAC;AAAA,EACjC,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,aAAAC,IAAc,CAAA;AAChB,MAA8C;AAE5C,QAAMC,IAAY,CAACC,MAAqBH,EAAiBG,CAAQ,MAAM,IAEjEC,IAA0B,CAAA;AAChC,EAAIN,MAAW,YAGbM,EAAQ,KAAK,EAAE,OAAO,UAAU,cAAcT,GAAM,KAGpDS,EAAQ,KAAK,EAAE,OAAO,QAAQ,cAAcZ,GAAQ,GAChDU,EAAU,QAAQ,KAAGE,EAAQ,KAAK,EAAE,OAAO,UAAU,cAAcT,GAAM,IAE3EO,EAAU,MAAM,KAAGE,EAAQ,KAAK,EAAE,OAAO,QAAQ,cAAcT,GAAM,GACrEG,MAAW,UAAUI,EAAU,WAAW,KAC5CE,EAAQ,KAAK,EAAE,OAAO,aAAa,cAAcT,GAAM;AAGzD,QAAMU,IAAeT,EAAeE,CAAM;AAC1C,EAAIO,KAAgBH,EAAU,SAAS,KACrCE,EAAQ,KAAK,EAAE,OAAOC,GAAc,cAAcV,GAAM;AAG1D,aAAWW,KAASL;AAClB,IAAAG,EAAQ,KAAK,EAAE,OAAAE,GAAO,cAAcX,GAAM;AAG5C,aAAWY,KAAUR,GAAS;AAE5B,QADIQ,EAAO,SAAS,CAACA,EAAO,MAAM,SAAST,CAAM,KAC7C,CAACI,EAAU,UAAUK,EAAO,IAAI,EAAE,EAAG;AAEzC,UAAMD,IAAQ,UAAUC,EAAO,IAAI,IAC7BC,IAAOD,EAAO,MAAM;AAC1B,IAAIC,MAAS,aAAaA,MAAS,UACjCJ,EAAQ,KAAK,EAAE,OAAAE,GAAO,cAAcZ,GAAS,IACpCc,MAAS,YAClBJ,EAAQ,KAAK,EAAE,OAAAE,GAAO,cAAcC,EAAO,MAAM,MAAM,SAASZ,IAAOH,EAAA,CAAQ;AAAA,EAEnF;AAEA,SAAOY;AACT;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");const G=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");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");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 f=require("../../../util/pubsub.cjs.js"),o=require("./transformDetailsPanelData.cjs.js"),p=G.api.enhanceEndpoints({endpoints:{GetDetailsPanelFolder:{transformResponse:(i,s,r)=>{const{projectName:t}=r,e=i?.project?.folder;return e?o.transformDetailsPanelQueriesData({projectName:t,entity:e,entityType:"folder"}):null}},GetDetailsPanelTask:{transformResponse:(i,s,r)=>{const{projectName:t}=r,e=i?.project?.task;return e?o.transformDetailsPanelQueriesData({projectName:t,entity:e,entityType:"task"}):null}},GetDetailsPanelVersion:{transformResponse:(i,s,r)=>{const{projectName:t}=r,e=i?.project?.version;return e?o.transformDetailsPanelQueriesData({projectName:t,entity:e,entityType:"version"}):null}},GetDetailsPanelRepresentation:{transformResponse:(i,s,r)=>{const{projectName:t}=r,e=i?.project?.representation;return e?o.transformDetailsPanelQueriesData({projectName:t,entity:e,entityType:"representation"}):null}}}}),m=i=>{switch(i){case"task":return"GetDetailsPanelTask";case"version":return"GetDetailsPanelVersion";case"folder":return"GetDetailsPanelFolder";case"representation":return"GetDetailsPanelRepresentation"}},D=p.injectEndpoints({endpoints:i=>({getEntitiesDetailsPanel:i.query({async queryFn({entities:s=[],entityType:r},{dispatch:t}){if(!o.detailsPanelEntityTypes.includes(r))return{error:{status:"CUSTOM_ERROR",error:"Entity type not supported"}};try{const e=s.map(n=>t(p.endpoints[m(r)].initiate({projectName:n.projectName,entityId:n.id},{forceRefetch:!0})));return{data:(await Promise.all(e)).filter(n=>!!n.data).map(n=>n.data)}}catch(e){return console.error(e),{error:{status:"FETCH_ERROR",error:e.message}}}},async onCacheEntryAdded({entities:s,entityType:r},{updateCachedData:t,cacheDataLoaded:e,cacheEntryRemoved:u,dispatch:d}){let n;try{await e;const P=async(T,j)=>{const R=j.summary?.entityId,l=s.find(a=>a.id===R);if(l)try{const a=await d(p.endpoints[m(r)].initiate({projectName:l.projectName,entityId:l.id},{forceRefetch:!0}));if(a.status!=="fulfilled"){console.error(a?.error||"No entity found");return}const c=a.data;if(!c){console.error("No entity found");return}t(q=>{const y=q.findIndex(h=>h.id===c.id);if(y===-1){console.error("Entity not found in cache");return}q[y]=c})}catch(a){console.error("Entity task realtime update failed",a);return}},E=`entity.${r}`;n=f.subscribe(E,P)}catch{}await u,f.unsubscribe(n)},providesTags:(s,r,{entities:t,entityType:e})=>[...t.map(({id:u})=>({id:u,type:"entities"})),{type:"entities",id:e.toUpperCase()},{type:"entities",id:"LIST"}]})})}),{useGetEntitiesDetailsPanelQuery:N,useLazyGetEntitiesDetailsPanelQuery:Q}=D;exports.detailsPanelQueries=D;exports.useGetEntitiesDetailsPanelQuery=N;exports.useLazyGetEntitiesDetailsPanelQuery=Q;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");const G=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");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");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 N=require("../../../util/thumbnailWebsocket.cjs.js"),P=require("../../../util/pubsub.cjs.js"),c=require("./transformDetailsPanelData.cjs.js"),q=G.api.enhanceEndpoints({endpoints:{GetDetailsPanelFolder:{transformResponse:(i,a,r)=>{const{projectName:t}=r,e=i?.project?.folder;return e?c.transformDetailsPanelQueriesData({projectName:t,entity:e,entityType:"folder"}):null}},GetDetailsPanelTask:{transformResponse:(i,a,r)=>{const{projectName:t}=r,e=i?.project?.task;return e?c.transformDetailsPanelQueriesData({projectName:t,entity:e,entityType:"task"}):null}},GetDetailsPanelVersion:{transformResponse:(i,a,r)=>{const{projectName:t}=r,e=i?.project?.version;return e?c.transformDetailsPanelQueriesData({projectName:t,entity:e,entityType:"version"}):null}},GetDetailsPanelRepresentation:{transformResponse:(i,a,r)=>{const{projectName:t}=r,e=i?.project?.representation;return e?c.transformDetailsPanelQueriesData({projectName:t,entity:e,entityType:"representation"}):null}}}}),b=i=>{switch(i){case"task":return"GetDetailsPanelTask";case"version":return"GetDetailsPanelVersion";case"folder":return"GetDetailsPanelFolder";case"representation":return"GetDetailsPanelRepresentation"}},E=q.injectEndpoints({endpoints:i=>({getEntitiesDetailsPanel:i.query({async queryFn({entities:a=[],entityType:r},{dispatch:t}){if(!c.detailsPanelEntityTypes.includes(r))return{error:{status:"CUSTOM_ERROR",error:"Entity type not supported"}};try{const e=a.map(u=>t(q.endpoints[b(r)].initiate({projectName:u.projectName,entityId:u.id},{forceRefetch:!0})));return{data:(await Promise.all(e)).filter(u=>!!u.data).map(u=>u.data)}}catch(e){return console.error(e),{error:{status:"FETCH_ERROR",error:e.message}}}},async onCacheEntryAdded({entities:a,entityType:r},{updateCachedData:t,cacheDataLoaded:e,cacheEntryRemoved:d,dispatch:m}){let u,y;try{await e,y=N.subscribeToThumbnailUpdates(f=>{const p=f.filter(o=>a.some(s=>s.id===o.summary.entityId&&s.projectName===o.project));p.length!==0&&t(o=>{p.forEach(s=>{const n=o.findIndex(l=>l.id===s.summary.entityId);n!==-1&&o[n]&&s.summary.thumbnailHash&&(o[n].thumbnailHash=s.summary.thumbnailHash)})})},[r]);const j=async(f,p)=>{const o=p.summary?.entityId,s=a.find(n=>n.id===o);if(s)try{const n=await m(q.endpoints[b(r)].initiate({projectName:s.projectName,entityId:s.id},{forceRefetch:!0}));if(n.status!=="fulfilled"){console.error(n?.error||"No entity found");return}const l=n.data;if(!l){console.error("No entity found");return}t(D=>{const h=D.findIndex(T=>T.id===l.id);if(h===-1){console.error("Entity not found in cache");return}D[h]=l})}catch(n){console.error("Entity task realtime update failed",n);return}},R=`entity.${r}`;u=P.subscribe(R,j)}catch{}await d,P.unsubscribe(u),y&&y()},providesTags:(a,r,{entities:t,entityType:e})=>[...t.map(({id:d})=>({id:d,type:"entities"})),{type:"entities",id:e.toUpperCase()},{type:"entities",id:"LIST"}]})})}),{useGetEntitiesDetailsPanelQuery:I,useLazyGetEntitiesDetailsPanelQuery:Q}=E;exports.detailsPanelQueries=E;exports.useGetEntitiesDetailsPanelQuery=I;exports.useLazyGetEntitiesDetailsPanelQuery=Q;
2
2
  //# sourceMappingURL=getEntityPanel.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getEntityPanel.cjs.js","sources":["../../../../../../src/api/queries/entities/getEntityPanel.ts"],"sourcesContent":["import {\n gqlApi,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport { PubSub } from '@shared/util'\nimport { FetchBaseQueryError } from '@reduxjs/toolkit/query'\nimport {\n detailsPanelEntityTypes,\n transformDetailsPanelQueriesData,\n} from './transformDetailsPanelData'\nimport type { DetailsPanelEntityData, DetailsPanelEntityType } from './transformDetailsPanelData'\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<\n Definitions,\n | 'GetDetailsPanelFolder'\n | 'GetDetailsPanelTask'\n | 'GetDetailsPanelVersion'\n | 'GetDetailsPanelRepresentation'\n> & {\n GetDetailsPanelFolder: OverrideResultType<\n Definitions['GetDetailsPanelFolder'],\n DetailsPanelEntityData | null\n >\n GetDetailsPanelTask: OverrideResultType<\n Definitions['GetDetailsPanelTask'],\n DetailsPanelEntityData | null\n >\n GetDetailsPanelVersion: OverrideResultType<\n Definitions['GetDetailsPanelVersion'],\n DetailsPanelEntityData | null\n >\n GetDetailsPanelRepresentation: OverrideResultType<\n Definitions['GetDetailsPanelRepresentation'],\n DetailsPanelEntityData | null\n >\n}\n\nconst enhancedDetailsApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetDetailsPanelFolder: {\n transformResponse: (response: GetDetailsPanelFolderQuery, _meta, args) => {\n const { projectName } = args\n const entity = response?.project?.folder\n if (!entity) return null\n return transformDetailsPanelQueriesData({\n projectName,\n entity,\n entityType: 'folder',\n })\n },\n },\n GetDetailsPanelTask: {\n transformResponse: (response: GetDetailsPanelTaskQuery, _meta, args) => {\n const { projectName } = args\n const entity = response?.project?.task\n if (!entity) return null\n return transformDetailsPanelQueriesData({\n projectName,\n entity,\n entityType: 'task',\n })\n },\n },\n GetDetailsPanelVersion: {\n transformResponse: (response: GetDetailsPanelVersionQuery, _meta, args) => {\n const { projectName } = args\n const entity = response?.project?.version\n if (!entity) return null\n return transformDetailsPanelQueriesData({\n projectName,\n entity,\n entityType: 'version',\n })\n },\n },\n GetDetailsPanelRepresentation: {\n transformResponse: (response: GetDetailsPanelRepresentationQuery, _meta, args) => {\n const { projectName } = args\n const entity = response?.project?.representation\n if (!entity) return null\n return transformDetailsPanelQueriesData({\n projectName,\n entity,\n entityType: 'representation',\n })\n },\n },\n },\n})\n\ntype GetEntitiesDetailsPanelArgs = {\n entities: { id: string; projectName: string }[]\n entityType: DetailsPanelEntityType\n}\n\ntype QueryNameType =\n | 'GetDetailsPanelTask'\n | 'GetDetailsPanelVersion'\n | 'GetDetailsPanelFolder'\n | 'GetDetailsPanelRepresentation'\n\nconst getEntityTypeQueryName = (entityType: DetailsPanelEntityType): QueryNameType => {\n switch (entityType) {\n case 'task':\n return 'GetDetailsPanelTask'\n\n case 'version':\n return 'GetDetailsPanelVersion'\n\n case 'folder':\n return 'GetDetailsPanelFolder'\n\n case 'representation':\n return 'GetDetailsPanelRepresentation'\n }\n}\n\nconst detailsPanelQueries2 = enhancedDetailsApi.injectEndpoints({\n endpoints: (build) => ({\n getEntitiesDetailsPanel: build.query<DetailsPanelEntityData[], GetEntitiesDetailsPanelArgs>({\n async queryFn({ entities = [], entityType }, { dispatch }) {\n if (!detailsPanelEntityTypes.includes(entityType)) {\n return {\n error: {\n status: 'CUSTOM_ERROR',\n error: 'Entity type not supported',\n } as FetchBaseQueryError,\n }\n }\n\n try {\n const promises = entities.map((entity) => {\n return dispatch(\n enhancedDetailsApi.endpoints[getEntityTypeQueryName(entityType)].initiate(\n {\n projectName: entity.projectName,\n entityId: entity.id,\n },\n { forceRefetch: true },\n ),\n )\n })\n\n const res = await Promise.all(promises)\n\n const entitiesData = res\n .filter((res) => !!res.data)\n .map((res) => res.data) as DetailsPanelEntityData[]\n\n return { data: entitiesData }\n } catch (e: any) {\n console.error(e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n async onCacheEntryAdded(\n { entities, entityType },\n { updateCachedData, cacheDataLoaded, cacheEntryRemoved, dispatch },\n ) {\n let token\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n const handlePubSub = async (_topic: string, message: any) => {\n const messageEntityId = message.summary?.entityId\n const matchedEntity = entities.find((entity) => entity.id === messageEntityId)\n // check if the message is relevant to the current query\n if (!matchedEntity) return\n\n try {\n // get the new data for the entity\n const res = await dispatch(\n enhancedDetailsApi.endpoints[getEntityTypeQueryName(entityType)].initiate(\n {\n projectName: matchedEntity.projectName,\n entityId: matchedEntity.id,\n },\n { forceRefetch: true },\n ),\n )\n\n // check the res\n if (res.status !== 'fulfilled') {\n console.error(res?.error || 'No entity found')\n return\n }\n\n const updatedEntity = res.data\n\n if (!updatedEntity) {\n console.error('No entity found')\n return\n }\n\n updateCachedData((draft) => {\n // find the entity in the cache\n const entityIndex = draft.findIndex((entity: any) => entity.id === updatedEntity.id)\n\n if (entityIndex === -1) {\n console.error('Entity not found in cache')\n return\n }\n\n // update the entity in the cache\n draft[entityIndex] = updatedEntity\n })\n } catch (error) {\n console.error('Entity task realtime update failed', error)\n return\n }\n }\n\n const topic = `entity.${entityType}`\n // sub to websocket topic\n token = PubSub.subscribe(topic, handlePubSub)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n },\n providesTags: (_res, _error, { entities, entityType }) => [\n ...entities.map(({ id }: { id: string }) => ({ id, type: 'entities' })),\n { type: 'entities', id: entityType.toUpperCase() },\n { type: 'entities', id: 'LIST' },\n ],\n }),\n }),\n})\n\nexport const { useGetEntitiesDetailsPanelQuery, useLazyGetEntitiesDetailsPanelQuery } =\n detailsPanelQueries2\nexport { detailsPanelQueries2 as detailsPanelQueries }\n"],"names":["enhancedDetailsApi","gqlApi","response","_meta","args","projectName","entity","transformDetailsPanelQueriesData","getEntityTypeQueryName","entityType","detailsPanelQueries2","build","entities","dispatch","detailsPanelEntityTypes","promises","res","updateCachedData","cacheDataLoaded","cacheEntryRemoved","token","handlePubSub","_topic","message","messageEntityId","matchedEntity","updatedEntity","draft","entityIndex","error","topic","PubSub","_res","_error","id","useGetEntitiesDetailsPanelQuery","useLazyGetEntitiesDetailsPanelQuery"],"mappings":"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"}
1
+ {"version":3,"file":"getEntityPanel.cjs.js","sources":["../../../../../../src/api/queries/entities/getEntityPanel.ts"],"sourcesContent":["import {\n gqlApi,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport { FetchBaseQueryError } from '@reduxjs/toolkit/query'\nimport {\n detailsPanelEntityTypes,\n transformDetailsPanelQueriesData,\n} from './transformDetailsPanelData'\nimport type { DetailsPanelEntityData, DetailsPanelEntityType } from './transformDetailsPanelData'\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<\n Definitions,\n | 'GetDetailsPanelFolder'\n | 'GetDetailsPanelTask'\n | 'GetDetailsPanelVersion'\n | 'GetDetailsPanelRepresentation'\n> & {\n GetDetailsPanelFolder: OverrideResultType<\n Definitions['GetDetailsPanelFolder'],\n DetailsPanelEntityData | null\n >\n GetDetailsPanelTask: OverrideResultType<\n Definitions['GetDetailsPanelTask'],\n DetailsPanelEntityData | null\n >\n GetDetailsPanelVersion: OverrideResultType<\n Definitions['GetDetailsPanelVersion'],\n DetailsPanelEntityData | null\n >\n GetDetailsPanelRepresentation: OverrideResultType<\n Definitions['GetDetailsPanelRepresentation'],\n DetailsPanelEntityData | null\n >\n}\n\nconst enhancedDetailsApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetDetailsPanelFolder: {\n transformResponse: (response: GetDetailsPanelFolderQuery, _meta, args) => {\n const { projectName } = args\n const entity = response?.project?.folder\n if (!entity) return null\n return transformDetailsPanelQueriesData({\n projectName,\n entity,\n entityType: 'folder',\n })\n },\n },\n GetDetailsPanelTask: {\n transformResponse: (response: GetDetailsPanelTaskQuery, _meta, args) => {\n const { projectName } = args\n const entity = response?.project?.task\n if (!entity) return null\n return transformDetailsPanelQueriesData({\n projectName,\n entity,\n entityType: 'task',\n })\n },\n },\n GetDetailsPanelVersion: {\n transformResponse: (response: GetDetailsPanelVersionQuery, _meta, args) => {\n const { projectName } = args\n const entity = response?.project?.version\n if (!entity) return null\n return transformDetailsPanelQueriesData({\n projectName,\n entity,\n entityType: 'version',\n })\n },\n },\n GetDetailsPanelRepresentation: {\n transformResponse: (response: GetDetailsPanelRepresentationQuery, _meta, args) => {\n const { projectName } = args\n const entity = response?.project?.representation\n if (!entity) return null\n return transformDetailsPanelQueriesData({\n projectName,\n entity,\n entityType: 'representation',\n })\n },\n },\n },\n})\n\ntype GetEntitiesDetailsPanelArgs = {\n entities: { id: string; projectName: string }[]\n entityType: DetailsPanelEntityType\n}\n\ntype QueryNameType =\n | 'GetDetailsPanelTask'\n | 'GetDetailsPanelVersion'\n | 'GetDetailsPanelFolder'\n | 'GetDetailsPanelRepresentation'\n\nconst getEntityTypeQueryName = (entityType: DetailsPanelEntityType): QueryNameType => {\n switch (entityType) {\n case 'task':\n return 'GetDetailsPanelTask'\n\n case 'version':\n return 'GetDetailsPanelVersion'\n\n case 'folder':\n return 'GetDetailsPanelFolder'\n\n case 'representation':\n return 'GetDetailsPanelRepresentation'\n }\n}\n\nconst detailsPanelQueries2 = enhancedDetailsApi.injectEndpoints({\n endpoints: (build) => ({\n getEntitiesDetailsPanel: build.query<DetailsPanelEntityData[], GetEntitiesDetailsPanelArgs>({\n async queryFn({ entities = [], entityType }, { dispatch }) {\n if (!detailsPanelEntityTypes.includes(entityType)) {\n return {\n error: {\n status: 'CUSTOM_ERROR',\n error: 'Entity type not supported',\n } as FetchBaseQueryError,\n }\n }\n\n try {\n const promises = entities.map((entity) => {\n return dispatch(\n enhancedDetailsApi.endpoints[getEntityTypeQueryName(entityType)].initiate(\n {\n projectName: entity.projectName,\n entityId: entity.id,\n },\n { forceRefetch: true },\n ),\n )\n })\n\n const res = await Promise.all(promises)\n\n const entitiesData = res\n .filter((res) => !!res.data)\n .map((res) => res.data) as DetailsPanelEntityData[]\n\n return { data: entitiesData }\n } catch (e: any) {\n console.error(e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n async onCacheEntryAdded(\n { entities, entityType },\n { updateCachedData, cacheDataLoaded, cacheEntryRemoved, dispatch },\n ) {\n let token\n let unsubscribeThumbnails: (() => void) | undefined\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const matchedMessages = messages.filter((m) =>\n entities.some((e) => e.id === m.summary.entityId && e.projectName === m.project),\n )\n if (matchedMessages.length === 0) return\n\n updateCachedData((draft) => {\n matchedMessages.forEach((message) => {\n const entityIndex = draft.findIndex((e: any) => e.id === message.summary.entityId)\n if (entityIndex !== -1 && draft[entityIndex] && message.summary.thumbnailHash) {\n draft[entityIndex].thumbnailHash = message.summary.thumbnailHash\n }\n })\n })\n },\n [entityType],\n )\n\n const handlePubSub = async (_topic: string, message: any) => {\n const messageEntityId = message.summary?.entityId\n const matchedEntity = entities.find((entity) => entity.id === messageEntityId)\n // check if the message is relevant to the current query\n if (!matchedEntity) return\n\n try {\n // get the new data for the entity\n const res = await dispatch(\n enhancedDetailsApi.endpoints[getEntityTypeQueryName(entityType)].initiate(\n {\n projectName: matchedEntity.projectName,\n entityId: matchedEntity.id,\n },\n { forceRefetch: true },\n ),\n )\n\n // check the res\n if (res.status !== 'fulfilled') {\n console.error(res?.error || 'No entity found')\n return\n }\n\n const updatedEntity = res.data\n\n if (!updatedEntity) {\n console.error('No entity found')\n return\n }\n\n updateCachedData((draft) => {\n // find the entity in the cache\n const entityIndex = draft.findIndex((entity: any) => entity.id === updatedEntity.id)\n\n if (entityIndex === -1) {\n console.error('Entity not found in cache')\n return\n }\n\n // update the entity in the cache\n draft[entityIndex] = updatedEntity\n })\n } catch (error) {\n console.error('Entity task realtime update failed', error)\n return\n }\n }\n\n const topic = `entity.${entityType}`\n // sub to websocket topic\n token = PubSub.subscribe(topic, handlePubSub)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n },\n providesTags: (_res, _error, { entities, entityType }) => [\n ...entities.map(({ id }: { id: string }) => ({ id, type: 'entities' })),\n { type: 'entities', id: entityType.toUpperCase() },\n { type: 'entities', id: 'LIST' },\n ],\n }),\n }),\n})\n\nexport const { useGetEntitiesDetailsPanelQuery, useLazyGetEntitiesDetailsPanelQuery } =\n detailsPanelQueries2\nexport { detailsPanelQueries2 as detailsPanelQueries }\n"],"names":["enhancedDetailsApi","gqlApi","response","_meta","args","projectName","entity","transformDetailsPanelQueriesData","getEntityTypeQueryName","entityType","detailsPanelQueries2","build","entities","dispatch","detailsPanelEntityTypes","promises","res","updateCachedData","cacheDataLoaded","cacheEntryRemoved","token","unsubscribeThumbnails","subscribeToThumbnailUpdates","messages","matchedMessages","m","e","draft","message","entityIndex","handlePubSub","_topic","messageEntityId","matchedEntity","updatedEntity","error","topic","PubSub","_res","_error","id","useGetEntitiesDetailsPanelQuery","useLazyGetEntitiesDetailsPanelQuery"],"mappings":"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"}