@ynput/ayon-frontend-shared 0.2.15 → 0.2.16

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 (519) hide show
  1. package/dist/DetailsPanel.cjs.js +3 -0
  2. package/dist/DetailsPanel.cjs.js.map +1 -1
  3. package/dist/DetailsPanel.es.js +3 -0
  4. package/dist/DetailsPanel.es.js.map +1 -1
  5. package/dist/ProjectTreeTable.cjs.js +34 -1
  6. package/dist/ProjectTreeTable.cjs.js.map +1 -1
  7. package/dist/ProjectTreeTable.es.js +36 -3
  8. package/dist/ProjectTreeTable.es.js.map +1 -1
  9. package/dist/_virtual/index.cjs10.js +5 -3
  10. package/dist/_virtual/index.cjs10.js.map +1 -1
  11. package/dist/_virtual/index.cjs4.js +4 -4
  12. package/dist/_virtual/index.cjs5.js +3 -5
  13. package/dist/_virtual/index.cjs5.js.map +1 -1
  14. package/dist/_virtual/index.cjs6.js +5 -3
  15. package/dist/_virtual/index.cjs6.js.map +1 -1
  16. package/dist/_virtual/index.cjs7.js +3 -5
  17. package/dist/_virtual/index.cjs7.js.map +1 -1
  18. package/dist/_virtual/index.cjs8.js +4 -4
  19. package/dist/_virtual/index.cjs9.js +4 -4
  20. package/dist/_virtual/index.es10.js +5 -2
  21. package/dist/_virtual/index.es10.js.map +1 -1
  22. package/dist/_virtual/index.es4.js +4 -4
  23. package/dist/_virtual/index.es5.js +2 -5
  24. package/dist/_virtual/index.es5.js.map +1 -1
  25. package/dist/_virtual/index.es6.js +5 -2
  26. package/dist/_virtual/index.es6.js.map +1 -1
  27. package/dist/_virtual/index.es7.js +2 -5
  28. package/dist/_virtual/index.es7.js.map +1 -1
  29. package/dist/_virtual/index.es8.js +4 -4
  30. package/dist/_virtual/index.es9.js +4 -4
  31. package/dist/api.cjs.js +6 -1
  32. package/dist/api.cjs.js.map +1 -1
  33. package/dist/api.es.js +8 -3
  34. package/dist/api.es.js.map +1 -1
  35. package/dist/components.cjs.js +3 -0
  36. package/dist/components.cjs.js.map +1 -1
  37. package/dist/components.es.js +3 -0
  38. package/dist/components.es.js.map +1 -1
  39. package/dist/index.cjs.js +3 -0
  40. package/dist/index.cjs.js.map +1 -1
  41. package/dist/index.es.js +3 -0
  42. package/dist/index.es.js.map +1 -1
  43. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  44. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  45. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  46. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  47. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +2 -2
  48. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  49. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  50. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  51. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
  52. package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
  53. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  54. package/dist/node_modules/remove-accents/index.es.js +1 -1
  55. package/dist/node_modules/vfile/lib/index.cjs.js +1 -1
  56. package/dist/node_modules/vfile/lib/index.es.js +1 -1
  57. package/dist/shared/src/api/generated/graphql.cjs.js +24 -0
  58. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  59. package/dist/shared/src/api/generated/graphql.es.js +24 -0
  60. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  61. package/dist/shared/src/api/generated/grouping.cjs.js +18 -0
  62. package/dist/shared/src/api/generated/grouping.cjs.js.map +1 -0
  63. package/dist/shared/src/api/generated/grouping.es.js +18 -0
  64. package/dist/shared/src/api/generated/grouping.es.js.map +1 -0
  65. package/dist/shared/src/api/generated/tasks.cjs.js +0 -8
  66. package/dist/shared/src/api/generated/tasks.cjs.js.map +1 -1
  67. package/dist/shared/src/api/generated/tasks.es.js +0 -8
  68. package/dist/shared/src/api/generated/tasks.es.js.map +1 -1
  69. package/dist/shared/src/api/queries/actions/getActions.cjs.js +1 -0
  70. package/dist/shared/src/api/queries/actions/getActions.cjs.js.map +1 -1
  71. package/dist/shared/src/api/queries/actions/getActions.es.js +1 -0
  72. package/dist/shared/src/api/queries/actions/getActions.es.js.map +1 -1
  73. package/dist/shared/src/api/queries/activities/getActivities.cjs.js +1 -0
  74. package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
  75. package/dist/shared/src/api/queries/activities/getActivities.es.js +1 -0
  76. package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
  77. package/dist/shared/src/api/queries/activities/getMentions.cjs.js +1 -0
  78. package/dist/shared/src/api/queries/activities/getMentions.cjs.js.map +1 -1
  79. package/dist/shared/src/api/queries/activities/getMentions.es.js +1 -0
  80. package/dist/shared/src/api/queries/activities/getMentions.es.js.map +1 -1
  81. package/dist/shared/src/api/queries/activities/updateReaction.cjs.js +1 -0
  82. package/dist/shared/src/api/queries/activities/updateReaction.cjs.js.map +1 -1
  83. package/dist/shared/src/api/queries/activities/updateReaction.es.js +1 -0
  84. package/dist/shared/src/api/queries/activities/updateReaction.es.js.map +1 -1
  85. package/dist/shared/src/api/queries/addons/getAddons.cjs.js +1 -0
  86. package/dist/shared/src/api/queries/addons/getAddons.cjs.js.map +1 -1
  87. package/dist/shared/src/api/queries/addons/getAddons.es.js +1 -0
  88. package/dist/shared/src/api/queries/addons/getAddons.es.js.map +1 -1
  89. package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js +1 -0
  90. package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js.map +1 -1
  91. package/dist/shared/src/api/queries/attributes/getAttributes.es.js +1 -0
  92. package/dist/shared/src/api/queries/attributes/getAttributes.es.js.map +1 -1
  93. package/dist/shared/src/api/queries/authentication/getAuthentication.cjs.js +1 -0
  94. package/dist/shared/src/api/queries/authentication/getAuthentication.cjs.js.map +1 -1
  95. package/dist/shared/src/api/queries/authentication/getAuthentication.es.js +1 -0
  96. package/dist/shared/src/api/queries/authentication/getAuthentication.es.js.map +1 -1
  97. package/dist/shared/src/api/queries/entities/getEntity.cjs.js +1 -0
  98. package/dist/shared/src/api/queries/entities/getEntity.cjs.js.map +1 -1
  99. package/dist/shared/src/api/queries/entities/getEntity.es.js +1 -0
  100. package/dist/shared/src/api/queries/entities/getEntity.es.js.map +1 -1
  101. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -0
  102. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  103. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +1 -0
  104. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  105. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +2 -0
  106. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  107. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +2 -0
  108. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  109. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +2 -0
  110. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  111. package/dist/shared/src/api/queries/entities/updateEntity.es.js +2 -0
  112. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  113. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -0
  114. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  115. package/dist/shared/src/api/queries/entityLists/getLists.es.js +1 -0
  116. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  117. package/dist/shared/src/api/queries/entityLists/getListsAttributes.cjs.js +1 -0
  118. package/dist/shared/src/api/queries/entityLists/getListsAttributes.cjs.js.map +1 -1
  119. package/dist/shared/src/api/queries/entityLists/getListsAttributes.es.js +1 -0
  120. package/dist/shared/src/api/queries/entityLists/getListsAttributes.es.js.map +1 -1
  121. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js +1 -0
  122. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
  123. package/dist/shared/src/api/queries/entityLists/updateLists.es.js +1 -0
  124. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
  125. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -0
  126. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  127. package/dist/shared/src/api/queries/folders/getFolders.es.js +1 -0
  128. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  129. package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js +47 -0
  130. package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js.map +1 -0
  131. package/dist/shared/src/api/queries/grouping/getGrouping.es.js +47 -0
  132. package/dist/shared/src/api/queries/grouping/getGrouping.es.js.map +1 -0
  133. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +4 -5
  134. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  135. package/dist/shared/src/api/queries/overview/getOverview.es.js +4 -5
  136. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  137. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +2 -0
  138. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  139. package/dist/shared/src/api/queries/overview/updateOverview.es.js +2 -0
  140. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  141. package/dist/shared/src/api/queries/permissions/getPermissions.cjs.js +1 -0
  142. package/dist/shared/src/api/queries/permissions/getPermissions.cjs.js.map +1 -1
  143. package/dist/shared/src/api/queries/permissions/getPermissions.es.js +1 -0
  144. package/dist/shared/src/api/queries/permissions/getPermissions.es.js.map +1 -1
  145. package/dist/shared/src/api/queries/project/getProject.cjs.js +1 -0
  146. package/dist/shared/src/api/queries/project/getProject.cjs.js.map +1 -1
  147. package/dist/shared/src/api/queries/project/getProject.es.js +1 -0
  148. package/dist/shared/src/api/queries/project/getProject.es.js.map +1 -1
  149. package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -0
  150. package/dist/shared/src/api/queries/review/getReview.cjs.js.map +1 -1
  151. package/dist/shared/src/api/queries/review/getReview.es.js +1 -0
  152. package/dist/shared/src/api/queries/review/getReview.es.js.map +1 -1
  153. package/dist/shared/src/api/queries/review/updateReview.cjs.js +1 -0
  154. package/dist/shared/src/api/queries/review/updateReview.cjs.js.map +1 -1
  155. package/dist/shared/src/api/queries/review/updateReview.es.js +1 -0
  156. package/dist/shared/src/api/queries/review/updateReview.es.js.map +1 -1
  157. package/dist/shared/src/api/queries/system/getSystem.cjs.js +1 -0
  158. package/dist/shared/src/api/queries/system/getSystem.cjs.js.map +1 -1
  159. package/dist/shared/src/api/queries/system/getSystem.es.js +1 -0
  160. package/dist/shared/src/api/queries/system/getSystem.es.js.map +1 -1
  161. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -0
  162. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  163. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +1 -0
  164. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  165. package/dist/shared/src/api/queries/users/getUsers.cjs.js +2 -0
  166. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  167. package/dist/shared/src/api/queries/users/getUsers.es.js +2 -0
  168. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  169. package/dist/shared/src/api/queries/users/updateUsers.cjs.js +1 -0
  170. package/dist/shared/src/api/queries/users/updateUsers.cjs.js.map +1 -1
  171. package/dist/shared/src/api/queries/users/updateUsers.es.js +1 -0
  172. package/dist/shared/src/api/queries/users/updateUsers.es.js.map +1 -1
  173. package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js +1 -0
  174. package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js.map +1 -1
  175. package/dist/shared/src/api/queries/watchers/getWatchers.es.js +1 -0
  176. package/dist/shared/src/api/queries/watchers/getWatchers.es.js.map +1 -1
  177. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +2 -2
  178. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
  179. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +2 -2
  180. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
  181. package/dist/shared/src/components/Badge/Badge.cjs.js +31 -0
  182. package/dist/shared/src/components/Badge/Badge.cjs.js.map +1 -0
  183. package/dist/shared/src/components/Badge/Badge.es.js +31 -0
  184. package/dist/shared/src/components/Badge/Badge.es.js.map +1 -0
  185. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +2 -0
  186. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  187. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +2 -0
  188. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  189. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js +2 -0
  190. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js.map +1 -1
  191. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js +2 -0
  192. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js.map +1 -1
  193. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js +3 -0
  194. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js.map +1 -1
  195. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js +3 -0
  196. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js.map +1 -1
  197. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +138 -3
  198. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  199. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +138 -3
  200. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  201. package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.cjs.js +5 -1
  202. package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.cjs.js.map +1 -1
  203. package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.es.js +5 -1
  204. package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.es.js.map +1 -1
  205. package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js +5 -5
  206. package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js.map +1 -1
  207. package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.styled.es.js +5 -5
  208. package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.styled.es.js.map +1 -1
  209. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +2 -0
  210. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  211. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +2 -0
  212. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  213. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +93 -79
  214. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  215. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +93 -79
  216. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  217. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +87 -17
  218. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  219. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +88 -18
  220. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  221. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.styled.cjs.js +4 -0
  222. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.styled.cjs.js.map +1 -1
  223. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.styled.es.js +4 -0
  224. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.styled.es.js.map +1 -1
  225. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +3 -0
  226. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  227. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +3 -0
  228. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  229. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +2 -0
  230. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  231. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +2 -0
  232. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  233. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +223 -19
  234. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  235. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +224 -20
  236. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  237. package/dist/shared/src/components/Watchers/Watchers.cjs.js +2 -0
  238. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  239. package/dist/shared/src/components/Watchers/Watchers.es.js +2 -0
  240. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  241. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +3 -0
  242. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  243. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +3 -0
  244. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  245. package/dist/shared/src/containers/Actions/Actions.cjs.js +2 -0
  246. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  247. package/dist/shared/src/containers/Actions/Actions.es.js +2 -0
  248. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  249. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +3 -0
  250. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  251. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +3 -0
  252. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  253. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.cjs.js +22 -0
  254. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.cjs.js.map +1 -1
  255. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.es.js +22 -0
  256. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.es.js.map +1 -1
  257. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.cjs.js +26 -7
  258. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.cjs.js.map +1 -1
  259. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.es.js +26 -7
  260. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.es.js.map +1 -1
  261. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +3 -0
  262. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  263. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +3 -0
  264. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  265. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +13 -10
  266. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  267. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +13 -10
  268. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  269. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +3 -0
  270. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  271. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +3 -0
  272. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  273. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +3 -0
  274. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  275. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +3 -0
  276. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  277. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +2 -0
  278. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  279. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +2 -0
  280. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  281. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +2 -0
  282. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  283. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +2 -0
  284. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  285. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  286. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  287. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +1 -1
  288. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  289. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.cjs.js +8 -1
  290. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.cjs.js.map +1 -1
  291. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.es.js +9 -2
  292. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.es.js.map +1 -1
  293. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js +9 -0
  294. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js.map +1 -1
  295. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.es.js +10 -1
  296. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.es.js.map +1 -1
  297. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +2 -0
  298. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  299. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +2 -0
  300. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  301. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +2 -0
  302. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  303. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +2 -0
  304. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  305. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +25 -26
  306. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  307. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +26 -27
  308. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  309. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +7 -0
  310. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  311. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +7 -0
  312. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  313. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +9 -8
  314. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  315. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +9 -8
  316. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  317. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +3 -0
  318. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  319. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +3 -0
  320. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  321. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +11 -6
  322. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  323. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +11 -6
  324. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  325. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +2 -0
  326. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  327. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +2 -0
  328. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  329. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +33 -9
  330. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  331. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +34 -10
  332. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  333. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.cjs.js +37 -16
  334. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.cjs.js.map +1 -1
  335. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.es.js +38 -17
  336. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.es.js.map +1 -1
  337. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +2 -0
  338. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  339. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +2 -0
  340. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  341. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +84 -34
  342. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  343. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +85 -35
  344. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  345. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  346. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  347. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +1 -1
  348. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  349. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +26 -13
  350. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  351. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +26 -13
  352. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  353. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.cjs.js +24 -0
  354. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.cjs.js.map +1 -0
  355. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.es.js +24 -0
  356. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.es.js.map +1 -0
  357. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +16 -9
  358. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  359. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +16 -9
  360. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  361. package/dist/shared/src/containers/ProjectTreeTable/hooks/useEntitiesMap.cjs.js +17 -0
  362. package/dist/shared/src/containers/ProjectTreeTable/hooks/useEntitiesMap.cjs.js.map +1 -0
  363. package/dist/shared/src/containers/ProjectTreeTable/hooks/useEntitiesMap.es.js +17 -0
  364. package/dist/shared/src/containers/ProjectTreeTable/hooks/useEntitiesMap.es.js.map +1 -0
  365. package/dist/shared/src/containers/ProjectTreeTable/hooks/useExpandedState.cjs.js +30 -0
  366. package/dist/shared/src/containers/ProjectTreeTable/hooks/useExpandedState.cjs.js.map +1 -0
  367. package/dist/shared/src/containers/ProjectTreeTable/hooks/useExpandedState.es.js +30 -0
  368. package/dist/shared/src/containers/ProjectTreeTable/hooks/useExpandedState.es.js.map +1 -0
  369. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +363 -0
  370. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -0
  371. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +363 -0
  372. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -0
  373. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js +16 -12
  374. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js.map +1 -1
  375. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js +16 -13
  376. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js.map +1 -1
  377. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +239 -0
  378. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -0
  379. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +239 -0
  380. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -0
  381. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js +82 -0
  382. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js.map +1 -0
  383. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js +82 -0
  384. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js.map +1 -0
  385. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +40 -0
  386. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -0
  387. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +40 -0
  388. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -0
  389. package/dist/shared/src/containers/ProjectTreeTable/hooks/useScopedAttributeFields.cjs.js +19 -0
  390. package/dist/shared/src/containers/ProjectTreeTable/hooks/useScopedAttributeFields.cjs.js.map +1 -0
  391. package/dist/shared/src/containers/ProjectTreeTable/hooks/useScopedAttributeFields.es.js +19 -0
  392. package/dist/shared/src/containers/ProjectTreeTable/hooks/useScopedAttributeFields.es.js.map +1 -0
  393. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.cjs.js +26 -0
  394. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.cjs.js.map +1 -0
  395. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.es.js +26 -0
  396. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.es.js.map +1 -0
  397. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +7 -4
  398. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  399. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +7 -4
  400. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  401. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +12 -1
  402. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  403. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +12 -1
  404. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  405. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js.map +1 -1
  406. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js.map +1 -1
  407. package/dist/shared/src/containers/ProjectTreeTable/utils/errorExtraction.cjs.js +8 -0
  408. package/dist/shared/src/containers/ProjectTreeTable/utils/errorExtraction.cjs.js.map +1 -0
  409. package/dist/shared/src/containers/ProjectTreeTable/utils/errorExtraction.es.js +8 -0
  410. package/dist/shared/src/containers/ProjectTreeTable/utils/errorExtraction.es.js.map +1 -0
  411. package/dist/shared/src/containers/ProjectTreeTable/utils/localStorageKeys.cjs.js +7 -0
  412. package/dist/shared/src/containers/ProjectTreeTable/utils/localStorageKeys.cjs.js.map +1 -0
  413. package/dist/shared/src/containers/ProjectTreeTable/utils/localStorageKeys.es.js +7 -0
  414. package/dist/shared/src/containers/ProjectTreeTable/utils/localStorageKeys.es.js.map +1 -0
  415. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.cjs.js +0 -1
  416. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.cjs.js.map +1 -1
  417. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.es.js +0 -1
  418. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.es.js.map +1 -1
  419. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js +2 -1
  420. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js.map +1 -1
  421. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.es.js +2 -1
  422. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.es.js.map +1 -1
  423. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +0 -8
  424. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  425. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +0 -8
  426. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  427. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +3 -0
  428. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  429. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +3 -0
  430. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  431. package/dist/shared/src/context/AddonProjectContext.cjs.js +2 -0
  432. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  433. package/dist/shared/src/context/AddonProjectContext.es.js +2 -0
  434. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  435. package/dist/shared/src/context/DetailsPanelContext.cjs.js +2 -0
  436. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  437. package/dist/shared/src/context/DetailsPanelContext.es.js +2 -0
  438. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  439. package/dist/shared/src/context/PowerpackContext.cjs.js +122 -17
  440. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  441. package/dist/shared/src/context/PowerpackContext.es.js +123 -18
  442. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  443. package/dist/shared/src/context/RemoteModulesContext.cjs.js +7 -1
  444. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  445. package/dist/shared/src/context/RemoteModulesContext.es.js +8 -2
  446. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  447. package/dist/shared/src/hooks/useActionTriggers.cjs.js +2 -0
  448. package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
  449. package/dist/shared/src/hooks/useActionTriggers.es.js +2 -0
  450. package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
  451. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +2 -0
  452. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  453. package/dist/shared/src/hooks/useEntityUpdate.es.js +2 -0
  454. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  455. package/dist/shared/src/hooks/useLoadModule.cjs.js +8 -2
  456. package/dist/shared/src/hooks/useLoadModule.cjs.js.map +1 -1
  457. package/dist/shared/src/hooks/useLoadModule.es.js +8 -2
  458. package/dist/shared/src/hooks/useLoadModule.es.js.map +1 -1
  459. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +2 -0
  460. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  461. package/dist/shared/src/hooks/useScopedStatuses.es.js +2 -0
  462. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  463. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +2 -0
  464. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  465. package/dist/shared/src/hooks/useUserProjectConfig.es.js +2 -0
  466. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  467. package/dist/types/api/generated/graphql.d.ts +33 -38
  468. package/dist/types/api/generated/grouping.d.ts +40 -0
  469. package/dist/types/api/generated/index.d.ts +3 -1
  470. package/dist/types/api/generated/tasks.d.ts +8 -33
  471. package/dist/types/api/queries/activities/getActivities.d.ts +4 -0
  472. package/dist/types/api/queries/activities/updateActivities.d.ts +8 -0
  473. package/dist/types/api/queries/entities/getEntity.d.ts +4 -0
  474. package/dist/types/api/queries/entities/getEntityPanel.d.ts +4 -0
  475. package/dist/types/api/queries/entities/updateEntity.d.ts +4 -0
  476. package/dist/types/api/queries/entityLists/getLists.d.ts +4 -0
  477. package/dist/types/api/queries/grouping/getGrouping.d.ts +137 -0
  478. package/dist/types/api/queries/grouping/index.d.ts +1 -0
  479. package/dist/types/api/queries/index.d.ts +1 -0
  480. package/dist/types/api/queries/overview/getOverview.d.ts +5 -133
  481. package/dist/types/api/queries/project/getProject.d.ts +2 -2
  482. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +4 -0
  483. package/dist/types/api/queries/users/getUsers.d.ts +4 -0
  484. package/dist/types/components/Badge/Badge.d.ts +10 -0
  485. package/dist/types/components/Badge/index.d.ts +1 -0
  486. package/dist/types/components/ProjectTableSettings/ProjectTableSettings.d.ts +1 -1
  487. package/dist/types/components/ReviewableProgressCard/ReviewableProgressCard.d.ts +1 -1
  488. package/dist/types/components/ReviewablesList/ReviewablesUpload.d.ts +19 -3
  489. package/dist/types/components/index.d.ts +1 -0
  490. package/dist/types/containers/ContextMenu/ContextMenuItem.d.ts +4 -0
  491. package/dist/types/containers/ContextMenu/useCreateContextMenu.d.ts +2 -1
  492. package/dist/types/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.d.ts +1 -0
  493. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +1 -5
  494. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +14 -3
  495. package/dist/types/containers/ProjectTreeTable/context/ProjectTableModulesContext.d.ts +22 -2
  496. package/dist/types/containers/ProjectTreeTable/hooks/index.d.ts +13 -0
  497. package/dist/types/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.d.ts +8 -3
  498. package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +13 -2
  499. package/dist/types/containers/ProjectTreeTable/hooks/useColumnSorting.d.ts +12 -0
  500. package/dist/types/containers/ProjectTreeTable/hooks/useEntitiesMap.d.ts +7 -0
  501. package/dist/types/containers/ProjectTreeTable/hooks/useExpandedState.d.ts +11 -0
  502. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +37 -0
  503. package/dist/types/containers/ProjectTreeTable/hooks/useGetEntityTypeData.d.ts +2 -2
  504. package/dist/types/containers/ProjectTreeTable/hooks/useGetGroupedFields.d.ts +9 -0
  505. package/dist/types/containers/ProjectTreeTable/hooks/useGetTaskGroups.d.ts +10 -0
  506. package/dist/types/containers/ProjectTreeTable/hooks/useQueryFilters.d.ts +14 -0
  507. package/dist/types/containers/ProjectTreeTable/hooks/useScopedAttributeFields.d.ts +10 -0
  508. package/dist/types/containers/ProjectTreeTable/hooks/useSelectedFolders.d.ts +10 -0
  509. package/dist/types/containers/ProjectTreeTable/index.d.ts +1 -4
  510. package/dist/types/containers/ProjectTreeTable/types/index.d.ts +1 -0
  511. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +46 -0
  512. package/dist/types/containers/ProjectTreeTable/utils/errorExtraction.d.ts +4 -0
  513. package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +2 -0
  514. package/dist/types/containers/ProjectTreeTable/utils/localStorageKeys.d.ts +4 -0
  515. package/dist/types/containers/ProjectTreeTable/widgets/GroupHeaderWidget.d.ts +2 -1
  516. package/dist/types/context/PowerpackContext.d.ts +2 -1
  517. package/dist/types/hooks/useLoadModule.d.ts +2 -1
  518. package/dist/types/utils/extractVersionFromFilename.d.ts +5 -0
  519. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"getReview.es.js","sources":["../../../../../../src/api/queries/review/getReview.ts"],"sourcesContent":["import { PubSub } from '@shared/util'\nimport { reviewablesApi, ReviewableModel, VersionReviewablesModel } from '@shared/api/generated'\nimport { addonsQueries } from '@shared/api/queries/addons'\nimport {\n Summary,\n GetReviewablesResponse,\n GetViewerReviewablesParams,\n TagTypes,\n UpdatedDefinitions,\n} from './types'\nimport { FetchBaseQueryError } from '@reduxjs/toolkit/query'\n\nconst getViewerReviewablesTags = (\n result: (GetReviewablesResponse | VersionReviewablesModel | undefined)[] | undefined,\n {\n productId,\n taskId,\n folderId,\n versionId,\n }: {\n productId?: string\n taskId?: string\n folderId?: string\n versionId?: string\n },\n viewer?: boolean,\n) => {\n const tags: { type: string; id: string }[] = []\n\n // different ways to open the viewer\n if (productId) tags.push({ type: 'review', id: productId })\n\n if (taskId) tags.push({ type: 'review', id: taskId })\n if (folderId) tags.push({ type: 'review', id: folderId })\n\n if (viewer) {\n // viewer specific tags for invalidating just the viewer\n if (productId) tags.push({ type: 'viewer', id: productId })\n\n if (taskId) tags.push({ type: 'viewer', id: taskId })\n if (folderId) tags.push({ type: 'viewer', id: folderId })\n if (versionId) tags.push({ type: 'viewer', id: versionId })\n\n tags.push({ type: 'viewer', id: 'LIST' })\n }\n\n // reviewables list caches\n if (versionId) tags.push({ type: 'review', id: versionId })\n\n if (result) {\n // create a unique list of productIds\n const productIds: string[] = [...new Set(result.flatMap((version) => version?.productId || []))]\n\n // if no productId was provided in the args, use the one from the result\n productIds.forEach((productId) => {\n if (!tags.find((tag) => tag.id === productId && tag.type === 'review'))\n tags.push({ type: 'review', id: productId })\n // if opening the viewer, add the viewer tag\n if (viewer && !tags.find((tag) => tag.id === productId && tag.type === 'viewer'))\n tags.push({ type: 'viewer', id: productId })\n })\n\n const versionTags = result.flatMap((version) =>\n version\n ? {\n type: 'review',\n id: version.id,\n }\n : [],\n )\n\n tags.push(...versionTags)\n\n // also add viewer tags for viewer\n if (viewer) {\n versionTags.forEach((tag) => {\n if (!tags.find((t) => t.id === tag.id && t.type === 'viewer')) {\n tags.push({ type: 'viewer', id: tag.id })\n }\n })\n }\n\n const reviewableTags = result.flatMap((version) =>\n version\n ? version.reviewables?.flatMap((reviewable) => [\n {\n type: 'review',\n id: reviewable.fileId,\n },\n {\n type: 'review',\n id: reviewable.activityId,\n },\n ])\n : [],\n ) as { type: 'review'; id: string }[]\n\n tags.push(...reviewableTags)\n }\n\n return tags\n}\n\nconst enhancedApi = reviewablesApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n getReviewablesForVersion: {\n keepUnusedDataFor: 1,\n providesTags: (result, _error, { versionId }) =>\n getViewerReviewablesTags([result], { versionId, productId: result?.productId }),\n\n async onCacheEntryAdded(\n { versionId },\n { updateCachedData, cacheDataLoaded, cacheEntryRemoved, dispatch, getCacheEntry },\n ) {\n let token\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n const handlePubSub = (topic: string, message: any) => {\n if (topic !== 'reviewable.process') return\n\n const summary = (message?.summary as Summary) || {}\n\n // check it's for the right version\n if (summary.versionId !== versionId) return\n\n const cache = getCacheEntry()\n\n // check if the reviewable is in the cache\n const index = cache.data?.reviewables?.findIndex(\n (r: ReviewableModel) => r?.fileId === summary.sourceFileId,\n )\n\n if (index && index !== -1 && message.status !== 'finished') {\n // update the progress of the reviewable\n const progress = message?.progress || 0\n // update the cache reviewable\n\n updateCachedData((data) => {\n const reviewables = data.reviewables\n\n // check if there are reviewables\n if (!reviewables) return\n const processing = reviewables[index].processing\n\n // update the reviewable with the new progress\n reviewables[index] = {\n ...reviewables[index],\n processing: {\n ...processing,\n progress,\n eventId: message.id,\n },\n }\n })\n } else {\n console.log(\n 'Reviewable not found in cache, refreshing to get data:',\n summary.sourceFileId,\n summary.versionId,\n )\n // get data for this new reviewable\n dispatch(\n reviewablesApi.util.invalidateTags([{ type: 'review', id: summary.versionId }]),\n )\n\n // if it's finished, also invalidate viewer\n if (message.status === 'finished') {\n // also invalidate the viewer cache\n if (cache.data?.productId) {\n dispatch(\n reviewablesApi.util.invalidateTags([\n { type: 'viewer', id: cache.data?.productId },\n ]),\n )\n }\n }\n }\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('reviewable.process', handlePubSub)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n },\n },\n },\n})\n\nconst getReviewApi = enhancedApi.injectEndpoints({\n endpoints: (build) => ({\n // custom endpoint to get reviewables from product/task/folder\n // utilizes getReviewablesForProduct, getReviewablesForTask, getReviewablesForFolder\n getViewerReviewables: build.query<GetReviewablesResponse[], GetViewerReviewablesParams>({\n queryFn: async ({ productId, taskId, folderId, projectName }, { dispatch }) => {\n let query: any\n\n if (productId) {\n query = reviewablesApi.endpoints.getReviewablesForProduct.initiate(\n {\n productId,\n projectName,\n },\n { forceRefetch: true },\n )\n } else if (taskId) {\n query = reviewablesApi.endpoints.getReviewablesForTask.initiate(\n { taskId, projectName },\n { forceRefetch: true },\n )\n } else if (folderId) {\n query = reviewablesApi.endpoints.getReviewablesForFolder.initiate(\n {\n folderId,\n projectName,\n },\n { forceRefetch: true },\n )\n\n const result = await dispatch(\n reviewablesApi.endpoints.getReviewablesForFolder.initiate(\n { folderId, projectName },\n { forceRefetch: true },\n ),\n )\n result.error\n }\n\n if (!query)\n return {\n error: { status: 'CUSTOM_ERROR', error: 'No query found' } as FetchBaseQueryError,\n }\n\n const result = await dispatch(query)\n\n if (result.error) {\n const error = result.error as FetchBaseQueryError\n\n console.error(error)\n return { error: error }\n } else {\n const data = result.data as GetReviewablesResponse[]\n return { data }\n }\n },\n providesTags: (result, _error, args) => getViewerReviewablesTags(result, args, true),\n async onCacheEntryAdded(\n { productId, taskId, folderId },\n { cacheDataLoaded, cacheEntryRemoved, dispatch, getCacheEntry },\n ) {\n let token\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n const handlePubSub = (topic: string, message: any) => {\n if (topic !== 'reviewable.process') return\n\n const summary = (message?.summary as Summary) || {}\n\n const versionIds = new Set(getCacheEntry().data?.map((version) => version.id) || [])\n\n // check that one of the versions is the right one\n if (!versionIds?.has(summary.versionId || '')) return\n\n if (message.status === 'finished') {\n let id: string | undefined\n if (productId) id = productId\n else if (taskId) id = taskId\n else if (folderId) id = folderId\n\n console.log('Reviewable finished, refreshing to get data:', { id })\n // \"838977a81dab11ef95ad0242ac180005\"\n if (id) {\n // get data for this new reviewable (invalidate self)\n dispatch(reviewablesApi.util.invalidateTags([{ type: 'review', id: id }]))\n }\n }\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('reviewable.process', handlePubSub)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n },\n }),\n hasTranscoder: build.query<boolean, undefined>({\n queryFn: async (_arg, { dispatch }) => {\n // get list of installed addons\n const res = await dispatch(addonsQueries.endpoints.listAddons.initiate({ details: false }))\n\n if (res.data) {\n const hasTranscoder = res.data.addons.some((addon) => addon.name === 'transcoder')\n\n return { data: hasTranscoder }\n } else if (res.error) {\n console.error(res.error)\n return { data: false }\n } else return { data: false }\n },\n }),\n }),\n})\n\nexport const {\n useGetViewerReviewablesQuery,\n useGetReviewablesForVersionQuery,\n useHasTranscoderQuery,\n} = getReviewApi\nexport default getReviewApi\n"],"names":["productId","reviewablesApi","result","addonsQueries"],"mappings":"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"}
