@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":"updateEntity.cjs.js","sources":["../../../../../../src/api/queries/entities/updateEntity.ts"],"sourcesContent":["// @ts-nocheck\n\nimport api from './getEntity'\nimport { detailsPanelQueries } from '@shared/api/queries'\nimport { patchDetailsPanelEntity } from '@shared/api'\nimport { toast } from 'react-toastify'\nimport { dashboardQueries, getKanbanTasks } from '@shared/api/queries/userDashboard'\nimport { patchOverviewFolders, patchOverviewTasks } from '@shared/api/queries/overview'\n\nconst patchKanban = (\n { assignees = [], projects = [] },\n { newAssignees, taskId, data, taskData },\n { dispatch },\n) => {\n let kanbanPatched = false\n const patchResult = dispatch(\n dashboardQueries.util.updateQueryData(\n 'GetKanban',\n { projects: projects, assignees: assignees },\n (draft) => {\n const taskIndex = draft.findIndex((task) => task.id === taskId)\n let patchData = { ...data }\n // if the data include attrib.priority it needs to be transformed to just priority\n // this is because priority is a top level field on kanban query\n if (data?.attrib?.priority) {\n const { priority } = patchData.attrib\n patchData = { ...patchData, priority }\n }\n // if the data include attrib.endDate it needs to be transformed to dueDate\n // this is because dueDate is a top level field on kanban query\n // NOTE TO SELF: Lets try to do these transforms after the cache the future.\n if (data?.attrib?.endDate) {\n const { endDate } = patchData.attrib\n patchData = { ...patchData, dueDate: endDate }\n delete patchData.attrib.endDate\n }\n\n if (taskIndex === -1) {\n // task not found, assignee must have just been added\n if (taskData) {\n // add the task to the cache\n draft.push(taskData)\n } else {\n // we don't have the task data, so we can't add it to the cache\n // we might add it later\n kanbanPatched = false\n }\n } else {\n kanbanPatched = true\n // first check that the task assignees still has a intersection with dashAssignees\n const hasSomeAssignees = newAssignees?.some((assignee) => assignees.includes(assignee))\n\n if (!hasSomeAssignees && newAssignees) {\n // remove from cache\n draft.splice(taskIndex, 1)\n } else {\n // task found: update the task in the cache\n const newData = { ...draft[taskIndex], ...patchData }\n draft[taskIndex] = newData\n }\n }\n },\n ),\n )\n\n return [patchResult, kanbanPatched]\n}\n\n// try to patch the progress view if there are queries that need to be updated\nconst patchProgressView = ({ operations = [], state, dispatch, entityType }) => {\n // create invalidation tags for progress view\n const invalidationTags = operations.map((o) => ({ type: 'progress', id: o.id }))\n // find the entries that need to be updated\n let entries = api.util.selectInvalidatedBy(state, invalidationTags)\n // if there are no entries, return\n if (!entries.length) return []\n\n try {\n // patch each entry with updated task data\n const patches = entries.map((entry) =>\n dispatch(\n api.util.updateQueryData(entry.endpointName, entry.originalArgs, (draft) => {\n for (const operation of operations) {\n const entityId = operation.id\n const patch = operation.data\n\n // patch the updated task data\n if (entityType === 'task') {\n const folderId = operation.meta?.folderId\n const folder = draft.find((folder) => folder.id === folderId)\n if (!folder) throw new Error('Patching progress view: folder not found')\n const task = folder.tasks?.find((task) => task.id === entityId)\n if (!task) throw new Error('Patching progress view: task not found')\n // update task\n const newTask = { ...task, ...patch }\n // update folder\n const newFolder = {\n ...folder,\n tasks: folder.tasks.map((t) => (t.id === entityId ? newTask : t)),\n }\n // update query\n const folderIndex = draft.findIndex((f) => f.id === folderId)\n draft[folderIndex] = newFolder\n } else if (entityType === 'folder') {\n const folder = draft.find((folder) => folder.id === entityId)\n if (!folder) throw new Error('Patching progress view: folder not found')\n // update folder\n const newFolder = { ...folder, ...patch }\n // update query\n const folderIndex = draft.findIndex((f) => f.id === entityId)\n draft[folderIndex] = newFolder\n }\n }\n }),\n ),\n )\n return patches\n } catch (error) {\n console.error(error)\n // invalidate the progress view queries instead\n dispatch(api.util.invalidateTags(invalidationTags))\n return []\n }\n}\n\nconst updateEntity = api.injectEndpoints({\n endpoints: (build) => ({\n updateEntity: build.mutation({\n query: ({ projectName, entityId, data, entityType }) => ({\n url: `/api/projects/${projectName}/${entityType}s/${entityId}`,\n method: 'PATCH',\n body: data,\n }),\n async onQueryStarted(\n { projectName, entityId, data, currentAssignees, entityType },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n const patchResults = []\n\n let invalidationTagsAfterComplete = []\n // if task, patch the GetKanban query\n if (entityType === 'task') {\n const dashboardProjects = getState().dashboard?.selectedProjects || []\n const dashboardUsers = getState().dashboard?.tasks.assignees || []\n const dashboardAssigneesIsMe = getState().dashboard?.tasks.assigneesFilter === 'me'\n const newAssignees = data.assignees\n\n const cacheUsers = dashboardAssigneesIsMe ? [getState().user?.name] : dashboardUsers\n\n const entityAssignees = [...new Set([...currentAssignees, ...(newAssignees || [])])]\n const hasSomeAssignees = entityAssignees.some((assignee) => cacheUsers.includes(assignee))\n const hasSomeProjects = dashboardProjects.some((project) => project === projectName)\n const currentDashNeedsUpdating = hasSomeAssignees && hasSomeProjects\n\n if (currentDashNeedsUpdating) {\n const [result, wasPatched] = patchKanban(\n { assignees: cacheUsers, projects: dashboardProjects },\n { newAssignees, taskId: entityId, data },\n { dispatch },\n )\n\n if (wasPatched) patchResults.push(result)\n\n if (!wasPatched) {\n // this means the task is not in the current kanban and it needs to be added\n\n // get the new task data\n getKanbanTasks({ projects: [projectName], taskIds: [entityId] }, dispatch).then(\n // use .then so that the rest of the code can run\n (response) => {\n let newTask = response.find((task) => task.id === entityId)\n if (newTask) {\n // add newAssignees as the actual DB hasn't been updated yet\n newTask = { ...newTask, assignees: newAssignees }\n\n patchKanban(\n { assignees: cacheUsers, projects: dashboardProjects },\n { newAssignees, taskId: entityId, taskData: newTask },\n { dispatch },\n )\n }\n },\n )\n }\n }\n\n // always update the kanban if task id matches\n const tags = [{ type: 'task', id: entityId }]\n\n // are we changing the assignees?\n if (newAssignees?.length) {\n const currentAssigneesSet = new Set(currentAssignees)\n const newAssigneesSet = new Set(newAssignees)\n\n const removedAssignees = [...currentAssigneesSet].filter(\n (assignee) => !newAssigneesSet.has(assignee),\n )\n const addedAssignees = [...newAssigneesSet].filter(\n (assignee) => !currentAssigneesSet.has(assignee),\n )\n\n const changedAssignees = [...new Set([...removedAssignees, ...addedAssignees])]\n\n // any query that has those changed assignees, needs to be updated\n // we are changing the assignees\n const assigneesTags = changedAssignees.map((assignee) => ({\n type: 'kanban',\n id: 'user-' + assignee + '-project-' + projectName,\n }))\n\n tags.push(...assigneesTags)\n\n // invalidate the watchers query\n dispatch(\n dashboardQueries.util.invalidateTags([\n {\n type: 'watchers',\n id: entityId,\n },\n ]),\n )\n }\n\n // invalidate any other caches\n let entries = dashboardQueries.util.selectInvalidatedBy(state, tags)\n let entriesToInvalidate = []\n\n // for each entry try to patch the data into the cache first\n for (const entry of entries) {\n const [patchResult, wasPatched] = patchKanban(\n {\n assignees: entry.originalArgs.assignees,\n projects: entry.originalArgs.projects,\n },\n {\n newAssignees,\n taskId: entityId,\n data,\n },\n { dispatch },\n )\n\n if (wasPatched) {\n patchResults.push(patchResult)\n } else {\n // if we couldn't patch, we need to invalidate the cache\n entriesToInvalidate.push(entry)\n }\n }\n\n // filter out current kanban query if we were able to patch it\n const currentKanbanCacheArgs = { projects: dashboardProjects, assignees: cacheUsers }\n entriesToInvalidate = entriesToInvalidate.filter(\n (entry) =>\n JSON.stringify(entry.originalArgs) !== JSON.stringify(currentKanbanCacheArgs),\n )\n\n // create the invalidation tags from originalArgs\n const invalidationTags = entries.map((entry) => ({\n type: 'kanban',\n id: JSON.stringify(entry.originalArgs),\n }))\n\n // invalidate the tags later, once the query is complete\n invalidationTagsAfterComplete.push(...invalidationTags)\n }\n\n // get all details panel caches that would be affected by this update\n const detailsPanelTags = [\n {\n type: 'entities',\n id: entityId,\n },\n ]\n\n const detailsPanelEntries = api.util.selectInvalidatedBy(state, detailsPanelTags)\n\n for (const entry of detailsPanelEntries) {\n // patch any entity details panels in dashboard\n let entityDetailsResult = dispatch(\n detailsPanelQueries.util.updateQueryData(\n 'getEntitiesDetailsPanel',\n entry.originalArgs,\n (draft) => {\n for (const entity of draft) {\n patchDetailsPanelEntity([{ entityId, data, entityType }], entity)\n }\n },\n ),\n )\n\n patchResults.push(entityDetailsResult)\n }\n\n try {\n await queryFulfilled\n\n // now invalidate any tags\n if (invalidationTagsAfterComplete.length) {\n dispatch(dashboardQueries.util.invalidateTags(invalidationTagsAfterComplete))\n }\n } catch (error) {\n console.error('error updating ' + entityType, error)\n toast.error(error?.error?.data?.detail || 'Failed to update task')\n patchResults.forEach((result) => result?.undo())\n }\n },\n }),\n updateEntities: build.mutation({\n async queryFn({ operations = [], entityType }, { dispatch, getState }) {\n try {\n const state = getState()\n const promises = []\n for (const { projectName, data, id, currentAssignees = [] } of operations) {\n const promise = dispatch(\n updateEntity.endpoints.updateEntity.initiate({\n projectName: projectName,\n entityId: id,\n data,\n entityType,\n currentAssignees,\n }),\n )\n promises.push(promise)\n }\n\n let progressPatches = []\n if (entityType === 'task' || entityType === 'folder') {\n // patch the progress page\n progressPatches = patchProgressView({ operations, state, dispatch, entityType })\n }\n\n const overviewPatches = []\n // convert id in operations to entityId\n const operationsWithEntityId = operations.map((o) => ({ ...o, entityId: o.id }))\n if (entityType === 'task' || entityType === 'folder') {\n // patch the overview page\n if (entityType === 'task') {\n patchOverviewTasks(operationsWithEntityId, { state, dispatch }, overviewPatches)\n }\n if (entityType === 'folder') {\n // patch the overview page\n patchOverviewFolders(operationsWithEntityId, { state, dispatch }, overviewPatches)\n console.log('invalidate overview folders')\n // invalidate overview folders query\n dispatch(api.util.invalidateTags([{ type: 'folder', id: 'LIST' }]))\n // invalidate overview tasks with folder as a parent\n dispatch(\n api.util.invalidateTags(\n operationsWithEntityId.map((o) => ({ type: 'overviewTask', id: o.entityId })),\n ),\n )\n }\n }\n\n // check if any of the requests failed and invalidate the tasks cache again to refetch\n const results = await Promise.allSettled(promises)\n\n // did any of the requests fail?\n const someError = results.some((result) => result.value?.error)\n if (someError) {\n dispatch(\n api.util.invalidateTags(operations.map((o) => ({ type: 'kanBanTask', id: o.id }))),\n )\n\n // revert the progress view patches\n progressPatches.forEach((patch) => patch?.undo())\n\n // revert the overview patches\n overviewPatches.forEach((patch) => patch?.undo())\n\n throw 'Failed to update some tasks'\n }\n\n const activityTags = []\n\n if (activityTags.length) {\n dispatch(api.util.invalidateTags(activityTags))\n }\n\n return { data: operations }\n } catch (error) {\n console.error(error)\n return { error }\n }\n },\n invalidatesTags: (result, error, { operations }) => [\n ...operations.map((o) => ({ id: o.id, type: 'review' })),\n ],\n }),\n }),\n overrideExisting: true,\n})\n\nexport const { useUpdateEntitiesMutation, useUpdateEntityMutation } = updateEntity\nexport { updateEntity as entitiesQueries }\n"],"names":["dashboardQueries","api","folder","task","getKanbanTasks","detailsPanelQueries","patchDetailsPanelEntity","toast","patchOverviewTasks","patchOverviewFolders"],"mappings":"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"}
1
+ {"version":3,"file":"updateEntity.cjs.js","sources":["../../../../../../src/api/queries/entities/updateEntity.ts"],"sourcesContent":["// @ts-nocheck\n\nimport api from './getEntity'\nimport { detailsPanelQueries } from '@shared/api/queries'\nimport { patchDetailsPanelEntity } from '@shared/api'\nimport { toast } from 'react-toastify'\nimport { dashboardQueries, getKanbanTasks } from '@shared/api/queries/userDashboard'\nimport { patchOverviewFolders, patchOverviewTasks } from '@shared/api/queries/overview'\n\nconst patchKanban = (\n { assignees = [], projects = [] },\n { newAssignees, taskId, data, taskData },\n { dispatch },\n) => {\n let kanbanPatched = false\n const patchResult = dispatch(\n dashboardQueries.util.updateQueryData(\n 'GetKanban',\n { projects: projects, assignees: assignees },\n (draft) => {\n const taskIndex = draft.findIndex((task) => task.id === taskId)\n let patchData = { ...data }\n // if the data include attrib.priority it needs to be transformed to just priority\n // this is because priority is a top level field on kanban query\n if (data?.attrib?.priority) {\n const { priority } = patchData.attrib\n patchData = { ...patchData, priority }\n }\n // if the data include attrib.endDate it needs to be transformed to dueDate\n // this is because dueDate is a top level field on kanban query\n // NOTE TO SELF: Lets try to do these transforms after the cache the future.\n if (data?.attrib?.endDate) {\n const { endDate } = patchData.attrib\n patchData = { ...patchData, dueDate: endDate }\n delete patchData.attrib.endDate\n }\n\n if (taskIndex === -1) {\n // task not found, assignee must have just been added\n if (taskData) {\n // add the task to the cache\n draft.push(taskData)\n } else {\n // we don't have the task data, so we can't add it to the cache\n // we might add it later\n kanbanPatched = false\n }\n } else {\n kanbanPatched = true\n // first check that the task assignees still has a intersection with dashAssignees\n const hasSomeAssignees = newAssignees?.some((assignee) => assignees.includes(assignee))\n\n if (!hasSomeAssignees && newAssignees) {\n // remove from cache\n draft.splice(taskIndex, 1)\n } else {\n // task found: update the task in the cache\n const newData = { ...draft[taskIndex], ...patchData }\n draft[taskIndex] = newData\n }\n }\n },\n ),\n )\n\n return [patchResult, kanbanPatched]\n}\n\n// try to patch the progress view if there are queries that need to be updated\nconst patchProgressView = ({ operations = [], state, dispatch, entityType }) => {\n // create invalidation tags for progress view\n const invalidationTags = operations.map((o) => ({ type: 'progress', id: o.id }))\n // find the entries that need to be updated\n let entries = api.util.selectInvalidatedBy(state, invalidationTags)\n // if there are no entries, return\n if (!entries.length) return []\n\n try {\n // patch each entry with updated task data\n const patches = entries.map((entry) =>\n dispatch(\n api.util.updateQueryData(entry.endpointName, entry.originalArgs, (draft) => {\n for (const operation of operations) {\n const entityId = operation.id\n const patch = operation.data\n\n // patch the updated task data\n if (entityType === 'task') {\n const folderId = operation.meta?.folderId\n const folder = draft.find((folder) => folder.id === folderId)\n if (!folder) throw new Error('Patching progress view: folder not found')\n const task = folder.tasks?.find((task) => task.id === entityId)\n if (!task) throw new Error('Patching progress view: task not found')\n // update task\n const newTask = { ...task, ...patch }\n // update folder\n const newFolder = {\n ...folder,\n tasks: folder.tasks.map((t) => (t.id === entityId ? newTask : t)),\n }\n // update query\n const folderIndex = draft.findIndex((f) => f.id === folderId)\n draft[folderIndex] = newFolder\n } else if (entityType === 'folder') {\n const folder = draft.find((folder) => folder.id === entityId)\n if (!folder) throw new Error('Patching progress view: folder not found')\n // update folder\n const newFolder = { ...folder, ...patch }\n // update query\n const folderIndex = draft.findIndex((f) => f.id === entityId)\n draft[folderIndex] = newFolder\n }\n }\n }),\n ),\n )\n return patches\n } catch (error) {\n console.error(error)\n // invalidate the progress view queries instead\n dispatch(api.util.invalidateTags(invalidationTags))\n return []\n }\n}\n\nconst updateEntity = api.injectEndpoints({\n endpoints: (build) => ({\n updateEntity: build.mutation({\n query: ({ projectName, entityId, data, entityType }) => ({\n url: `/api/projects/${projectName}/${entityType}s/${entityId}`,\n method: 'PATCH',\n body: data,\n }),\n async onQueryStarted(\n { projectName, entityId, data, currentAssignees, entityType },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n const patchResults = []\n\n let invalidationTagsAfterComplete = []\n // if task, patch the GetKanban query\n if (entityType === 'task') {\n const dashboardProjects = getState().dashboard?.selectedProjects || []\n const dashboardUsers = getState().dashboard?.tasks.assignees || []\n const dashboardAssigneesIsMe = getState().dashboard?.tasks.assigneesFilter === 'me'\n const newAssignees = data.assignees\n\n const cacheUsers = dashboardAssigneesIsMe ? [getState().user?.name] : dashboardUsers\n\n const entityAssignees = [...new Set([...currentAssignees, ...(newAssignees || [])])]\n const hasSomeAssignees = entityAssignees.some((assignee) => cacheUsers.includes(assignee))\n const hasSomeProjects = dashboardProjects.some((project) => project === projectName)\n const currentDashNeedsUpdating = hasSomeAssignees && hasSomeProjects\n\n if (currentDashNeedsUpdating) {\n const [result, wasPatched] = patchKanban(\n { assignees: cacheUsers, projects: dashboardProjects },\n { newAssignees, taskId: entityId, data },\n { dispatch },\n )\n\n if (wasPatched) patchResults.push(result)\n\n if (!wasPatched) {\n // this means the task is not in the current kanban and it needs to be added\n\n // get the new task data\n getKanbanTasks({ projects: [projectName], taskIds: [entityId] }, dispatch).then(\n // use .then so that the rest of the code can run\n (response) => {\n let newTask = response.find((task) => task.id === entityId)\n if (newTask) {\n // add newAssignees as the actual DB hasn't been updated yet\n newTask = { ...newTask, assignees: newAssignees }\n\n patchKanban(\n { assignees: cacheUsers, projects: dashboardProjects },\n { newAssignees, taskId: entityId, taskData: newTask },\n { dispatch },\n )\n }\n },\n )\n }\n }\n\n // always update the kanban if task id matches\n const tags = [{ type: 'task', id: entityId }]\n\n // are we changing the assignees?\n if (newAssignees?.length) {\n const currentAssigneesSet = new Set(currentAssignees)\n const newAssigneesSet = new Set(newAssignees)\n\n const removedAssignees = [...currentAssigneesSet].filter(\n (assignee) => !newAssigneesSet.has(assignee),\n )\n const addedAssignees = [...newAssigneesSet].filter(\n (assignee) => !currentAssigneesSet.has(assignee),\n )\n\n const changedAssignees = [...new Set([...removedAssignees, ...addedAssignees])]\n\n // any query that has those changed assignees, needs to be updated\n // we are changing the assignees\n const assigneesTags = changedAssignees.map((assignee) => ({\n type: 'kanban',\n id: 'user-' + assignee + '-project-' + projectName,\n }))\n\n tags.push(...assigneesTags)\n\n // invalidate the watchers query\n dispatch(\n dashboardQueries.util.invalidateTags([\n {\n type: 'watchers',\n id: entityId,\n },\n ]),\n )\n }\n\n // invalidate any other caches\n let entries = dashboardQueries.util.selectInvalidatedBy(state, tags)\n let entriesToInvalidate = []\n\n // for each entry try to patch the data into the cache first\n for (const entry of entries) {\n const [patchResult, wasPatched] = patchKanban(\n {\n assignees: entry.originalArgs.assignees,\n projects: entry.originalArgs.projects,\n },\n {\n newAssignees,\n taskId: entityId,\n data,\n },\n { dispatch },\n )\n\n if (wasPatched) {\n patchResults.push(patchResult)\n } else {\n // if we couldn't patch, we need to invalidate the cache\n entriesToInvalidate.push(entry)\n }\n }\n\n // filter out current kanban query if we were able to patch it\n const currentKanbanCacheArgs = { projects: dashboardProjects, assignees: cacheUsers }\n entriesToInvalidate = entriesToInvalidate.filter(\n (entry) =>\n JSON.stringify(entry.originalArgs) !== JSON.stringify(currentKanbanCacheArgs),\n )\n\n // create the invalidation tags from originalArgs\n const invalidationTags = entries.map((entry) => ({\n type: 'kanban',\n id: JSON.stringify(entry.originalArgs),\n }))\n\n // invalidate the tags later, once the query is complete\n invalidationTagsAfterComplete.push(...invalidationTags)\n }\n\n // get all details panel caches that would be affected by this update\n const detailsPanelTags = [\n {\n type: 'entities',\n id: entityId,\n },\n ]\n\n const detailsPanelEntries = api.util.selectInvalidatedBy(state, detailsPanelTags)\n\n for (const entry of detailsPanelEntries) {\n // patch any entity details panels in dashboard\n let entityDetailsResult = dispatch(\n detailsPanelQueries.util.updateQueryData(\n 'getEntitiesDetailsPanel',\n entry.originalArgs,\n (draft) => {\n for (const entity of draft) {\n patchDetailsPanelEntity([{ entityId, data, entityType }], entity)\n }\n },\n ),\n )\n\n patchResults.push(entityDetailsResult)\n }\n\n try {\n await queryFulfilled\n\n // now invalidate any tags\n if (invalidationTagsAfterComplete.length) {\n dispatch(dashboardQueries.util.invalidateTags(invalidationTagsAfterComplete))\n }\n } catch (error) {\n console.error('error updating ' + entityType, error)\n toast.error(error?.error?.data?.detail || 'Failed to update task')\n patchResults.forEach((result) => result?.undo())\n }\n },\n }),\n updateEntities: build.mutation({\n async queryFn({ operations = [], entityType }, { dispatch, getState }) {\n try {\n const state = getState()\n const promises = []\n for (const { projectName, data, id, currentAssignees = [] } of operations) {\n const promise = dispatch(\n updateEntity.endpoints.updateEntity.initiate({\n projectName: projectName,\n entityId: id,\n data,\n entityType,\n currentAssignees,\n }),\n )\n promises.push(promise)\n }\n\n let progressPatches = []\n if (entityType === 'task' || entityType === 'folder') {\n // patch the progress page\n progressPatches = patchProgressView({ operations, state, dispatch, entityType })\n }\n\n const overviewPatches = []\n // convert id in operations to entityId\n const operationsWithEntityId = operations.map((o) => ({ ...o, entityId: o.id }))\n if (entityType === 'task' || entityType === 'folder') {\n // patch the overview page\n if (entityType === 'task') {\n patchOverviewTasks(operationsWithEntityId, { state, dispatch }, overviewPatches)\n }\n if (entityType === 'folder') {\n // patch the overview page\n patchOverviewFolders(operationsWithEntityId, { state, dispatch }, overviewPatches)\n console.log('invalidate overview folders')\n // invalidate overview folders query\n dispatch(api.util.invalidateTags([{ type: 'folder', id: 'LIST' }]))\n // invalidate overview tasks with folder as a parent\n dispatch(\n api.util.invalidateTags(\n operationsWithEntityId.map((o) => ({ type: 'overviewTask', id: o.entityId })),\n ),\n )\n }\n }\n\n // check if any of the requests failed and invalidate the tasks cache again to refetch\n const results = await Promise.allSettled(promises)\n\n // did any of the requests fail?\n const someError = results.some((result) => result.value?.error)\n if (someError) {\n dispatch(\n api.util.invalidateTags(operations.map((o) => ({ type: 'kanBanTask', id: o.id }))),\n )\n\n // revert the progress view patches\n progressPatches.forEach((patch) => patch?.undo())\n\n // revert the overview patches\n overviewPatches.forEach((patch) => patch?.undo())\n\n throw 'Failed to update some tasks'\n }\n\n const activityTags = []\n\n if (activityTags.length) {\n dispatch(api.util.invalidateTags(activityTags))\n }\n\n return { data: operations }\n } catch (error) {\n console.error(error)\n return { error }\n }\n },\n invalidatesTags: (result, error, { operations }) => [\n ...operations.map((o) => ({ id: o.id, type: 'review' })),\n ],\n }),\n }),\n overrideExisting: true,\n})\n\nexport const { useUpdateEntitiesMutation, useUpdateEntityMutation } = updateEntity\nexport { updateEntity as entitiesQueries }\n"],"names":["dashboardQueries","api","folder","task","getKanbanTasks","detailsPanelQueries","patchDetailsPanelEntity","toast","patchOverviewTasks","patchOverviewFolders"],"mappings":"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"}
@@ -45,6 +45,7 @@ import "../../generated/users.es.js";
45
45
  import "../../generated/versions.es.js";
