@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":"updateOverview.es.js","sources":["../../../../../../src/api/queries/overview/updateOverview.ts"],"sourcesContent":["import { foldersQueries } from '../folders'\nimport { detailsPanelQueries } from '../entities/getEntityPanel'\nimport { operationsApi } from '@shared/api/generated'\nimport { entityListsQueriesGql } from '../entityLists/updateLists'\nimport type {\n OperationsResponseModel,\n OperationModel,\n OperationsApiArg,\n} from '@shared/api/generated'\nimport getOverviewApi from './getOverview'\nimport { patchDetailsPanelEntity } from '@shared/api/queries/entities'\nimport { FetchBaseQueryError, RootState } from '@reduxjs/toolkit/query'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { EditorTaskNode } from '@shared/containers/ProjectTreeTable'\nimport { getUpdatedEntityIds } from './filterRefetchUtils'\nimport {\n refetchTasksForCacheEntry,\n refetchOverviewTasksForCacheEntry,\n} from './refetchFilteredEntities'\nimport { patchVersions } from './patchVersions'\nimport { patchProducts } from './patchProducts'\n// these operations are dedicated to the overview page\n// this mean cache updates are custom for the overview page here\n\n// Helper function to update entities with operation data\nconst updateEntityWithOperation = (entity: any, operationData: any) => {\n // Update top-level properties directly\n Object.keys(operationData).forEach((key) => {\n if (key === 'attrib' || key === 'links' || key === 'deleteLinks') return\n entity[key] = operationData[key]\n })\n\n // Handle attrib merging\n if (operationData.attrib) {\n entity.attrib = {\n ...entity.attrib,\n ...operationData.attrib,\n }\n }\n\n // Handle links merging\n if (operationData.links) {\n const existingLinks = entity.links || []\n const newLinks = operationData.links || []\n\n // Ensure links structure exists\n if (!entity.links) entity.links = []\n\n // Process links directly\n entity.links = [...existingLinks]\n\n newLinks.forEach((newLink: any) => {\n const existingIndex = entity.links.findIndex((link: any) => link.id === newLink.id)\n\n if (existingIndex !== -1) {\n entity.links[existingIndex] = { ...entity.links[existingIndex], ...newLink }\n } else {\n entity.links.push(newLink)\n }\n })\n }\n\n // Handle links deletion\n if (operationData.deleteLinks) {\n const linksToDelete = operationData.deleteLinks || []\n\n // Ensure links structure exists\n if (!entity.links) entity.links = []\n\n // Remove links by ID\n linksToDelete.forEach((linkId: string) => {\n entity.links = entity.links.filter((link: any) => link.id !== linkId)\n })\n }\n}\n\nconst getOverviewTaskTags = (tasks: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n { type: 'overviewTask', id: 'LIST' },\n ...tasks.map((op) => ({ type: 'overviewTask', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...tasks\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'overviewTask',\n id: op.data?.projectName,\n })),\n ]\n}\n\nconst getOverviewFolderTags = (folders: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n ...folders.map((op) => ({ type: 'folder', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...folders\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'folder',\n id: op.data?.projectName,\n })),\n ]\n}\n\nexport type PatchOperation = Pick<OperationModel, 'entityId' | 'entityType' | 'data'> & {\n type?: OperationModel['type']\n}\n\n// Helper function to create a patch operation for deleting links\nexport const createLinkDeletionPatch = (\n entityId: string,\n entityType: OperationModel['entityType'],\n linkIds: string[],\n): PatchOperation => {\n return {\n entityId,\n entityType,\n type: 'update',\n data: { deleteLinks: linkIds },\n }\n}\n\n// Utility function to delete specific links by ID from entities\nexport const deleteLinksFromEntities = (\n entities: { entityId: string; entityType: OperationModel['entityType'] }[],\n linkIds: string[],\n): PatchOperation[] => {\n return entities.map((entity) =>\n createLinkDeletionPatch(entity.entityId, entity.entityType, linkIds),\n )\n}\n\n// Generic helper function to patch entities based on their type\nexport const patchOverviewEntities = (\n entities: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n // Group entities by type\n const entitiesByType = entities.reduce((acc, entity) => {\n if (!acc[entity.entityType]) {\n acc[entity.entityType] = []\n }\n acc[entity.entityType].push(entity)\n return acc\n }, {} as Record<string, PatchOperation[]>)\n\n // Patch each entity type using the appropriate function\n if (entitiesByType.task) {\n patchOverviewTasks(entitiesByType.task, { state, dispatch }, patches)\n }\n if (entitiesByType.folder) {\n patchOverviewFolders(entitiesByType.folder, { state, dispatch }, patches)\n }\n // Add more entity types as needed\n // if (entitiesByType.product) { ... }\n // if (entitiesByType.version) { ... }\n // etc.\n}\n\nexport const patchOverviewTasks = (\n tasks: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = getOverviewTaskTags(tasks)\n const taskEntries = getOverviewApi.util.selectInvalidatedBy(state, tags)\n\n for (const entry of taskEntries) {\n if (entry.endpointName === 'getTasksListInfinite') {\n // patch getTasksListInfinite\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData('getTasksListInfinite', entry.originalArgs, (draft) => {\n // Apply each change to matching tasks in all pages\n for (const taskOperation of tasks) {\n if (taskOperation.type === 'create' && taskOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.pages[0].tasks.push(taskOperation.data)\n } else {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n // TODO: task is not found here, why?\n const task = page.tasks.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n }\n }\n }\n }),\n )\n\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n } else {\n // this updates the main overview cache task\n // it also updates any GetTasksByParent caches\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData(\n entry.endpointName as 'getOverviewTasksByFolders' | 'GetTasksByParent' | 'GetTasksList',\n entry.originalArgs,\n (draft) => {\n // Apply each change to matching tasks in the cache\n for (const taskOperation of tasks) {\n if (\n taskOperation.type === 'create' &&\n taskOperation.data &&\n entry.originalArgs.parentIds?.includes(taskOperation.data.folderId)\n ) {\n const patchTask = (tasksArrayDraft: EditorTaskNode[]) => {\n // @ts-expect-error\n tasksArrayDraft.push(taskOperation.data)\n }\n\n // Check if draft is an array or an object with a tasks property\n if (Array.isArray(draft)) {\n patchTask(draft)\n } else if (draft.tasks && Array.isArray(draft.tasks)) {\n // Handle object with tasks array case (like in GetTasksList)\n const draftArray = draft.tasks\n patchTask(draftArray)\n }\n } else {\n const patchTask = (tasksArrayDraft: EditorTaskNode[]) => {\n const task = tasksArrayDraft.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n }\n\n // Check if draft is an array or an object with a tasks property\n if (Array.isArray(draft)) {\n patchTask(draft)\n } else if (draft.tasks && Array.isArray(draft.tasks)) {\n // Handle object with tasks array case (like in GetTasksList)\n const draftArray = draft.tasks\n patchTask(draftArray)\n }\n }\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n }\n }\n}\n\nconst invalidateOverviewTasks = (\n tasks: PatchOperation[],\n {\n dispatch,\n }: {\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n) => {\n if (!tasks.length) return\n dispatch(getOverviewApi.util.invalidateTags(getOverviewTaskTags(tasks)))\n}\n\nexport const patchOverviewFolders = (\n folders: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const folderEntries = foldersQueries.util\n .selectInvalidatedBy(state, getOverviewFolderTags(folders))\n .filter((entry) => entry.endpointName === 'getFolderList')\n for (const entry of folderEntries) {\n const folderPatch = dispatch(\n foldersQueries.util.updateQueryData(\n entry.endpointName as 'getFolderList',\n entry.originalArgs,\n (draft) => {\n // Create a Map for O(1) folder lookups\n const folderMap = new Map()\n draft.folders.forEach((folder) => {\n folderMap.set(folder.id, folder)\n })\n\n for (const folderOperation of folders) {\n if (folderOperation.type === 'create' && folderOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.folders.push(folderOperation.data)\n } else {\n const folder = folderMap.get(folderOperation.entityId)\n\n if (folder) {\n updateEntityWithOperation(folder, folderOperation.data)\n }\n }\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(folderPatch)\n }\n}\n\nconst patchListItems = (\n entities: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = entities.map((op) => ({ type: 'entityListItem', id: op.entityId }))\n const entries = entityListsQueriesGql.util.selectInvalidatedBy(state, tags)\n\n for (const entry of entries) {\n if (entry.endpointName === 'getListItemsInfinite') {\n const listItemsPatch = dispatch(\n entityListsQueriesGql.util.updateQueryData(\n 'getListItemsInfinite',\n entry.originalArgs,\n (draft) => {\n // Apply each change to matching tasks in all pages\n for (const listOperation of entities) {\n if (listOperation.type === 'update' && listOperation.data) {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n const item = page.items.find((item) => item.entityId === listOperation.entityId)\n if (item) {\n updateEntityWithOperation(item, listOperation.data)\n }\n }\n }\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches?.push(listItemsPatch)\n }\n }\n}\n\nconst splitByOpType = (operations: OperationModel[]) => {\n return operations.reduce(\n (acc: Record<OperationModel['type'], OperationModel[]>, operation) => {\n acc[operation.type].push(operation)\n return acc\n },\n {\n create: [],\n update: [],\n delete: [],\n },\n )\n}\n\nconst operationsEnhanced = operationsApi.enhanceEndpoints({\n endpoints: {\n operations: {},\n },\n})\n\n// enhance the argument type to include some extra fields\ninterface UpdateOverviewEntitiesArg extends OperationsApiArg {\n patchOperations?: PatchOperation[] // extra entities to patch\n}\n\nconst operationsApiEnhancedInjected = operationsEnhanced.injectEndpoints({\n endpoints: (build) => ({\n updateOverviewEntities: build.mutation<\n OperationsResponseModel | undefined,\n UpdateOverviewEntitiesArg\n >({\n async queryFn(arg, { dispatch }) {\n try {\n const result = await dispatch(operationsEnhanced.endpoints.operations.initiate(arg))\n\n // Check if the network request itself failed (offline, timeout, etc.)\n if (result.error) {\n return { error: result.error as FetchBaseQueryError }\n }\n\n const data = result.data\n // check for any errors in the result\n const uniqueErrors = new Set()\n const uniqueErrorCodes = new Set()\n for (const op of data?.operations || []) {\n if (op.success === false && op.detail) {\n if (!uniqueErrors.has(op.detail)) {\n uniqueErrors.add(op.detail)\n }\n if (!uniqueErrorCodes.has(op.errorCode)) {\n uniqueErrorCodes.add(op.errorCode)\n }\n }\n }\n\n if (uniqueErrors.size > 0) {\n const error = {\n status: 'FETCH_ERROR',\n error: Array.from(uniqueErrors).join(', '),\n errorCodes: Array.from(uniqueErrorCodes),\n } as FetchBaseQueryError\n return { error }\n } else {\n return { data }\n }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n async onQueryStarted(\n { operationsRequestModel, patchOperations = [], projectName },\n { dispatch, queryFulfilled, getState },\n ) {\n if (!operationsRequestModel.operations?.length) return\n const { operations } = operationsRequestModel\n // we need to split the operations by entity type\n const operationsByType = operations.reduce(\n (acc: Record<OperationModel['entityType'], OperationModel[]>, operation) => {\n acc[operation.entityType].push(operation)\n return acc\n },\n {\n task: [],\n folder: [],\n product: [],\n version: [],\n representation: [],\n workfile: [],\n },\n )\n\n // collect patches incase we need to undo them\n const state = getState()\n const patches: any[] = []\n\n // patch the overview tasks\n if (operationsByType.task?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.task)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing tasks\n patchOverviewTasks(updatesToPatch, { state, dispatch }, patches)\n // invalidate the caches for tasks being created and deleted\n invalidateOverviewTasks([...deleteOps], {\n dispatch,\n })\n }\n\n // patch the overview folders (any other folders from foldersList)\n if (operationsByType.folder?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.folder)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing folders\n patchOverviewFolders(updatesToPatch, { state, dispatch }, patches)\n // invalidate the caches for folders being created and deleted\n if (deleteOps.length) {\n dispatch(foldersQueries.util.invalidateTags([{ type: 'folder', id: 'LIST' }]))\n }\n }\n\n const patchExtraTasks = patchOperations.filter((op) => op.entityType === 'task')\n const patchExtraFolders = patchOperations.filter((op) => op.entityType === 'folder')\n\n if (patchExtraTasks.length) {\n // often used for updating inherited dependents\n patchOverviewTasks(patchExtraTasks, { state, dispatch }, patches)\n }\n\n if (patchExtraFolders.length) {\n // often used for updating inherited dependents\n patchOverviewFolders(patchExtraFolders, { state, dispatch }, patches)\n }\n\n // patch the list items\n patchListItems([...operations, ...patchOperations], { state, dispatch }, patches)\n\n // patch versions\n if (operationsByType.version?.length) {\n patchVersions(operationsByType.version, { state, dispatch }, patches)\n }\n\n // patch products\n if (operationsByType.product?.length) {\n patchProducts(operationsByType.product, { state, dispatch }, patches)\n }\n\n // try to patch any details panels\n // first we patch the individual entities\n // then we patch the details panel cache\n const entityTags = operations.map((op) => ({\n id: op.entityId,\n type: op.entityType,\n }))\n const entitiesTags = entityTags.map((tag) => ({\n type: 'entities',\n id: tag.id,\n }))\n\n // invalidates the details panel cache so that it fetches all individual entities again (using it's updated cache)\n const invalidateEntryPanel = () =>\n dispatch(detailsPanelQueries.util.invalidateTags(entitiesTags))\n\n // the individual entities that are patched for the details panel\n // remember the details panel cache is made up of individual entity caches\n const detailsPanelEntityCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entityTags,\n )\n\n // the cache for the whole details panel\n const detailsPanelEntitiesCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entitiesTags,\n )\n\n for (const entry of detailsPanelEntitiesCaches) {\n if (entry.endpointName !== 'getEntitiesDetailsPanel') continue\n const entitiesDetailsResult = dispatch(\n detailsPanelQueries.util.updateQueryData(\n entry.endpointName as 'getEntitiesDetailsPanel',\n entry.originalArgs,\n (draft) => {\n for (const entity of draft) {\n patchDetailsPanelEntity(operations, entity)\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches.push(entitiesDetailsResult)\n }\n\n try {\n await queryFulfilled\n\n // Background refetch logic - runs after successful mutation\n // This ensures calculated attributes are up-to-date and entities are correctly filtered\n\n const taskOperations = operationsByType.task || []\n const folderOperations = operationsByType.folder || []\n\n // Early exit if no operations\n if (taskOperations.length === 0 && folderOperations.length === 0) {\n return\n }\n\n // Extract updated entity IDs (always needed for refetch)\n const updatedTaskIds = getUpdatedEntityIds(taskOperations)\n const updatedFolderIds = getUpdatedEntityIds(folderOperations)\n\n // Get all active task list cache entries\n const overviewTaskTags = updatedTaskIds.map((id) => ({ type: 'overviewTask', id }))\n const tasksListInfiniteEntries = getOverviewApi.util\n .selectInvalidatedBy(state, overviewTaskTags)\n .filter((entry) => entry.endpointName === 'getTasksListInfinite')\n\n // Requirement: \"refetch the full data for the specific entity/entities\"\n // For each cache with its own filter, fetch entities and update that cache\n if (updatedTaskIds.length > 0 && projectName) {\n // Process getTasksListInfinite caches\n for (const entry of tasksListInfiniteEntries) {\n await refetchTasksForCacheEntry({\n dispatch,\n projectName,\n updatedTaskIds,\n cacheEntry: entry,\n })\n }\n\n // Process getOverviewTasksByFolders caches\n // Use selectInvalidatedBy to get only caches that contain the updated tasks\n const overviewTasksEntries = getOverviewApi.util\n .selectInvalidatedBy(state, overviewTaskTags)\n .filter((entry) => entry.endpointName === 'getOverviewTasksByFolders')\n\n for (const entry of overviewTasksEntries) {\n await refetchOverviewTasksForCacheEntry({\n dispatch,\n projectName,\n updatedTaskIds,\n cacheEntry: entry,\n })\n }\n }\n\n // Always refetch folders if they were updated (for calculated attributes)\n // Not conditional on affectsFilter - requirement says \"always refetch entities\"\n // Only invalidate if we haven't already done so for delete operations\n const hasDeleteOps = (operationsByType.folder || []).some(\n (op: OperationModel) => op.type === 'delete',\n )\n if (updatedFolderIds.length > 0 && projectName && !hasDeleteOps) {\n dispatch(foldersQueries.util.invalidateTags([{ type: 'folder', id: 'LIST' }]))\n }\n } catch (error) {\n // undo all patches if there is an error\n for (const patch of patches) {\n patch.undo()\n }\n\n if (detailsPanelEntityCaches.length) {\n // we invalidate the tags for the detailsPanelEntityCaches that were patched\n // invalidate the details panel cache\n invalidateEntryPanel()\n }\n }\n },\n invalidatesTags: (_r, _e, { operationsRequestModel, projectName }) => {\n type Tags = { id: string; type: string }[]\n const userDashboardTags: Tags = [{ type: 'kanban', id: 'project-' + projectName }],\n taskProgressTags: Tags = [],\n entityListItemTags: Tags = [],\n tasksFolderTags: Tags = []\n\n let hasAttribOp = false\n operationsRequestModel.operations?.forEach((op) => {\n const { entityId } = op\n if (entityId) {\n taskProgressTags.push({ type: 'progress', id: entityId })\n // Invalidate list item cache for this entity to trigger background refetch\n entityListItemTags.push({ type: 'entityListItem', id: entityId })\n } else {\n // new entity created, so we should invalidate everything\n taskProgressTags.push({ type: 'progress', id: 'LIST' })\n }\n if ((op.data as any)?.attrib) hasAttribOp = true\n })\n\n if (hasAttribOp) {\n tasksFolderTags.push({ type: 'tasksFolder', id: projectName })\n }\n\n return [\n ...userDashboardTags,\n ...taskProgressTags,\n ...entityListItemTags,\n ...tasksFolderTags,\n ]\n },\n }),\n }),\n})\n\nexport const { useUpdateOverviewEntitiesMutation } = operationsApiEnhancedInjected\n"],"names":["updateEntityWithOperation","entity","operationData","key","existingLinks","newLinks","newLink","existingIndex","link","linksToDelete","linkId","getOverviewTaskTags","tasks","op","getOverviewFolderTags","folders","createLinkDeletionPatch","entityId","entityType","linkIds","deleteLinksFromEntities","entities","patchOverviewEntities","state","dispatch","patches","entitiesByType","acc","patchOverviewTasks","patchOverviewFolders","tags","taskEntries","getOverviewApi","entry","tasksPatch","draft","taskOperation","page","task","patchTask","tasksArrayDraft","draftArray","invalidateOverviewTasks","folderEntries","foldersQueries","folderPatch","folderMap","folder","folderOperation","patchListItems","entries","entityListsQueriesGql","listItemsPatch","listOperation","item","splitByOpType","operations","operation","operationsEnhanced","operationsApi","operationsApiEnhancedInjected","build","arg","result","data","uniqueErrors","uniqueErrorCodes","e","operationsRequestModel","patchOperations","projectName","queryFulfilled","getState","operationsByType","deleteOps","update","updatesToPatch","dep","patchExtraTasks","patchExtraFolders","patchVersions","patchProducts","entityTags","entitiesTags","tag","invalidateEntryPanel","detailsPanelQueries","detailsPanelEntityCaches","detailsPanelEntitiesCaches","entitiesDetailsResult","patchDetailsPanelEntity","taskOperations","folderOperations","updatedTaskIds","getUpdatedEntityIds","updatedFolderIds","overviewTaskTags","id","tasksListInfiniteEntries","refetchTasksForCacheEntry","overviewTasksEntries","refetchOverviewTasksForCacheEntry","hasDeleteOps","patch","_r","_e","userDashboardTags","taskProgressTags","entityListItemTags","tasksFolderTags","hasAttribOp","useUpdateOverviewEntitiesMutation"],"mappings":"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"}
1
+ {"version":3,"file":"updateOverview.es.js","sources":["../../../../../../src/api/queries/overview/updateOverview.ts"],"sourcesContent":["import { foldersQueries } from '../folders'\nimport { detailsPanelQueries } from '../entities/getEntityPanel'\nimport { operationsApi } from '@shared/api/generated'\nimport { entityListsQueriesGql } from '../entityLists/updateLists'\nimport type {\n OperationsResponseModel,\n OperationModel,\n OperationsApiArg,\n} from '@shared/api/generated'\nimport getOverviewApi from './getOverview'\nimport { patchDetailsPanelEntity } from '@shared/api/queries/entities'\nimport { FetchBaseQueryError, RootState } from '@reduxjs/toolkit/query'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { EditorTaskNode } from '@shared/containers/ProjectTreeTable'\nimport { getUpdatedEntityIds } from './filterRefetchUtils'\nimport {\n refetchTasksForCacheEntry,\n refetchOverviewTasksForCacheEntry,\n} from './refetchFilteredEntities'\nimport { patchVersions } from './patchVersions'\nimport { patchProducts } from './patchProducts'\n// these operations are dedicated to the overview page\n// this mean cache updates are custom for the overview page here\n\n// Helper function to update entities with operation data\nconst updateEntityWithOperation = (entity: any, operationData: any) => {\n // Update top-level properties directly\n Object.keys(operationData).forEach((key) => {\n if (key === 'attrib' || key === 'links' || key === 'deleteLinks') return\n entity[key] = operationData[key]\n })\n\n // Handle attrib merging\n if (operationData.attrib) {\n entity.attrib = {\n ...entity.attrib,\n ...operationData.attrib,\n }\n }\n\n // Handle links merging\n if (operationData.links) {\n const existingLinks = entity.links || []\n const newLinks = operationData.links || []\n\n // Ensure links structure exists\n if (!entity.links) entity.links = []\n\n // Process links directly\n entity.links = [...existingLinks]\n\n newLinks.forEach((newLink: any) => {\n const existingIndex = entity.links.findIndex((link: any) => link.id === newLink.id)\n\n if (existingIndex !== -1) {\n entity.links[existingIndex] = { ...entity.links[existingIndex], ...newLink }\n } else {\n entity.links.push(newLink)\n }\n })\n }\n\n // Handle links deletion\n if (operationData.deleteLinks) {\n const linksToDelete = operationData.deleteLinks || []\n\n // Ensure links structure exists\n if (!entity.links) entity.links = []\n\n // Remove links by ID\n linksToDelete.forEach((linkId: string) => {\n entity.links = entity.links.filter((link: any) => link.id !== linkId)\n })\n }\n}\n\nconst getOverviewTaskTags = (tasks: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n { type: 'overviewTask', id: 'LIST' },\n ...tasks.map((op) => ({ type: 'overviewTask', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...tasks\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'overviewTask',\n id: op.data?.projectName,\n })),\n ]\n}\n\nconst getOverviewFolderTags = (folders: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n ...folders.map((op) => ({ type: 'folder', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...folders\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'folder',\n id: op.data?.projectName,\n })),\n ]\n}\n\nexport type PatchOperation = Pick<OperationModel, 'entityId' | 'entityType' | 'data'> & {\n type?: OperationModel['type']\n}\n\n// Helper function to create a patch operation for deleting links\nexport const createLinkDeletionPatch = (\n entityId: string,\n entityType: OperationModel['entityType'],\n linkIds: string[],\n): PatchOperation => {\n return {\n entityId,\n entityType,\n type: 'update',\n data: { deleteLinks: linkIds },\n }\n}\n\n// Utility function to delete specific links by ID from entities\nexport const deleteLinksFromEntities = (\n entities: { entityId: string; entityType: OperationModel['entityType'] }[],\n linkIds: string[],\n): PatchOperation[] => {\n return entities.map((entity) =>\n createLinkDeletionPatch(entity.entityId, entity.entityType, linkIds),\n )\n}\n\n// Generic helper function to patch entities based on their type\nexport const patchOverviewEntities = (\n entities: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n // Group entities by type\n const entitiesByType = entities.reduce((acc, entity) => {\n if (!acc[entity.entityType]) {\n acc[entity.entityType] = []\n }\n acc[entity.entityType].push(entity)\n return acc\n }, {} as Record<string, PatchOperation[]>)\n\n // Patch each entity type using the appropriate function\n if (entitiesByType.task) {\n patchOverviewTasks(entitiesByType.task, { state, dispatch }, patches)\n }\n if (entitiesByType.folder) {\n patchOverviewFolders(entitiesByType.folder, { state, dispatch }, patches)\n }\n // Add more entity types as needed\n // if (entitiesByType.product) { ... }\n // if (entitiesByType.version) { ... }\n // etc.\n}\n\nexport const patchOverviewTasks = (\n tasks: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = getOverviewTaskTags(tasks)\n const taskEntries = getOverviewApi.util.selectInvalidatedBy(state, tags)\n\n for (const entry of taskEntries) {\n if (entry.endpointName === 'getTasksListInfinite') {\n // patch getTasksListInfinite\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData('getTasksListInfinite', entry.originalArgs, (draft) => {\n // Apply each change to matching tasks in all pages\n for (const taskOperation of tasks) {\n if (taskOperation.type === 'create' && taskOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.pages[0].tasks.push(taskOperation.data)\n } else {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n // TODO: task is not found here, why?\n const task = page.tasks.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n }\n }\n }\n }),\n )\n\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n } else {\n // this updates the main overview cache task\n // it also updates any GetTasksByParent caches\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData(\n entry.endpointName as 'getOverviewTasksByFolders' | 'GetTasksByParent' | 'GetTasksList',\n entry.originalArgs,\n (draft) => {\n // Apply each change to matching tasks in the cache\n for (const taskOperation of tasks) {\n if (\n taskOperation.type === 'create' &&\n taskOperation.data &&\n entry.originalArgs.parentIds?.includes(taskOperation.data.folderId)\n ) {\n const patchTask = (tasksArrayDraft: EditorTaskNode[]) => {\n // @ts-expect-error\n tasksArrayDraft.push(taskOperation.data)\n }\n\n // Check if draft is an array or an object with a tasks property\n if (Array.isArray(draft)) {\n patchTask(draft)\n } else if (draft.tasks && Array.isArray(draft.tasks)) {\n // Handle object with tasks array case (like in GetTasksList)\n const draftArray = draft.tasks\n patchTask(draftArray)\n }\n } else {\n const patchTask = (tasksArrayDraft: EditorTaskNode[]) => {\n const task = tasksArrayDraft.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n }\n\n // Check if draft is an array or an object with a tasks property\n if (Array.isArray(draft)) {\n patchTask(draft)\n } else if (draft.tasks && Array.isArray(draft.tasks)) {\n // Handle object with tasks array case (like in GetTasksList)\n const draftArray = draft.tasks\n patchTask(draftArray)\n }\n }\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n }\n }\n}\n\nconst invalidateOverviewTasks = (\n tasks: PatchOperation[],\n {\n dispatch,\n }: {\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n) => {\n if (!tasks.length) return\n dispatch(getOverviewApi.util.invalidateTags(getOverviewTaskTags(tasks)))\n}\n\n// Debounced, per-project invalidation of the footer stats caches after entity ops.\ntype StatsTagType =\n | 'folderColumnStats'\n | 'taskColumnStats'\n | 'productColumnStats'\n | 'versionColumnStats'\nconst statsRefetchTimers = new Map<string, ReturnType<typeof setTimeout>>()\nconst scheduleStatsRefetch = (\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n projectName: string,\n tagTypes: StatsTagType[],\n) => {\n const key = `${projectName}:${tagTypes.join()}`\n const existing = statsRefetchTimers.get(key)\n if (existing) clearTimeout(existing)\n statsRefetchTimers.set(\n key,\n setTimeout(() => {\n statsRefetchTimers.delete(key)\n dispatch(\n getOverviewApi.util.invalidateTags(\n tagTypes.map((type) => ({ type, id: projectName })),\n ),\n )\n }, 500),\n )\n}\n\nexport const patchOverviewFolders = (\n folders: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const folderEntries = foldersQueries.util\n .selectInvalidatedBy(state, getOverviewFolderTags(folders))\n .filter((entry) => entry.endpointName === 'getFolderList')\n for (const entry of folderEntries) {\n const folderPatch = dispatch(\n foldersQueries.util.updateQueryData(\n entry.endpointName as 'getFolderList',\n entry.originalArgs,\n (draft) => {\n // Create a Map for O(1) folder lookups\n const folderMap = new Map()\n draft.folders.forEach((folder) => {\n folderMap.set(folder.id, folder)\n })\n\n for (const folderOperation of folders) {\n if (folderOperation.type === 'create' && folderOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.folders.push(folderOperation.data)\n } else {\n const folder = folderMap.get(folderOperation.entityId)\n\n if (folder) {\n updateEntityWithOperation(folder, folderOperation.data)\n }\n }\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(folderPatch)\n }\n}\n\nconst patchListItems = (\n entities: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = entities.map((op) => ({ type: 'entityListItem', id: op.entityId }))\n const entries = entityListsQueriesGql.util.selectInvalidatedBy(state, tags)\n\n for (const entry of entries) {\n if (entry.endpointName === 'getListItemsInfinite') {\n const listItemsPatch = dispatch(\n entityListsQueriesGql.util.updateQueryData(\n 'getListItemsInfinite',\n entry.originalArgs,\n (draft) => {\n // Apply each change to matching tasks in all pages\n for (const listOperation of entities) {\n if (listOperation.type === 'update' && listOperation.data) {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n const item = page.items.find((item) => item.entityId === listOperation.entityId)\n if (item) {\n updateEntityWithOperation(item, listOperation.data)\n }\n }\n }\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches?.push(listItemsPatch)\n }\n }\n}\n\nconst splitByOpType = (operations: OperationModel[]) => {\n return operations.reduce(\n (acc: Record<OperationModel['type'], OperationModel[]>, operation) => {\n acc[operation.type].push(operation)\n return acc\n },\n {\n create: [],\n update: [],\n delete: [],\n },\n )\n}\n\nconst operationsEnhanced = operationsApi.enhanceEndpoints({\n endpoints: {\n operations: {},\n },\n})\n\n// enhance the argument type to include some extra fields\ninterface UpdateOverviewEntitiesArg extends OperationsApiArg {\n patchOperations?: PatchOperation[] // extra entities to patch\n}\n\nconst operationsApiEnhancedInjected = operationsEnhanced.injectEndpoints({\n endpoints: (build) => ({\n updateOverviewEntities: build.mutation<\n OperationsResponseModel | undefined,\n UpdateOverviewEntitiesArg\n >({\n async queryFn(arg, { dispatch }) {\n try {\n const result = await dispatch(operationsEnhanced.endpoints.operations.initiate(arg))\n\n // Check if the network request itself failed (offline, timeout, etc.)\n if (result.error) {\n return { error: result.error as FetchBaseQueryError }\n }\n\n const data = result.data\n // check for any errors in the result\n const uniqueErrors = new Set()\n const uniqueErrorCodes = new Set()\n for (const op of data?.operations || []) {\n if (op.success === false && op.detail) {\n if (!uniqueErrors.has(op.detail)) {\n uniqueErrors.add(op.detail)\n }\n if (!uniqueErrorCodes.has(op.errorCode)) {\n uniqueErrorCodes.add(op.errorCode)\n }\n }\n }\n\n if (uniqueErrors.size > 0) {\n const error = {\n status: 'FETCH_ERROR',\n error: Array.from(uniqueErrors).join(', '),\n errorCodes: Array.from(uniqueErrorCodes),\n } as FetchBaseQueryError\n return { error }\n } else {\n return { data }\n }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n async onQueryStarted(\n { operationsRequestModel, patchOperations = [], projectName },\n { dispatch, queryFulfilled, getState },\n ) {\n if (!operationsRequestModel.operations?.length) return\n const { operations } = operationsRequestModel\n // we need to split the operations by entity type\n const operationsByType = operations.reduce(\n (acc: Record<OperationModel['entityType'], OperationModel[]>, operation) => {\n acc[operation.entityType].push(operation)\n return acc\n },\n {\n task: [],\n folder: [],\n product: [],\n version: [],\n representation: [],\n workfile: [],\n },\n )\n\n // collect patches incase we need to undo them\n const state = getState()\n const patches: any[] = []\n\n // patch the overview tasks\n if (operationsByType.task?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.task)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing tasks\n patchOverviewTasks(updatesToPatch, { state, dispatch }, patches)\n // invalidate the caches for tasks being created and deleted\n invalidateOverviewTasks([...deleteOps], {\n dispatch,\n })\n }\n\n // patch the overview folders (any other folders from foldersList)\n if (operationsByType.folder?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.folder)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing folders\n patchOverviewFolders(updatesToPatch, { state, dispatch }, patches)\n // invalidate the caches for folders being created and deleted\n if (deleteOps.length) {\n dispatch(foldersQueries.util.invalidateTags([{ type: 'folder', id: 'LIST' }]))\n }\n }\n\n const patchExtraTasks = patchOperations.filter((op) => op.entityType === 'task')\n const patchExtraFolders = patchOperations.filter((op) => op.entityType === 'folder')\n\n if (patchExtraTasks.length) {\n // often used for updating inherited dependents\n patchOverviewTasks(patchExtraTasks, { state, dispatch }, patches)\n }\n\n if (patchExtraFolders.length) {\n // often used for updating inherited dependents\n patchOverviewFolders(patchExtraFolders, { state, dispatch }, patches)\n }\n\n // patch the list items\n patchListItems([...operations, ...patchOperations], { state, dispatch }, patches)\n\n // patch versions\n if (operationsByType.version?.length) {\n patchVersions(operationsByType.version, { state, dispatch }, patches)\n }\n\n // patch products\n if (operationsByType.product?.length) {\n patchProducts(operationsByType.product, { state, dispatch }, patches)\n }\n\n // try to patch any details panels\n // first we patch the individual entities\n // then we patch the details panel cache\n const entityTags = operations.map((op) => ({\n id: op.entityId,\n type: op.entityType,\n }))\n const entitiesTags = entityTags.map((tag) => ({\n type: 'entities',\n id: tag.id,\n }))\n\n // invalidates the details panel cache so that it fetches all individual entities again (using it's updated cache)\n const invalidateEntryPanel = () =>\n dispatch(detailsPanelQueries.util.invalidateTags(entitiesTags))\n\n // the individual entities that are patched for the details panel\n // remember the details panel cache is made up of individual entity caches\n const detailsPanelEntityCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entityTags,\n )\n\n // the cache for the whole details panel\n const detailsPanelEntitiesCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entitiesTags,\n )\n\n for (const entry of detailsPanelEntitiesCaches) {\n if (entry.endpointName !== 'getEntitiesDetailsPanel') continue\n const entitiesDetailsResult = dispatch(\n detailsPanelQueries.util.updateQueryData(\n entry.endpointName as 'getEntitiesDetailsPanel',\n entry.originalArgs,\n (draft) => {\n for (const entity of draft) {\n patchDetailsPanelEntity(operations, entity)\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches.push(entitiesDetailsResult)\n }\n\n try {\n await queryFulfilled\n\n // Background refetch logic - runs after successful mutation\n // This ensures calculated attributes are up-to-date and entities are correctly filtered\n\n const taskOperations = operationsByType.task || []\n const folderOperations = operationsByType.folder || []\n const versionOperations = operationsByType.version || []\n const productOperations = operationsByType.product || []\n\n if (projectName) {\n if (taskOperations.length || folderOperations.length) {\n scheduleStatsRefetch(dispatch, projectName, ['folderColumnStats', 'taskColumnStats'])\n }\n if (versionOperations.length || productOperations.length) {\n scheduleStatsRefetch(dispatch, projectName, [\n 'productColumnStats',\n 'versionColumnStats',\n ])\n }\n }\n\n // Early exit if no operations\n if (taskOperations.length === 0 && folderOperations.length === 0) {\n return\n }\n\n // Extract updated entity IDs (always needed for refetch)\n const updatedTaskIds = getUpdatedEntityIds(taskOperations)\n const updatedFolderIds = getUpdatedEntityIds(folderOperations)\n\n // Get all active task list cache entries\n const overviewTaskTags = updatedTaskIds.map((id) => ({ type: 'overviewTask', id }))\n const tasksListInfiniteEntries = getOverviewApi.util\n .selectInvalidatedBy(state, overviewTaskTags)\n .filter((entry) => entry.endpointName === 'getTasksListInfinite')\n\n // Requirement: \"refetch the full data for the specific entity/entities\"\n // For each cache with its own filter, fetch entities and update that cache\n if (updatedTaskIds.length > 0 && projectName) {\n // Process getTasksListInfinite caches\n for (const entry of tasksListInfiniteEntries) {\n await refetchTasksForCacheEntry({\n dispatch,\n projectName,\n updatedTaskIds,\n cacheEntry: entry,\n })\n }\n\n // Process getOverviewTasksByFolders caches\n // Use selectInvalidatedBy to get only caches that contain the updated tasks\n const overviewTasksEntries = getOverviewApi.util\n .selectInvalidatedBy(state, overviewTaskTags)\n .filter((entry) => entry.endpointName === 'getOverviewTasksByFolders')\n\n for (const entry of overviewTasksEntries) {\n await refetchOverviewTasksForCacheEntry({\n dispatch,\n projectName,\n updatedTaskIds,\n cacheEntry: entry,\n })\n }\n }\n\n // Always refetch folders if they were updated (for calculated attributes)\n // Not conditional on affectsFilter - requirement says \"always refetch entities\"\n // Only invalidate if we haven't already done so for delete operations\n const hasDeleteOps = (operationsByType.folder || []).some(\n (op: OperationModel) => op.type === 'delete',\n )\n if (updatedFolderIds.length > 0 && projectName && !hasDeleteOps) {\n dispatch(foldersQueries.util.invalidateTags([{ type: 'folder', id: 'LIST' }]))\n }\n } catch (error) {\n // undo all patches if there is an error\n for (const patch of patches) {\n patch.undo()\n }\n\n if (detailsPanelEntityCaches.length) {\n // we invalidate the tags for the detailsPanelEntityCaches that were patched\n // invalidate the details panel cache\n invalidateEntryPanel()\n }\n }\n },\n invalidatesTags: (_r, _e, { operationsRequestModel, projectName }) => {\n type Tags = { id: string; type: string }[]\n const userDashboardTags: Tags = [{ type: 'kanban', id: 'project-' + projectName }],\n taskProgressTags: Tags = [],\n entityListItemTags: Tags = [],\n tasksFolderTags: Tags = []\n\n let hasAttribOp = false\n operationsRequestModel.operations?.forEach((op) => {\n const { entityId } = op\n if (entityId) {\n taskProgressTags.push({ type: 'progress', id: entityId })\n // Invalidate list item cache for this entity to trigger background refetch\n entityListItemTags.push({ type: 'entityListItem', id: entityId })\n } else {\n // new entity created, so we should invalidate everything\n taskProgressTags.push({ type: 'progress', id: 'LIST' })\n }\n if ((op.data as any)?.attrib) hasAttribOp = true\n })\n\n if (hasAttribOp) {\n tasksFolderTags.push({ type: 'tasksFolder', id: projectName })\n }\n\n return [\n ...userDashboardTags,\n ...taskProgressTags,\n ...entityListItemTags,\n ...tasksFolderTags,\n ]\n },\n }),\n }),\n})\n\nexport const { useUpdateOverviewEntitiesMutation } = operationsApiEnhancedInjected\n"],"names":["updateEntityWithOperation","entity","operationData","key","existingLinks","newLinks","newLink","existingIndex","link","linksToDelete","linkId","getOverviewTaskTags","tasks","op","getOverviewFolderTags","folders","createLinkDeletionPatch","entityId","entityType","linkIds","deleteLinksFromEntities","entities","patchOverviewEntities","state","dispatch","patches","entitiesByType","acc","patchOverviewTasks","patchOverviewFolders","tags","taskEntries","getOverviewApi","entry","tasksPatch","draft","taskOperation","page","task","patchTask","tasksArrayDraft","draftArray","invalidateOverviewTasks","statsRefetchTimers","scheduleStatsRefetch","projectName","tagTypes","existing","type","folderEntries","foldersQueries","folderPatch","folderMap","folder","folderOperation","patchListItems","entries","entityListsQueriesGql","listItemsPatch","listOperation","item","splitByOpType","operations","operation","operationsEnhanced","operationsApi","operationsApiEnhancedInjected","build","arg","result","data","uniqueErrors","uniqueErrorCodes","e","operationsRequestModel","patchOperations","queryFulfilled","getState","operationsByType","deleteOps","update","updatesToPatch","dep","patchExtraTasks","patchExtraFolders","patchVersions","patchProducts","entityTags","entitiesTags","tag","invalidateEntryPanel","detailsPanelQueries","detailsPanelEntityCaches","detailsPanelEntitiesCaches","entitiesDetailsResult","patchDetailsPanelEntity","taskOperations","folderOperations","versionOperations","productOperations","updatedTaskIds","getUpdatedEntityIds","updatedFolderIds","overviewTaskTags","id","tasksListInfiniteEntries","refetchTasksForCacheEntry","overviewTasksEntries","refetchOverviewTasksForCacheEntry","hasDeleteOps","patch","_r","_e","userDashboardTags","taskProgressTags","entityListItemTags","tasksFolderTags","hasAttribOp","useUpdateOverviewEntitiesMutation"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");const K=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 g=require("../project/getProject.cjs.js");require("../project/updateProject.cjs.js");require("lodash");require("react-toastify");require("uuid");const m=require("../../../util/pubsub.cjs.js"),P=require("./convertAccessGroupsData.cjs.js"),A=require("./getUserProjectsAccess.cjs.js"),h=s=>s.kanban.edges.map(({node:r})=>r).sort((r,o)=>{const e=r.label||r.name,t=o.label||o.name;return e.localeCompare(t)}),k=(s,r,o)=>s?.length?[{type:"kanBanTask",id:"LIST"},...s.flatMap(({id:e,projectName:t,assignees:c})=>[{type:"task",id:e},{type:"kanban",id:"project-"+t},...c.map(n=>({type:"kanban",id:"user-"+n})),...c.map(n=>({type:"kanban",id:"user-"+n+"-project-"+t})),{type:"kanban",id:JSON.stringify(o)}])]:[{type:"kanBanTask",id:"LIST"}],v=async({projects:s=[],taskIds:r=[]},o)=>{try{const e=await o(j.endpoints.GetKanbanTasks.initiate({projects:s,taskIds:r},{forceRefetch:!0}));if(e.status==="rejected"||!e.data)throw console.error("No tasks found",r),new Error(`No tasks found ${r.join(", ")}`);return e.status!=="fulfilled"?[]:e.data}catch(e){return console.error(e),[]}},j=K.api.enhanceEndpoints({endpoints:{GetKanban:{transformResponse:h,providesTags:k,async onCacheEntryAdded({assignees:s=[],projects:r=[]}={},{updateCachedData:o,cacheDataLoaded:e,cacheEntryRemoved:t,dispatch:c}){let n;try{await e;const u=async({projects:q=[],taskIds:d=[]})=>{const p=await v({projects:q,taskIds:d},c),y=p.filter(a=>a.assignees.some(i=>s?.includes(i))),G=p.filter(a=>!a.assignees.some(i=>s?.includes(i)));o(a=>{y.forEach(i=>{const f=a.findIndex(b=>b.id===i.id);f===-1?a.push(i):a[f]=i}),G.forEach(i=>{const f=a.findIndex(b=>b.id===i.id);f!==-1&&a.splice(f,1)})})},l=async(q,d)=>{const p=d.project;if(!r?.includes(p))return console.log("project not selected");const y=d.summary.entityId;if(!y)return console.log("no entity id found");u({taskIds:[y],projects:[p]})};n=m.subscribe("entity.task",l)}catch(u){console.error(u)}await t,m.unsubscribe(n)}},GetKanbanTasks:{transformResponse:h,providesTags:k},GetKanbanProjectUsers:{transformResponse:(s,r,{projects:o}={})=>s.users.edges.map(({node:e})=>{const t=P(e.accessGroups);let n=!e.isManager&&!e.isAdmin?A(t):o;(typeof n=="string"||!n)&&(n=[]);const u=`/api/users/${e.name}/avatar`;return{...e,accessGroups:t,projects:n,avatarUrl:u}}),providesTags:s=>s?.length?[{type:"user",id:"LIST"},...s.map(({name:r})=>({type:"user",id:r}))]:[{type:"user",id:"LIST"}]}}}),{useGetKanbanQuery:I,useGetKanbanProjectUsersQuery:w}=j,T=j.injectEndpoints({endpoints:s=>({getProjectsInfo:s.query({async queryFn({projects:r=[],anatomy:o=!0},{dispatch:e}){try{const t={};for(const c of r){const n=c,u=[e(g.default.endpoints.getProject.initiate({projectName:n},{forceRefetch:!0})).unwrap(),...o?[e(g.default.endpoints.getProjectAnatomy.initiate({projectName:n},{forceRefetch:!0})).unwrap()]:[]],l=await Promise.allSettled(u),q=l[0],d=q.status==="fulfilled"?q.value:void 0,p=o&&l[1]?.status==="fulfilled"?l[1].value:void 0;d&&(t[n]={...d,anatomy:p})}return{data:t,meta:void 0,error:void 0}}catch(t){return console.error(t),{error:t,meta:void 0,data:void 0}}},providesTags:(r,o,{projects:e})=>e.map(t=>({type:"project",id:t}))})})}),{useGetProjectsInfoQuery:S}=T;exports.dashboardQueries=T;exports.getKanbanTasks=v;exports.useGetKanbanProjectUsersQuery=w;exports.useGetKanbanQuery=I;exports.useGetProjectsInfoQuery=S;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");const Q=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 A=require("../project/getProject.cjs.js");require("../project/updateProject.cjs.js");require("lodash");require("react-toastify");require("uuid");const x=require("../../../util/thumbnailWebsocket.cjs.js"),I=require("../../../util/pubsub.cjs.js"),U=require("./convertAccessGroupsData.cjs.js"),E=require("./getUserProjectsAccess.cjs.js"),G=t=>t.kanban.edges.map(({node:n})=>n).sort((n,a)=>{const r=n.label||n.name,i=a.label||a.name;return r.localeCompare(i)}),S=(t,n,a)=>t?.length?[{type:"kanBanTask",id:"LIST"},...t.flatMap(({id:r,projectName:i,assignees:m})=>[{type:"task",id:r},{type:"kanban",id:"project-"+i},...m.map(u=>({type:"kanban",id:"user-"+u})),...m.map(u=>({type:"kanban",id:"user-"+u+"-project-"+i})),{type:"kanban",id:JSON.stringify(a)}])]:[{type:"kanBanTask",id:"LIST"}],K=async({projects:t=[],taskIds:n=[]},a)=>{try{const r=await a(v.endpoints.GetKanbanTasks.initiate({projects:t,taskIds:n},{forceRefetch:!0}));if(r.status==="rejected"||!r.data)throw console.error("No tasks found",n),new Error(`No tasks found ${n.join(", ")}`);return r.status!=="fulfilled"?[]:r.data}catch(r){return console.error(r),[]}},v=Q.api.enhanceEndpoints({endpoints:{GetKanban:{transformResponse:G,providesTags:S,async onCacheEntryAdded({assignees:t=[],projects:n=[]}={},{updateCachedData:a,cacheDataLoaded:r,cacheEntryRemoved:i,dispatch:m,getCacheEntry:u}){let h,y,j=[],q=null;try{await r,y=x.subscribeToThumbnailUpdates(b=>{const l=u().data??[];if(!l.length)return;const d=b.filter(o=>l.some(c=>c.id===o.summary.entityId&&c.projectName===o.project));d.length!==0&&a(o=>{d.forEach(c=>{const p=o.findIndex(e=>e.id===c.summary.entityId);p!==-1&&o[p]&&c.summary.thumbnailHash&&(o[p].thumbnailHash=c.summary.thumbnailHash)})})},["task"]);const g=async()=>{const b=[...j];j=[],q=null;const l=Array.from(new Set(b.flatMap(e=>e.taskIds))),d=Array.from(new Set(b.flatMap(e=>e.projects)));if(l.length===0)return;const o=await K({projects:d,taskIds:l},m),c=o.filter(e=>e.assignees.some(s=>t?.includes(s))),p=o.filter(e=>!e.assignees.some(s=>t?.includes(s)));a(e=>{c.forEach(s=>{const f=e.findIndex(T=>T.id===s.id);f===-1?e.push(s):e[f]=s}),p.forEach(s=>{const f=e.findIndex(T=>T.id===s.id);f!==-1&&e.splice(f,1)})})},w=({projects:b=[],taskIds:l=[],payload:d})=>{let o=!1;if(d?a(c=>{l.forEach(p=>{const e=c.findIndex(s=>s.id===p);e!==-1?(Object.assign(c[e],d),d.assignees&&(!t?.length||d.assignees.some(f=>t?.includes(f))||c.splice(e,1))):d.assignees?.some(s=>t?.includes(s))&&(o=!0)})}):o=!0,!!o&&(j.push({projects:b,taskIds:l}),!q)){const c=Math.random()*5e3;q=setTimeout(g,c)}},M=async(b,l)=>{const d=l.project;if(!n?.includes(d))return console.log("project not selected");const o=l.summary.entityId;if(!o)return console.log("no entity id found");const c=u().data??[],p=l.topic.split(".")[2].split("_changed")[0];if(!["status","assignees"].includes(p))return;const e=l.summary.value;let s=e;p==="status"?s=String(e):p==="assignees"&&(s=Array.isArray(e)?e:[]);const f=c.some(k=>k.id===o),T=p==="assignees"&&s.some(k=>t?.includes(k));!f&&!T||w({taskIds:[o],projects:[d],payload:{[p]:s}})};h=I.subscribe("entity.task",M)}catch(g){console.error(g)}await i,I.unsubscribe(h),y&&y(),q&&clearTimeout(q)}},GetKanbanTasks:{transformResponse:G,providesTags:S},GetKanbanProjectUsers:{transformResponse:(t,n,{projects:a}={})=>t.users.edges.map(({node:r})=>{const i=U(r.accessGroups);let u=!r.isManager&&!r.isAdmin?E(i):a;(typeof u=="string"||!u)&&(u=[]);const h=`/api/users/${r.name}/avatar`;return{...r,accessGroups:i,projects:u,avatarUrl:h}}),providesTags:t=>t?.length?[{type:"user",id:"LIST"},...t.map(({name:n})=>({type:"user",id:n}))]:[{type:"user",id:"LIST"}]}}}),{useGetKanbanQuery:L,useGetKanbanProjectUsersQuery:R}=v,P=v.injectEndpoints({endpoints:t=>({getProjectsInfo:t.query({async queryFn({projects:n=[],anatomy:a=!0},{dispatch:r}){try{const i={};for(const m of n){const u=m,h=[r(A.default.endpoints.getProject.initiate({projectName:u})).unwrap(),...a?[r(A.default.endpoints.getProjectAnatomy.initiate({projectName:u})).unwrap()]:[]],y=await Promise.allSettled(h),j=y[0],q=j.status==="fulfilled"?j.value:void 0,g=a&&y[1]?.status==="fulfilled"?y[1].value:void 0;q&&(i[u]={...q,anatomy:g})}return{data:i,meta:void 0,error:void 0}}catch(i){return console.error(i),{error:i,meta:void 0,data:void 0}}},providesTags:(n,a,{projects:r})=>r.map(i=>({type:"project",id:i}))})})}),{useGetProjectsInfoQuery:_}=P;exports.dashboardQueries=P;exports.getKanbanTasks=K;exports.useGetKanbanProjectUsersQuery=R;exports.useGetKanbanQuery=L;exports.useGetProjectsInfoQuery=_;
2
2
  //# sourceMappingURL=getUserDashboard.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getUserDashboard.cjs.js","sources":["../../../../../../src/api/queries/userDashboard/getUserDashboard.ts"],"sourcesContent":["import {\n gqlApi,\n GetKanbanProjectUsersQuery,\n GetKanbanQuery,\n ProjectModel,\n KanbanNode,\n Anatomy,\n} from '@shared/api/generated'\nimport { projectQueries } from '@shared/api/queries/project'\nimport { PubSub } from '@shared/util'\nimport convertAccessGroupsData, { AccessGroups } from './convertAccessGroupsData'\n\n// GetKanban response type\nexport type GetKanbanResponse = KanbanNode[]\n\n// GetKanbanProjectUsers response type\nexport type KanbanProjectUserNode = Omit<\n GetKanbanProjectUsersQuery['users']['edges'][0]['node'],\n 'accessGroups'\n> & { accessGroups: AccessGroups; projects: string[]; avatarUrl: string }\nexport type GetKanbanProjectUsersResponse = KanbanProjectUserNode[]\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\nimport getUserProjectsAccess from './getUserProjectsAccess'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\n\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 'GetKanban' | 'GetKanbanTasks' | 'GetKanbanProjectUsers'\n> & {\n GetKanban: OverrideResultType<Definitions['GetKanban'], GetKanbanResponse>\n GetKanbanTasks: OverrideResultType<Definitions['GetKanbanTasks'], GetKanbanResponse>\n GetKanbanProjectUsers: OverrideResultType<\n Definitions['GetKanbanProjectUsers'],\n GetKanbanProjectUsersResponse\n >\n}\n\n// get edges and sort by task label || name\nconst transformKanban = (response: GetKanbanQuery) =>\n response.kanban.edges\n .map(({ node }) => node)\n .sort((a, b) => {\n const aLabel = a.label || a.name\n const bLabel = b.label || b.name\n return aLabel.localeCompare(bLabel)\n })\n\nconst provideKanbanTags = (result: GetKanbanResponse | undefined, _error: any, args: any) =>\n result?.length\n ? [\n { type: 'kanBanTask', id: 'LIST' },\n ...result.flatMap(({ id, projectName, assignees }) => [\n { type: 'task', id },\n { type: 'kanban', id: 'project-' + projectName },\n ...assignees.map((assignee) => ({ type: 'kanban', id: 'user-' + assignee })),\n ...assignees.map((assignee) => ({\n type: 'kanban',\n id: 'user-' + assignee + '-project-' + projectName,\n })),\n { type: 'kanban', id: JSON.stringify(args) },\n ]),\n ]\n : [{ type: 'kanBanTask', id: 'LIST' }]\n\nexport const getKanbanTasks = async (\n {\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n },\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n) => {\n try {\n // get the task\n const response = await dispatch(\n enhancedDashboardGraphqlApi.endpoints.GetKanbanTasks.initiate(\n { projects, taskIds },\n { forceRefetch: true },\n ),\n )\n\n if (response.status === 'rejected' || !response.data) {\n console.error('No tasks found', taskIds)\n throw new Error(`No tasks found ${taskIds.join(', ')}`)\n }\n\n if (response.status !== 'fulfilled') return []\n // get tasks from response (usually only one task)\n return response.data\n } catch (error) {\n console.error(error)\n return []\n }\n}\n\nconst enhancedDashboardGraphqlApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetKanban: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n async onCacheEntryAdded(\n { assignees = [], projects = [] } = {},\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 patchKanbanTask = async ({\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n }) => {\n const tasks = await getKanbanTasks({ projects, taskIds }, dispatch)\n\n // get all tasks that have been ADDED to the assignees\n const tasksWithArgAssignees = tasks.filter((task) =>\n task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n // get all tasks that have been REMOVED from the assignees\n const tasksWithoutArgAssignees = tasks.filter(\n (task) => !task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n\n // patch the kanban query by adding new tasks and remove old tasks\n updateCachedData((draft) => {\n // add new tasks\n tasksWithArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index === -1) {\n draft.push(task)\n } else {\n // update the task\n draft[index] = task\n }\n })\n // remove old tasks\n tasksWithoutArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index !== -1) {\n draft.splice(index, 1)\n }\n })\n })\n }\n\n const handlePubSub = async (_topic: string, message: any) => {\n const project = message.project as string\n // first check the project name as selected\n if (!projects?.includes(project)) return console.log('project not selected')\n // then get entity id\n const entityId = message.summary.entityId\n if (!entityId) return console.log('no entity id found')\n\n // patch task updates into kanban cache\n patchKanbanTask({\n taskIds: [entityId],\n projects: [project],\n })\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (error) {\n console.error(error)\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 // // there is only one cache for kanban\n // serializeQueryArgs: () => '',\n // // whenever the assignees or projects change, we need to refetch the one query\n // forceRefetch: (params) => {\n // const { currentArg, previousArg } = params\n // // if the assignees are different, we need to refetch the query\n // if (!isEqual(currentArg?.assignees, previousArg?.assignees)) return true\n // // if the projects are different, we need to refetch the query\n // if (!isEqual(currentArg?.projects, previousArg?.projects)) return true\n // return false\n // },\n },\n // same query as GetKanban but for specific tasks\n // used mainly for patching tasks into the kanban cache\n GetKanbanTasks: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n },\n // get all users on all selected projects\n GetKanbanProjectUsers: {\n transformResponse: (response: GetKanbanProjectUsersQuery, _meta, { projects } = {}) =>\n response.users.edges.map(({ node: user }) => {\n const accessGroups = convertAccessGroupsData(user.accessGroups)\n // parse access groups json\n const isUser = !user.isManager && !user.isAdmin\n // get the projects that the user has access to\n let projectsAccess = isUser ? getUserProjectsAccess(accessGroups) : projects\n if (typeof projectsAccess === 'string' || !projectsAccess) projectsAccess = []\n\n // assignees select requires avatarUrl\n const avatarUrl = `/api/users/${user.name}/avatar`\n\n return {\n ...user,\n accessGroups: accessGroups,\n projects: projectsAccess,\n avatarUrl,\n }\n }),\n providesTags: (result) =>\n result?.length\n ? [\n { type: 'user', id: 'LIST' },\n ...result.map(({ name }) => ({ type: 'user', id: name })),\n ]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const { useGetKanbanQuery, useGetKanbanProjectUsersQuery } = enhancedDashboardGraphqlApi\n\ntype GetProjectsInfoParams = {\n projects: string[]\n anatomy?: boolean\n}\n\nexport type ProjectModeWithAnatomy = ProjectModel & { anatomy?: Anatomy }\n\nexport type GetProjectsInfoResponse = { [projectName: string]: ProjectModeWithAnatomy | undefined }\n\nconst injectedDashboardRestApi = enhancedDashboardGraphqlApi.injectEndpoints({\n endpoints: (build) => ({\n getProjectsInfo: build.query<GetProjectsInfoResponse, GetProjectsInfoParams>({\n async queryFn({ projects = [], anatomy = true }, { dispatch }) {\n try {\n // get project info for each project\n const projectInfo: Record<string, ProjectModeWithAnatomy | undefined> = {}\n for (const project of projects) {\n const projectName = project as string\n // hopefully this will be cached\n // it also allows for different combination of projects but still use the cache\n const responses = [\n dispatch(\n projectQueries.endpoints.getProject.initiate(\n { projectName },\n { forceRefetch: true },\n ),\n ).unwrap(),\n ...(anatomy\n ? [\n dispatch(\n projectQueries.endpoints.getProjectAnatomy.initiate(\n { projectName },\n { forceRefetch: true },\n ),\n ).unwrap(),\n ]\n : []),\n ]\n\n const settled = await Promise.allSettled(responses)\n\n const projectDataResult = settled[0]\n const projectData =\n projectDataResult.status === 'fulfilled'\n ? (projectDataResult.value as ProjectModel)\n : undefined\n const anatomyData =\n anatomy && settled[1]?.status === 'fulfilled'\n ? (settled[1].value as Anatomy)\n : undefined\n\n if (projectData) {\n projectInfo[projectName] = {\n ...projectData,\n anatomy: anatomyData,\n } as ProjectModeWithAnatomy\n }\n }\n\n return { data: projectInfo, meta: undefined, error: undefined }\n } catch (error: any) {\n console.error(error)\n return { error, meta: undefined, data: undefined }\n }\n },\n providesTags: (_res, _error, { projects }) =>\n projects.map((projectName) => ({ type: 'project', id: projectName })),\n }),\n }),\n})\n\nexport const { useGetProjectsInfoQuery } = injectedDashboardRestApi\nexport { injectedDashboardRestApi as dashboardQueries }\n"],"names":["transformKanban","response","node","a","b","aLabel","bLabel","provideKanbanTags","result","_error","args","id","projectName","assignees","assignee","getKanbanTasks","projects","taskIds","dispatch","enhancedDashboardGraphqlApi","error","gqlApi","updateCachedData","cacheDataLoaded","cacheEntryRemoved","token","patchKanbanTask","tasks","tasksWithArgAssignees","task","tasksWithoutArgAssignees","draft","index","t","handlePubSub","_topic","message","project","entityId","PubSub","_meta","user","accessGroups","convertAccessGroupsData","projectsAccess","getUserProjectsAccess","avatarUrl","name","useGetKanbanQuery","useGetKanbanProjectUsersQuery","injectedDashboardRestApi","build","anatomy","projectInfo","responses","projectQueries","settled","projectDataResult","projectData","anatomyData","_res","useGetProjectsInfoQuery"],"mappings":"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"}
1
+ {"version":3,"file":"getUserDashboard.cjs.js","sources":["../../../../../../src/api/queries/userDashboard/getUserDashboard.ts"],"sourcesContent":["import {\n gqlApi,\n GetKanbanProjectUsersQuery,\n GetKanbanQuery,\n ProjectModel,\n KanbanNode,\n Anatomy,\n} from '@shared/api/generated'\nimport { projectQueries } from '@shared/api/queries/project'\nimport { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport convertAccessGroupsData, { AccessGroups } from './convertAccessGroupsData'\n\n// GetKanban response type\nexport type GetKanbanResponse = KanbanNode[]\n\n// GetKanbanProjectUsers response type\nexport type KanbanProjectUserNode = Omit<\n GetKanbanProjectUsersQuery['users']['edges'][0]['node'],\n 'accessGroups'\n> & { accessGroups: AccessGroups; projects: string[]; avatarUrl: string }\nexport type GetKanbanProjectUsersResponse = KanbanProjectUserNode[]\n\nexport interface MessageSummary {\n entityId: string\n entityPath: string\n parentId: string\n value: any\n}\n\nexport interface Message {\n id: string\n topic: string\n project: string\n user: string\n sender: string\n senderType: string\n description: string\n status: string\n progress: number\n store: boolean\n createdAt: string\n updatedAt: string\n dependsOn: string | null\n summary: MessageSummary\n}\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\nimport getUserProjectsAccess from './getUserProjectsAccess'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\n\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 'GetKanban' | 'GetKanbanTasks' | 'GetKanbanProjectUsers'\n> & {\n GetKanban: OverrideResultType<Definitions['GetKanban'], GetKanbanResponse>\n GetKanbanTasks: OverrideResultType<Definitions['GetKanbanTasks'], GetKanbanResponse>\n GetKanbanProjectUsers: OverrideResultType<\n Definitions['GetKanbanProjectUsers'],\n GetKanbanProjectUsersResponse\n >\n}\n\n// get edges and sort by task label || name\nconst transformKanban = (response: GetKanbanQuery) =>\n response.kanban.edges\n .map(({ node }) => node)\n .sort((a, b) => {\n const aLabel = a.label || a.name\n const bLabel = b.label || b.name\n return aLabel.localeCompare(bLabel)\n })\n\nconst provideKanbanTags = (result: GetKanbanResponse | undefined, _error: any, args: any) =>\n result?.length\n ? [\n { type: 'kanBanTask', id: 'LIST' },\n ...result.flatMap(({ id, projectName, assignees }) => [\n { type: 'task', id },\n { type: 'kanban', id: 'project-' + projectName },\n ...assignees.map((assignee) => ({ type: 'kanban', id: 'user-' + assignee })),\n ...assignees.map((assignee) => ({\n type: 'kanban',\n id: 'user-' + assignee + '-project-' + projectName,\n })),\n { type: 'kanban', id: JSON.stringify(args) },\n ]),\n ]\n : [{ type: 'kanBanTask', id: 'LIST' }]\n\nexport const getKanbanTasks = async (\n {\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n },\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n) => {\n try {\n // get the task\n const response = await dispatch(\n enhancedDashboardGraphqlApi.endpoints.GetKanbanTasks.initiate(\n { projects, taskIds },\n { forceRefetch: true },\n ),\n )\n\n if (response.status === 'rejected' || !response.data) {\n console.error('No tasks found', taskIds)\n throw new Error(`No tasks found ${taskIds.join(', ')}`)\n }\n\n if (response.status !== 'fulfilled') return []\n // get tasks from response (usually only one task)\n return response.data\n } catch (error) {\n console.error(error)\n return []\n }\n}\n\nconst enhancedDashboardGraphqlApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetKanban: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n async onCacheEntryAdded(\n { assignees = [], projects = [] } = {},\n { updateCachedData, cacheDataLoaded, cacheEntryRemoved, dispatch, getCacheEntry },\n ) {\n let token\n let unsubscribeThumbnails: (() => void) | undefined\n let fetchQueue: { taskIds: string[]; projects: string[] }[] = []\n let fetchTimeout: any = null\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const cacheTasks = getCacheEntry().data ?? []\n if (!cacheTasks.length) return\n\n const matchedMessages = messages.filter((m) =>\n cacheTasks.some((t) => t.id === m.summary.entityId && t.projectName === m.project),\n )\n if (matchedMessages.length === 0) return\n\n updateCachedData((draft) => {\n matchedMessages.forEach((message) => {\n const entityIndex = draft.findIndex((t) => t.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 ['task'],\n )\n\n const processFetchQueue = async () => {\n const batch = [...fetchQueue]\n fetchQueue = []\n fetchTimeout = null\n\n const taskIds = Array.from(new Set(batch.flatMap((b) => b.taskIds)))\n const projects = Array.from(new Set(batch.flatMap((b) => b.projects)))\n\n if (taskIds.length === 0) return\n\n const tasks = await getKanbanTasks({ projects, taskIds }, dispatch)\n\n // get all tasks that have been ADDED to the assignees\n const tasksWithArgAssignees = tasks.filter((task) =>\n task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n // get all tasks that have been REMOVED from the assignees\n const tasksWithoutArgAssignees = tasks.filter(\n (task) => !task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n\n // patch the kanban query by adding new tasks and remove old tasks\n updateCachedData((draft) => {\n // add new tasks\n tasksWithArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index === -1) {\n draft.push(task)\n } else {\n // update the task\n draft[index] = task\n }\n })\n // remove old tasks\n tasksWithoutArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index !== -1) {\n draft.splice(index, 1)\n }\n })\n })\n }\n\n const patchKanbanTask = ({\n projects = [],\n taskIds = [],\n payload,\n }: {\n projects: string[]\n taskIds: string[]\n payload?: Partial<KanbanNode>\n }) => {\n let needsFetch = false\n\n if (payload) {\n updateCachedData((draft) => {\n taskIds.forEach((id) => {\n const index = draft.findIndex((t) => t.id === id)\n if (index !== -1) {\n // update the task\n Object.assign(draft[index], payload)\n\n // if assignees changed, check if it should be removed\n if (payload.assignees) {\n const isStillAssigned =\n !assignees?.length || payload.assignees.some((a) => assignees?.includes(a))\n if (!isStillAssigned) {\n draft.splice(index, 1)\n }\n }\n } else {\n // task not in cache, if it's now assigned to us, we need to fetch\n if (payload.assignees?.some((a) => assignees?.includes(a))) {\n needsFetch = true\n }\n }\n })\n })\n } else {\n needsFetch = true\n }\n\n if (!needsFetch) return\n\n // add to queue\n fetchQueue.push({ projects, taskIds })\n\n // debounce the fetch with a random offset\n if (!fetchTimeout) {\n const delay = Math.random() * 5000\n fetchTimeout = setTimeout(processFetchQueue, delay)\n }\n }\n\n const handlePubSub = async (_topic: string, message: Message) => {\n const project = message.project\n // first check the project name as selected\n if (!projects?.includes(project)) return console.log('project not selected')\n // then get entity id\n const entityId = message.summary.entityId\n if (!entityId) return console.log('no entity id found')\n\n // current tasks on the board\n const cacheTasks = getCacheEntry().data ?? []\n // entity.task.status_changed\n const field = message.topic.split('.')[2].split('_changed')[0]\n\n // Only patch the task for the fields status and assignees.\n if (!['status', 'assignees'].includes(field)) return\n\n const value = message.summary.value\n // cast the correct type onto value based on the field\n let castValue: any = value\n if (field === 'status') {\n castValue = String(value)\n } else if (field === 'assignees') {\n castValue = Array.isArray(value) ? (value as string[]) : []\n }\n\n // check this task is actually on the board\n const isTaskOnMyBoard = cacheTasks.some((t) => t.id === entityId)\n // if the field is assignees AND the value includes current assignees then we patch\n const isValueMe =\n field === 'assignees' && (castValue as string[]).some((a) => assignees?.includes(a))\n\n if (!isTaskOnMyBoard && !isValueMe) return\n // patch task updates into kanban cache\n patchKanbanTask({\n taskIds: [entityId],\n projects: [project],\n payload: { [field]: castValue } as Partial<KanbanNode>,\n })\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (error) {\n console.error(error)\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 if (fetchTimeout) clearTimeout(fetchTimeout)\n },\n // // there is only one cache for kanban\n // serializeQueryArgs: () => '',\n // // whenever the assignees or projects change, we need to refetch the one query\n // forceRefetch: (params) => {\n // const { currentArg, previousArg } = params\n // // if the assignees are different, we need to refetch the query\n // if (!isEqual(currentArg?.assignees, previousArg?.assignees)) return true\n // // if the projects are different, we need to refetch the query\n // if (!isEqual(currentArg?.projects, previousArg?.projects)) return true\n // return false\n // },\n },\n // same query as GetKanban but for specific tasks\n // used mainly for patching tasks into the kanban cache\n GetKanbanTasks: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n },\n // get all users on all selected projects\n GetKanbanProjectUsers: {\n transformResponse: (response: GetKanbanProjectUsersQuery, _meta, { projects } = {}) =>\n response.users.edges.map(({ node: user }) => {\n const accessGroups = convertAccessGroupsData(user.accessGroups)\n // parse access groups json\n const isUser = !user.isManager && !user.isAdmin\n // get the projects that the user has access to\n let projectsAccess = isUser ? getUserProjectsAccess(accessGroups) : projects\n if (typeof projectsAccess === 'string' || !projectsAccess) projectsAccess = []\n\n // assignees select requires avatarUrl\n const avatarUrl = `/api/users/${user.name}/avatar`\n\n return {\n ...user,\n accessGroups: accessGroups,\n projects: projectsAccess,\n avatarUrl,\n }\n }),\n providesTags: (result) =>\n result?.length\n ? [\n { type: 'user', id: 'LIST' },\n ...result.map(({ name }) => ({ type: 'user', id: name })),\n ]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const { useGetKanbanQuery, useGetKanbanProjectUsersQuery } = enhancedDashboardGraphqlApi\n\ntype GetProjectsInfoParams = {\n projects: string[]\n anatomy?: boolean\n}\n\nexport type ProjectModeWithAnatomy = ProjectModel & { anatomy?: Anatomy }\n\nexport type GetProjectsInfoResponse = { [projectName: string]: ProjectModeWithAnatomy | undefined }\n\nconst injectedDashboardRestApi = enhancedDashboardGraphqlApi.injectEndpoints({\n endpoints: (build) => ({\n getProjectsInfo: build.query<GetProjectsInfoResponse, GetProjectsInfoParams>({\n async queryFn({ projects = [], anatomy = true }, { dispatch }) {\n try {\n // get project info for each project\n const projectInfo: Record<string, ProjectModeWithAnatomy | undefined> = {}\n for (const project of projects) {\n const projectName = project as string\n // hopefully this will be cached\n // it also allows for different combination of projects but still use the cache\n const responses = [\n dispatch(projectQueries.endpoints.getProject.initiate({ projectName })).unwrap(),\n ...(anatomy\n ? [\n dispatch(\n projectQueries.endpoints.getProjectAnatomy.initiate({ projectName }),\n ).unwrap(),\n ]\n : []),\n ]\n\n const settled = await Promise.allSettled(responses)\n\n const projectDataResult = settled[0]\n const projectData =\n projectDataResult.status === 'fulfilled'\n ? (projectDataResult.value as ProjectModel)\n : undefined\n const anatomyData =\n anatomy && settled[1]?.status === 'fulfilled'\n ? (settled[1].value as Anatomy)\n : undefined\n\n if (projectData) {\n projectInfo[projectName] = {\n ...projectData,\n anatomy: anatomyData,\n } as ProjectModeWithAnatomy\n }\n }\n\n return { data: projectInfo, meta: undefined, error: undefined }\n } catch (error: any) {\n console.error(error)\n return { error, meta: undefined, data: undefined }\n }\n },\n providesTags: (_res, _error, { projects }) =>\n projects.map((projectName) => ({ type: 'project', id: projectName })),\n }),\n }),\n})\n\nexport const { useGetProjectsInfoQuery } = injectedDashboardRestApi\nexport { injectedDashboardRestApi as dashboardQueries }\n"],"names":["transformKanban","response","node","a","b","aLabel","bLabel","provideKanbanTags","result","_error","args","id","projectName","assignees","assignee","getKanbanTasks","projects","taskIds","dispatch","enhancedDashboardGraphqlApi","error","gqlApi","updateCachedData","cacheDataLoaded","cacheEntryRemoved","getCacheEntry","token","unsubscribeThumbnails","fetchQueue","fetchTimeout","subscribeToThumbnailUpdates","messages","cacheTasks","matchedMessages","m","t","draft","message","entityIndex","processFetchQueue","batch","tasks","tasksWithArgAssignees","task","tasksWithoutArgAssignees","index","patchKanbanTask","payload","needsFetch","delay","handlePubSub","_topic","project","entityId","field","value","castValue","isTaskOnMyBoard","isValueMe","PubSub","_meta","user","accessGroups","convertAccessGroupsData","projectsAccess","getUserProjectsAccess","avatarUrl","name","useGetKanbanQuery","useGetKanbanProjectUsersQuery","injectedDashboardRestApi","build","anatomy","projectInfo","responses","projectQueries","settled","projectDataResult","projectData","anatomyData","_res","useGetProjectsInfoQuery"],"mappings":"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"}