1
+ {"version":3,"file":"getReview.es.js","sources":["../../../../../../src/api/queries/review/getReview.ts"],"sourcesContent":["import { PubSub } from '@shared/util'\nimport { reviewablesApi, ReviewableModel, VersionReviewablesModel } from '@shared/api/generated'\nimport { addonsQueries } from '@shared/api/queries/addons'\nimport {\n Summary,\n GetReviewablesResponse,\n GetViewerReviewablesParams,\n TagTypes,\n UpdatedDefinitions,\n} from './types'\nimport { FetchBaseQueryError } from '@reduxjs/toolkit/query'\n\nconst getViewerReviewablesTags = (\n result: (GetReviewablesResponse | VersionReviewablesModel | undefined)[] | undefined,\n {\n productId,\n taskId,\n folderId,\n versionId,\n }: {\n productId?: string\n taskId?: string\n folderId?: string\n versionId?: string\n },\n viewer?: boolean,\n) => {\n const tags: { type: string; id: string }[] = []\n\n // different ways to open the viewer\n if (productId) tags.push({ type: 'review', id: productId })\n\n if (taskId) tags.push({ type: 'review', id: taskId })\n if (folderId) tags.push({ type: 'review', id: folderId })\n\n if (viewer) {\n // viewer specific tags for invalidating just the viewer\n if (productId) tags.push({ type: 'viewer', id: productId })\n\n if (taskId) tags.push({ type: 'viewer', id: taskId })\n if (folderId) tags.push({ type: 'viewer', id: folderId })\n if (versionId) tags.push({ type: 'viewer', id: versionId })\n\n tags.push({ type: 'viewer', id: 'LIST' })\n }\n\n // reviewables list caches\n if (versionId) tags.push({ type: 'review', id: versionId })\n\n if (result) {\n // create a unique list of productIds\n const productIds: string[] = [...new Set(result.flatMap((version) => version?.productId || []))]\n\n // if no productId was provided in the args, use the one from the result\n productIds.forEach((productId) => {\n if (!tags.find((tag) => tag.id === productId && tag.type === 'review'))\n tags.push({ type: 'review', id: productId })\n // if opening the viewer, add the viewer tag\n if (viewer && !tags.find((tag) => tag.id === productId && tag.type === 'viewer'))\n tags.push({ type: 'viewer', id: productId })\n })\n\n const versionTags = result.flatMap((version) =>\n version\n ? {\n type: 'review',\n id: version.id,\n }\n : [],\n )\n\n tags.push(...versionTags)\n\n // also add viewer tags for viewer\n if (viewer) {\n versionTags.forEach((tag) => {\n if (!tags.find((t) => t.id === tag.id && t.type === 'viewer')) {\n tags.push({ type: 'viewer', id: tag.id })\n }\n })\n }\n\n const reviewableTags = result.flatMap((version) =>\n version\n ? version.reviewables?.flatMap((reviewable) => [\n {\n type: 'review',\n id: reviewable.fileId,\n },\n {\n type: 'review',\n id: reviewable.activityId,\n },\n ])\n : [],\n ) as { type: 'review'; id: string }[]\n\n tags.push(...reviewableTags)\n }\n\n return tags\n}\n\nconst enhancedApi = reviewablesApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n getReviewablesForVersion: {\n keepUnusedDataFor: 1,\n providesTags: (result, _error, { versionId }) =>\n getViewerReviewablesTags([result], { versionId, productId: result?.productId }),\n\n async onCacheEntryAdded(\n { versionId },\n { updateCachedData, cacheDataLoaded, cacheEntryRemoved, dispatch, getCacheEntry },\n ) {\n let token\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n const handlePubSub = (topic: string, message: any) => {\n if (topic !== 'reviewable.process') return\n\n const summary = (message?.summary as Summary) || {}\n\n // check it's for the right version\n if (summary.versionId !== versionId) return\n\n const cache = getCacheEntry()\n\n // check if the reviewable is in the cache\n const index = cache.data?.reviewables?.findIndex(\n (r: ReviewableModel) => r?.fileId === summary.sourceFileId,\n )\n\n if (index && index !== -1 && message.status !== 'finished') {\n // update the progress of the reviewable\n const progress = message?.progress || 0\n // update the cache reviewable\n\n updateCachedData((data) => {\n const reviewables = data.reviewables\n\n // check if there are reviewables\n if (!reviewables) return\n const processing = reviewables[index].processing\n\n // update the reviewable with the new progress\n reviewables[index] = {\n ...reviewables[index],\n processing: {\n ...processing,\n progress,\n eventId: message.id,\n },\n }\n })\n } else {\n console.log(\n 'Reviewable not found in cache, refreshing to get data:',\n summary.sourceFileId,\n summary.versionId,\n )\n // get data for this new reviewable\n dispatch(\n reviewablesApi.util.invalidateTags([{ type: 'review', id: summary.versionId }]),\n )\n\n // if it's finished, also invalidate viewer\n if (message.status === 'finished') {\n // also invalidate the viewer cache\n if (cache.data?.productId) {\n dispatch(\n reviewablesApi.util.invalidateTags([\n { type: 'viewer', id: cache.data?.productId },\n ]),\n )\n }\n }\n }\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('reviewable.process', handlePubSub)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n },\n },\n },\n})\n\nconst getReviewApi = enhancedApi.injectEndpoints({\n endpoints: (build) => ({\n // custom endpoint to get reviewables from product/task/folder\n // utilizes getReviewablesForProduct, getReviewablesForTask, getReviewablesForFolder\n getViewerReviewables: build.query<GetReviewablesResponse[], GetViewerReviewablesParams>({\n queryFn: async ({ productId, taskId, folderId, projectName }, { dispatch }) => {\n let query: any\n\n if (productId) {\n query = reviewablesApi.endpoints.getReviewablesForProduct.initiate(\n {\n productId,\n projectName,\n },\n { forceRefetch: true },\n )\n } else if (taskId) {\n query = reviewablesApi.endpoints.getReviewablesForTask.initiate(\n { taskId, projectName },\n { forceRefetch: true },\n )\n } else if (folderId) {\n query = reviewablesApi.endpoints.getReviewablesForFolder.initiate(\n {\n folderId,\n projectName,\n },\n { forceRefetch: true },\n )\n\n const result = await dispatch(\n reviewablesApi.endpoints.getReviewablesForFolder.initiate(\n { folderId, projectName },\n { forceRefetch: true },\n ),\n )\n result.error\n }\n\n if (!query)\n return {\n error: { status: 'CUSTOM_ERROR', error: 'No query found' } as FetchBaseQueryError,\n }\n\n const result = await dispatch(query)\n\n if (result.error) {\n const error = result.error as FetchBaseQueryError\n\n console.error(error)\n return { error: error }\n } else {\n const data = result.data as GetReviewablesResponse[]\n return { data }\n }\n },\n providesTags: (result, _error, args) => getViewerReviewablesTags(result, args, true),\n async onCacheEntryAdded(\n { productId, taskId, folderId },\n { cacheDataLoaded, cacheEntryRemoved, dispatch, getCacheEntry },\n ) {\n let token\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n const handlePubSub = (topic: string, message: any) => {\n if (topic !== 'reviewable.process') return\n\n const summary = (message?.summary as Summary) || {}\n\n const versionIds = new Set(getCacheEntry().data?.map((version) => version.id) || [])\n\n // check that one of the versions is the right one\n if (!versionIds?.has(summary.versionId || '')) return\n\n if (message.status === 'finished') {\n let id: string | undefined\n if (productId) id = productId\n else if (taskId) id = taskId\n else if (folderId) id = folderId\n\n console.log('Reviewable finished, refreshing to get data:', { id })\n // \"838977a81dab11ef95ad0242ac180005\"\n if (id) {\n // get data for this new reviewable (invalidate self)\n dispatch(reviewablesApi.util.invalidateTags([{ type: 'review', id: id }]))\n }\n }\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('reviewable.process', handlePubSub)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n },\n }),\n hasTranscoder: build.query<boolean, undefined>({\n queryFn: async (_arg, { dispatch }) => {\n // get list of installed addons\n const res = await dispatch(addonsQueries.endpoints.listAddons.initiate({ details: false }))\n\n if (res.data) {\n const hasTranscoder = res.data.addons.some((addon) => addon.name === 'transcoder')\n\n return { data: hasTranscoder }\n } else if (res.error) {\n console.error(res.error)\n return { data: false }\n } else return { data: false }\n },\n }),\n }),\n})\n\nexport const {\n useGetViewerReviewablesQuery,\n useGetReviewablesForVersionQuery,\n useHasTranscoderQuery,\n} = getReviewApi\nexport default getReviewApi\n"],"names":["productId","reviewablesApi","result","addonsQueries"],"mappings":"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"}
@@ -35,6 +35,7 @@ require("../../generated/users.cjs.js");
35
35
  require("../../generated/versions.cjs.js");