46
46
  import "../../generated/workfiles.es.js";
47
47
  import "../../generated/ynputCloud.es.js";
48
+ import "../../generated/grouping.es.js";
48
49
  import "../entityLists/getLists.es.js";
49
50
  import "../entityLists/updateLists.es.js";
50
51
  import "../entityLists/getListsAttributes.es.js";
@@ -62,6 +63,7 @@ import "../users/getUsers.es.js";
62
63
  import "../users/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
  import { toast } from "react-toastify";
66
68
  const patchKanban = ({ assignees = [], projects = [] }, { newAssignees, taskId, data, taskData }, { dispatch }) => {
67
69
  let kanbanPatched = false;
@@ -1 +1 @@
1
- {"version":3,"file":"updateEntity.es.js","sources":["../../../../../../src/api/queries/entities/updateEntity.ts"],"sourcesContent":["// @ts-nocheck\n\nimport api from './getEntity'\nimport { detailsPanelQueries } from '@shared/api/queries'\nimport { patchDetailsPanelEntity } from '@shared/api'\nimport { toast } from 'react-toastify'\nimport { dashboardQueries, getKanbanTasks } from '@shared/api/queries/userDashboard'\nimport { patchOverviewFolders, patchOverviewTasks } from '@shared/api/queries/overview'\n\nconst patchKanban = (\n { assignees = [], projects = [] },\n { newAssignees, taskId, data, taskData },\n { dispatch },\n) => {\n let kanbanPatched = false\n const patchResult = dispatch(\n dashboardQueries.util.updateQueryData(\n 'GetKanban',\n { projects: projects, assignees: assignees },\n (draft) => {\n const taskIndex = draft.findIndex((task) => task.id === taskId)\n let patchData = { ...data }\n // if the data include attrib.priority it needs to be transformed to just priority\n // this is because priority is a top level field on kanban query\n if (data?.attrib?.priority) {\n const { priority } = patchData.attrib\n patchData = { ...patchData, priority }\n }\n // if the data include attrib.endDate it needs to be transformed to dueDate\n // this is because dueDate is a top level field on kanban query\n // NOTE TO SELF: Lets try to do these transforms after the cache the future.\n if (data?.attrib?.endDate) {\n const { endDate } = patchData.attrib\n patchData = { ...patchData, dueDate: endDate }\n delete patchData.attrib.endDate\n }\n\n if (taskIndex === -1) {\n // task not found, assignee must have just been added\n if (taskData) {\n // add the task to the cache\n draft.push(taskData)\n } else {\n // we don't have the task data, so we can't add it to the cache\n // we might add it later\n kanbanPatched = false\n }\n } else {\n kanbanPatched = true\n // first check that the task assignees still has a intersection with dashAssignees\n const hasSomeAssignees = newAssignees?.some((assignee) => assignees.includes(assignee))\n\n if (!hasSomeAssignees && newAssignees) {\n // remove from cache\n draft.splice(taskIndex, 1)\n } else {\n // task found: update the task in the cache\n const newData = { ...draft[taskIndex], ...patchData }\n draft[taskIndex] = newData\n }\n }\n },\n ),\n )\n\n return [patchResult, kanbanPatched]\n}\n\n// try to patch the progress view if there are queries that need to be updated\nconst patchProgressView = ({ operations = [], state, dispatch, entityType }) => {\n // create invalidation tags for progress view\n const invalidationTags = operations.map((o) => ({ type: 'progress', id: o.id }))\n // find the entries that need to be updated\n let entries = api.util.selectInvalidatedBy(state, invalidationTags)\n // if there are no entries, return\n if (!entries.length) return []\n\n try {\n // patch each entry with updated task data\n const patches = entries.map((entry) =>\n dispatch(\n api.util.updateQueryData(entry.endpointName, entry.originalArgs, (draft) => {\n for (const operation of operations) {\n const entityId = operation.id\n const patch = operation.data\n\n // patch the updated task data\n if (entityType === 'task') {\n const folderId = operation.meta?.folderId\n const folder = draft.find((folder) => folder.id === folderId)\n if (!folder) throw new Error('Patching progress view: folder not found')\n const task = folder.tasks?.find((task) => task.id === entityId)\n if (!task) throw new Error('Patching progress view: task not found')\n // update task\n const newTask = { ...task, ...patch }\n // update folder\n const newFolder = {\n ...folder,\n tasks: folder.tasks.map((t) => (t.id === entityId ? newTask : t)),\n }\n // update query\n const folderIndex = draft.findIndex((f) => f.id === folderId)\n draft[folderIndex] = newFolder\n } else if (entityType === 'folder') {\n const folder = draft.find((folder) => folder.id === entityId)\n if (!folder) throw new Error('Patching progress view: folder not found')\n // update folder\n const newFolder = { ...folder, ...patch }\n // update query\n const folderIndex = draft.findIndex((f) => f.id === entityId)\n draft[folderIndex] = newFolder\n }\n }\n }),\n ),\n )\n return patches\n } catch (error) {\n console.error(error)\n // invalidate the progress view queries instead\n dispatch(api.util.invalidateTags(invalidationTags))\n return []\n }\n}\n\nconst updateEntity = api.injectEndpoints({\n endpoints: (build) => ({\n updateEntity: build.mutation({\n query: ({ projectName, entityId, data, entityType }) => ({\n url: `/api/projects/${projectName}/${entityType}s/${entityId}`,\n method: 'PATCH',\n body: data,\n }),\n async onQueryStarted(\n { projectName, entityId, data, currentAssignees, entityType },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n const patchResults = []\n\n let invalidationTagsAfterComplete = []\n // if task, patch the GetKanban query\n if (entityType === 'task') {\n const dashboardProjects = getState().dashboard?.selectedProjects || []\n const dashboardUsers = getState().dashboard?.tasks.assignees || []\n const dashboardAssigneesIsMe = getState().dashboard?.tasks.assigneesFilter === 'me'\n const newAssignees = data.assignees\n\n const cacheUsers = dashboardAssigneesIsMe ? [getState().user?.name] : dashboardUsers\n\n const entityAssignees = [...new Set([...currentAssignees, ...(newAssignees || [])])]\n const hasSomeAssignees = entityAssignees.some((assignee) => cacheUsers.includes(assignee))\n const hasSomeProjects = dashboardProjects.some((project) => project === projectName)\n const currentDashNeedsUpdating = hasSomeAssignees && hasSomeProjects\n\n if (currentDashNeedsUpdating) {\n const [result, wasPatched] = patchKanban(\n { assignees: cacheUsers, projects: dashboardProjects },\n { newAssignees, taskId: entityId, data },\n { dispatch },\n )\n\n if (wasPatched) patchResults.push(result)\n\n if (!wasPatched) {\n // this means the task is not in the current kanban and it needs to be added\n\n // get the new task data\n getKanbanTasks({ projects: [projectName], taskIds: [entityId] }, dispatch).then(\n // use .then so that the rest of the code can run\n (response) => {\n let newTask = response.find((task) => task.id === entityId)\n if (newTask) {\n // add newAssignees as the actual DB hasn't been updated yet\n newTask = { ...newTask, assignees: newAssignees }\n\n patchKanban(\n { assignees: cacheUsers, projects: dashboardProjects },\n { newAssignees, taskId: entityId, taskData: newTask },\n { dispatch },\n )\n }\n },\n )\n }\n }\n\n // always update the kanban if task id matches\n const tags = [{ type: 'task', id: entityId }]\n\n // are we changing the assignees?\n if (newAssignees?.length) {\n const currentAssigneesSet = new Set(currentAssignees)\n const newAssigneesSet = new Set(newAssignees)\n\n const removedAssignees = [...currentAssigneesSet].filter(\n (assignee) => !newAssigneesSet.has(assignee),\n )\n const addedAssignees = [...newAssigneesSet].filter(\n (assignee) => !currentAssigneesSet.has(assignee),\n )\n\n const changedAssignees = [...new Set([...removedAssignees, ...addedAssignees])]\n\n // any query that has those changed assignees, needs to be updated\n // we are changing the assignees\n const assigneesTags = changedAssignees.map((assignee) => ({\n type: 'kanban',\n id: 'user-' + assignee + '-project-' + projectName,\n }))\n\n tags.push(...assigneesTags)\n\n // invalidate the watchers query\n dispatch(\n dashboardQueries.util.invalidateTags([\n {\n type: 'watchers',\n id: entityId,\n },\n ]),\n )\n }\n\n // invalidate any other caches\n let entries = dashboardQueries.util.selectInvalidatedBy(state, tags)\n let entriesToInvalidate = []\n\n // for each entry try to patch the data into the cache first\n for (const entry of entries) {\n const [patchResult, wasPatched] = patchKanban(\n {\n assignees: entry.originalArgs.assignees,\n projects: entry.originalArgs.projects,\n },\n {\n newAssignees,\n taskId: entityId,\n data,\n },\n { dispatch },\n )\n\n if (wasPatched) {\n patchResults.push(patchResult)\n } else {\n // if we couldn't patch, we need to invalidate the cache\n entriesToInvalidate.push(entry)\n }\n }\n\n // filter out current kanban query if we were able to patch it\n const currentKanbanCacheArgs = { projects: dashboardProjects, assignees: cacheUsers }\n entriesToInvalidate = entriesToInvalidate.filter(\n (entry) =>\n JSON.stringify(entry.originalArgs) !== JSON.stringify(currentKanbanCacheArgs),\n )\n\n // create the invalidation tags from originalArgs\n const invalidationTags = entries.map((entry) => ({\n type: 'kanban',\n id: JSON.stringify(entry.originalArgs),\n }))\n\n // invalidate the tags later, once the query is complete\n invalidationTagsAfterComplete.push(...invalidationTags)\n }\n\n // get all details panel caches that would be affected by this update\n const detailsPanelTags = [\n {\n type: 'entities',\n id: entityId,\n },\n ]\n\n const detailsPanelEntries = api.util.selectInvalidatedBy(state, detailsPanelTags)\n\n for (const entry of detailsPanelEntries) {\n // patch any entity details panels in dashboard\n let entityDetailsResult = dispatch(\n detailsPanelQueries.util.updateQueryData(\n 'getEntitiesDetailsPanel',\n entry.originalArgs,\n (draft) => {\n for (const entity of draft) {\n patchDetailsPanelEntity([{ entityId, data, entityType }], entity)\n }\n },\n ),\n )\n\n patchResults.push(entityDetailsResult)\n }\n\n try {\n await queryFulfilled\n\n // now invalidate any tags\n if (invalidationTagsAfterComplete.length) {\n dispatch(dashboardQueries.util.invalidateTags(invalidationTagsAfterComplete))\n }\n } catch (error) {\n console.error('error updating ' + entityType, error)\n toast.error(error?.error?.data?.detail || 'Failed to update task')\n patchResults.forEach((result) => result?.undo())\n }\n },\n }),\n updateEntities: build.mutation({\n async queryFn({ operations = [], entityType }, { dispatch, getState }) {\n try {\n const state = getState()\n const promises = []\n for (const { projectName, data, id, currentAssignees = [] } of operations) {\n const promise = dispatch(\n updateEntity.endpoints.updateEntity.initiate({\n projectName: projectName,\n entityId: id,\n data,\n entityType,\n currentAssignees,\n }),\n )\n promises.push(promise)\n }\n\n let progressPatches = []\n if (entityType === 'task' || entityType === 'folder') {\n // patch the progress page\n progressPatches = patchProgressView({ operations, state, dispatch, entityType })\n }\n\n const overviewPatches = []\n // convert id in operations to entityId\n const operationsWithEntityId = operations.map((o) => ({ ...o, entityId: o.id }))\n if (entityType === 'task' || entityType === 'folder') {\n // patch the overview page\n if (entityType === 'task') {\n patchOverviewTasks(operationsWithEntityId, { state, dispatch }, overviewPatches)\n }\n if (entityType === 'folder') {\n // patch the overview page\n patchOverviewFolders(operationsWithEntityId, { state, dispatch }, overviewPatches)\n console.log('invalidate overview folders')\n // invalidate overview folders query\n dispatch(api.util.invalidateTags([{ type: 'folder', id: 'LIST' }]))\n // invalidate overview tasks with folder as a parent\n dispatch(\n api.util.invalidateTags(\n operationsWithEntityId.map((o) => ({ type: 'overviewTask', id: o.entityId })),\n ),\n )\n }\n }\n\n // check if any of the requests failed and invalidate the tasks cache again to refetch\n const results = await Promise.allSettled(promises)\n\n // did any of the requests fail?\n const someError = results.some((result) => result.value?.error)\n if (someError) {\n dispatch(\n api.util.invalidateTags(operations.map((o) => ({ type: 'kanBanTask', id: o.id }))),\n )\n\n // revert the progress view patches\n progressPatches.forEach((patch) => patch?.undo())\n\n // revert the overview patches\n overviewPatches.forEach((patch) => patch?.undo())\n\n throw 'Failed to update some tasks'\n }\n\n const activityTags = []\n\n if (activityTags.length) {\n dispatch(api.util.invalidateTags(activityTags))\n }\n\n return { data: operations }\n } catch (error) {\n console.error(error)\n return { error }\n }\n },\n invalidatesTags: (result, error, { operations }) => [\n ...operations.map((o) => ({ id: o.id, type: 'review' })),\n ],\n }),\n }),\n overrideExisting: true,\n})\n\nexport const { useUpdateEntitiesMutation, useUpdateEntityMutation } = updateEntity\nexport { updateEntity as entitiesQueries }\n"],"names":["dashboardQueries","api","folder","task","detailsPanelQueries"],"mappings":"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"}
1
+ {"version":3,"file":"updateEntity.es.js","sources":["../../../../../../src/api/queries/entities/updateEntity.ts"],"sourcesContent":["// @ts-nocheck\n\nimport api from './getEntity'\nimport { detailsPanelQueries } from '@shared/api/queries'\nimport { patchDetailsPanelEntity } from '@shared/api'\nimport { toast } from 'react-toastify'\nimport { dashboardQueries, getKanbanTasks } from '@shared/api/queries/userDashboard'\nimport { patchOverviewFolders, patchOverviewTasks } from '@shared/api/queries/overview'\n\nconst patchKanban = (\n { assignees = [], projects = [] },\n { newAssignees, taskId, data, taskData },\n { dispatch },\n) => {\n let kanbanPatched = false\n const patchResult = dispatch(\n dashboardQueries.util.updateQueryData(\n 'GetKanban',\n { projects: projects, assignees: assignees },\n (draft) => {\n const taskIndex = draft.findIndex((task) => task.id === taskId)\n let patchData = { ...data }\n // if the data include attrib.priority it needs to be transformed to just priority\n // this is because priority is a top level field on kanban query\n if (data?.attrib?.priority) {\n const { priority } = patchData.attrib\n patchData = { ...patchData, priority }\n }\n // if the data include attrib.endDate it needs to be transformed to dueDate\n // this is because dueDate is a top level field on kanban query\n // NOTE TO SELF: Lets try to do these transforms after the cache the future.\n if (data?.attrib?.endDate) {\n const { endDate } = patchData.attrib\n patchData = { ...patchData, dueDate: endDate }\n delete patchData.attrib.endDate\n }\n\n if (taskIndex === -1) {\n // task not found, assignee must have just been added\n if (taskData) {\n // add the task to the cache\n draft.push(taskData)\n } else {\n // we don't have the task data, so we can't add it to the cache\n // we might add it later\n kanbanPatched = false\n }\n } else {\n kanbanPatched = true\n // first check that the task assignees still has a intersection with dashAssignees\n const hasSomeAssignees = newAssignees?.some((assignee) => assignees.includes(assignee))\n\n if (!hasSomeAssignees && newAssignees) {\n // remove from cache\n draft.splice(taskIndex, 1)\n } else {\n // task found: update the task in the cache\n const newData = { ...draft[taskIndex], ...patchData }\n draft[taskIndex] = newData\n }\n }\n },\n ),\n )\n\n return [patchResult, kanbanPatched]\n}\n\n// try to patch the progress view if there are queries that need to be updated\nconst patchProgressView = ({ operations = [], state, dispatch, entityType }) => {\n // create invalidation tags for progress view\n const invalidationTags = operations.map((o) => ({ type: 'progress', id: o.id }))\n // find the entries that need to be updated\n let entries = api.util.selectInvalidatedBy(state, invalidationTags)\n // if there are no entries, return\n if (!entries.length) return []\n\n try {\n // patch each entry with updated task data\n const patches = entries.map((entry) =>\n dispatch(\n api.util.updateQueryData(entry.endpointName, entry.originalArgs, (draft) => {\n for (const operation of operations) {\n const entityId = operation.id\n const patch = operation.data\n\n // patch the updated task data\n if (entityType === 'task') {\n const folderId = operation.meta?.folderId\n const folder = draft.find((folder) => folder.id === folderId)\n if (!folder) throw new Error('Patching progress view: folder not found')\n const task = folder.tasks?.find((task) => task.id === entityId)\n if (!task) throw new Error('Patching progress view: task not found')\n // update task\n const newTask = { ...task, ...patch }\n // update folder\n const newFolder = {\n ...folder,\n tasks: folder.tasks.map((t) => (t.id === entityId ? newTask : t)),\n }\n // update query\n const folderIndex = draft.findIndex((f) => f.id === folderId)\n draft[folderIndex] = newFolder\n } else if (entityType === 'folder') {\n const folder = draft.find((folder) => folder.id === entityId)\n if (!folder) throw new Error('Patching progress view: folder not found')\n // update folder\n const newFolder = { ...folder, ...patch }\n // update query\n const folderIndex = draft.findIndex((f) => f.id === entityId)\n draft[folderIndex] = newFolder\n }\n }\n }),\n ),\n )\n return patches\n } catch (error) {\n console.error(error)\n // invalidate the progress view queries instead\n dispatch(api.util.invalidateTags(invalidationTags))\n return []\n }\n}\n\nconst updateEntity = api.injectEndpoints({\n endpoints: (build) => ({\n updateEntity: build.mutation({\n query: ({ projectName, entityId, data, entityType }) => ({\n url: `/api/projects/${projectName}/${entityType}s/${entityId}`,\n method: 'PATCH',\n body: data,\n }),\n async onQueryStarted(\n { projectName, entityId, data, currentAssignees, entityType },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n const patchResults = []\n\n let invalidationTagsAfterComplete = []\n // if task, patch the GetKanban query\n if (entityType === 'task') {\n const dashboardProjects = getState().dashboard?.selectedProjects || []\n const dashboardUsers = getState().dashboard?.tasks.assignees || []\n const dashboardAssigneesIsMe = getState().dashboard?.tasks.assigneesFilter === 'me'\n const newAssignees = data.assignees\n\n const cacheUsers = dashboardAssigneesIsMe ? [getState().user?.name] : dashboardUsers\n\n const entityAssignees = [...new Set([...currentAssignees, ...(newAssignees || [])])]\n const hasSomeAssignees = entityAssignees.some((assignee) => cacheUsers.includes(assignee))\n const hasSomeProjects = dashboardProjects.some((project) => project === projectName)\n const currentDashNeedsUpdating = hasSomeAssignees && hasSomeProjects\n\n if (currentDashNeedsUpdating) {\n const [result, wasPatched] = patchKanban(\n { assignees: cacheUsers, projects: dashboardProjects },\n { newAssignees, taskId: entityId, data },\n { dispatch },\n )\n\n if (wasPatched) patchResults.push(result)\n\n if (!wasPatched) {\n // this means the task is not in the current kanban and it needs to be added\n\n // get the new task data\n getKanbanTasks({ projects: [projectName], taskIds: [entityId] }, dispatch).then(\n // use .then so that the rest of the code can run\n (response) => {\n let newTask = response.find((task) => task.id === entityId)\n if (newTask) {\n // add newAssignees as the actual DB hasn't been updated yet\n newTask = { ...newTask, assignees: newAssignees }\n\n patchKanban(\n { assignees: cacheUsers, projects: dashboardProjects },\n { newAssignees, taskId: entityId, taskData: newTask },\n { dispatch },\n )\n }\n },\n )\n }\n }\n\n // always update the kanban if task id matches\n const tags = [{ type: 'task', id: entityId }]\n\n // are we changing the assignees?\n if (newAssignees?.length) {\n const currentAssigneesSet = new Set(currentAssignees)\n const newAssigneesSet = new Set(newAssignees)\n\n const removedAssignees = [...currentAssigneesSet].filter(\n (assignee) => !newAssigneesSet.has(assignee),\n )\n const addedAssignees = [...newAssigneesSet].filter(\n (assignee) => !currentAssigneesSet.has(assignee),\n )\n\n const changedAssignees = [...new Set([...removedAssignees, ...addedAssignees])]\n\n // any query that has those changed assignees, needs to be updated\n // we are changing the assignees\n const assigneesTags = changedAssignees.map((assignee) => ({\n type: 'kanban',\n id: 'user-' + assignee + '-project-' + projectName,\n }))\n\n tags.push(...assigneesTags)\n\n // invalidate the watchers query\n dispatch(\n dashboardQueries.util.invalidateTags([\n {\n type: 'watchers',\n id: entityId,\n },\n ]),\n )\n }\n\n // invalidate any other caches\n let entries = dashboardQueries.util.selectInvalidatedBy(state, tags)\n let entriesToInvalidate = []\n\n // for each entry try to patch the data into the cache first\n for (const entry of entries) {\n const [patchResult, wasPatched] = patchKanban(\n {\n assignees: entry.originalArgs.assignees,\n projects: entry.originalArgs.projects,\n },\n {\n newAssignees,\n taskId: entityId,\n data,\n },\n { dispatch },\n )\n\n if (wasPatched) {\n patchResults.push(patchResult)\n } else {\n // if we couldn't patch, we need to invalidate the cache\n entriesToInvalidate.push(entry)\n }\n }\n\n // filter out current kanban query if we were able to patch it\n const currentKanbanCacheArgs = { projects: dashboardProjects, assignees: cacheUsers }\n entriesToInvalidate = entriesToInvalidate.filter(\n (entry) =>\n JSON.stringify(entry.originalArgs) !== JSON.stringify(currentKanbanCacheArgs),\n )\n\n // create the invalidation tags from originalArgs\n const invalidationTags = entries.map((entry) => ({\n type: 'kanban',\n id: JSON.stringify(entry.originalArgs),\n }))\n\n // invalidate the tags later, once the query is complete\n invalidationTagsAfterComplete.push(...invalidationTags)\n }\n\n // get all details panel caches that would be affected by this update\n const detailsPanelTags = [\n {\n type: 'entities',\n id: entityId,\n },\n ]\n\n const detailsPanelEntries = api.util.selectInvalidatedBy(state, detailsPanelTags)\n\n for (const entry of detailsPanelEntries) {\n // patch any entity details panels in dashboard\n let entityDetailsResult = dispatch(\n detailsPanelQueries.util.updateQueryData(\n 'getEntitiesDetailsPanel',\n entry.originalArgs,\n (draft) => {\n for (const entity of draft) {\n patchDetailsPanelEntity([{ entityId, data, entityType }], entity)\n }\n },\n ),\n )\n\n patchResults.push(entityDetailsResult)\n }\n\n try {\n await queryFulfilled\n\n // now invalidate any tags\n if (invalidationTagsAfterComplete.length) {\n dispatch(dashboardQueries.util.invalidateTags(invalidationTagsAfterComplete))\n }\n } catch (error) {\n console.error('error updating ' + entityType, error)\n toast.error(error?.error?.data?.detail || 'Failed to update task')\n patchResults.forEach((result) => result?.undo())\n }\n },\n }),\n updateEntities: build.mutation({\n async queryFn({ operations = [], entityType }, { dispatch, getState }) {\n try {\n const state = getState()\n const promises = []\n for (const { projectName, data, id, currentAssignees = [] } of operations) {\n const promise = dispatch(\n updateEntity.endpoints.updateEntity.initiate({\n projectName: projectName,\n entityId: id,\n data,\n entityType,\n currentAssignees,\n }),\n )\n promises.push(promise)\n }\n\n let progressPatches = []\n if (entityType === 'task' || entityType === 'folder') {\n // patch the progress page\n progressPatches = patchProgressView({ operations, state, dispatch, entityType })\n }\n\n const overviewPatches = []\n // convert id in operations to entityId\n const operationsWithEntityId = operations.map((o) => ({ ...o, entityId: o.id }))\n if (entityType === 'task' || entityType === 'folder') {\n // patch the overview page\n if (entityType === 'task') {\n patchOverviewTasks(operationsWithEntityId, { state, dispatch }, overviewPatches)\n }\n if (entityType === 'folder') {\n // patch the overview page\n patchOverviewFolders(operationsWithEntityId, { state, dispatch }, overviewPatches)\n console.log('invalidate overview folders')\n // invalidate overview folders query\n dispatch(api.util.invalidateTags([{ type: 'folder', id: 'LIST' }]))\n // invalidate overview tasks with folder as a parent\n dispatch(\n api.util.invalidateTags(\n operationsWithEntityId.map((o) => ({ type: 'overviewTask', id: o.entityId })),\n ),\n )\n }\n }\n\n // check if any of the requests failed and invalidate the tasks cache again to refetch\n const results = await Promise.allSettled(promises)\n\n // did any of the requests fail?\n const someError = results.some((result) => result.value?.error)\n if (someError) {\n dispatch(\n api.util.invalidateTags(operations.map((o) => ({ type: 'kanBanTask', id: o.id }))),\n )\n\n // revert the progress view patches\n progressPatches.forEach((patch) => patch?.undo())\n\n // revert the overview patches\n overviewPatches.forEach((patch) => patch?.undo())\n\n throw 'Failed to update some tasks'\n }\n\n const activityTags = []\n\n if (activityTags.length) {\n dispatch(api.util.invalidateTags(activityTags))\n }\n\n return { data: operations }\n } catch (error) {\n console.error(error)\n return { error }\n }\n },\n invalidatesTags: (result, error, { operations }) => [\n ...operations.map((o) => ({ id: o.id, type: 'review' })),\n ],\n }),\n }),\n overrideExisting: true,\n})\n\nexport const { useUpdateEntitiesMutation, useUpdateEntityMutation } = updateEntity\nexport { updateEntity as entitiesQueries }\n"],"names":["dashboardQueries","api","folder","task","detailsPanelQueries"],"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 getOverview = require("../overview/getOverview.cjs.js");
39
40
  require("../overview/updateOverview.cjs.js");
40
41
  require("lodash");
@@ -1 +1 @@
1
- {"version":3,"file":"getLists.cjs.js","sources":["../../../../../../src/api/queries/entityLists/getLists.ts"],"sourcesContent":["import { gqlApi } from '@shared/api/generated'\nimport {\n FetchBaseQueryError,\n DefinitionsFromApi,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\nimport type {\n GetListItemsQuery,\n GetListItemsQueryVariables,\n GetListsQuery,\n GetListsQueryVariables,\n} from '@shared/api'\nimport { parseAllAttribs } from '../overview'\nimport { PubSub } from '@shared/util'\nimport {\n GetListItemsResult,\n GetListsResult,\n ListItemMessage,\n ListItemsPageParam,\n ListsPageParam,\n} from './types'\n\n// GRAPHQL API (getLists and getListItems)\n// Define the LISTS_PER_PAGE constant for pagination\nexport const LISTS_PER_PAGE = 500\nexport const LIST_ITEMS_PER_PAGE = 100\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetLists' | 'GetListItems'> & {\n GetLists: OverrideResultType<Definitions['GetLists'], GetListsResult>\n GetListItems: OverrideResultType<Definitions['GetListItems'], GetListItemsResult>\n}\n\nconst getListsGqlApiEnhanced = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetLists: {\n transformResponse: (response: GetListsQuery): GetListsResult => {\n return {\n // @ts-expect-error - entityType is string\n lists: response.project.entityLists.edges.map((edge) => edge.node),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n },\n GetListItems: {\n transformResponse: (response: GetListItemsQuery): GetListItemsResult => {\n return {\n items: response.project.entityLists.edges.flatMap((listEdge) =>\n listEdge.node.items.edges.map(({ node, ...edge }) => {\n return {\n ...node,\n ...edge,\n attrib: parseAllAttribs(edge.allAttrib),\n } as GetListItemsResult['items'][number]\n }),\n ),\n pageInfo: response.project.entityLists.edges[0].node.items.pageInfo,\n }\n },\n },\n },\n})\n\nconst getListsGqlApiInjected = getListsGqlApiEnhanced.injectEndpoints({\n endpoints: (build) => ({\n getListsInfinite: build.infiniteQuery<\n GetListsResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetLists.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => [\n { type: 'entityList', id: 'LIST' },\n ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.id,\n })),\n ],\n async onCacheEntryAdded(\n _args,\n { cacheDataLoaded, cacheEntryRemoved, dispatch, updateCachedData },\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: ListItemMessage) => {\n if (topic !== 'entity_list.changed') return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n\n // We have all the data we need to update the cache\n updateCachedData((draft) => {\n const list = draft.pages.flatMap((page) => page.lists).find((l) => l.id === id)\n if (!list) return\n const newList = {\n ...list,\n label: summary.label,\n entityType: summary.entity_type,\n entityListType: summary.entity_list_type,\n count: summary.count,\n }\n\n Object.assign(list, newList)\n })\n // NOTE: We have to invalidate here as we don't know if other fields are updated not included in the updateCachedData\n // invalidates lists list cache\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityList', id: `LIST` }]))\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity_list.changed', 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 getListItemsInfinite: build.infiniteQuery<\n GetListItemsResult,\n Omit<GetListItemsQueryVariables, 'first' | 'after' | 'before' | 'last'> & { desc?: boolean },\n ListItemsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { sortBy, desc, ...rest } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams: GetListItemsQueryVariables = {\n ...rest,\n first: LIST_ITEMS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Add cursor-based pagination\n queryParams.after = cursor || undefined\n queryParams.first = LIST_ITEMS_PER_PAGE\n\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.after = undefined\n queryParams.last = LIST_ITEMS_PER_PAGE\n queryParams.first = undefined\n }\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListItems.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) throw result.error\n\n return {\n data: result.data || {\n items: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityListItem', id: 'LIST' },\n { type: 'entityListItem', id: listId },\n { type: 'entityListItem', id: projectName },\n ...(result?.pages.flatMap((page) => page.items) || [])\n .filter((i) => !!i)\n .flatMap((item) => [\n {\n type: 'entityListItem',\n id: item.id,\n },\n {\n type: 'entityListItem',\n id: item.entityId,\n },\n ]),\n ],\n async onCacheEntryAdded(_args, { cacheDataLoaded, cacheEntryRemoved, dispatch }) {\n let token, token2\n try {\n // wait for the initial query to resolve before proceeding\n const cache = await cacheDataLoaded\n const pages = cache.data.pages\n const items = pages.flatMap((page) => page.items)\n // get entityType of first item\n const entityType = items[0]?.entityType\n\n const listTopic = `entity_list.changed`\n const entityTypeTopic = `entity.${entityType}`\n\n const invalidateListItems = (id: string) => {\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityListItem', id: id }]))\n }\n\n const handleListMessage = (topic: string, message: ListItemMessage) => {\n if (topic !== listTopic) return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n invalidateListItems(id)\n }\n\n const handleEntityMessage = (topic: string, message: ListItemMessage) => {\n if (!topic.startsWith(entityTypeTopic)) return\n const summary = message.summary\n const id = summary.entityId\n // check for id\n if (!id) return\n invalidateListItems(id)\n }\n\n // sub to websocket topic\n token = PubSub.subscribe(listTopic, handleListMessage)\n if (entityType) token2 = PubSub.subscribe(entityTypeTopic, handleEntityMessage)\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 PubSub.unsubscribe(token2)\n },\n }),\n }),\n})\n\nexport default getListsGqlApiInjected\n\nexport const {\n useGetListsInfiniteInfiniteQuery,\n useGetListItemsInfiniteInfiniteQuery,\n useLazyGetListItemsQuery,\n} = getListsGqlApiInjected\n"],"names":["gqlApi","parseAllAttribs","PubSub"],"mappings":"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"}
1
+ {"version":3,"file":"getLists.cjs.js","sources":["../../../../../../src/api/queries/entityLists/getLists.ts"],"sourcesContent":["import { gqlApi } from '@shared/api/generated'\nimport {\n FetchBaseQueryError,\n DefinitionsFromApi,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\nimport type {\n GetListItemsQuery,\n GetListItemsQueryVariables,\n GetListsQuery,\n GetListsQueryVariables,\n} from '@shared/api'\nimport { parseAllAttribs } from '../overview'\nimport { PubSub } from '@shared/util'\nimport {\n GetListItemsResult,\n GetListsResult,\n ListItemMessage,\n ListItemsPageParam,\n ListsPageParam,\n} from './types'\n\n// GRAPHQL API (getLists and getListItems)\n// Define the LISTS_PER_PAGE constant for pagination\nexport const LISTS_PER_PAGE = 500\nexport const LIST_ITEMS_PER_PAGE = 100\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetLists' | 'GetListItems'> & {\n GetLists: OverrideResultType<Definitions['GetLists'], GetListsResult>\n GetListItems: OverrideResultType<Definitions['GetListItems'], GetListItemsResult>\n}\n\nconst getListsGqlApiEnhanced = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetLists: {\n transformResponse: (response: GetListsQuery): GetListsResult => {\n return {\n // @ts-expect-error - entityType is string\n lists: response.project.entityLists.edges.map((edge) => edge.node),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n },\n GetListItems: {\n transformResponse: (response: GetListItemsQuery): GetListItemsResult => {\n return {\n items: response.project.entityLists.edges.flatMap((listEdge) =>\n listEdge.node.items.edges.map(({ node, ...edge }) => {\n return {\n ...node,\n ...edge,\n attrib: parseAllAttribs(edge.allAttrib),\n } as GetListItemsResult['items'][number]\n }),\n ),\n pageInfo: response.project.entityLists.edges[0].node.items.pageInfo,\n }\n },\n },\n },\n})\n\nconst getListsGqlApiInjected = getListsGqlApiEnhanced.injectEndpoints({\n endpoints: (build) => ({\n getListsInfinite: build.infiniteQuery<\n GetListsResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetLists.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => [\n { type: 'entityList', id: 'LIST' },\n ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.id,\n })),\n ],\n async onCacheEntryAdded(\n _args,\n { cacheDataLoaded, cacheEntryRemoved, dispatch, updateCachedData },\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: ListItemMessage) => {\n if (topic !== 'entity_list.changed') return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n\n // We have all the data we need to update the cache\n updateCachedData((draft) => {\n const list = draft.pages.flatMap((page) => page.lists).find((l) => l.id === id)\n if (!list) return\n const newList = {\n ...list,\n label: summary.label,\n entityType: summary.entity_type,\n entityListType: summary.entity_list_type,\n count: summary.count,\n }\n\n Object.assign(list, newList)\n })\n // NOTE: We have to invalidate here as we don't know if other fields are updated not included in the updateCachedData\n // invalidates lists list cache\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityList', id: `LIST` }]))\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity_list.changed', 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 getListItemsInfinite: build.infiniteQuery<\n GetListItemsResult,\n Omit<GetListItemsQueryVariables, 'first' | 'after' | 'before' | 'last'> & { desc?: boolean },\n ListItemsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { sortBy, desc, ...rest } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams: GetListItemsQueryVariables = {\n ...rest,\n first: LIST_ITEMS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Add cursor-based pagination\n queryParams.after = cursor || undefined\n queryParams.first = LIST_ITEMS_PER_PAGE\n\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.after = undefined\n queryParams.last = LIST_ITEMS_PER_PAGE\n queryParams.first = undefined\n }\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListItems.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) throw result.error\n\n return {\n data: result.data || {\n items: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityListItem', id: 'LIST' },\n { type: 'entityListItem', id: listId },\n { type: 'entityListItem', id: projectName },\n ...(result?.pages.flatMap((page) => page.items) || [])\n .filter((i) => !!i)\n .flatMap((item) => [\n {\n type: 'entityListItem',\n id: item.id,\n },\n {\n type: 'entityListItem',\n id: item.entityId,\n },\n ]),\n ],\n async onCacheEntryAdded(_args, { cacheDataLoaded, cacheEntryRemoved, dispatch }) {\n let token, token2\n try {\n // wait for the initial query to resolve before proceeding\n const cache = await cacheDataLoaded\n const pages = cache.data.pages\n const items = pages.flatMap((page) => page.items)\n // get entityType of first item\n const entityType = items[0]?.entityType\n\n const listTopic = `entity_list.changed`\n const entityTypeTopic = `entity.${entityType}`\n\n const invalidateListItems = (id: string) => {\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityListItem', id: id }]))\n }\n\n const handleListMessage = (topic: string, message: ListItemMessage) => {\n if (topic !== listTopic) return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n invalidateListItems(id)\n }\n\n const handleEntityMessage = (topic: string, message: ListItemMessage) => {\n if (!topic.startsWith(entityTypeTopic)) return\n const summary = message.summary\n const id = summary.entityId\n // check for id\n if (!id) return\n invalidateListItems(id)\n }\n\n // sub to websocket topic\n token = PubSub.subscribe(listTopic, handleListMessage)\n if (entityType) token2 = PubSub.subscribe(entityTypeTopic, handleEntityMessage)\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 PubSub.unsubscribe(token2)\n },\n }),\n }),\n})\n\nexport default getListsGqlApiInjected\n\nexport const {\n useGetListsInfiniteInfiniteQuery,\n useGetListItemsInfiniteInfiniteQuery,\n useLazyGetListItemsQuery,\n} = getListsGqlApiInjected\n"],"names":["gqlApi","parseAllAttribs","PubSub"],"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 { parseAllAttribs } from "../overview/getOverview.es.js";
37
38
  import "../overview/updateOverview.es.js";
38
39
  import "lodash";
@@ -1 +1 @@
1
- {"version":3,"file":"getLists.es.js","sources":["../../../../../../src/api/queries/entityLists/getLists.ts"],"sourcesContent":["import { gqlApi } from '@shared/api/generated'\nimport {\n FetchBaseQueryError,\n DefinitionsFromApi,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\nimport type {\n GetListItemsQuery,\n GetListItemsQueryVariables,\n GetListsQuery,\n GetListsQueryVariables,\n} from '@shared/api'\nimport { parseAllAttribs } from '../overview'\nimport { PubSub } from '@shared/util'\nimport {\n GetListItemsResult,\n GetListsResult,\n ListItemMessage,\n ListItemsPageParam,\n ListsPageParam,\n} from './types'\n\n// GRAPHQL API (getLists and getListItems)\n// Define the LISTS_PER_PAGE constant for pagination\nexport const LISTS_PER_PAGE = 500\nexport const LIST_ITEMS_PER_PAGE = 100\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetLists' | 'GetListItems'> & {\n GetLists: OverrideResultType<Definitions['GetLists'], GetListsResult>\n GetListItems: OverrideResultType<Definitions['GetListItems'], GetListItemsResult>\n}\n\nconst getListsGqlApiEnhanced = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetLists: {\n transformResponse: (response: GetListsQuery): GetListsResult => {\n return {\n // @ts-expect-error - entityType is string\n lists: response.project.entityLists.edges.map((edge) => edge.node),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n },\n GetListItems: {\n transformResponse: (response: GetListItemsQuery): GetListItemsResult => {\n return {\n items: response.project.entityLists.edges.flatMap((listEdge) =>\n listEdge.node.items.edges.map(({ node, ...edge }) => {\n return {\n ...node,\n ...edge,\n attrib: parseAllAttribs(edge.allAttrib),\n } as GetListItemsResult['items'][number]\n }),\n ),\n pageInfo: response.project.entityLists.edges[0].node.items.pageInfo,\n }\n },\n },\n },\n})\n\nconst getListsGqlApiInjected = getListsGqlApiEnhanced.injectEndpoints({\n endpoints: (build) => ({\n getListsInfinite: build.infiniteQuery<\n GetListsResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetLists.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => [\n { type: 'entityList', id: 'LIST' },\n ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.id,\n })),\n ],\n async onCacheEntryAdded(\n _args,\n { cacheDataLoaded, cacheEntryRemoved, dispatch, updateCachedData },\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: ListItemMessage) => {\n if (topic !== 'entity_list.changed') return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n\n // We have all the data we need to update the cache\n updateCachedData((draft) => {\n const list = draft.pages.flatMap((page) => page.lists).find((l) => l.id === id)\n if (!list) return\n const newList = {\n ...list,\n label: summary.label,\n entityType: summary.entity_type,\n entityListType: summary.entity_list_type,\n count: summary.count,\n }\n\n Object.assign(list, newList)\n })\n // NOTE: We have to invalidate here as we don't know if other fields are updated not included in the updateCachedData\n // invalidates lists list cache\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityList', id: `LIST` }]))\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity_list.changed', 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 getListItemsInfinite: build.infiniteQuery<\n GetListItemsResult,\n Omit<GetListItemsQueryVariables, 'first' | 'after' | 'before' | 'last'> & { desc?: boolean },\n ListItemsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { sortBy, desc, ...rest } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams: GetListItemsQueryVariables = {\n ...rest,\n first: LIST_ITEMS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Add cursor-based pagination\n queryParams.after = cursor || undefined\n queryParams.first = LIST_ITEMS_PER_PAGE\n\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.after = undefined\n queryParams.last = LIST_ITEMS_PER_PAGE\n queryParams.first = undefined\n }\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListItems.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) throw result.error\n\n return {\n data: result.data || {\n items: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityListItem', id: 'LIST' },\n { type: 'entityListItem', id: listId },\n { type: 'entityListItem', id: projectName },\n ...(result?.pages.flatMap((page) => page.items) || [])\n .filter((i) => !!i)\n .flatMap((item) => [\n {\n type: 'entityListItem',\n id: item.id,\n },\n {\n type: 'entityListItem',\n id: item.entityId,\n },\n ]),\n ],\n async onCacheEntryAdded(_args, { cacheDataLoaded, cacheEntryRemoved, dispatch }) {\n let token, token2\n try {\n // wait for the initial query to resolve before proceeding\n const cache = await cacheDataLoaded\n const pages = cache.data.pages\n const items = pages.flatMap((page) => page.items)\n // get entityType of first item\n const entityType = items[0]?.entityType\n\n const listTopic = `entity_list.changed`\n const entityTypeTopic = `entity.${entityType}`\n\n const invalidateListItems = (id: string) => {\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityListItem', id: id }]))\n }\n\n const handleListMessage = (topic: string, message: ListItemMessage) => {\n if (topic !== listTopic) return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n invalidateListItems(id)\n }\n\n const handleEntityMessage = (topic: string, message: ListItemMessage) => {\n if (!topic.startsWith(entityTypeTopic)) return\n const summary = message.summary\n const id = summary.entityId\n // check for id\n if (!id) return\n invalidateListItems(id)\n }\n\n // sub to websocket topic\n token = PubSub.subscribe(listTopic, handleListMessage)\n if (entityType) token2 = PubSub.subscribe(entityTypeTopic, handleEntityMessage)\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 PubSub.unsubscribe(token2)\n },\n }),\n }),\n})\n\nexport default getListsGqlApiInjected\n\nexport const {\n useGetListsInfiniteInfiniteQuery,\n useGetListItemsInfiniteInfiniteQuery,\n useLazyGetListItemsQuery,\n} = getListsGqlApiInjected\n"],"names":["gqlApi"],"mappings":"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"}
1
+ {"version":3,"file":"getLists.es.js","sources":["../../../../../../src/api/queries/entityLists/getLists.ts"],"sourcesContent":["import { gqlApi } from '@shared/api/generated'\nimport {\n FetchBaseQueryError,\n DefinitionsFromApi,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\nimport type {\n GetListItemsQuery,\n GetListItemsQueryVariables,\n GetListsQuery,\n GetListsQueryVariables,\n} from '@shared/api'\nimport { parseAllAttribs } from '../overview'\nimport { PubSub } from '@shared/util'\nimport {\n GetListItemsResult,\n GetListsResult,\n ListItemMessage,\n ListItemsPageParam,\n ListsPageParam,\n} from './types'\n\n// GRAPHQL API (getLists and getListItems)\n// Define the LISTS_PER_PAGE constant for pagination\nexport const LISTS_PER_PAGE = 500\nexport const LIST_ITEMS_PER_PAGE = 100\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetLists' | 'GetListItems'> & {\n GetLists: OverrideResultType<Definitions['GetLists'], GetListsResult>\n GetListItems: OverrideResultType<Definitions['GetListItems'], GetListItemsResult>\n}\n\nconst getListsGqlApiEnhanced = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetLists: {\n transformResponse: (response: GetListsQuery): GetListsResult => {\n return {\n // @ts-expect-error - entityType is string\n lists: response.project.entityLists.edges.map((edge) => edge.node),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n },\n GetListItems: {\n transformResponse: (response: GetListItemsQuery): GetListItemsResult => {\n return {\n items: response.project.entityLists.edges.flatMap((listEdge) =>\n listEdge.node.items.edges.map(({ node, ...edge }) => {\n return {\n ...node,\n ...edge,\n attrib: parseAllAttribs(edge.allAttrib),\n } as GetListItemsResult['items'][number]\n }),\n ),\n pageInfo: response.project.entityLists.edges[0].node.items.pageInfo,\n }\n },\n },\n },\n})\n\nconst getListsGqlApiInjected = getListsGqlApiEnhanced.injectEndpoints({\n endpoints: (build) => ({\n getListsInfinite: build.infiniteQuery<\n GetListsResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetLists.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => [\n { type: 'entityList', id: 'LIST' },\n ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.id,\n })),\n ],\n async onCacheEntryAdded(\n _args,\n { cacheDataLoaded, cacheEntryRemoved, dispatch, updateCachedData },\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: ListItemMessage) => {\n if (topic !== 'entity_list.changed') return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n\n // We have all the data we need to update the cache\n updateCachedData((draft) => {\n const list = draft.pages.flatMap((page) => page.lists).find((l) => l.id === id)\n if (!list) return\n const newList = {\n ...list,\n label: summary.label,\n entityType: summary.entity_type,\n entityListType: summary.entity_list_type,\n count: summary.count,\n }\n\n Object.assign(list, newList)\n })\n // NOTE: We have to invalidate here as we don't know if other fields are updated not included in the updateCachedData\n // invalidates lists list cache\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityList', id: `LIST` }]))\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity_list.changed', 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 getListItemsInfinite: build.infiniteQuery<\n GetListItemsResult,\n Omit<GetListItemsQueryVariables, 'first' | 'after' | 'before' | 'last'> & { desc?: boolean },\n ListItemsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { sortBy, desc, ...rest } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams: GetListItemsQueryVariables = {\n ...rest,\n first: LIST_ITEMS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Add cursor-based pagination\n queryParams.after = cursor || undefined\n queryParams.first = LIST_ITEMS_PER_PAGE\n\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.after = undefined\n queryParams.last = LIST_ITEMS_PER_PAGE\n queryParams.first = undefined\n }\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListItems.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) throw result.error\n\n return {\n data: result.data || {\n items: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityListItem', id: 'LIST' },\n { type: 'entityListItem', id: listId },\n { type: 'entityListItem', id: projectName },\n ...(result?.pages.flatMap((page) => page.items) || [])\n .filter((i) => !!i)\n .flatMap((item) => [\n {\n type: 'entityListItem',\n id: item.id,\n },\n {\n type: 'entityListItem',\n id: item.entityId,\n },\n ]),\n ],\n async onCacheEntryAdded(_args, { cacheDataLoaded, cacheEntryRemoved, dispatch }) {\n let token, token2\n try {\n // wait for the initial query to resolve before proceeding\n const cache = await cacheDataLoaded\n const pages = cache.data.pages\n const items = pages.flatMap((page) => page.items)\n // get entityType of first item\n const entityType = items[0]?.entityType\n\n const listTopic = `entity_list.changed`\n const entityTypeTopic = `entity.${entityType}`\n\n const invalidateListItems = (id: string) => {\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityListItem', id: id }]))\n }\n\n const handleListMessage = (topic: string, message: ListItemMessage) => {\n if (topic !== listTopic) return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n invalidateListItems(id)\n }\n\n const handleEntityMessage = (topic: string, message: ListItemMessage) => {\n if (!topic.startsWith(entityTypeTopic)) return\n const summary = message.summary\n const id = summary.entityId\n // check for id\n if (!id) return\n invalidateListItems(id)\n }\n\n // sub to websocket topic\n token = PubSub.subscribe(listTopic, handleListMessage)\n if (entityType) token2 = PubSub.subscribe(entityTypeTopic, handleEntityMessage)\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 PubSub.unsubscribe(token2)\n },\n }),\n }),\n})\n\nexport default getListsGqlApiInjected\n\nexport const {\n useGetListsInfiniteInfiniteQuery,\n useGetListItemsInfiniteInfiniteQuery,\n useLazyGetListItemsQuery,\n} = getListsGqlApiInjected\n"],"names":["gqlApi"],"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 getListsRestApiEnhanced = entityLists.api.enhanceEndpoints({
39
40
  endpoints: {
40
41
  getEntityListAttributesDefinition: {
@@ -1 +1 @@
1
- {"version":3,"file":"getListsAttributes.cjs.js","sources":["../../../../../../src/api/queries/entityLists/getListsAttributes.ts"],"sourcesContent":["import { entityListsApi } from '@shared/api/generated'\n\n// REST API (get list attributes)\nconst getListsRestApiEnhanced = entityListsApi.enhanceEndpoints({\n endpoints: {\n getEntityListAttributesDefinition: {\n providesTags: (result, _e, { listId }) =>\n result\n ? [\n { type: 'entityListAttribute', id: listId },\n ...result.map((a) => ({ type: 'entityListAttribute', id: a.name })),\n ]\n : [{ type: 'entityListAttribute', id: 'LIST' }],\n },\n },\n})\n\nexport const { useGetEntityListAttributesDefinitionQuery } = getListsRestApiEnhanced\nexport default getListsRestApiEnhanced\n"],"names":["entityListsApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGM,MAAA,0BAA0BA,gBAAe,iBAAiB;AAAA,EAC9D,WAAW;AAAA,IACT,mCAAmC;AAAA,MACjC,cAAc,CAAC,QAAQ,IAAI,EAAE,OAAA,MAC3B,SACI;AAAA,QACE,EAAE,MAAM,uBAAuB,IAAI,OAAO;AAAA,QAC1C,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,uBAAuB,IAAI,EAAE,OAAO;AAAA,UAEpE,CAAC,EAAE,MAAM,uBAAuB,IAAI,OAAQ,CAAA;AAAA,IAAA;AAAA,EACpD;AAEJ,CAAC;AAEY,MAAA,EAAE,8CAA8C;;;"}
1
+ {"version":3,"file":"getListsAttributes.cjs.js","sources":["../../../../../../src/api/queries/entityLists/getListsAttributes.ts"],"sourcesContent":["import { entityListsApi } from '@shared/api/generated'\n\n// REST API (get list attributes)\nconst getListsRestApiEnhanced = entityListsApi.enhanceEndpoints({\n endpoints: {\n getEntityListAttributesDefinition: {\n providesTags: (result, _e, { listId }) =>\n result\n ? [\n { type: 'entityListAttribute', id: listId },\n ...result.map((a) => ({ type: 'entityListAttribute', id: a.name })),\n ]\n : [{ type: 'entityListAttribute', id: 'LIST' }],\n },\n },\n})\n\nexport const { useGetEntityListAttributesDefinitionQuery } = getListsRestApiEnhanced\nexport default getListsRestApiEnhanced\n"],"names":["entityListsApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGM,MAAA,0BAA0BA,gBAAe,iBAAiB;AAAA,EAC9D,WAAW;AAAA,IACT,mCAAmC;AAAA,MACjC,cAAc,CAAC,QAAQ,IAAI,EAAE,OAAA,MAC3B,SACI;AAAA,QACE,EAAE,MAAM,uBAAuB,IAAI,OAAO;AAAA,QAC1C,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,uBAAuB,IAAI,EAAE,OAAO;AAAA,UAEpE,CAAC,EAAE,MAAM,uBAAuB,IAAI,OAAQ,CAAA;AAAA,IAAA;AAAA,EACpD;AAEJ,CAAC;AAEY,MAAA,EAAE,8CAA8C;;;"}
@@ -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 getListsRestApiEnhanced = injectedRtkApi.enhanceEndpoints({
37
38
  endpoints: {
38
39
  getEntityListAttributesDefinition: {
@@ -1 +1 @@
1
- {"version":3,"file":"getListsAttributes.es.js","sources":["../../../../../../src/api/queries/entityLists/getListsAttributes.ts"],"sourcesContent":["import { entityListsApi } from '@shared/api/generated'\n\n// REST API (get list attributes)\nconst getListsRestApiEnhanced = entityListsApi.enhanceEndpoints({\n endpoints: {\n getEntityListAttributesDefinition: {\n providesTags: (result, _e, { listId }) =>\n result\n ? [\n { type: 'entityListAttribute', id: listId },\n ...result.map((a) => ({ type: 'entityListAttribute', id: a.name })),\n ]\n : [{ type: 'entityListAttribute', id: 'LIST' }],\n },\n },\n})\n\nexport const { useGetEntityListAttributesDefinitionQuery } = getListsRestApiEnhanced\nexport default getListsRestApiEnhanced\n"],"names":["entityListsApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGM,MAAA,0BAA0BA,eAAe,iBAAiB;AAAA,EAC9D,WAAW;AAAA,IACT,mCAAmC;AAAA,MACjC,cAAc,CAAC,QAAQ,IAAI,EAAE,OAAA,MAC3B,SACI;AAAA,QACE,EAAE,MAAM,uBAAuB,IAAI,OAAO;AAAA,QAC1C,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,uBAAuB,IAAI,EAAE,OAAO;AAAA,UAEpE,CAAC,EAAE,MAAM,uBAAuB,IAAI,OAAQ,CAAA;AAAA,IAAA;AAAA,EACpD;AAEJ,CAAC;AAEY,MAAA,EAAE,8CAA8C;"}
1
+ {"version":3,"file":"getListsAttributes.es.js","sources":["../../../../../../src/api/queries/entityLists/getListsAttributes.ts"],"sourcesContent":["import { entityListsApi } from '@shared/api/generated'\n\n// REST API (get list attributes)\nconst getListsRestApiEnhanced = entityListsApi.enhanceEndpoints({\n endpoints: {\n getEntityListAttributesDefinition: {\n providesTags: (result, _e, { listId }) =>\n result\n ? [\n { type: 'entityListAttribute', id: listId },\n ...result.map((a) => ({ type: 'entityListAttribute', id: a.name })),\n ]\n : [{ type: 'entityListAttribute', id: 'LIST' }],\n },\n },\n})\n\nexport const { useGetEntityListAttributesDefinitionQuery } = getListsRestApiEnhanced\nexport default getListsRestApiEnhanced\n"],"names":["entityListsApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGM,MAAA,0BAA0BA,eAAe,iBAAiB;AAAA,EAC9D,WAAW;AAAA,IACT,mCAAmC;AAAA,MACjC,cAAc,CAAC,QAAQ,IAAI,EAAE,OAAA,MAC3B,SACI;AAAA,QACE,EAAE,MAAM,uBAAuB,IAAI,OAAO;AAAA,QAC1C,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,uBAAuB,IAAI,EAAE,OAAO;AAAA,UAEpE,CAAC,EAAE,MAAM,uBAAuB,IAAI,OAAQ,CAAA;AAAA,IAAA;AAAA,EACpD;AAEJ,CAAC;AAEY,MAAA,EAAE,8CAA8C;"}
@@ -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 getLists = require("./getLists.cjs.js");
39
40
  const updateListsEnhancedApi = entityLists.api.enhanceEndpoints({
40
41
  endpoints: {
@@ -1 +1 @@
1
- {"version":3,"file":"updateLists.cjs.js","sources":["../../../../../../src/api/queries/entityLists/updateLists.ts"],"sourcesContent":["import { entityListsApi } from '@shared/api/generated'\nimport gqlApi from './getLists'\nimport { current } from '@reduxjs/toolkit'\n\nconst updateListsEnhancedApi = entityListsApi.enhanceEndpoints({\n endpoints: {\n // LIST MUTATIONS\n createEntityList: {\n invalidatesTags: [{ type: 'entityList', id: 'LIST' }],\n },\n updateEntityList: {\n async onQueryStarted(\n { listId, entityListPatchModel },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n // Find all caches that are invalidated by this mutation\n const tags = [{ type: 'entityList', id: listId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListsInfinite')\n\n let patchResults: any[] = []\n for (const entry of infiniteEntries) {\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListsInfinite', entry.originalArgs, (draft) => {\n for (const page of draft.pages) {\n const listIndex = page.lists.findIndex((list) => list.id === listId)\n if (listIndex !== -1) {\n const list = page.lists[listIndex]\n // Update the list with the new data\n Object.assign(list, entityListPatchModel)\n break\n }\n }\n }),\n )\n // Store the patch result to undo it later if needed\n patchResults.push(patchResult)\n }\n try {\n await queryFulfilled\n } catch {\n patchResults.forEach((patchResult) => {\n // Undo the optimistic update if the mutation fails\n patchResult.undo()\n })\n }\n },\n invalidatesTags: (_s, _e, { listId }) => {\n const tags = [{ type: 'entityList', id: listId }]\n return tags\n },\n },\n deleteEntityList: {\n invalidatesTags: [{ type: 'entityList', id: 'LIST' }],\n },\n // LIST ITEM MUTATIONS\n updateEntityListItems: {\n async onQueryStarted(\n { listId, entityListMultiPatchModel },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n // Find all caches that are invalidated by this mutation\n // We are primarily interested in updating the items within a specific list\n const tags = [{ type: 'entityListItem', id: listId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListItemsInfinite')\n\n let patchResults: any[] = []\n\n if (!entityListMultiPatchModel.items || entityListMultiPatchModel.items.length === 0) {\n // No items to update, proceed without optimistic update\n await queryFulfilled\n return\n }\n\n for (const entry of infiniteEntries) {\n // only update entries that match the listId\n if (entry.originalArgs.listId !== listId) continue\n\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListItemsInfinite', entry.originalArgs, (draft) => {\n let overallPositionChanged = false\n // First pass: update items in place and check if any position changed\n for (const page of draft.pages) {\n entityListMultiPatchModel.items?.forEach((patchItem) => {\n const itemIndex = page.items.findIndex(\n (item) => item.id === patchItem.id || item.entityId === patchItem.entityId,\n )\n\n if (itemIndex !== -1) {\n const existingItem = page.items[itemIndex]\n // Merge existing item with patchItem, ensuring attrib is also merged\n const updatedItem = {\n ...existingItem,\n ...patchItem, // Apply all top-level fields from patchItem\n attrib: {\n ...existingItem.attrib,\n ...(patchItem.attrib || {}), // Merge attrib safely\n },\n }\n Object.assign(page.items[itemIndex], updatedItem)\n\n if (patchItem.position !== undefined) {\n overallPositionChanged = true\n }\n }\n })\n }\n\n if (overallPositionChanged) {\n // Collect all items from all pages for this specific cache entry\n let allItems = draft.pages.flatMap((page) => page.items)\n\n // Sort all items based on position\n allItems.sort((a, b) => {\n const posA = typeof a.position === 'number' ? a.position : Infinity\n const posB = typeof b.position === 'number' ? b.position : Infinity\n return posA - posB\n })\n\n // Re-distribute sorted items back into pages, maintaining original page sizes\n let currentItemIndex = 0\n for (const page of draft.pages) {\n const pageItemCount = page.items.length // Get original item count for this page\n // Replace page items with the corresponding slice from the globally sorted list\n page.items = allItems.slice(currentItemIndex, currentItemIndex + pageItemCount)\n currentItemIndex += pageItemCount\n }\n }\n }),\n )\n // Store the patch result to undo it later if needed\n patchResults.push(patchResult)\n }\n\n try {\n await queryFulfilled\n } catch {\n patchResults.forEach((patchResult) => {\n // Undo the optimistic update if the mutation fails\n patchResult.undo()\n })\n }\n },\n invalidatesTags: (_s, _e, { listId, entityListMultiPatchModel: { items } }) => {\n const tags = [\n { type: 'entityList', id: listId },\n { type: 'entityListItem', id: listId },\n ...(items || []).flatMap((i) =>\n (i.id ? [{ type: 'entityListItem', id: i.id }] : []).concat(\n i.entityId ? [{ type: 'entityListItem', id: i.entityId }] : [],\n ),\n ),\n ]\n return tags\n },\n },\n updateEntityListItem: {\n async onQueryStarted(\n { listItemId, entityListItemPatchModel },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n // Find all caches that are invalidated by this mutation\n const tags = [{ type: 'entityListItem', id: listItemId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListItemsInfinite')\n\n let patchResults: any[] = []\n for (const entry of infiniteEntries) {\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListItemsInfinite', entry.originalArgs, (draft) => {\n for (const page of draft.pages) {\n const listIndex = page.items.findIndex((list) => list.id === listItemId)\n if (listIndex !== -1) {\n const list = page.items[listIndex]\n const newListItem = {\n ...list,\n attrib: {\n ...list.attrib,\n ...entityListItemPatchModel.attrib,\n },\n }\n // Update the list with the new data\n Object.assign(list, newListItem)\n break\n }\n }\n }),\n )\n // Store the patch result to undo it later if needed\n patchResults.push(patchResult)\n }\n try {\n await queryFulfilled\n } catch {\n patchResults.forEach((patchResult) => {\n // Undo the optimistic update if the mutation fails\n patchResult.undo()\n })\n }\n },\n },\n createEntityListItem: {\n invalidatesTags: (_s, _e, { listId }) => [\n { type: 'entityList', id: listId },\n { type: 'entityListItem', id: listId },\n ],\n },\n deleteEntityListItem: {\n invalidatesTags: (_s, _e, { listId }) => [\n { type: 'entityList', id: listId },\n { type: 'entityListItem', id: listId },\n ],\n },\n },\n})\n\nexport const {\n // LIST MUTATIONS\n useCreateEntityListMutation,\n useUpdateEntityListMutation,\n useDeleteEntityListMutation,\n // LIST ITEM MUTATIONS\n useUpdateEntityListItemsMutation,\n useUpdateEntityListItemMutation,\n useCreateEntityListItemMutation,\n useDeleteEntityListItemMutation,\n} = updateListsEnhancedApi\nexport { updateListsEnhancedApi as entityListsQueriesRest, gqlApi as entityListsQueriesGql }\n"],"names":["entityListsApi","gqlApi"],"mappings":"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"}
1
+ {"version":3,"file":"updateLists.cjs.js","sources":["../../../../../../src/api/queries/entityLists/updateLists.ts"],"sourcesContent":["import { entityListsApi } from '@shared/api/generated'\nimport gqlApi from './getLists'\nimport { current } from '@reduxjs/toolkit'\n\nconst updateListsEnhancedApi = entityListsApi.enhanceEndpoints({\n endpoints: {\n // LIST MUTATIONS\n createEntityList: {\n invalidatesTags: [{ type: 'entityList', id: 'LIST' }],\n },\n updateEntityList: {\n async onQueryStarted(\n { listId, entityListPatchModel },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n // Find all caches that are invalidated by this mutation\n const tags = [{ type: 'entityList', id: listId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListsInfinite')\n\n let patchResults: any[] = []\n for (const entry of infiniteEntries) {\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListsInfinite', entry.originalArgs, (draft) => {\n for (const page of draft.pages) {\n const listIndex = page.lists.findIndex((list) => list.id === listId)\n if (listIndex !== -1) {\n const list = page.lists[listIndex]\n // Update the list with the new data\n Object.assign(list, entityListPatchModel)\n break\n }\n }\n }),\n )\n // Store the patch result to undo it later if needed\n patchResults.push(patchResult)\n }\n try {\n await queryFulfilled\n } catch {\n patchResults.forEach((patchResult) => {\n // Undo the optimistic update if the mutation fails\n patchResult.undo()\n })\n }\n },\n invalidatesTags: (_s, _e, { listId }) => {\n const tags = [{ type: 'entityList', id: listId }]\n return tags\n },\n },\n deleteEntityList: {\n invalidatesTags: [{ type: 'entityList', id: 'LIST' }],\n },\n // LIST ITEM MUTATIONS\n updateEntityListItems: {\n async onQueryStarted(\n { listId, entityListMultiPatchModel },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n // Find all caches that are invalidated by this mutation\n // We are primarily interested in updating the items within a specific list\n const tags = [{ type: 'entityListItem', id: listId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListItemsInfinite')\n\n let patchResults: any[] = []\n\n if (!entityListMultiPatchModel.items || entityListMultiPatchModel.items.length === 0) {\n // No items to update, proceed without optimistic update\n await queryFulfilled\n return\n }\n\n for (const entry of infiniteEntries) {\n // only update entries that match the listId\n if (entry.originalArgs.listId !== listId) continue\n\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListItemsInfinite', entry.originalArgs, (draft) => {\n let overallPositionChanged = false\n // First pass: update items in place and check if any position changed\n for (const page of draft.pages) {\n entityListMultiPatchModel.items?.forEach((patchItem) => {\n const itemIndex = page.items.findIndex(\n (item) => item.id === patchItem.id || item.entityId === patchItem.entityId,\n )\n\n if (itemIndex !== -1) {\n const existingItem = page.items[itemIndex]\n // Merge existing item with patchItem, ensuring attrib is also merged\n const updatedItem = {\n ...existingItem,\n ...patchItem, // Apply all top-level fields from patchItem\n attrib: {\n ...existingItem.attrib,\n ...(patchItem.attrib || {}), // Merge attrib safely\n },\n }\n Object.assign(page.items[itemIndex], updatedItem)\n\n if (patchItem.position !== undefined) {\n overallPositionChanged = true\n }\n }\n })\n }\n\n if (overallPositionChanged) {\n // Collect all items from all pages for this specific cache entry\n let allItems = draft.pages.flatMap((page) => page.items)\n\n // Sort all items based on position\n allItems.sort((a, b) => {\n const posA = typeof a.position === 'number' ? a.position : Infinity\n const posB = typeof b.position === 'number' ? b.position : Infinity\n return posA - posB\n })\n\n // Re-distribute sorted items back into pages, maintaining original page sizes\n let currentItemIndex = 0\n for (const page of draft.pages) {\n const pageItemCount = page.items.length // Get original item count for this page\n // Replace page items with the corresponding slice from the globally sorted list\n page.items = allItems.slice(currentItemIndex, currentItemIndex + pageItemCount)\n currentItemIndex += pageItemCount\n }\n }\n }),\n )\n // Store the patch result to undo it later if needed\n patchResults.push(patchResult)\n }\n\n try {\n await queryFulfilled\n } catch {\n patchResults.forEach((patchResult) => {\n // Undo the optimistic update if the mutation fails\n patchResult.undo()\n })\n }\n },\n invalidatesTags: (_s, _e, { listId, entityListMultiPatchModel: { items } }) => {\n const tags = [\n { type: 'entityList', id: listId },\n { type: 'entityListItem', id: listId },\n ...(items || []).flatMap((i) =>\n (i.id ? [{ type: 'entityListItem', id: i.id }] : []).concat(\n i.entityId ? [{ type: 'entityListItem', id: i.entityId }] : [],\n ),\n ),\n ]\n return tags\n },\n },\n updateEntityListItem: {\n async onQueryStarted(\n { listItemId, entityListItemPatchModel },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n // Find all caches that are invalidated by this mutation\n const tags = [{ type: 'entityListItem', id: listItemId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListItemsInfinite')\n\n let patchResults: any[] = []\n for (const entry of infiniteEntries) {\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListItemsInfinite', entry.originalArgs, (draft) => {\n for (const page of draft.pages) {\n const listIndex = page.items.findIndex((list) => list.id === listItemId)\n if (listIndex !== -1) {\n const list = page.items[listIndex]\n const newListItem = {\n ...list,\n attrib: {\n ...list.attrib,\n ...entityListItemPatchModel.attrib,\n },\n }\n // Update the list with the new data\n Object.assign(list, newListItem)\n break\n }\n }\n }),\n )\n // Store the patch result to undo it later if needed\n patchResults.push(patchResult)\n }\n try {\n await queryFulfilled\n } catch {\n patchResults.forEach((patchResult) => {\n // Undo the optimistic update if the mutation fails\n patchResult.undo()\n })\n }\n },\n },\n createEntityListItem: {\n invalidatesTags: (_s, _e, { listId }) => [\n { type: 'entityList', id: listId },\n { type: 'entityListItem', id: listId },\n ],\n },\n deleteEntityListItem: {\n invalidatesTags: (_s, _e, { listId }) => [\n { type: 'entityList', id: listId },\n { type: 'entityListItem', id: listId },\n ],\n },\n },\n})\n\nexport const {\n // LIST MUTATIONS\n useCreateEntityListMutation,\n useUpdateEntityListMutation,\n useDeleteEntityListMutation,\n // LIST ITEM MUTATIONS\n useUpdateEntityListItemsMutation,\n useUpdateEntityListItemMutation,\n useCreateEntityListItemMutation,\n useDeleteEntityListItemMutation,\n} = updateListsEnhancedApi\nexport { updateListsEnhancedApi as entityListsQueriesRest, gqlApi as entityListsQueriesGql }\n"],"names":["entityListsApi","gqlApi"],"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 getListsGqlApiInjected from "./getLists.es.js";
37
38
  const updateListsEnhancedApi = injectedRtkApi.enhanceEndpoints({
38
39
  endpoints: {