36
36
  require("../../generated/workfiles.cjs.js");
37
37
  require("../../generated/ynputCloud.cjs.js");
38
+ require("../../generated/grouping.cjs.js");
38
39
  const getReview = require("./getReview.cjs.js");
39
40
  const injectedEndpoints = getReview.default.injectEndpoints({
40
41
  endpoints: (build) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"updateReview.cjs.js","sources":["../../../../../../src/api/queries/review/updateReview.ts"],"sourcesContent":["import {\n activityFeedApi,\n DeleteProjectActivityApiResponse,\n DeleteProjectActivityApiArg,\n} from '@shared/api/generated'\nimport getReviewApi from './getReview'\nimport { FetchBaseQueryError } from '@reduxjs/toolkit/query'\nimport { ReviewableResponse } from './types'\n\nconst injectedEndpoints = getReviewApi.injectEndpoints({\n endpoints: (build) => ({\n deleteReviewable: build.mutation<DeleteProjectActivityApiResponse, DeleteProjectActivityApiArg>(\n {\n queryFn: async (args, { dispatch }) => {\n try {\n // delete reviewable activity\n const res = await dispatch(\n activityFeedApi.endpoints.deleteProjectActivity.initiate(args),\n )\n\n if (res.error) {\n return { error: res.error as FetchBaseQueryError }\n }\n\n return { data: res.data }\n } catch (e: any) {\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n invalidatesTags: (_result, _error, args) => [{ type: 'review', id: args.activityId }],\n },\n ),\n }),\n})\n\nconst enhancedEndpoints = injectedEndpoints.enhanceEndpoints({\n endpoints: {\n // reviewables list is updated optimistically\n sortVersionReviewables: {\n async onQueryStarted(\n { projectName, versionId, sortReviewablesRequest },\n { dispatch, queryFulfilled },\n ) {\n const patchResult = dispatch(\n getReviewApi.util.updateQueryData(\n 'getReviewablesForVersion',\n { projectName, versionId },\n (draft) => {\n const sortingOrder = sortReviewablesRequest.sort\n // Create a new array to store the reordered reviewables\n const newReviewables: ReviewableResponse[] = []\n\n // Create a Set to track activityIds that are in the sortingOrder\n const orderedIds = new Set(sortingOrder)\n // Loop through each id in the sortingOrder array\n sortingOrder?.forEach((id) => {\n // Filter the reviewables that match the current activityId and push them to newReviewables\n draft.reviewables\n ?.filter((r: ReviewableResponse) => r.activityId === id)\n .forEach((r: ReviewableResponse) => newReviewables.push(r))\n })\n\n // Add remaining reviewables that were not in the sortingOrder to the end\n draft.reviewables?.forEach((r: ReviewableResponse) => {\n if (!orderedIds.has(r.activityId)) {\n newReviewables.push(r)\n }\n })\n\n // update draft\n draft.reviewables = newReviewables\n },\n ),\n )\n try {\n await queryFulfilled\n } catch {\n patchResult.undo()\n }\n },\n // viewer list is updated through invalidation\n invalidatesTags: (_result, _error, args) => [{ type: 'viewer', id: args.versionId }],\n },\n updateReviewable: {\n invalidatesTags: (_result, _error, args) => [{ type: 'review', id: args.activityId }],\n },\n },\n})\n\nexport const {\n useDeleteReviewableMutation,\n useSortVersionReviewablesMutation,\n useUpdateReviewableMutation,\n} = enhancedEndpoints\nexport { enhancedEndpoints as reviewablesQueries }\n"],"names":["getReviewApi","activityFeedApi","_a"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,MAAM,oBAAoBA,kBAAa,gBAAgB;AAAA,EACrD,WAAW,CAAC,WAAW;AAAA,IACrB,kBAAkB,MAAM;AAAA,MACtB;AAAA,QACE,SAAS,OAAO,MAAM,EAAE,eAAe;AACjC,cAAA;AAEF,kBAAM,MAAM,MAAM;AAAA,cAChBC,aAAAA,IAAgB,UAAU,sBAAsB,SAAS,IAAI;AAAA,YAC/D;AAEA,gBAAI,IAAI,OAAO;AACN,qBAAA,EAAE,OAAO,IAAI,MAA6B;AAAA,YAAA;AAG5C,mBAAA,EAAE,MAAM,IAAI,KAAK;AAAA,mBACjB,GAAQ;AACf,kBAAM,QAAQ,EAAE,QAAQ,eAAe,OAAO,EAAE,QAAQ;AACxD,mBAAO,EAAE,MAAM;AAAA,UAAA;AAAA,QAEnB;AAAA,QACA,iBAAiB,CAAC,SAAS,QAAQ,SAAS,CAAC,EAAE,MAAM,UAAU,IAAI,KAAK,WAAY,CAAA;AAAA,MAAA;AAAA,IACtF;AAAA,EAEJ;AACF,CAAC;AAEK,MAAA,oBAAoB,kBAAkB,iBAAiB;AAAA,EAC3D,WAAW;AAAA;AAAA,IAET,wBAAwB;AAAA,MACtB,MAAM,eACJ,EAAE,aAAa,WAAW,0BAC1B,EAAE,UAAU,kBACZ;AACA,cAAM,cAAc;AAAA,UAClBD,kBAAa,KAAK;AAAA,YAChB;AAAA,YACA,EAAE,aAAa,UAAU;AAAA,YACzB,CAAC,UAAU;;AACT,oBAAM,eAAe,uBAAuB;AAE5C,oBAAM,iBAAuC,CAAC;AAGxC,oBAAA,aAAa,IAAI,IAAI,YAAY;AAEzB,2DAAA,QAAQ,CAAC,OAAO;;AAE5B,iBAAAE,MAAA,MAAM,gBAAN,gBAAAA,IACI,OAAO,CAAC,MAA0B,EAAE,eAAe,IACpD,QAAQ,CAAC,MAA0B,eAAe,KAAK,CAAC;AAAA,cAAC;AAIxD,0BAAA,gBAAA,mBAAa,QAAQ,CAAC,MAA0B;AACpD,oBAAI,CAAC,WAAW,IAAI,EAAE,UAAU,GAAG;AACjC,iCAAe,KAAK,CAAC;AAAA,gBAAA;AAAA,cACvB;AAIF,oBAAM,cAAc;AAAA,YAAA;AAAA,UACtB;AAAA,QAEJ;AACI,YAAA;AACI,gBAAA;AAAA,QAAA,QACA;AACN,sBAAY,KAAK;AAAA,QAAA;AAAA,MAErB;AAAA;AAAA,MAEA,iBAAiB,CAAC,SAAS,QAAQ,SAAS,CAAC,EAAE,MAAM,UAAU,IAAI,KAAK,UAAW,CAAA;AAAA,IACrF;AAAA,IACA,kBAAkB;AAAA,MAChB,iBAAiB,CAAC,SAAS,QAAQ,SAAS,CAAC,EAAE,MAAM,UAAU,IAAI,KAAK,WAAY,CAAA;AAAA,IAAA;AAAA,EACtF;AAEJ,CAAC;AAEY,MAAA;AAAA,EACX;AAAA,EACA;AAAA,EACA;AACF,IAAI;;;;;"}
1
+ {"version":3,"file":"updateReview.cjs.js","sources":["../../../../../../src/api/queries/review/updateReview.ts"],"sourcesContent":["import {\n activityFeedApi,\n DeleteProjectActivityApiResponse,\n DeleteProjectActivityApiArg,\n} from '@shared/api/generated'\nimport getReviewApi from './getReview'\nimport { FetchBaseQueryError } from '@reduxjs/toolkit/query'\nimport { ReviewableResponse } from './types'\n\nconst injectedEndpoints = getReviewApi.injectEndpoints({\n endpoints: (build) => ({\n deleteReviewable: build.mutation<DeleteProjectActivityApiResponse, DeleteProjectActivityApiArg>(\n {\n queryFn: async (args, { dispatch }) => {\n try {\n // delete reviewable activity\n const res = await dispatch(\n activityFeedApi.endpoints.deleteProjectActivity.initiate(args),\n )\n\n if (res.error) {\n return { error: res.error as FetchBaseQueryError }\n }\n\n return { data: res.data }\n } catch (e: any) {\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n invalidatesTags: (_result, _error, args) => [{ type: 'review', id: args.activityId }],\n },\n ),\n }),\n})\n\nconst enhancedEndpoints = injectedEndpoints.enhanceEndpoints({\n endpoints: {\n // reviewables list is updated optimistically\n sortVersionReviewables: {\n async onQueryStarted(\n { projectName, versionId, sortReviewablesRequest },\n { dispatch, queryFulfilled },\n ) {\n const patchResult = dispatch(\n getReviewApi.util.updateQueryData(\n 'getReviewablesForVersion',\n { projectName, versionId },\n (draft) => {\n const sortingOrder = sortReviewablesRequest.sort\n // Create a new array to store the reordered reviewables\n const newReviewables: ReviewableResponse[] = []\n\n // Create a Set to track activityIds that are in the sortingOrder\n const orderedIds = new Set(sortingOrder)\n // Loop through each id in the sortingOrder array\n sortingOrder?.forEach((id) => {\n // Filter the reviewables that match the current activityId and push them to newReviewables\n draft.reviewables\n ?.filter((r: ReviewableResponse) => r.activityId === id)\n .forEach((r: ReviewableResponse) => newReviewables.push(r))\n })\n\n // Add remaining reviewables that were not in the sortingOrder to the end\n draft.reviewables?.forEach((r: ReviewableResponse) => {\n if (!orderedIds.has(r.activityId)) {\n newReviewables.push(r)\n }\n })\n\n // update draft\n draft.reviewables = newReviewables\n },\n ),\n )\n try {\n await queryFulfilled\n } catch {\n patchResult.undo()\n }\n },\n // viewer list is updated through invalidation\n invalidatesTags: (_result, _error, args) => [{ type: 'viewer', id: args.versionId }],\n },\n updateReviewable: {\n invalidatesTags: (_result, _error, args) => [{ type: 'review', id: args.activityId }],\n },\n },\n})\n\nexport const {\n useDeleteReviewableMutation,\n useSortVersionReviewablesMutation,\n useUpdateReviewableMutation,\n} = enhancedEndpoints\nexport { enhancedEndpoints as reviewablesQueries }\n"],"names":["getReviewApi","activityFeedApi","_a"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,MAAM,oBAAoBA,kBAAa,gBAAgB;AAAA,EACrD,WAAW,CAAC,WAAW;AAAA,IACrB,kBAAkB,MAAM;AAAA,MACtB;AAAA,QACE,SAAS,OAAO,MAAM,EAAE,eAAe;AACjC,cAAA;AAEF,kBAAM,MAAM,MAAM;AAAA,cAChBC,aAAAA,IAAgB,UAAU,sBAAsB,SAAS,IAAI;AAAA,YAC/D;AAEA,gBAAI,IAAI,OAAO;AACN,qBAAA,EAAE,OAAO,IAAI,MAA6B;AAAA,YAAA;AAG5C,mBAAA,EAAE,MAAM,IAAI,KAAK;AAAA,mBACjB,GAAQ;AACf,kBAAM,QAAQ,EAAE,QAAQ,eAAe,OAAO,EAAE,QAAQ;AACxD,mBAAO,EAAE,MAAM;AAAA,UAAA;AAAA,QAEnB;AAAA,QACA,iBAAiB,CAAC,SAAS,QAAQ,SAAS,CAAC,EAAE,MAAM,UAAU,IAAI,KAAK,WAAY,CAAA;AAAA,MAAA;AAAA,IACtF;AAAA,EAEJ;AACF,CAAC;AAEK,MAAA,oBAAoB,kBAAkB,iBAAiB;AAAA,EAC3D,WAAW;AAAA;AAAA,IAET,wBAAwB;AAAA,MACtB,MAAM,eACJ,EAAE,aAAa,WAAW,0BAC1B,EAAE,UAAU,kBACZ;AACA,cAAM,cAAc;AAAA,UAClBD,kBAAa,KAAK;AAAA,YAChB;AAAA,YACA,EAAE,aAAa,UAAU;AAAA,YACzB,CAAC,UAAU;;AACT,oBAAM,eAAe,uBAAuB;AAE5C,oBAAM,iBAAuC,CAAC;AAGxC,oBAAA,aAAa,IAAI,IAAI,YAAY;AAEzB,2DAAA,QAAQ,CAAC,OAAO;;AAE5B,iBAAAE,MAAA,MAAM,gBAAN,gBAAAA,IACI,OAAO,CAAC,MAA0B,EAAE,eAAe,IACpD,QAAQ,CAAC,MAA0B,eAAe,KAAK,CAAC;AAAA,cAAC;AAIxD,0BAAA,gBAAA,mBAAa,QAAQ,CAAC,MAA0B;AACpD,oBAAI,CAAC,WAAW,IAAI,EAAE,UAAU,GAAG;AACjC,iCAAe,KAAK,CAAC;AAAA,gBAAA;AAAA,cACvB;AAIF,oBAAM,cAAc;AAAA,YAAA;AAAA,UACtB;AAAA,QAEJ;AACI,YAAA;AACI,gBAAA;AAAA,QAAA,QACA;AACN,sBAAY,KAAK;AAAA,QAAA;AAAA,MAErB;AAAA;AAAA,MAEA,iBAAiB,CAAC,SAAS,QAAQ,SAAS,CAAC,EAAE,MAAM,UAAU,IAAI,KAAK,UAAW,CAAA;AAAA,IACrF;AAAA,IACA,kBAAkB;AAAA,MAChB,iBAAiB,CAAC,SAAS,QAAQ,SAAS,CAAC,EAAE,MAAM,UAAU,IAAI,KAAK,WAAY,CAAA;AAAA,IAAA;AAAA,EACtF;AAEJ,CAAC;AAEY,MAAA;AAAA,EACX;AAAA,EACA;AAAA,EACA;AACF,IAAI;;;;;"}
@@ -33,6 +33,7 @@ import "../../generated/users.es.js";
33
33
  import "../../generated/versions.es.js";
34
34
  import "../../generated/workfiles.es.js";
35
35
  import "../../generated/ynputCloud.es.js";
36
+ import "../../generated/grouping.es.js";
36
37
  import getReviewApi from "./getReview.es.js";
37
38
  const injectedEndpoints = getReviewApi.injectEndpoints({
38
39
  endpoints: (build) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"updateReview.es.js","sources":["../../../../../../src/api/queries/review/updateReview.ts"],"sourcesContent":["import {\n activityFeedApi,\n DeleteProjectActivityApiResponse,\n DeleteProjectActivityApiArg,\n} from '@shared/api/generated'\nimport getReviewApi from './getReview'\nimport { FetchBaseQueryError } from '@reduxjs/toolkit/query'\nimport { ReviewableResponse } from './types'\n\nconst injectedEndpoints = getReviewApi.injectEndpoints({\n endpoints: (build) => ({\n deleteReviewable: build.mutation<DeleteProjectActivityApiResponse, DeleteProjectActivityApiArg>(\n {\n queryFn: async (args, { dispatch }) => {\n try {\n // delete reviewable activity\n const res = await dispatch(\n activityFeedApi.endpoints.deleteProjectActivity.initiate(args),\n )\n\n if (res.error) {\n return { error: res.error as FetchBaseQueryError }\n }\n\n return { data: res.data }\n } catch (e: any) {\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n invalidatesTags: (_result, _error, args) => [{ type: 'review', id: args.activityId }],\n },\n ),\n }),\n})\n\nconst enhancedEndpoints = injectedEndpoints.enhanceEndpoints({\n endpoints: {\n // reviewables list is updated optimistically\n sortVersionReviewables: {\n async onQueryStarted(\n { projectName, versionId, sortReviewablesRequest },\n { dispatch, queryFulfilled },\n ) {\n const patchResult = dispatch(\n getReviewApi.util.updateQueryData(\n 'getReviewablesForVersion',\n { projectName, versionId },\n (draft) => {\n const sortingOrder = sortReviewablesRequest.sort\n // Create a new array to store the reordered reviewables\n const newReviewables: ReviewableResponse[] = []\n\n // Create a Set to track activityIds that are in the sortingOrder\n const orderedIds = new Set(sortingOrder)\n // Loop through each id in the sortingOrder array\n sortingOrder?.forEach((id) => {\n // Filter the reviewables that match the current activityId and push them to newReviewables\n draft.reviewables\n ?.filter((r: ReviewableResponse) => r.activityId === id)\n .forEach((r: ReviewableResponse) => newReviewables.push(r))\n })\n\n // Add remaining reviewables that were not in the sortingOrder to the end\n draft.reviewables?.forEach((r: ReviewableResponse) => {\n if (!orderedIds.has(r.activityId)) {\n newReviewables.push(r)\n }\n })\n\n // update draft\n draft.reviewables = newReviewables\n },\n ),\n )\n try {\n await queryFulfilled\n } catch {\n patchResult.undo()\n }\n },\n // viewer list is updated through invalidation\n invalidatesTags: (_result, _error, args) => [{ type: 'viewer', id: args.versionId }],\n },\n updateReviewable: {\n invalidatesTags: (_result, _error, args) => [{ type: 'review', id: args.activityId }],\n },\n },\n})\n\nexport const {\n useDeleteReviewableMutation,\n useSortVersionReviewablesMutation,\n useUpdateReviewableMutation,\n} = enhancedEndpoints\nexport { enhancedEndpoints as reviewablesQueries }\n"],"names":["activityFeedApi","_a"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,MAAM,oBAAoB,aAAa,gBAAgB;AAAA,EACrD,WAAW,CAAC,WAAW;AAAA,IACrB,kBAAkB,MAAM;AAAA,MACtB;AAAA,QACE,SAAS,OAAO,MAAM,EAAE,eAAe;AACjC,cAAA;AAEF,kBAAM,MAAM,MAAM;AAAA,cAChBA,eAAgB,UAAU,sBAAsB,SAAS,IAAI;AAAA,YAC/D;AAEA,gBAAI,IAAI,OAAO;AACN,qBAAA,EAAE,OAAO,IAAI,MAA6B;AAAA,YAAA;AAG5C,mBAAA,EAAE,MAAM,IAAI,KAAK;AAAA,mBACjB,GAAQ;AACf,kBAAM,QAAQ,EAAE,QAAQ,eAAe,OAAO,EAAE,QAAQ;AACxD,mBAAO,EAAE,MAAM;AAAA,UAAA;AAAA,QAEnB;AAAA,QACA,iBAAiB,CAAC,SAAS,QAAQ,SAAS,CAAC,EAAE,MAAM,UAAU,IAAI,KAAK,WAAY,CAAA;AAAA,MAAA;AAAA,IACtF;AAAA,EAEJ;AACF,CAAC;AAEK,MAAA,oBAAoB,kBAAkB,iBAAiB;AAAA,EAC3D,WAAW;AAAA;AAAA,IAET,wBAAwB;AAAA,MACtB,MAAM,eACJ,EAAE,aAAa,WAAW,0BAC1B,EAAE,UAAU,kBACZ;AACA,cAAM,cAAc;AAAA,UAClB,aAAa,KAAK;AAAA,YAChB;AAAA,YACA,EAAE,aAAa,UAAU;AAAA,YACzB,CAAC,UAAU;;AACT,oBAAM,eAAe,uBAAuB;AAE5C,oBAAM,iBAAuC,CAAC;AAGxC,oBAAA,aAAa,IAAI,IAAI,YAAY;AAEzB,2DAAA,QAAQ,CAAC,OAAO;;AAE5B,iBAAAC,MAAA,MAAM,gBAAN,gBAAAA,IACI,OAAO,CAAC,MAA0B,EAAE,eAAe,IACpD,QAAQ,CAAC,MAA0B,eAAe,KAAK,CAAC;AAAA,cAAC;AAIxD,0BAAA,gBAAA,mBAAa,QAAQ,CAAC,MAA0B;AACpD,oBAAI,CAAC,WAAW,IAAI,EAAE,UAAU,GAAG;AACjC,iCAAe,KAAK,CAAC;AAAA,gBAAA;AAAA,cACvB;AAIF,oBAAM,cAAc;AAAA,YAAA;AAAA,UACtB;AAAA,QAEJ;AACI,YAAA;AACI,gBAAA;AAAA,QAAA,QACA;AACN,sBAAY,KAAK;AAAA,QAAA;AAAA,MAErB;AAAA;AAAA,MAEA,iBAAiB,CAAC,SAAS,QAAQ,SAAS,CAAC,EAAE,MAAM,UAAU,IAAI,KAAK,UAAW,CAAA;AAAA,IACrF;AAAA,IACA,kBAAkB;AAAA,MAChB,iBAAiB,CAAC,SAAS,QAAQ,SAAS,CAAC,EAAE,MAAM,UAAU,IAAI,KAAK,WAAY,CAAA;AAAA,IAAA;AAAA,EACtF;AAEJ,CAAC;AAEY,MAAA;AAAA,EACX;AAAA,EACA;AAAA,EACA;AACF,IAAI;"}
1
+ {"version":3,"file":"updateReview.es.js","sources":["../../../../../../src/api/queries/review/updateReview.ts"],"sourcesContent":["import {\n activityFeedApi,\n DeleteProjectActivityApiResponse,\n DeleteProjectActivityApiArg,\n} from '@shared/api/generated'\nimport getReviewApi from './getReview'\nimport { FetchBaseQueryError } from '@reduxjs/toolkit/query'\nimport { ReviewableResponse } from './types'\n\nconst injectedEndpoints = getReviewApi.injectEndpoints({\n endpoints: (build) => ({\n deleteReviewable: build.mutation<DeleteProjectActivityApiResponse, DeleteProjectActivityApiArg>(\n {\n queryFn: async (args, { dispatch }) => {\n try {\n // delete reviewable activity\n const res = await dispatch(\n activityFeedApi.endpoints.deleteProjectActivity.initiate(args),\n )\n\n if (res.error) {\n return { error: res.error as FetchBaseQueryError }\n }\n\n return { data: res.data }\n } catch (e: any) {\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n invalidatesTags: (_result, _error, args) => [{ type: 'review', id: args.activityId }],\n },\n ),\n }),\n})\n\nconst enhancedEndpoints = injectedEndpoints.enhanceEndpoints({\n endpoints: {\n // reviewables list is updated optimistically\n sortVersionReviewables: {\n async onQueryStarted(\n { projectName, versionId, sortReviewablesRequest },\n { dispatch, queryFulfilled },\n ) {\n const patchResult = dispatch(\n getReviewApi.util.updateQueryData(\n 'getReviewablesForVersion',\n { projectName, versionId },\n (draft) => {\n const sortingOrder = sortReviewablesRequest.sort\n // Create a new array to store the reordered reviewables\n const newReviewables: ReviewableResponse[] = []\n\n // Create a Set to track activityIds that are in the sortingOrder\n const orderedIds = new Set(sortingOrder)\n // Loop through each id in the sortingOrder array\n sortingOrder?.forEach((id) => {\n // Filter the reviewables that match the current activityId and push them to newReviewables\n draft.reviewables\n ?.filter((r: ReviewableResponse) => r.activityId === id)\n .forEach((r: ReviewableResponse) => newReviewables.push(r))\n })\n\n // Add remaining reviewables that were not in the sortingOrder to the end\n draft.reviewables?.forEach((r: ReviewableResponse) => {\n if (!orderedIds.has(r.activityId)) {\n newReviewables.push(r)\n }\n })\n\n // update draft\n draft.reviewables = newReviewables\n },\n ),\n )\n try {\n await queryFulfilled\n } catch {\n patchResult.undo()\n }\n },\n // viewer list is updated through invalidation\n invalidatesTags: (_result, _error, args) => [{ type: 'viewer', id: args.versionId }],\n },\n updateReviewable: {\n invalidatesTags: (_result, _error, args) => [{ type: 'review', id: args.activityId }],\n },\n },\n})\n\nexport const {\n useDeleteReviewableMutation,\n useSortVersionReviewablesMutation,\n useUpdateReviewableMutation,\n} = enhancedEndpoints\nexport { enhancedEndpoints as reviewablesQueries }\n"],"names":["activityFeedApi","_a"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,MAAM,oBAAoB,aAAa,gBAAgB;AAAA,EACrD,WAAW,CAAC,WAAW;AAAA,IACrB,kBAAkB,MAAM;AAAA,MACtB;AAAA,QACE,SAAS,OAAO,MAAM,EAAE,eAAe;AACjC,cAAA;AAEF,kBAAM,MAAM,MAAM;AAAA,cAChBA,eAAgB,UAAU,sBAAsB,SAAS,IAAI;AAAA,YAC/D;AAEA,gBAAI,IAAI,OAAO;AACN,qBAAA,EAAE,OAAO,IAAI,MAA6B;AAAA,YAAA;AAG5C,mBAAA,EAAE,MAAM,IAAI,KAAK;AAAA,mBACjB,GAAQ;AACf,kBAAM,QAAQ,EAAE,QAAQ,eAAe,OAAO,EAAE,QAAQ;AACxD,mBAAO,EAAE,MAAM;AAAA,UAAA;AAAA,QAEnB;AAAA,QACA,iBAAiB,CAAC,SAAS,QAAQ,SAAS,CAAC,EAAE,MAAM,UAAU,IAAI,KAAK,WAAY,CAAA;AAAA,MAAA;AAAA,IACtF;AAAA,EAEJ;AACF,CAAC;AAEK,MAAA,oBAAoB,kBAAkB,iBAAiB;AAAA,EAC3D,WAAW;AAAA;AAAA,IAET,wBAAwB;AAAA,MACtB,MAAM,eACJ,EAAE,aAAa,WAAW,0BAC1B,EAAE,UAAU,kBACZ;AACA,cAAM,cAAc;AAAA,UAClB,aAAa,KAAK;AAAA,YAChB;AAAA,YACA,EAAE,aAAa,UAAU;AAAA,YACzB,CAAC,UAAU;;AACT,oBAAM,eAAe,uBAAuB;AAE5C,oBAAM,iBAAuC,CAAC;AAGxC,oBAAA,aAAa,IAAI,IAAI,YAAY;AAEzB,2DAAA,QAAQ,CAAC,OAAO;;AAE5B,iBAAAC,MAAA,MAAM,gBAAN,gBAAAA,IACI,OAAO,CAAC,MAA0B,EAAE,eAAe,IACpD,QAAQ,CAAC,MAA0B,eAAe,KAAK,CAAC;AAAA,cAAC;AAIxD,0BAAA,gBAAA,mBAAa,QAAQ,CAAC,MAA0B;AACpD,oBAAI,CAAC,WAAW,IAAI,EAAE,UAAU,GAAG;AACjC,iCAAe,KAAK,CAAC;AAAA,gBAAA;AAAA,cACvB;AAIF,oBAAM,cAAc;AAAA,YAAA;AAAA,UACtB;AAAA,QAEJ;AACI,YAAA;AACI,gBAAA;AAAA,QAAA,QACA;AACN,sBAAY,KAAK;AAAA,QAAA;AAAA,MAErB;AAAA;AAAA,MAEA,iBAAiB,CAAC,SAAS,QAAQ,SAAS,CAAC,EAAE,MAAM,UAAU,IAAI,KAAK,UAAW,CAAA;AAAA,IACrF;AAAA,IACA,kBAAkB;AAAA,MAChB,iBAAiB,CAAC,SAAS,QAAQ,SAAS,CAAC,EAAE,MAAM,UAAU,IAAI,KAAK,WAAY,CAAA;AAAA,IAAA;AAAA,EACtF;AAEJ,CAAC;AAEY,MAAA;AAAA,EACX;AAAA,EACA;AAAA,EACA;AACF,IAAI;"}
@@ -35,6 +35,7 @@ require("../../generated/users.cjs.js");
35
35
  require("../../generated/versions.cjs.js");
36
36
  require("../../generated/workfiles.cjs.js");
37
37
  require("../../generated/ynputCloud.cjs.js");
38
+ require("../../generated/grouping.cjs.js");
38
39
  const getSystemApi = system.api.enhanceEndpoints({
39
40
  endpoints: {
40
41
  getSiteInfo: {
@@ -1 +1 @@
1
- {"version":3,"file":"getSystem.cjs.js","sources":["../../../../../../src/api/queries/system/getSystem.ts"],"sourcesContent":["import { systemApi } from '@shared/api/generated'\n\nconst getSystemApi = systemApi.enhanceEndpoints({\n endpoints: {\n getSiteInfo: {\n providesTags: ['info'],\n },\n listFrontendModules: {\n providesTags: ['info'],\n },\n },\n})\n\nexport const { useGetSiteInfoQuery, useLazyGetSiteInfoQuery, useListFrontendModulesQuery } =\n getSystemApi\nexport { getSystemApi as systemQueries }\n"],"names":["systemApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEM,MAAA,eAAeA,WAAU,iBAAiB;AAAA,EAC9C,WAAW;AAAA,IACT,aAAa;AAAA,MACX,cAAc,CAAC,MAAM;AAAA,IACvB;AAAA,IACA,qBAAqB;AAAA,MACnB,cAAc,CAAC,MAAM;AAAA,IAAA;AAAA,EACvB;AAEJ,CAAC;AAEM,MAAM,EAAE,qBAAqB,yBAAyB,gCAC3D;;;;;"}
1
+ {"version":3,"file":"getSystem.cjs.js","sources":["../../../../../../src/api/queries/system/getSystem.ts"],"sourcesContent":["import { systemApi } from '@shared/api/generated'\n\nconst getSystemApi = systemApi.enhanceEndpoints({\n endpoints: {\n getSiteInfo: {\n providesTags: ['info'],\n },\n listFrontendModules: {\n providesTags: ['info'],\n },\n },\n})\n\nexport const { useGetSiteInfoQuery, useLazyGetSiteInfoQuery, useListFrontendModulesQuery } =\n getSystemApi\nexport { getSystemApi as systemQueries }\n"],"names":["systemApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEM,MAAA,eAAeA,WAAU,iBAAiB;AAAA,EAC9C,WAAW;AAAA,IACT,aAAa;AAAA,MACX,cAAc,CAAC,MAAM;AAAA,IACvB;AAAA,IACA,qBAAqB;AAAA,MACnB,cAAc,CAAC,MAAM;AAAA,IAAA;AAAA,EACvB;AAEJ,CAAC;AAEM,MAAM,EAAE,qBAAqB,yBAAyB,gCAC3D;;;;;"}
@@ -33,6 +33,7 @@ import "../../generated/users.es.js";
33
33
  import "../../generated/versions.es.js";
34
34
  import "../../generated/workfiles.es.js";
35
35
  import "../../generated/ynputCloud.es.js";
36
+ import "../../generated/grouping.es.js";
36
37
  const getSystemApi = injectedRtkApi.enhanceEndpoints({
37
38
  endpoints: {
38
39
  getSiteInfo: {
@@ -1 +1 @@
1
- {"version":3,"file":"getSystem.es.js","sources":["../../../../../../src/api/queries/system/getSystem.ts"],"sourcesContent":["import { systemApi } from '@shared/api/generated'\n\nconst getSystemApi = systemApi.enhanceEndpoints({\n endpoints: {\n getSiteInfo: {\n providesTags: ['info'],\n },\n listFrontendModules: {\n providesTags: ['info'],\n },\n },\n})\n\nexport const { useGetSiteInfoQuery, useLazyGetSiteInfoQuery, useListFrontendModulesQuery } =\n getSystemApi\nexport { getSystemApi as systemQueries }\n"],"names":["systemApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEM,MAAA,eAAeA,eAAU,iBAAiB;AAAA,EAC9C,WAAW;AAAA,IACT,aAAa;AAAA,MACX,cAAc,CAAC,MAAM;AAAA,IACvB;AAAA,IACA,qBAAqB;AAAA,MACnB,cAAc,CAAC,MAAM;AAAA,IAAA;AAAA,EACvB;AAEJ,CAAC;AAEM,MAAM,EAAE,qBAAqB,yBAAyB,gCAC3D;"}
1
+ {"version":3,"file":"getSystem.es.js","sources":["../../../../../../src/api/queries/system/getSystem.ts"],"sourcesContent":["import { systemApi } from '@shared/api/generated'\n\nconst getSystemApi = systemApi.enhanceEndpoints({\n endpoints: {\n getSiteInfo: {\n providesTags: ['info'],\n },\n listFrontendModules: {\n providesTags: ['info'],\n },\n },\n})\n\nexport const { useGetSiteInfoQuery, useLazyGetSiteInfoQuery, useListFrontendModulesQuery } =\n getSystemApi\nexport { getSystemApi as systemQueries }\n"],"names":["systemApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEM,MAAA,eAAeA,eAAU,iBAAiB;AAAA,EAC9C,WAAW;AAAA,IACT,aAAa;AAAA,MACX,cAAc,CAAC,MAAM;AAAA,IACvB;AAAA,IACA,qBAAqB;AAAA,MACnB,cAAc,CAAC,MAAM;AAAA,IAAA;AAAA,EACvB;AAEJ,CAAC;AAEM,MAAM,EAAE,qBAAqB,yBAAyB,gCAC3D;"}
@@ -35,6 +35,7 @@ require("../../generated/users.cjs.js");
35
35
  require("../../generated/versions.cjs.js");
36
36
  require("../../generated/workfiles.cjs.js");
37
37
  require("../../generated/ynputCloud.cjs.js");
38
+ require("../../generated/grouping.cjs.js");
38
39
  require("../project/getProject.cjs.js");
39
40
  const updateProject = require("../project/updateProject.cjs.js");
40
41
  require("lodash");
@@ -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} 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}\n\nexport type GetProjectsInfoResponse = { [projectName: string]: ProjectModel | undefined }\n\nconst injectedDashboardRestApi = enhancedDashboardGraphqlApi.injectEndpoints({\n endpoints: (build) => ({\n getProjectsInfo: build.query<GetProjectsInfoResponse, GetProjectsInfoParams>({\n async queryFn({ projects = [] }, { dispatch }) {\n try {\n // get project info for each project\n const projectInfo: Record<string, ProjectModel | undefined> = {}\n for (const project of projects) {\n // hopefully this will be cached\n // it also allows for different combination of projects but still use the cache\n const response = await dispatch(\n projectQueries.endpoints.getProject.initiate(\n { projectName: project },\n { forceRefetch: true },\n ),\n )\n\n if (response.status === 'rejected') {\n throw 'No projects found'\n }\n projectInfo[project] = response.data\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":["gqlApi","projects","PubSub","projectQueries"],"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} 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}\n\nexport type GetProjectsInfoResponse = { [projectName: string]: ProjectModel | undefined }\n\nconst injectedDashboardRestApi = enhancedDashboardGraphqlApi.injectEndpoints({\n endpoints: (build) => ({\n getProjectsInfo: build.query<GetProjectsInfoResponse, GetProjectsInfoParams>({\n async queryFn({ projects = [] }, { dispatch }) {\n try {\n // get project info for each project\n const projectInfo: Record<string, ProjectModel | undefined> = {}\n for (const project of projects) {\n // hopefully this will be cached\n // it also allows for different combination of projects but still use the cache\n const response = await dispatch(\n projectQueries.endpoints.getProject.initiate(\n { projectName: project },\n { forceRefetch: true },\n ),\n )\n\n if (response.status === 'rejected') {\n throw 'No projects found'\n }\n projectInfo[project] = response.data\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":["gqlApi","projects","PubSub","projectQueries"],"mappings":"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"}
@@ -33,6 +33,7 @@ import "../../generated/users.es.js";
33
33
  import "../../generated/versions.es.js";
34
34
  import "../../generated/workfiles.es.js";
35
35
  import "../../generated/ynputCloud.es.js";
36
+ import "../../generated/grouping.es.js";
36
37
  import "../project/getProject.es.js";
37
38
  import { projectQueries as projectApi } from "../project/updateProject.es.js";
38
39
  import "lodash";
@@ -1 +1 @@
1
- {"version":3,"file":"getUserDashboard.es.js","sources":["../../../../../../src/api/queries/userDashboard/getUserDashboard.ts"],"sourcesContent":["import {\n gqlApi,\n GetKanbanProjectUsersQuery,\n GetKanbanQuery,\n ProjectModel,\n KanbanNode,\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}\n\nexport type GetProjectsInfoResponse = { [projectName: string]: ProjectModel | undefined }\n\nconst injectedDashboardRestApi = enhancedDashboardGraphqlApi.injectEndpoints({\n endpoints: (build) => ({\n getProjectsInfo: build.query<GetProjectsInfoResponse, GetProjectsInfoParams>({\n async queryFn({ projects = [] }, { dispatch }) {\n try {\n // get project info for each project\n const projectInfo: Record<string, ProjectModel | undefined> = {}\n for (const project of projects) {\n // hopefully this will be cached\n // it also allows for different combination of projects but still use the cache\n const response = await dispatch(\n projectQueries.endpoints.getProject.initiate(\n { projectName: project },\n { forceRefetch: true },\n ),\n )\n\n if (response.status === 'rejected') {\n throw 'No projects found'\n }\n projectInfo[project] = response.data\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":["gqlApi","projects","projectQueries"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,MAAM,kBAAkB,CAAC,aACvB,SAAS,OAAO,MACb,IAAI,CAAC,EAAE,KAAA,MAAW,IAAI,EACtB,KAAK,CAAC,GAAG,MAAM;AACR,QAAA,SAAS,EAAE,SAAS,EAAE;AACtB,QAAA,SAAS,EAAE,SAAS,EAAE;AACrB,SAAA,OAAO,cAAc,MAAM;AACpC,CAAC;AAEL,MAAM,oBAAoB,CAAC,QAAuC,QAAa,UAC7E,iCAAQ,UACJ;AAAA,EACE,EAAE,MAAM,cAAc,IAAI,OAAO;AAAA,EACjC,GAAG,OAAO,QAAQ,CAAC,EAAE,IAAI,aAAa,gBAAgB;AAAA,IACpD,EAAE,MAAM,QAAQ,GAAG;AAAA,IACnB,EAAE,MAAM,UAAU,IAAI,aAAa,YAAY;AAAA,IAC/C,GAAG,UAAU,IAAI,CAAC,cAAc,EAAE,MAAM,UAAU,IAAI,UAAU,SAAA,EAAW;AAAA,IAC3E,GAAG,UAAU,IAAI,CAAC,cAAc;AAAA,MAC9B,MAAM;AAAA,MACN,IAAI,UAAU,WAAW,cAAc;AAAA,IAAA,EACvC;AAAA,IACF,EAAE,MAAM,UAAU,IAAI,KAAK,UAAU,IAAI,EAAE;AAAA,EAC5C,CAAA;AACH,IACA,CAAC,EAAE,MAAM,cAAc,IAAI,QAAQ;AAElC,MAAM,iBAAiB,OAC5B;AAAA,EACE,WAAW,CAAC;AAAA,EACZ,UAAU,CAAA;AACZ,GAIA,aACG;AACC,MAAA;AAEF,UAAM,WAAW,MAAM;AAAA,MACrB,4BAA4B,UAAU,eAAe;AAAA,QACnD,EAAE,UAAU,QAAQ;AAAA,QACpB,EAAE,cAAc,KAAK;AAAA,MAAA;AAAA,IAEzB;AAEA,QAAI,SAAS,WAAW,cAAc,CAAC,SAAS,MAAM;AAC5C,cAAA,MAAM,kBAAkB,OAAO;AACvC,YAAM,IAAI,MAAM,kBAAkB,QAAQ,KAAK,IAAI,CAAC,EAAE;AAAA,IAAA;AAGxD,QAAI,SAAS,WAAW,YAAa,QAAO,CAAC;AAE7C,WAAO,SAAS;AAAA,WACT,OAAO;AACd,YAAQ,MAAM,KAAK;AACnB,WAAO,CAAC;AAAA,EAAA;AAEZ;AAEA,MAAM,8BAA8BA,eAAO,iBAA+C;AAAA,EACxF,WAAW;AAAA,IACT,WAAW;AAAA,MACT,mBAAmB;AAAA,MACnB,cAAc;AAAA,MACd,MAAM,kBACJ,EAAE,YAAY,IAAI,WAAW,CAAG,EAAA,IAAI,CACpC,GAAA,EAAE,kBAAkB,iBAAiB,mBAAmB,YACxD;AACI,YAAA;AACA,YAAA;AAEI,gBAAA;AAEN,gBAAM,kBAAkB,OAAO;AAAA,YAC7B,UAAAC,YAAW,CAAC;AAAA,YACZ,UAAU,CAAA;AAAA,UAAC,MAIP;AACE,kBAAA,QAAQ,MAAM,eAAe,EAAE,UAAAA,WAAU,WAAW,QAAQ;AAGlE,kBAAM,wBAAwB,MAAM;AAAA,cAAO,CAAC,SAC1C,KAAK,UAAU,KAAK,CAAC,aAAa,uCAAW,SAAS,SAAS;AAAA,YACjE;AAEA,kBAAM,2BAA2B,MAAM;AAAA,cACrC,CAAC,SAAS,CAAC,KAAK,UAAU,KAAK,CAAC,aAAa,uCAAW,SAAS,SAAS;AAAA,YAC5E;AAGA,6BAAiB,CAAC,UAAU;AAEJ,oCAAA,QAAQ,CAAC,SAAS;AAChC,sBAAA,QAAQ,MAAM,UAAU,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE;AACrD,oBAAI,UAAU,IAAI;AAChB,wBAAM,KAAK,IAAI;AAAA,gBAAA,OACV;AAEL,wBAAM,KAAK,IAAI;AAAA,gBAAA;AAAA,cACjB,CACD;AAEwB,uCAAA,QAAQ,CAAC,SAAS;AACnC,sBAAA,QAAQ,MAAM,UAAU,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE;AACrD,oBAAI,UAAU,IAAI;AACV,wBAAA,OAAO,OAAO,CAAC;AAAA,gBAAA;AAAA,cACvB,CACD;AAAA,YAAA,CACF;AAAA,UACH;AAEM,gBAAA,eAAe,OAAO,QAAgB,YAAiB;AAC3D,kBAAM,UAAU,QAAQ;AAEpB,gBAAA,EAAC,qCAAU,SAAS,UAAiB,QAAA,QAAQ,IAAI,sBAAsB;AAErE,kBAAA,WAAW,QAAQ,QAAQ;AACjC,gBAAI,CAAC,SAAiB,QAAA,QAAQ,IAAI,oBAAoB;AAGtC,4BAAA;AAAA,cACd,SAAS,CAAC,QAAQ;AAAA,cAClB,UAAU,CAAC,OAAO;AAAA,YAAA,CACnB;AAAA,UACH;AAGQ,kBAAA,OAAO,UAAU,eAAe,YAAY;AAAA,iBAC7C,OAAO;AACd,kBAAQ,MAAM,KAAK;AAAA,QAAA;AAKf,cAAA;AAEN,eAAO,YAAY,KAAK;AAAA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAa5B;AAAA;AAAA;AAAA,IAGA,gBAAgB;AAAA,MACd,mBAAmB;AAAA,MACnB,cAAc;AAAA,IAChB;AAAA;AAAA,IAEA,uBAAuB;AAAA,MACrB,mBAAmB,CAAC,UAAsC,OAAO,EAAE,SAAa,IAAA,CAC9E,MAAA,SAAS,MAAM,MAAM,IAAI,CAAC,EAAE,MAAM,WAAW;AACrC,cAAA,eAAe,wBAAwB,KAAK,YAAY;AAE9D,cAAM,SAAS,CAAC,KAAK,aAAa,CAAC,KAAK;AAExC,YAAI,iBAAiB,SAAS,sBAAsB,YAAY,IAAI;AACpE,YAAI,OAAO,mBAAmB,YAAY,CAAC,iCAAiC,CAAC;AAGvE,cAAA,YAAY,cAAc,KAAK,IAAI;AAElC,eAAA;AAAA,UACL,GAAG;AAAA,UACH;AAAA,UACA,UAAU;AAAA,UACV;AAAA,QACF;AAAA,MAAA,CACD;AAAA,MACH,cAAc,CAAC,YACb,iCAAQ,UACJ;AAAA,QACE,EAAE,MAAM,QAAQ,IAAI,OAAO;AAAA,QAC3B,GAAG,OAAO,IAAI,CAAC,EAAE,KAAA,OAAY,EAAE,MAAM,QAAQ,IAAI,OAAO;AAAA,UAE1D,CAAC,EAAE,MAAM,QAAQ,IAAI,OAAQ,CAAA;AAAA,IAAA;AAAA,EACrC;AAEJ,CAAC;AAEY,MAAA,EAAE,mBAAmB,kCAAkC;AAQ9D,MAAA,2BAA2B,4BAA4B,gBAAgB;AAAA,EAC3E,WAAW,CAAC,WAAW;AAAA,IACrB,iBAAiB,MAAM,MAAsD;AAAA,MAC3E,MAAM,QAAQ,EAAE,WAAW,CAAG,EAAA,GAAG,EAAE,SAAA,GAAY;AACzC,YAAA;AAEF,gBAAM,cAAwD,CAAC;AAC/D,qBAAW,WAAW,UAAU;AAG9B,kBAAM,WAAW,MAAM;AAAA,cACrBC,WAAe,UAAU,WAAW;AAAA,gBAClC,EAAE,aAAa,QAAQ;AAAA,gBACvB,EAAE,cAAc,KAAK;AAAA,cAAA;AAAA,YAEzB;AAEI,gBAAA,SAAS,WAAW,YAAY;AAC5B,oBAAA;AAAA,YAAA;AAEI,wBAAA,OAAO,IAAI,SAAS;AAAA,UAAA;AAGlC,iBAAO,EAAE,MAAM,aAAa,MAAM,QAAW,OAAO,OAAU;AAAA,iBACvD,OAAY;AACnB,kBAAQ,MAAM,KAAK;AACnB,iBAAO,EAAE,OAAO,MAAM,QAAW,MAAM,OAAU;AAAA,QAAA;AAAA,MAErD;AAAA,MACA,cAAc,CAAC,MAAM,QAAQ,EAAE,SAC7B,MAAA,SAAS,IAAI,CAAC,iBAAiB,EAAE,MAAM,WAAW,IAAI,cAAc;AAAA,IACvE,CAAA;AAAA,EACH;AACF,CAAC;AAEY,MAAA,EAAE,4BAA4B;"}
1
+ {"version":3,"file":"getUserDashboard.es.js","sources":["../../../../../../src/api/queries/userDashboard/getUserDashboard.ts"],"sourcesContent":["import {\n gqlApi,\n GetKanbanProjectUsersQuery,\n GetKanbanQuery,\n ProjectModel,\n KanbanNode,\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}\n\nexport type GetProjectsInfoResponse = { [projectName: string]: ProjectModel | undefined }\n\nconst injectedDashboardRestApi = enhancedDashboardGraphqlApi.injectEndpoints({\n endpoints: (build) => ({\n getProjectsInfo: build.query<GetProjectsInfoResponse, GetProjectsInfoParams>({\n async queryFn({ projects = [] }, { dispatch }) {\n try {\n // get project info for each project\n const projectInfo: Record<string, ProjectModel | undefined> = {}\n for (const project of projects) {\n // hopefully this will be cached\n // it also allows for different combination of projects but still use the cache\n const response = await dispatch(\n projectQueries.endpoints.getProject.initiate(\n { projectName: project },\n { forceRefetch: true },\n ),\n )\n\n if (response.status === 'rejected') {\n throw 'No projects found'\n }\n projectInfo[project] = response.data\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":["gqlApi","projects","projectQueries"],"mappings":"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"}
@@ -35,6 +35,7 @@ const users = require("../../generated/users.cjs.js");
35
35
  require("../../generated/versions.cjs.js");
36
36
  require("../../generated/workfiles.cjs.js");
37
37
  require("../../generated/ynputCloud.cjs.js");
38
+ require("../../generated/grouping.cjs.js");
38
39
  require("../actions/getActions.cjs.js");
39
40
  require("../activities/getActivities.cjs.js");
40
41
  require("../activities/updateActivities.cjs.js");
@@ -64,6 +65,7 @@ require("../userDashboard/getUserDashboard.cjs.js");
64
65
  require("./updateUsers.cjs.js");
65
66
  require("../watchers/getWatchers.cjs.js");
66
67
  require("../permissions/getPermissions.cjs.js");
68
+ require("../grouping/getGrouping.cjs.js");
67
69
  const USER_BY_NAME_QUERY = `
68
70
  query UserList($name:String!) {
69
71
  users(name: $name) {
@@ -1 +1 @@
1
- {"version":3,"file":"getUsers.cjs.js","sources":["../../../../../../src/api/queries/users/getUsers.ts"],"sourcesContent":["import { gqlApi, usersApi } from '@shared/api/generated'\nimport { parseAllAttribs } from '@shared/api'\nimport {\n GetActiveUsersCountQuery,\n GetAllAssigneesQuery,\n GetAllProjectUsersAsAssigneeQuery,\n} from '@shared/api'\n\nconst USER_BY_NAME_QUERY = `\n query UserList($name:String!) {\n users(name: $name) {\n edges {\n node {\n name\n isAdmin\n isManager\n isService\n isDeveloper\n isGuest\n active\n accessGroups\n defaultAccessGroups\n hasPassword\n allAttrib\n }\n }\n }\n }\n`\nconst USERS_QUERY = `\n query UserList {\n users(last: 2000) {\n edges {\n node {\n name\n isAdmin\n isManager\n isService\n isDeveloper\n isGuest\n active\n userPool\n accessGroups\n defaultAccessGroups\n hasPassword\n createdAt\n updatedAt\n apiKeyPreview\n allAttrib\n }\n }\n }\n }\n`\n\nconst ASSIGNEES_BY_NAME_QUERY = `\nquery Assignees($names: [String!]!){\n users(names: $names) {\n edges {\n node {\n name\n attrib {\n fullName\n }\n }\n }\n}\n}`\nconst ASSIGNEES_QUERY = `\nquery Assignees($projectName: String) {\n users(last: 2000 projectName: $projectName) {\n edges {\n node {\n name\n attrib {\n fullName\n }\n }\n }\n}\n}`\n\nconst enhancedApi = usersApi.enhanceEndpoints({\n endpoints: {\n getCurrentUser: {\n providesTags: [{ type: 'user', id: 'LIST' }],\n },\n getUserSessions: {\n transformResponse: (res: any) => res?.sessions,\n providesTags: (_res, _g, { userName }) => [{ type: 'session', id: userName }],\n },\n },\n})\n\nconst injectedApi = gqlApi.injectEndpoints({\n endpoints: (build) => ({\n getUsers: build.query({\n query: () => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: USERS_QUERY,\n variables: {},\n },\n }),\n transformResponse: (res: any, _meta, { selfName }) => {\n if (res?.errors) {\n console.log(res.errors)\n throw new Error(res.errors[0].message)\n }\n\n return res?.data?.users.edges.map((e: any) => ({\n ...e.node,\n self: e.node.name === selfName,\n avatarUrl: `/api/users/${e.node.name}/avatar`,\n accessGroups: e.node.accessGroups ? JSON.parse(e.node.accessGroups) : {},\n attrib: parseAllAttribs(e.node.allAttrib),\n }))\n },\n providesTags: (users) =>\n users\n ? [...users.map((e: any) => ({ type: 'user', id: e.name })), { type: 'user', id: 'LIST' }]\n : [{ type: 'user', id: 'LIST' }],\n }),\n getUserByName: build.query({\n query: ({ name }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: USER_BY_NAME_QUERY,\n variables: { name },\n },\n }),\n transformResponse: (res: any) =>\n res?.data?.users.edges.map((e: any) => ({\n ...e.node,\n avatarUrl: `/api/users/${e.node?.name}/avatar`,\n attrib: parseAllAttribs(e.node.allAttrib),\n })),\n providesTags: (res) =>\n res\n ? [...res.map((e: any) => ({ type: 'user', id: e.name })), { type: 'user', id: 'LIST' }]\n : ['user', { type: 'user', id: 'LIST' }],\n }),\n getUsersAssignee: build.query({\n query: ({ names, projectName }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: names ? ASSIGNEES_BY_NAME_QUERY : ASSIGNEES_QUERY,\n variables: { names, projectName },\n },\n }),\n transformResponse: (res: any) =>\n res?.data?.users.edges.flatMap((u: any) => {\n if (!u.node) return []\n\n const n = u.node\n\n return {\n name: n.name,\n fullName: n.attrib?.fullName,\n avatarUrl: `/api/users/${n.name}/avatar`,\n }\n }),\n providesTags: (res) =>\n res\n ? [\n ...res.map((user: any) => ({ type: 'user', id: user.name })),\n { type: 'user', id: 'LIST' },\n ]\n : [{ type: 'user', id: 'LIST' }],\n }),\n }),\n overrideExisting: true,\n})\n\ntype AssigneeNode = GetAllProjectUsersAsAssigneeQuery['users']['edges'][0]['node']\nexport type Assignees = {\n name: AssigneeNode['name']\n fullName: AssigneeNode['attrib']['fullName']\n updatedAt: AssigneeNode['updatedAt']\n}[]\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetAllProjectUsersAsAssignee'> & {\n GetAllProjectUsersAsAssignee: OverrideResultType<\n Definitions['GetAllProjectUsersAsAssignee'],\n Assignees\n >\n GetActiveUsersCount: OverrideResultType<Definitions['GetActiveUsersCount'], number>\n GetAllAssignees: OverrideResultType<Definitions['GetAllAssignees'], Assignees>\n}\n\nconst gqlUsers = injectedApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetAllProjectUsersAsAssignee: {\n transformResponse: (res: GetAllProjectUsersAsAssigneeQuery) =>\n res.users.edges.map((e) => ({\n name: e.node.name,\n fullName: e.node.attrib.fullName,\n updatedAt: e.node.updatedAt,\n })),\n providesTags: (res) =>\n res\n ? [{ type: 'user', id: 'LIST' }, ...res.map((e) => ({ type: 'user', id: e.name }))]\n : [{ type: 'user', id: 'LIST' }],\n },\n GetActiveUsersCount: {\n transformResponse: (res: GetActiveUsersCountQuery) =>\n res.users.edges.filter((e) => e.node.active && !e.node.isGuest).length,\n providesTags: [{ type: 'user', id: 'LIST' }],\n },\n GetAllAssignees: {\n transformResponse: (res: GetAllAssigneesQuery) =>\n res.users.edges.map((e) => ({\n name: e.node.name,\n fullName: e.node.attrib.fullName,\n updatedAt: e.node.updatedAt,\n })),\n providesTags: (res) =>\n res\n ? [{ type: 'user', id: 'LIST' }, ...res.map((e) => ({ type: 'user', id: e.name }))]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const {\n useGetAllProjectUsersAsAssigneeQuery,\n useLazyGetAllProjectUsersAsAssigneeQuery,\n useGetActiveUsersCountQuery,\n useGetAllAssigneesQuery,\n useGetUsersQuery,\n useGetUserByNameQuery,\n useGetUsersAssigneeQuery,\n} = gqlUsers\n\nexport const { useGetUserSessionsQuery, useGetCurrentUserQuery } = enhancedApi\nexport default injectedApi\n"],"names":["usersApi","gqlApi","parseAllAttribs","users","_a"],"mappings":"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"}
1
+ {"version":3,"file":"getUsers.cjs.js","sources":["../../../../../../src/api/queries/users/getUsers.ts"],"sourcesContent":["import { gqlApi, usersApi } from '@shared/api/generated'\nimport { parseAllAttribs } from '@shared/api'\nimport {\n GetActiveUsersCountQuery,\n GetAllAssigneesQuery,\n GetAllProjectUsersAsAssigneeQuery,\n} from '@shared/api'\n\nconst USER_BY_NAME_QUERY = `\n query UserList($name:String!) {\n users(name: $name) {\n edges {\n node {\n name\n isAdmin\n isManager\n isService\n isDeveloper\n isGuest\n active\n accessGroups\n defaultAccessGroups\n hasPassword\n allAttrib\n }\n }\n }\n }\n`\nconst USERS_QUERY = `\n query UserList {\n users(last: 2000) {\n edges {\n node {\n name\n isAdmin\n isManager\n isService\n isDeveloper\n isGuest\n active\n userPool\n accessGroups\n defaultAccessGroups\n hasPassword\n createdAt\n updatedAt\n apiKeyPreview\n allAttrib\n }\n }\n }\n }\n`\n\nconst ASSIGNEES_BY_NAME_QUERY = `\nquery Assignees($names: [String!]!){\n users(names: $names) {\n edges {\n node {\n name\n attrib {\n fullName\n }\n }\n }\n}\n}`\nconst ASSIGNEES_QUERY = `\nquery Assignees($projectName: String) {\n users(last: 2000 projectName: $projectName) {\n edges {\n node {\n name\n attrib {\n fullName\n }\n }\n }\n}\n}`\n\nconst enhancedApi = usersApi.enhanceEndpoints({\n endpoints: {\n getCurrentUser: {\n providesTags: [{ type: 'user', id: 'LIST' }],\n },\n getUserSessions: {\n transformResponse: (res: any) => res?.sessions,\n providesTags: (_res, _g, { userName }) => [{ type: 'session', id: userName }],\n },\n },\n})\n\nconst injectedApi = gqlApi.injectEndpoints({\n endpoints: (build) => ({\n getUsers: build.query({\n query: () => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: USERS_QUERY,\n variables: {},\n },\n }),\n transformResponse: (res: any, _meta, { selfName }) => {\n if (res?.errors) {\n console.log(res.errors)\n throw new Error(res.errors[0].message)\n }\n\n return res?.data?.users.edges.map((e: any) => ({\n ...e.node,\n self: e.node.name === selfName,\n avatarUrl: `/api/users/${e.node.name}/avatar`,\n accessGroups: e.node.accessGroups ? JSON.parse(e.node.accessGroups) : {},\n attrib: parseAllAttribs(e.node.allAttrib),\n }))\n },\n providesTags: (users) =>\n users\n ? [...users.map((e: any) => ({ type: 'user', id: e.name })), { type: 'user', id: 'LIST' }]\n : [{ type: 'user', id: 'LIST' }],\n }),\n getUserByName: build.query({\n query: ({ name }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: USER_BY_NAME_QUERY,\n variables: { name },\n },\n }),\n transformResponse: (res: any) =>\n res?.data?.users.edges.map((e: any) => ({\n ...e.node,\n avatarUrl: `/api/users/${e.node?.name}/avatar`,\n attrib: parseAllAttribs(e.node.allAttrib),\n })),\n providesTags: (res) =>\n res\n ? [...res.map((e: any) => ({ type: 'user', id: e.name })), { type: 'user', id: 'LIST' }]\n : ['user', { type: 'user', id: 'LIST' }],\n }),\n getUsersAssignee: build.query({\n query: ({ names, projectName }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: names ? ASSIGNEES_BY_NAME_QUERY : ASSIGNEES_QUERY,\n variables: { names, projectName },\n },\n }),\n transformResponse: (res: any) =>\n res?.data?.users.edges.flatMap((u: any) => {\n if (!u.node) return []\n\n const n = u.node\n\n return {\n name: n.name,\n fullName: n.attrib?.fullName,\n avatarUrl: `/api/users/${n.name}/avatar`,\n }\n }),\n providesTags: (res) =>\n res\n ? [\n ...res.map((user: any) => ({ type: 'user', id: user.name })),\n { type: 'user', id: 'LIST' },\n ]\n : [{ type: 'user', id: 'LIST' }],\n }),\n }),\n overrideExisting: true,\n})\n\ntype AssigneeNode = GetAllProjectUsersAsAssigneeQuery['users']['edges'][0]['node']\nexport type Assignees = {\n name: AssigneeNode['name']\n fullName: AssigneeNode['attrib']['fullName']\n updatedAt: AssigneeNode['updatedAt']\n}[]\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetAllProjectUsersAsAssignee'> & {\n GetAllProjectUsersAsAssignee: OverrideResultType<\n Definitions['GetAllProjectUsersAsAssignee'],\n Assignees\n >\n GetActiveUsersCount: OverrideResultType<Definitions['GetActiveUsersCount'], number>\n GetAllAssignees: OverrideResultType<Definitions['GetAllAssignees'], Assignees>\n}\n\nconst gqlUsers = injectedApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetAllProjectUsersAsAssignee: {\n transformResponse: (res: GetAllProjectUsersAsAssigneeQuery) =>\n res.users.edges.map((e) => ({\n name: e.node.name,\n fullName: e.node.attrib.fullName,\n updatedAt: e.node.updatedAt,\n })),\n providesTags: (res) =>\n res\n ? [{ type: 'user', id: 'LIST' }, ...res.map((e) => ({ type: 'user', id: e.name }))]\n : [{ type: 'user', id: 'LIST' }],\n },\n GetActiveUsersCount: {\n transformResponse: (res: GetActiveUsersCountQuery) =>\n res.users.edges.filter((e) => e.node.active && !e.node.isGuest).length,\n providesTags: [{ type: 'user', id: 'LIST' }],\n },\n GetAllAssignees: {\n transformResponse: (res: GetAllAssigneesQuery) =>\n res.users.edges.map((e) => ({\n name: e.node.name,\n fullName: e.node.attrib.fullName,\n updatedAt: e.node.updatedAt,\n })),\n providesTags: (res) =>\n res\n ? [{ type: 'user', id: 'LIST' }, ...res.map((e) => ({ type: 'user', id: e.name }))]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const {\n useGetAllProjectUsersAsAssigneeQuery,\n useLazyGetAllProjectUsersAsAssigneeQuery,\n useGetActiveUsersCountQuery,\n useGetAllAssigneesQuery,\n useGetUsersQuery,\n useGetUserByNameQuery,\n useGetUsersAssigneeQuery,\n} = gqlUsers\n\nexport const { useGetUserSessionsQuery, useGetCurrentUserQuery } = enhancedApi\nexport default injectedApi\n"],"names":["usersApi","gqlApi","parseAllAttribs","users","_a"],"mappings":"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"}
@@ -33,6 +33,7 @@ import { api as injectedRtkApi } from "../../generated/users.es.js";
33
33
  import "../../generated/versions.es.js";
34
34
  import "../../generated/workfiles.es.js";
35
35
  import "../../generated/ynputCloud.es.js";
36
+ import "../../generated/grouping.es.js";
36
37
  import "../actions/getActions.es.js";
37
38
  import "../activities/getActivities.es.js";
38
39
  import "../activities/updateActivities.es.js";
@@ -62,6 +63,7 @@ import "../userDashboard/getUserDashboard.es.js";
62
63
  import "./updateUsers.es.js";
63
64
  import "../watchers/getWatchers.es.js";
64
65
  import "../permissions/getPermissions.es.js";
66
+ import "../grouping/getGrouping.es.js";
65
67
  const USER_BY_NAME_QUERY = `
66
68
  query UserList($name:String!) {
67
69
  users(name: $name) {
@@ -1 +1 @@
1
- {"version":3,"file":"getUsers.es.js","sources":["../../../../../../src/api/queries/users/getUsers.ts"],"sourcesContent":["import { gqlApi, usersApi } from '@shared/api/generated'\nimport { parseAllAttribs } from '@shared/api'\nimport {\n GetActiveUsersCountQuery,\n GetAllAssigneesQuery,\n GetAllProjectUsersAsAssigneeQuery,\n} from '@shared/api'\n\nconst USER_BY_NAME_QUERY = `\n query UserList($name:String!) {\n users(name: $name) {\n edges {\n node {\n name\n isAdmin\n isManager\n isService\n isDeveloper\n isGuest\n active\n accessGroups\n defaultAccessGroups\n hasPassword\n allAttrib\n }\n }\n }\n }\n`\nconst USERS_QUERY = `\n query UserList {\n users(last: 2000) {\n edges {\n node {\n name\n isAdmin\n isManager\n isService\n isDeveloper\n isGuest\n active\n userPool\n accessGroups\n defaultAccessGroups\n hasPassword\n createdAt\n updatedAt\n apiKeyPreview\n allAttrib\n }\n }\n }\n }\n`\n\nconst ASSIGNEES_BY_NAME_QUERY = `\nquery Assignees($names: [String!]!){\n users(names: $names) {\n edges {\n node {\n name\n attrib {\n fullName\n }\n }\n }\n}\n}`\nconst ASSIGNEES_QUERY = `\nquery Assignees($projectName: String) {\n users(last: 2000 projectName: $projectName) {\n edges {\n node {\n name\n attrib {\n fullName\n }\n }\n }\n}\n}`\n\nconst enhancedApi = usersApi.enhanceEndpoints({\n endpoints: {\n getCurrentUser: {\n providesTags: [{ type: 'user', id: 'LIST' }],\n },\n getUserSessions: {\n transformResponse: (res: any) => res?.sessions,\n providesTags: (_res, _g, { userName }) => [{ type: 'session', id: userName }],\n },\n },\n})\n\nconst injectedApi = gqlApi.injectEndpoints({\n endpoints: (build) => ({\n getUsers: build.query({\n query: () => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: USERS_QUERY,\n variables: {},\n },\n }),\n transformResponse: (res: any, _meta, { selfName }) => {\n if (res?.errors) {\n console.log(res.errors)\n throw new Error(res.errors[0].message)\n }\n\n return res?.data?.users.edges.map((e: any) => ({\n ...e.node,\n self: e.node.name === selfName,\n avatarUrl: `/api/users/${e.node.name}/avatar`,\n accessGroups: e.node.accessGroups ? JSON.parse(e.node.accessGroups) : {},\n attrib: parseAllAttribs(e.node.allAttrib),\n }))\n },\n providesTags: (users) =>\n users\n ? [...users.map((e: any) => ({ type: 'user', id: e.name })), { type: 'user', id: 'LIST' }]\n : [{ type: 'user', id: 'LIST' }],\n }),\n getUserByName: build.query({\n query: ({ name }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: USER_BY_NAME_QUERY,\n variables: { name },\n },\n }),\n transformResponse: (res: any) =>\n res?.data?.users.edges.map((e: any) => ({\n ...e.node,\n avatarUrl: `/api/users/${e.node?.name}/avatar`,\n attrib: parseAllAttribs(e.node.allAttrib),\n })),\n providesTags: (res) =>\n res\n ? [...res.map((e: any) => ({ type: 'user', id: e.name })), { type: 'user', id: 'LIST' }]\n : ['user', { type: 'user', id: 'LIST' }],\n }),\n getUsersAssignee: build.query({\n query: ({ names, projectName }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: names ? ASSIGNEES_BY_NAME_QUERY : ASSIGNEES_QUERY,\n variables: { names, projectName },\n },\n }),\n transformResponse: (res: any) =>\n res?.data?.users.edges.flatMap((u: any) => {\n if (!u.node) return []\n\n const n = u.node\n\n return {\n name: n.name,\n fullName: n.attrib?.fullName,\n avatarUrl: `/api/users/${n.name}/avatar`,\n }\n }),\n providesTags: (res) =>\n res\n ? [\n ...res.map((user: any) => ({ type: 'user', id: user.name })),\n { type: 'user', id: 'LIST' },\n ]\n : [{ type: 'user', id: 'LIST' }],\n }),\n }),\n overrideExisting: true,\n})\n\ntype AssigneeNode = GetAllProjectUsersAsAssigneeQuery['users']['edges'][0]['node']\nexport type Assignees = {\n name: AssigneeNode['name']\n fullName: AssigneeNode['attrib']['fullName']\n updatedAt: AssigneeNode['updatedAt']\n}[]\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetAllProjectUsersAsAssignee'> & {\n GetAllProjectUsersAsAssignee: OverrideResultType<\n Definitions['GetAllProjectUsersAsAssignee'],\n Assignees\n >\n GetActiveUsersCount: OverrideResultType<Definitions['GetActiveUsersCount'], number>\n GetAllAssignees: OverrideResultType<Definitions['GetAllAssignees'], Assignees>\n}\n\nconst gqlUsers = injectedApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetAllProjectUsersAsAssignee: {\n transformResponse: (res: GetAllProjectUsersAsAssigneeQuery) =>\n res.users.edges.map((e) => ({\n name: e.node.name,\n fullName: e.node.attrib.fullName,\n updatedAt: e.node.updatedAt,\n })),\n providesTags: (res) =>\n res\n ? [{ type: 'user', id: 'LIST' }, ...res.map((e) => ({ type: 'user', id: e.name }))]\n : [{ type: 'user', id: 'LIST' }],\n },\n GetActiveUsersCount: {\n transformResponse: (res: GetActiveUsersCountQuery) =>\n res.users.edges.filter((e) => e.node.active && !e.node.isGuest).length,\n providesTags: [{ type: 'user', id: 'LIST' }],\n },\n GetAllAssignees: {\n transformResponse: (res: GetAllAssigneesQuery) =>\n res.users.edges.map((e) => ({\n name: e.node.name,\n fullName: e.node.attrib.fullName,\n updatedAt: e.node.updatedAt,\n })),\n providesTags: (res) =>\n res\n ? [{ type: 'user', id: 'LIST' }, ...res.map((e) => ({ type: 'user', id: e.name }))]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const {\n useGetAllProjectUsersAsAssigneeQuery,\n useLazyGetAllProjectUsersAsAssigneeQuery,\n useGetActiveUsersCountQuery,\n useGetAllAssigneesQuery,\n useGetUsersQuery,\n useGetUserByNameQuery,\n useGetUsersAssigneeQuery,\n} = gqlUsers\n\nexport const { useGetUserSessionsQuery, useGetCurrentUserQuery } = enhancedApi\nexport default injectedApi\n"],"names":["usersApi","gqlApi","_a"],"mappings":"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"}
1
+ {"version":3,"file":"getUsers.es.js","sources":["../../../../../../src/api/queries/users/getUsers.ts"],"sourcesContent":["import { gqlApi, usersApi } from '@shared/api/generated'\nimport { parseAllAttribs } from '@shared/api'\nimport {\n GetActiveUsersCountQuery,\n GetAllAssigneesQuery,\n GetAllProjectUsersAsAssigneeQuery,\n} from '@shared/api'\n\nconst USER_BY_NAME_QUERY = `\n query UserList($name:String!) {\n users(name: $name) {\n edges {\n node {\n name\n isAdmin\n isManager\n isService\n isDeveloper\n isGuest\n active\n accessGroups\n defaultAccessGroups\n hasPassword\n allAttrib\n }\n }\n }\n }\n`\nconst USERS_QUERY = `\n query UserList {\n users(last: 2000) {\n edges {\n node {\n name\n isAdmin\n isManager\n isService\n isDeveloper\n isGuest\n active\n userPool\n accessGroups\n defaultAccessGroups\n hasPassword\n createdAt\n updatedAt\n apiKeyPreview\n allAttrib\n }\n }\n }\n }\n`\n\nconst ASSIGNEES_BY_NAME_QUERY = `\nquery Assignees($names: [String!]!){\n users(names: $names) {\n edges {\n node {\n name\n attrib {\n fullName\n }\n }\n }\n}\n}`\nconst ASSIGNEES_QUERY = `\nquery Assignees($projectName: String) {\n users(last: 2000 projectName: $projectName) {\n edges {\n node {\n name\n attrib {\n fullName\n }\n }\n }\n}\n}`\n\nconst enhancedApi = usersApi.enhanceEndpoints({\n endpoints: {\n getCurrentUser: {\n providesTags: [{ type: 'user', id: 'LIST' }],\n },\n getUserSessions: {\n transformResponse: (res: any) => res?.sessions,\n providesTags: (_res, _g, { userName }) => [{ type: 'session', id: userName }],\n },\n },\n})\n\nconst injectedApi = gqlApi.injectEndpoints({\n endpoints: (build) => ({\n getUsers: build.query({\n query: () => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: USERS_QUERY,\n variables: {},\n },\n }),\n transformResponse: (res: any, _meta, { selfName }) => {\n if (res?.errors) {\n console.log(res.errors)\n throw new Error(res.errors[0].message)\n }\n\n return res?.data?.users.edges.map((e: any) => ({\n ...e.node,\n self: e.node.name === selfName,\n avatarUrl: `/api/users/${e.node.name}/avatar`,\n accessGroups: e.node.accessGroups ? JSON.parse(e.node.accessGroups) : {},\n attrib: parseAllAttribs(e.node.allAttrib),\n }))\n },\n providesTags: (users) =>\n users\n ? [...users.map((e: any) => ({ type: 'user', id: e.name })), { type: 'user', id: 'LIST' }]\n : [{ type: 'user', id: 'LIST' }],\n }),\n getUserByName: build.query({\n query: ({ name }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: USER_BY_NAME_QUERY,\n variables: { name },\n },\n }),\n transformResponse: (res: any) =>\n res?.data?.users.edges.map((e: any) => ({\n ...e.node,\n avatarUrl: `/api/users/${e.node?.name}/avatar`,\n attrib: parseAllAttribs(e.node.allAttrib),\n })),\n providesTags: (res) =>\n res\n ? [...res.map((e: any) => ({ type: 'user', id: e.name })), { type: 'user', id: 'LIST' }]\n : ['user', { type: 'user', id: 'LIST' }],\n }),\n getUsersAssignee: build.query({\n query: ({ names, projectName }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: names ? ASSIGNEES_BY_NAME_QUERY : ASSIGNEES_QUERY,\n variables: { names, projectName },\n },\n }),\n transformResponse: (res: any) =>\n res?.data?.users.edges.flatMap((u: any) => {\n if (!u.node) return []\n\n const n = u.node\n\n return {\n name: n.name,\n fullName: n.attrib?.fullName,\n avatarUrl: `/api/users/${n.name}/avatar`,\n }\n }),\n providesTags: (res) =>\n res\n ? [\n ...res.map((user: any) => ({ type: 'user', id: user.name })),\n { type: 'user', id: 'LIST' },\n ]\n : [{ type: 'user', id: 'LIST' }],\n }),\n }),\n overrideExisting: true,\n})\n\ntype AssigneeNode = GetAllProjectUsersAsAssigneeQuery['users']['edges'][0]['node']\nexport type Assignees = {\n name: AssigneeNode['name']\n fullName: AssigneeNode['attrib']['fullName']\n updatedAt: AssigneeNode['updatedAt']\n}[]\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetAllProjectUsersAsAssignee'> & {\n GetAllProjectUsersAsAssignee: OverrideResultType<\n Definitions['GetAllProjectUsersAsAssignee'],\n Assignees\n >\n GetActiveUsersCount: OverrideResultType<Definitions['GetActiveUsersCount'], number>\n GetAllAssignees: OverrideResultType<Definitions['GetAllAssignees'], Assignees>\n}\n\nconst gqlUsers = injectedApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetAllProjectUsersAsAssignee: {\n transformResponse: (res: GetAllProjectUsersAsAssigneeQuery) =>\n res.users.edges.map((e) => ({\n name: e.node.name,\n fullName: e.node.attrib.fullName,\n updatedAt: e.node.updatedAt,\n })),\n providesTags: (res) =>\n res\n ? [{ type: 'user', id: 'LIST' }, ...res.map((e) => ({ type: 'user', id: e.name }))]\n : [{ type: 'user', id: 'LIST' }],\n },\n GetActiveUsersCount: {\n transformResponse: (res: GetActiveUsersCountQuery) =>\n res.users.edges.filter((e) => e.node.active && !e.node.isGuest).length,\n providesTags: [{ type: 'user', id: 'LIST' }],\n },\n GetAllAssignees: {\n transformResponse: (res: GetAllAssigneesQuery) =>\n res.users.edges.map((e) => ({\n name: e.node.name,\n fullName: e.node.attrib.fullName,\n updatedAt: e.node.updatedAt,\n })),\n providesTags: (res) =>\n res\n ? [{ type: 'user', id: 'LIST' }, ...res.map((e) => ({ type: 'user', id: e.name }))]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const {\n useGetAllProjectUsersAsAssigneeQuery,\n useLazyGetAllProjectUsersAsAssigneeQuery,\n useGetActiveUsersCountQuery,\n useGetAllAssigneesQuery,\n useGetUsersQuery,\n useGetUserByNameQuery,\n useGetUsersAssigneeQuery,\n} = gqlUsers\n\nexport const { useGetUserSessionsQuery, useGetCurrentUserQuery } = enhancedApi\nexport default injectedApi\n"],"names":["usersApi","gqlApi","_a"],"mappings":"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"}
@@ -35,6 +35,7 @@ const users = require("../../generated/users.cjs.js");
35
35
  require("../../generated/versions.cjs.js");
36
36
  require("../../generated/workfiles.cjs.js");
37
37
  require("../../generated/ynputCloud.cjs.js");
38
+ require("../../generated/grouping.cjs.js");
38
39
  const updateUserApi = users.api.enhanceEndpoints({
39
40
  endpoints: {
40
41
  deleteUser: {
@@ -1 +1 @@
1
- {"version":3,"file":"updateUsers.cjs.js","sources":["../../../../../../src/api/queries/users/updateUsers.ts"],"sourcesContent":["import { FetchBaseQueryError } from '@reduxjs/toolkit/query'\nimport { usersApi } from '@shared/api/generated'\n\nconst updateUserApi = usersApi.enhanceEndpoints({\n endpoints: {\n deleteUser: {\n transformErrorResponse: (res) => res.data,\n invalidatesTags: () => [{ type: 'user', id: 'LIST' }],\n },\n setFrontendPreferences: {\n // @ts-expect-error - disableInvalidations is not in the api\n invalidatesTags: (_result, _error, { userName, disableInvalidations }) =>\n !disableInvalidations ? [{ type: 'user', id: userName }, 'info'] : [],\n async onQueryStarted({ patchData }, { dispatch, queryFulfilled, getState }) {\n // get current preferences\n\n // optimistic update the user cache\n const patch = dispatch(\n usersApi.util.updateQueryData('getCurrentUser', undefined, (draft) => {\n if (draft?.data) {\n draft.data.frontendPreferences = { ...draft.data.frontendPreferences, ...patchData }\n }\n }),\n )\n try {\n await queryFulfilled\n } catch {\n // rollback the optimistic update if the query fails\n patch.undo()\n }\n }, // onQueryStarted\n },\n },\n})\n\nconst updateUser = updateUserApi.injectEndpoints({\n endpoints: (build) => ({\n updateUser: build.mutation({\n query: ({ name, patch }) => ({\n url: `/api/users/${name}`,\n method: 'PATCH',\n body: patch,\n }),\n transformErrorResponse: (res) => res.data,\n invalidatesTags: (_result, _error, { name }) => [\n { type: 'user', id: name },\n { type: 'user', id: 'LIST' },\n { type: 'userPool', id: 'LIST' },\n { type: 'feedback', id: 'LIST' },\n 'info',\n ],\n }),\n updateUserName: build.mutation({\n query: ({ name, newName }) => ({\n url: `/api/users/${name}/rename`,\n method: 'PATCH',\n body: { newName },\n }),\n invalidatesTags: (_result, _error, { name }) => [\n { type: 'user', id: name },\n { type: 'user', id: 'LIST' },\n ],\n transformErrorResponse: (res) => res.data,\n }),\n updateUserPassword: build.mutation({\n query: ({ name, password }) => ({\n url: `/api/users/${name}/password`,\n method: 'PATCH',\n body: { password },\n }),\n invalidatesTags: () => ['user'],\n transformErrorResponse: (res) => res.data,\n }),\n addUser: build.mutation({\n query: ({ name, user }) => ({\n url: `/api/users/${name}`,\n method: 'PUT',\n body: user,\n }),\n transformErrorResponse: (res) => res.data,\n invalidatesTags: [{ type: 'user', id: 'LIST' }],\n }),\n updateUserAPIKey: build.mutation({\n query: ({ name, apiKey }) => ({\n url: `/api/users/${name}/password`,\n method: 'PATCH',\n body: { apiKey },\n }),\n transformErrorResponse: (res) => res.data,\n invalidatesTags: () => [{ type: 'user', id: 'LIST' }],\n }),\n invalidateUserSession: build.mutation({\n query: ({ name, token }) => ({\n url: `/api/users/${name}/sessions/${token}`,\n method: 'DELETE',\n }),\n invalidatesTags: (_res, _err, { token }) => [{ type: 'session', id: token }],\n }),\n }),\n overrideExisting: true,\n})\n\nconst updateUser2 = updateUser.injectEndpoints({\n endpoints: (build) => ({\n // update multiple users at once\n updateUsers: build.mutation<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any[],\n { name: string; patch: object }[]\n >({\n //\n queryFn: async (updates, { dispatch }) => {\n const results = await Promise.all(\n updates.map(({ name, patch }: { name: string; patch: object }) => {\n return dispatch(updateUser.endpoints.updateUser.initiate({ name, patch }))\n }),\n )\n\n // Check if any of the results have an error\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const firstError = results.find((result: any) => result.error)\n if (firstError) {\n return { error: firstError.error as FetchBaseQueryError }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return { data: results.map((result: any) => result.data) }\n },\n }),\n }),\n})\n\nexport const {\n useUpdateUserMutation,\n useUpdateUsersMutation,\n useUpdateUserNameMutation,\n useUpdateUserPasswordMutation,\n useAddUserMutation,\n useDeleteUserMutation,\n useUpdateUserAPIKeyMutation,\n useInvalidateUserSessionMutation,\n useSetFrontendPreferencesMutation,\n} = updateUser2\nexport { updateUser2 as userQueries }\n"],"names":["usersApi"],"mappings":"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"}
1
+ {"version":3,"file":"updateUsers.cjs.js","sources":["../../../../../../src/api/queries/users/updateUsers.ts"],"sourcesContent":["import { FetchBaseQueryError } from '@reduxjs/toolkit/query'\nimport { usersApi } from '@shared/api/generated'\n\nconst updateUserApi = usersApi.enhanceEndpoints({\n endpoints: {\n deleteUser: {\n transformErrorResponse: (res) => res.data,\n invalidatesTags: () => [{ type: 'user', id: 'LIST' }],\n },\n setFrontendPreferences: {\n // @ts-expect-error - disableInvalidations is not in the api\n invalidatesTags: (_result, _error, { userName, disableInvalidations }) =>\n !disableInvalidations ? [{ type: 'user', id: userName }, 'info'] : [],\n async onQueryStarted({ patchData }, { dispatch, queryFulfilled, getState }) {\n // get current preferences\n\n // optimistic update the user cache\n const patch = dispatch(\n usersApi.util.updateQueryData('getCurrentUser', undefined, (draft) => {\n if (draft?.data) {\n draft.data.frontendPreferences = { ...draft.data.frontendPreferences, ...patchData }\n }\n }),\n )\n try {\n await queryFulfilled\n } catch {\n // rollback the optimistic update if the query fails\n patch.undo()\n }\n }, // onQueryStarted\n },\n },\n})\n\nconst updateUser = updateUserApi.injectEndpoints({\n endpoints: (build) => ({\n updateUser: build.mutation({\n query: ({ name, patch }) => ({\n url: `/api/users/${name}`,\n method: 'PATCH',\n body: patch,\n }),\n transformErrorResponse: (res) => res.data,\n invalidatesTags: (_result, _error, { name }) => [\n { type: 'user', id: name },\n { type: 'user', id: 'LIST' },\n { type: 'userPool', id: 'LIST' },\n { type: 'feedback', id: 'LIST' },\n 'info',\n ],\n }),\n updateUserName: build.mutation({\n query: ({ name, newName }) => ({\n url: `/api/users/${name}/rename`,\n method: 'PATCH',\n body: { newName },\n }),\n invalidatesTags: (_result, _error, { name }) => [\n { type: 'user', id: name },\n { type: 'user', id: 'LIST' },\n ],\n transformErrorResponse: (res) => res.data,\n }),\n updateUserPassword: build.mutation({\n query: ({ name, password }) => ({\n url: `/api/users/${name}/password`,\n method: 'PATCH',\n body: { password },\n }),\n invalidatesTags: () => ['user'],\n transformErrorResponse: (res) => res.data,\n }),\n addUser: build.mutation({\n query: ({ name, user }) => ({\n url: `/api/users/${name}`,\n method: 'PUT',\n body: user,\n }),\n transformErrorResponse: (res) => res.data,\n invalidatesTags: [{ type: 'user', id: 'LIST' }],\n }),\n updateUserAPIKey: build.mutation({\n query: ({ name, apiKey }) => ({\n url: `/api/users/${name}/password`,\n method: 'PATCH',\n body: { apiKey },\n }),\n transformErrorResponse: (res) => res.data,\n invalidatesTags: () => [{ type: 'user', id: 'LIST' }],\n }),\n invalidateUserSession: build.mutation({\n query: ({ name, token }) => ({\n url: `/api/users/${name}/sessions/${token}`,\n method: 'DELETE',\n }),\n invalidatesTags: (_res, _err, { token }) => [{ type: 'session', id: token }],\n }),\n }),\n overrideExisting: true,\n})\n\nconst updateUser2 = updateUser.injectEndpoints({\n endpoints: (build) => ({\n // update multiple users at once\n updateUsers: build.mutation<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any[],\n { name: string; patch: object }[]\n >({\n //\n queryFn: async (updates, { dispatch }) => {\n const results = await Promise.all(\n updates.map(({ name, patch }: { name: string; patch: object }) => {\n return dispatch(updateUser.endpoints.updateUser.initiate({ name, patch }))\n }),\n )\n\n // Check if any of the results have an error\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const firstError = results.find((result: any) => result.error)\n if (firstError) {\n return { error: firstError.error as FetchBaseQueryError }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return { data: results.map((result: any) => result.data) }\n },\n }),\n }),\n})\n\nexport const {\n useUpdateUserMutation,\n useUpdateUsersMutation,\n useUpdateUserNameMutation,\n useUpdateUserPasswordMutation,\n useAddUserMutation,\n useDeleteUserMutation,\n useUpdateUserAPIKeyMutation,\n useInvalidateUserSessionMutation,\n useSetFrontendPreferencesMutation,\n} = updateUser2\nexport { updateUser2 as userQueries }\n"],"names":["usersApi"],"mappings":"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"}
@@ -33,6 +33,7 @@ import { api as injectedRtkApi } from "../../generated/users.es.js";
33
33
  import "../../generated/versions.es.js";
34
34
  import "../../generated/workfiles.es.js";
35
35
  import "../../generated/ynputCloud.es.js";
36
+ import "../../generated/grouping.es.js";
36
37
  const updateUserApi = injectedRtkApi.enhanceEndpoints({
37
38
  endpoints: {
38
39
  deleteUser: {