@ynput/ayon-frontend-shared 0.2.19 → 0.2.21

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 (619) hide show
  1. package/dist/DetailsPanel.cjs.js +11 -0
  2. package/dist/DetailsPanel.cjs.js.map +1 -1
  3. package/dist/DetailsPanel.es.js +11 -0
  4. package/dist/DetailsPanel.es.js.map +1 -1
  5. package/dist/ProjectTreeTable.cjs.js +2 -2
  6. package/dist/ProjectTreeTable.es.js +2 -2
  7. package/dist/Views.cjs.js +41 -0
  8. package/dist/Views.cjs.js.map +1 -0
  9. package/dist/Views.es.js +41 -0
  10. package/dist/Views.es.js.map +1 -0
  11. package/dist/_virtual/index.cjs5.js +5 -3
  12. package/dist/_virtual/index.cjs5.js.map +1 -1
  13. package/dist/_virtual/index.cjs6.js +3 -5
  14. package/dist/_virtual/index.cjs6.js.map +1 -1
  15. package/dist/_virtual/index.es5.js +5 -2
  16. package/dist/_virtual/index.es5.js.map +1 -1
  17. package/dist/_virtual/index.es6.js +2 -5
  18. package/dist/_virtual/index.es6.js.map +1 -1
  19. package/dist/api.cjs.js +21 -0
  20. package/dist/api.cjs.js.map +1 -1
  21. package/dist/api.es.js +22 -1
  22. package/dist/api.es.js.map +1 -1
  23. package/dist/components.cjs.js +5 -0
  24. package/dist/components.cjs.js.map +1 -1
  25. package/dist/components.es.js +5 -0
  26. package/dist/components.es.js.map +1 -1
  27. package/dist/index.cjs.js +11 -0
  28. package/dist/index.cjs.js.map +1 -1
  29. package/dist/index.es.js +11 -0
  30. package/dist/index.es.js.map +1 -1
  31. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
  32. package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
  33. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  34. package/dist/node_modules/remove-accents/index.es.js +1 -1
  35. package/dist/shared/node_modules/uuid/dist/esm-browser/native.cjs.js +7 -0
  36. package/dist/shared/node_modules/uuid/dist/esm-browser/native.cjs.js.map +1 -0
  37. package/dist/shared/node_modules/uuid/dist/esm-browser/native.es.js +8 -0
  38. package/dist/shared/node_modules/uuid/dist/esm-browser/native.es.js.map +1 -0
  39. package/dist/shared/node_modules/uuid/dist/esm-browser/v4.cjs.js +16 -0
  40. package/dist/shared/node_modules/uuid/dist/esm-browser/v4.cjs.js.map +1 -0
  41. package/dist/shared/node_modules/uuid/dist/esm-browser/v4.es.js +17 -0
  42. package/dist/shared/node_modules/uuid/dist/esm-browser/v4.es.js.map +1 -0
  43. package/dist/shared/src/api/base/client.cjs.js +2 -1
  44. package/dist/shared/src/api/base/client.cjs.js.map +1 -1
  45. package/dist/shared/src/api/base/client.es.js +2 -1
  46. package/dist/shared/src/api/base/client.es.js.map +1 -1
  47. package/dist/shared/src/api/generated/actions.cjs.js +6 -1
  48. package/dist/shared/src/api/generated/actions.cjs.js.map +1 -1
  49. package/dist/shared/src/api/generated/actions.es.js +6 -1
  50. package/dist/shared/src/api/generated/actions.es.js.map +1 -1
  51. package/dist/shared/src/api/generated/activityFeed.cjs.js.map +1 -1
  52. package/dist/shared/src/api/generated/activityFeed.es.js.map +1 -1
  53. package/dist/shared/src/api/generated/addons.cjs.js +2 -1
  54. package/dist/shared/src/api/generated/addons.cjs.js.map +1 -1
  55. package/dist/shared/src/api/generated/addons.es.js +2 -1
  56. package/dist/shared/src/api/generated/addons.es.js.map +1 -1
  57. package/dist/shared/src/api/generated/anatomy.cjs.js.map +1 -1
  58. package/dist/shared/src/api/generated/anatomy.es.js.map +1 -1
  59. package/dist/shared/src/api/generated/authentication.cjs.js.map +1 -1
  60. package/dist/shared/src/api/generated/authentication.es.js.map +1 -1
  61. package/dist/shared/src/api/generated/configuration.cjs.js.map +1 -1
  62. package/dist/shared/src/api/generated/configuration.es.js.map +1 -1
  63. package/dist/shared/src/api/generated/links.cjs.js.map +1 -1
  64. package/dist/shared/src/api/generated/links.es.js.map +1 -1
  65. package/dist/shared/src/api/generated/onboarding.cjs.js.map +1 -1
  66. package/dist/shared/src/api/generated/onboarding.es.js.map +1 -1
  67. package/dist/shared/src/api/generated/operations.cjs.js.map +1 -1
  68. package/dist/shared/src/api/generated/operations.es.js.map +1 -1
  69. package/dist/shared/src/api/generated/projects.cjs.js +0 -8
  70. package/dist/shared/src/api/generated/projects.cjs.js.map +1 -1
  71. package/dist/shared/src/api/generated/projects.es.js +0 -8
  72. package/dist/shared/src/api/generated/projects.es.js.map +1 -1
  73. package/dist/shared/src/api/generated/system.cjs.js.map +1 -1
  74. package/dist/shared/src/api/generated/system.es.js.map +1 -1
  75. package/dist/shared/src/api/generated/tasks.cjs.js.map +1 -1
  76. package/dist/shared/src/api/generated/tasks.es.js.map +1 -1
  77. package/dist/shared/src/api/generated/views.cjs.js +81 -0
  78. package/dist/shared/src/api/generated/views.cjs.js.map +1 -0
  79. package/dist/shared/src/api/generated/views.es.js +81 -0
  80. package/dist/shared/src/api/generated/views.es.js.map +1 -0
  81. package/dist/shared/src/api/queries/actions/getActions.cjs.js +1 -0
  82. package/dist/shared/src/api/queries/actions/getActions.cjs.js.map +1 -1
  83. package/dist/shared/src/api/queries/actions/getActions.es.js +1 -0
  84. package/dist/shared/src/api/queries/actions/getActions.es.js.map +1 -1
  85. package/dist/shared/src/api/queries/activities/getActivities.cjs.js +1 -0
  86. package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
  87. package/dist/shared/src/api/queries/activities/getActivities.es.js +1 -0
  88. package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
  89. package/dist/shared/src/api/queries/activities/getMentions.cjs.js +1 -0
  90. package/dist/shared/src/api/queries/activities/getMentions.cjs.js.map +1 -1
  91. package/dist/shared/src/api/queries/activities/getMentions.es.js +1 -0
  92. package/dist/shared/src/api/queries/activities/getMentions.es.js.map +1 -1
  93. package/dist/shared/src/api/queries/activities/updateReaction.cjs.js +1 -0
  94. package/dist/shared/src/api/queries/activities/updateReaction.cjs.js.map +1 -1
  95. package/dist/shared/src/api/queries/activities/updateReaction.es.js +1 -0
  96. package/dist/shared/src/api/queries/activities/updateReaction.es.js.map +1 -1
  97. package/dist/shared/src/api/queries/addons/getAddons.cjs.js +1 -0
  98. package/dist/shared/src/api/queries/addons/getAddons.cjs.js.map +1 -1
  99. package/dist/shared/src/api/queries/addons/getAddons.es.js +1 -0
  100. package/dist/shared/src/api/queries/addons/getAddons.es.js.map +1 -1
  101. package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js +1 -0
  102. package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js.map +1 -1
  103. package/dist/shared/src/api/queries/attributes/getAttributes.es.js +1 -0
  104. package/dist/shared/src/api/queries/attributes/getAttributes.es.js.map +1 -1
  105. package/dist/shared/src/api/queries/authentication/getAuthentication.cjs.js +1 -0
  106. package/dist/shared/src/api/queries/authentication/getAuthentication.cjs.js.map +1 -1
  107. package/dist/shared/src/api/queries/authentication/getAuthentication.es.js +1 -0
  108. package/dist/shared/src/api/queries/authentication/getAuthentication.es.js.map +1 -1
  109. package/dist/shared/src/api/queries/cloud/cloud.cjs.js +67 -0
  110. package/dist/shared/src/api/queries/cloud/cloud.cjs.js.map +1 -0
  111. package/dist/shared/src/api/queries/cloud/cloud.es.js +67 -0
  112. package/dist/shared/src/api/queries/cloud/cloud.es.js.map +1 -0
  113. package/dist/shared/src/api/queries/entities/getEntity.cjs.js +1 -0
  114. package/dist/shared/src/api/queries/entities/getEntity.cjs.js.map +1 -1
  115. package/dist/shared/src/api/queries/entities/getEntity.es.js +1 -0
  116. package/dist/shared/src/api/queries/entities/getEntity.es.js.map +1 -1
  117. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -0
  118. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  119. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +1 -0
  120. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  121. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +4 -0
  122. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  123. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +4 -0
  124. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  125. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +11 -1
  126. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  127. package/dist/shared/src/api/queries/entities/updateEntity.es.js +11 -1
  128. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  129. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -0
  130. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  131. package/dist/shared/src/api/queries/entityLists/getLists.es.js +1 -0
  132. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  133. package/dist/shared/src/api/queries/entityLists/getListsAttributes.cjs.js +1 -0
  134. package/dist/shared/src/api/queries/entityLists/getListsAttributes.cjs.js.map +1 -1
  135. package/dist/shared/src/api/queries/entityLists/getListsAttributes.es.js +1 -0
  136. package/dist/shared/src/api/queries/entityLists/getListsAttributes.es.js.map +1 -1
  137. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js +1 -0
  138. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
  139. package/dist/shared/src/api/queries/entityLists/updateLists.es.js +1 -0
  140. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
  141. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -0
  142. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  143. package/dist/shared/src/api/queries/folders/getFolders.es.js +1 -0
  144. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  145. package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js +1 -0
  146. package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js.map +1 -1
  147. package/dist/shared/src/api/queries/grouping/getGrouping.es.js +1 -0
  148. package/dist/shared/src/api/queries/grouping/getGrouping.es.js.map +1 -1
  149. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -0
  150. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  151. package/dist/shared/src/api/queries/overview/getOverview.es.js +1 -0
  152. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  153. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +17 -2
  154. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  155. package/dist/shared/src/api/queries/overview/updateOverview.es.js +17 -2
  156. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  157. package/dist/shared/src/api/queries/permissions/getPermissions.cjs.js +1 -0
  158. package/dist/shared/src/api/queries/permissions/getPermissions.cjs.js.map +1 -1
  159. package/dist/shared/src/api/queries/permissions/getPermissions.es.js +1 -0
  160. package/dist/shared/src/api/queries/permissions/getPermissions.es.js.map +1 -1
  161. package/dist/shared/src/api/queries/products/createProduct.cjs.js +1 -0
  162. package/dist/shared/src/api/queries/products/createProduct.cjs.js.map +1 -1
  163. package/dist/shared/src/api/queries/products/createProduct.es.js +1 -0
  164. package/dist/shared/src/api/queries/products/createProduct.es.js.map +1 -1
  165. package/dist/shared/src/api/queries/project/getProject.cjs.js +1 -0
  166. package/dist/shared/src/api/queries/project/getProject.cjs.js.map +1 -1
  167. package/dist/shared/src/api/queries/project/getProject.es.js +1 -0
  168. package/dist/shared/src/api/queries/project/getProject.es.js.map +1 -1
  169. package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -0
  170. package/dist/shared/src/api/queries/review/getReview.cjs.js.map +1 -1
  171. package/dist/shared/src/api/queries/review/getReview.es.js +1 -0
  172. package/dist/shared/src/api/queries/review/getReview.es.js.map +1 -1
  173. package/dist/shared/src/api/queries/review/updateReview.cjs.js +1 -0
  174. package/dist/shared/src/api/queries/review/updateReview.cjs.js.map +1 -1
  175. package/dist/shared/src/api/queries/review/updateReview.es.js +1 -0
  176. package/dist/shared/src/api/queries/review/updateReview.es.js.map +1 -1
  177. package/dist/shared/src/api/queries/system/getSystem.cjs.js +1 -0
  178. package/dist/shared/src/api/queries/system/getSystem.cjs.js.map +1 -1
  179. package/dist/shared/src/api/queries/system/getSystem.es.js +1 -0
  180. package/dist/shared/src/api/queries/system/getSystem.es.js.map +1 -1
  181. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -0
  182. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  183. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +1 -0
  184. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  185. package/dist/shared/src/api/queries/users/getUsers.cjs.js +4 -0
  186. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  187. package/dist/shared/src/api/queries/users/getUsers.es.js +4 -0
  188. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  189. package/dist/shared/src/api/queries/users/updateUsers.cjs.js +1 -0
  190. package/dist/shared/src/api/queries/users/updateUsers.cjs.js.map +1 -1
  191. package/dist/shared/src/api/queries/users/updateUsers.es.js +1 -0
  192. package/dist/shared/src/api/queries/users/updateUsers.es.js.map +1 -1
  193. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js +1 -0
  194. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -1
  195. package/dist/shared/src/api/queries/versions/updateVersions.es.js +1 -0
  196. package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -1
  197. package/dist/shared/src/api/queries/views/getViews.cjs.js +96 -0
  198. package/dist/shared/src/api/queries/views/getViews.cjs.js.map +1 -0
  199. package/dist/shared/src/api/queries/views/getViews.es.js +96 -0
  200. package/dist/shared/src/api/queries/views/getViews.es.js.map +1 -0
  201. package/dist/shared/src/api/queries/views/updateViews.cjs.js +193 -0
  202. package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -0
  203. package/dist/shared/src/api/queries/views/updateViews.es.js +193 -0
  204. package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -0
  205. package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js +1 -0
  206. package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js.map +1 -1
  207. package/dist/shared/src/api/queries/watchers/getWatchers.es.js +1 -0
  208. package/dist/shared/src/api/queries/watchers/getWatchers.es.js.map +1 -1
  209. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +4 -0
  210. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  211. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +4 -0
  212. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  213. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js +12 -1
  214. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js.map +1 -1
  215. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js +12 -1
  216. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js.map +1 -1
  217. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +11 -0
  218. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  219. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +11 -0
  220. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  221. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +370 -0
  222. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -0
  223. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +370 -0
  224. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -0
  225. package/dist/shared/src/components/Feedback/SupportBubble.cjs.js +48 -0
  226. package/dist/shared/src/components/Feedback/SupportBubble.cjs.js.map +1 -0
  227. package/dist/shared/src/components/Feedback/SupportBubble.es.js +48 -0
  228. package/dist/shared/src/components/Feedback/SupportBubble.es.js.map +1 -0
  229. package/dist/shared/src/components/Powerpack/CTAButton.cjs.js +10 -0
  230. package/dist/shared/src/components/Powerpack/CTAButton.cjs.js.map +1 -0
  231. package/dist/shared/src/components/Powerpack/CTAButton.es.js +10 -0
  232. package/dist/shared/src/components/Powerpack/CTAButton.es.js.map +1 -0
  233. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +230 -28
  234. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  235. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +231 -29
  236. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  237. package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.cjs.js +3 -0
  238. package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.cjs.js.map +1 -1
  239. package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.es.js +3 -0
  240. package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.es.js.map +1 -1
  241. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +4 -0
  242. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  243. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +4 -0
  244. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  245. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +180 -0
  246. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  247. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +180 -0
  248. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  249. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +4 -0
  250. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  251. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +4 -0
  252. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  253. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +11 -0
  254. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  255. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +11 -0
  256. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  257. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +11 -0
  258. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  259. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +11 -0
  260. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  261. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +11 -0
  262. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  263. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +11 -0
  264. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  265. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +4 -0
  266. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  267. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +4 -0
  268. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  269. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +4 -0
  270. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  271. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +4 -0
  272. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  273. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +11 -0
  274. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  275. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +11 -0
  276. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  277. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +11 -0
  278. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  279. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +11 -0
  280. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  281. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +4 -0
  282. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  283. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +4 -0
  284. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  285. package/dist/shared/src/components/Watchers/Watchers.cjs.js +4 -0
  286. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  287. package/dist/shared/src/components/Watchers/Watchers.es.js +4 -0
  288. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  289. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +11 -0
  290. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  291. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +11 -0
  292. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  293. package/dist/shared/src/containers/Actions/Actions.cjs.js +4 -0
  294. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  295. package/dist/shared/src/containers/Actions/Actions.es.js +4 -0
  296. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  297. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +11 -0
  298. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  299. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +11 -0
  300. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  301. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +11 -0
  302. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  303. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +11 -0
  304. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  305. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +11 -0
  306. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  307. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +11 -0
  308. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  309. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +11 -0
  310. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  311. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +11 -0
  312. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  313. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +11 -0
  314. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  315. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +11 -0
  316. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  317. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +4 -0
  318. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  319. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +4 -0
  320. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  321. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +4 -0
  322. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  323. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +4 -0
  324. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  325. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +4 -0
  326. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  327. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +4 -0
  328. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  329. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +4 -0
  330. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  331. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +4 -0
  332. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  333. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +20 -13
  334. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  335. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +20 -13
  336. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  337. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +11 -0
  338. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  339. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +11 -0
  340. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  341. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
  342. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
  343. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +69 -21
  344. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  345. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +69 -21
  346. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  347. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +4 -0
  348. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  349. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +4 -0
  350. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  351. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  352. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  353. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +0 -5
  354. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -1
  355. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +0 -5
  356. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -1
  357. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +4 -0
  358. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  359. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +4 -0
  360. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  361. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +4 -0
  362. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  363. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +4 -0
  364. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  365. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +4 -0
  366. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  367. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +4 -0
  368. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  369. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +7 -5
  370. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  371. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +7 -5
  372. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  373. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +4 -0
  374. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  375. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +4 -0
  376. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  377. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js +4 -0
  378. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js.map +1 -1
  379. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js +4 -0
  380. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js.map +1 -1
  381. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js +5 -1
  382. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js.map +1 -1
  383. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js +5 -1
  384. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js.map +1 -1
  385. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +22 -10
  386. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  387. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +22 -10
  388. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  389. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +4 -0
  390. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  391. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +4 -0
  392. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  393. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js +106 -0
  394. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js.map +1 -0
  395. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js +106 -0
  396. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js.map +1 -0
  397. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +11 -0
  398. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  399. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +11 -0
  400. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  401. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js +49 -0
  402. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js.map +1 -0
  403. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js +49 -0
  404. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js.map +1 -0
  405. package/dist/shared/src/containers/Views/ViewItem/ViewItem.styled.cjs.js +75 -0
  406. package/dist/shared/src/containers/Views/ViewItem/ViewItem.styled.cjs.js.map +1 -0
  407. package/dist/shared/src/containers/Views/ViewItem/ViewItem.styled.es.js +75 -0
  408. package/dist/shared/src/containers/Views/ViewItem/ViewItem.styled.es.js.map +1 -0
  409. package/dist/shared/src/containers/Views/Views.cjs.js +17 -0
  410. package/dist/shared/src/containers/Views/Views.cjs.js.map +1 -0
  411. package/dist/shared/src/containers/Views/Views.es.js +17 -0
  412. package/dist/shared/src/containers/Views/Views.es.js.map +1 -0
  413. package/dist/shared/src/containers/Views/Views.styled.cjs.js +45 -0
  414. package/dist/shared/src/containers/Views/Views.styled.cjs.js.map +1 -0
  415. package/dist/shared/src/containers/Views/Views.styled.es.js +45 -0
  416. package/dist/shared/src/containers/Views/Views.styled.es.js.map +1 -0
  417. package/dist/shared/src/containers/Views/ViewsButton/ViewsButton.cjs.js +41 -0
  418. package/dist/shared/src/containers/Views/ViewsButton/ViewsButton.cjs.js.map +1 -0
  419. package/dist/shared/src/containers/Views/ViewsButton/ViewsButton.es.js +41 -0
  420. package/dist/shared/src/containers/Views/ViewsButton/ViewsButton.es.js.map +1 -0
  421. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js +4 -0
  422. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js.map +1 -0
  423. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js +5 -0
  424. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js.map +1 -0
  425. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +154 -0
  426. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -0
  427. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +154 -0
  428. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -0
  429. package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.cjs.js +32 -0
  430. package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.cjs.js.map +1 -0
  431. package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.es.js +32 -0
  432. package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.es.js.map +1 -0
  433. package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.styled.cjs.js +33 -0
  434. package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.styled.cjs.js.map +1 -0
  435. package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.styled.es.js +33 -0
  436. package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.styled.es.js.map +1 -0
  437. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +105 -0
  438. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -0
  439. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +105 -0
  440. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -0
  441. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +211 -0
  442. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -0
  443. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +211 -0
  444. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -0
  445. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js +52 -0
  446. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js.map +1 -0
  447. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js +52 -0
  448. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js.map +1 -0
  449. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +69 -0
  450. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -0
  451. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +69 -0
  452. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -0
  453. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.cjs.js +44 -0
  454. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.cjs.js.map +1 -0
  455. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.es.js +44 -0
  456. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.es.js.map +1 -0
  457. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +186 -0
  458. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -0
  459. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +186 -0
  460. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -0
  461. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js +33 -0
  462. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -0
  463. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js +33 -0
  464. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -0
  465. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +108 -0
  466. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -0
  467. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +108 -0
  468. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -0
  469. package/dist/shared/src/containers/Views/hooks/useViewSettingsChanged.cjs.js +19 -0
  470. package/dist/shared/src/containers/Views/hooks/useViewSettingsChanged.cjs.js.map +1 -0
  471. package/dist/shared/src/containers/Views/hooks/useViewSettingsChanged.es.js +19 -0
  472. package/dist/shared/src/containers/Views/hooks/useViewSettingsChanged.es.js.map +1 -0
  473. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +143 -0
  474. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -0
  475. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +143 -0
  476. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -0
  477. package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.cjs.js +67 -0
  478. package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.cjs.js.map +1 -0
  479. package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.es.js +67 -0
  480. package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.es.js.map +1 -0
  481. package/dist/shared/src/containers/Views/utils/generateWorkingView.cjs.js +13 -0
  482. package/dist/shared/src/containers/Views/utils/generateWorkingView.cjs.js.map +1 -0
  483. package/dist/shared/src/containers/Views/utils/generateWorkingView.es.js +13 -0
  484. package/dist/shared/src/containers/Views/utils/generateWorkingView.es.js.map +1 -0
  485. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.cjs.js +8 -0
  486. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.cjs.js.map +1 -0
  487. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.es.js +8 -0
  488. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.es.js.map +1 -0
  489. package/dist/shared/src/containers/Views/utils/portalUtils.cjs.js +11 -0
  490. package/dist/shared/src/containers/Views/utils/portalUtils.cjs.js.map +1 -0
  491. package/dist/shared/src/containers/Views/utils/portalUtils.es.js +11 -0
  492. package/dist/shared/src/containers/Views/utils/portalUtils.es.js.map +1 -0
  493. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +125 -0
  494. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -0
  495. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +125 -0
  496. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -0
  497. package/dist/shared/src/context/AddonProjectContext.cjs.js +4 -0
  498. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  499. package/dist/shared/src/context/AddonProjectContext.es.js +4 -0
  500. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  501. package/dist/shared/src/context/DetailsPanelContext.cjs.js +4 -0
  502. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  503. package/dist/shared/src/context/DetailsPanelContext.es.js +4 -0
  504. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  505. package/dist/shared/src/context/PowerpackContext.cjs.js +18 -3
  506. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  507. package/dist/shared/src/context/PowerpackContext.es.js +18 -3
  508. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  509. package/dist/shared/src/context/RemoteModulesContext.cjs.js +4 -0
  510. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  511. package/dist/shared/src/context/RemoteModulesContext.es.js +4 -0
  512. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  513. package/dist/shared/src/hooks/useActionTriggers.cjs.js +4 -0
  514. package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
  515. package/dist/shared/src/hooks/useActionTriggers.es.js +4 -0
  516. package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
  517. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +4 -0
  518. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  519. package/dist/shared/src/hooks/useEntityUpdate.es.js +4 -0
  520. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  521. package/dist/shared/src/hooks/useLoadModule.cjs.js +1 -1
  522. package/dist/shared/src/hooks/useLoadModule.cjs.js.map +1 -1
  523. package/dist/shared/src/hooks/useLoadModule.es.js +1 -1
  524. package/dist/shared/src/hooks/useLoadModule.es.js.map +1 -1
  525. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +4 -0
  526. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  527. package/dist/shared/src/hooks/useScopedStatuses.es.js +4 -0
  528. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  529. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +4 -0
  530. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  531. package/dist/shared/src/hooks/useUserProjectConfig.es.js +4 -0
  532. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  533. package/dist/shared/src/util/columnConfigConverter.cjs.js +116 -0
  534. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -0
  535. package/dist/shared/src/util/columnConfigConverter.es.js +116 -0
  536. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -0
  537. package/dist/types/Views.d.ts +2 -0
  538. package/dist/types/api/generated/actions.d.ts +11 -4
  539. package/dist/types/api/generated/activityFeed.d.ts +3 -0
  540. package/dist/types/api/generated/addons.d.ts +1 -0
  541. package/dist/types/api/generated/anatomy.d.ts +0 -2
  542. package/dist/types/api/generated/authentication.d.ts +0 -1
  543. package/dist/types/api/generated/configuration.d.ts +6 -0
  544. package/dist/types/api/generated/index.d.ts +2 -0
  545. package/dist/types/api/generated/links.d.ts +7 -5
  546. package/dist/types/api/generated/onboarding.d.ts +0 -1
  547. package/dist/types/api/generated/operations.d.ts +2 -0
  548. package/dist/types/api/generated/powerPack1.1.1Views.d.ts +25 -0
  549. package/dist/types/api/generated/projects.d.ts +0 -35
  550. package/dist/types/api/generated/system.d.ts +2 -0
  551. package/dist/types/api/generated/tasks.d.ts +0 -14
  552. package/dist/types/api/generated/views.d.ts +230 -0
  553. package/dist/types/api/queries/cloud/cloud.d.ts +593 -0
  554. package/dist/types/api/queries/cloud/index.d.ts +1 -0
  555. package/dist/types/api/queries/index.d.ts +2 -0
  556. package/dist/types/api/queries/project/getProject.d.ts +0 -2
  557. package/dist/types/api/queries/views/getViews.d.ts +551 -0
  558. package/dist/types/api/queries/views/index.d.ts +2 -0
  559. package/dist/types/api/queries/views/updateViews.d.ts +664 -0
  560. package/dist/types/components/Feedback/FeedbackContext.d.ts +17 -0
  561. package/dist/types/components/Feedback/SupportBubble.d.ts +4 -0
  562. package/dist/types/components/Feedback/index.d.ts +2 -0
  563. package/dist/types/components/Powerpack/CTAButton.d.ts +4 -0
  564. package/dist/types/components/Powerpack/PowerpackDialog.d.ts +8 -0
  565. package/dist/types/components/index.d.ts +1 -0
  566. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +15 -5
  567. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsProvider.d.ts +1 -1
  568. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +0 -2
  569. package/dist/types/containers/ProjectTreeTable/context/ProjectTableProvider.d.ts +2 -4
  570. package/dist/types/containers/ProjectTreeTable/hooks/index.d.ts +0 -1
  571. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +3 -5
  572. package/dist/types/containers/ProjectTreeTable/hooks/useProjectTableModules.d.ts +2 -5
  573. package/dist/types/containers/ProjectTreeTable/hooks/useQueryFilters.d.ts +5 -3
  574. package/dist/types/containers/ProjectTreeTable/types/index.d.ts +1 -0
  575. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +5 -6
  576. package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +1 -0
  577. package/dist/types/containers/ProjectTreeTable/utils/queryFilterToClientFilter.d.ts +24 -0
  578. package/dist/types/containers/Views/ViewItem/ViewItem.d.ts +17 -0
  579. package/dist/types/containers/Views/ViewItem/ViewItem.styled.d.ts +4 -0
  580. package/dist/types/containers/Views/Views.d.ts +2 -0
  581. package/dist/types/containers/Views/Views.styled.d.ts +4 -0
  582. package/dist/types/containers/Views/ViewsButton/ViewsButton.d.ts +2 -0
  583. package/dist/types/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.d.ts +24 -0
  584. package/dist/types/containers/Views/ViewsDialogContainer/ViewsDialogContainer.d.ts +6 -0
  585. package/dist/types/containers/Views/ViewsMenu/ViewsMenu.d.ts +10 -0
  586. package/dist/types/containers/Views/ViewsMenu/ViewsMenu.styled.d.ts +4 -0
  587. package/dist/types/containers/Views/ViewsMenuContainer/ViewsMenuContainer.d.ts +4 -0
  588. package/dist/types/containers/Views/context/ViewsContext.d.ts +46 -0
  589. package/dist/types/containers/Views/hooks/index.d.ts +5 -0
  590. package/dist/types/containers/Views/hooks/pages/useListsViewSettings.d.ts +9 -0
  591. package/dist/types/containers/Views/hooks/pages/useOverviewViewSettings.d.ts +12 -0
  592. package/dist/types/containers/Views/hooks/pages/useTaskProgressViewSettings.d.ts +10 -0
  593. package/dist/types/containers/Views/hooks/pages/viewUpdateHelper.d.ts +0 -0
  594. package/dist/types/containers/Views/hooks/useBuildViewMenuItems.d.ts +22 -0
  595. package/dist/types/containers/Views/hooks/useOverviewViewSettings.d.ts +0 -0
  596. package/dist/types/containers/Views/hooks/useSaveViewFromCurrent.d.ts +12 -0
  597. package/dist/types/containers/Views/hooks/useSelectedView.d.ts +12 -0
  598. package/dist/types/containers/Views/hooks/useViewSettingsChanged.d.ts +6 -0
  599. package/dist/types/containers/Views/hooks/useViewsMutations.d.ts +13 -0
  600. package/dist/types/containers/Views/hooks/useViewsShortcuts.d.ts +13 -0
  601. package/dist/types/containers/Views/index.d.ts +19 -0
  602. package/dist/types/containers/Views/utils/generateWorkingView.d.ts +3 -0
  603. package/dist/types/containers/Views/utils/getCustomViewsFallback.d.ts +13 -0
  604. package/dist/types/containers/Views/utils/portalUtils.d.ts +9 -0
  605. package/dist/types/containers/Views/utils/viewUpdateHelper.d.ts +17 -0
  606. package/dist/types/containers/index.d.ts +1 -0
  607. package/dist/types/context/PowerpackContext.d.ts +9 -6
  608. package/dist/types/util/columnConfigConverter.d.ts +15 -0
  609. package/dist/types/util/index.d.ts +1 -0
  610. package/dist/util.cjs.js +3 -0
  611. package/dist/util.cjs.js.map +1 -1
  612. package/dist/util.es.js +3 -0
  613. package/dist/util.es.js.map +1 -1
  614. package/package.json +6 -1
  615. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.cjs.js +0 -24
  616. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.cjs.js.map +0 -1
  617. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.es.js +0 -24
  618. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.es.js.map +0 -1
  619. package/dist/types/containers/ProjectTreeTable/hooks/useColumnSorting.d.ts +0 -12
@@ -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 GetListsItemsForReviewSessionQuery,\n GetListsItemsForReviewSessionResult,\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 GetListsItemsForReviewSession: OverrideResultType<\n Definitions['GetListsItemsForReviewSession'],\n GetListsItemsForReviewSessionResult\n >\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 GetListsItemsForReviewSession: {\n transformResponse: (\n response: GetListsItemsForReviewSessionQuery,\n ): GetListsItemsForReviewSessionResult => {\n return {\n lists: response.project.entityLists.edges.map((edge) => edge.node),\n pageInfo: response.project.entityLists.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 ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.entityListType,\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 getListsItemsForReviewSession: build.infiniteQuery<\n GetListsItemsForReviewSessionResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before' | 'filter'>,\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.GetListsItemsForReviewSession.initiate(queryParams, {\n forceRefetch: true,\n }),\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 }),\n }),\n})\n\nexport default getListsGqlApiInjected\n\nexport const {\n useGetListsInfiniteInfiniteQuery,\n useGetListItemsInfiniteInfiniteQuery,\n useGetListsItemsForReviewSessionInfiniteQuery,\n useLazyGetListsQuery,\n useLazyGetListsItemsForReviewSessionQuery,\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 GetListsItemsForReviewSessionQuery,\n GetListsItemsForReviewSessionResult,\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 GetListsItemsForReviewSession: OverrideResultType<\n Definitions['GetListsItemsForReviewSession'],\n GetListsItemsForReviewSessionResult\n >\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 GetListsItemsForReviewSession: {\n transformResponse: (\n response: GetListsItemsForReviewSessionQuery,\n ): GetListsItemsForReviewSessionResult => {\n return {\n lists: response.project.entityLists.edges.map((edge) => edge.node),\n pageInfo: response.project.entityLists.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 ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.entityListType,\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 getListsItemsForReviewSession: build.infiniteQuery<\n GetListsItemsForReviewSessionResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before' | 'filter'>,\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.GetListsItemsForReviewSession.initiate(queryParams, {\n forceRefetch: true,\n }),\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 }),\n }),\n})\n\nexport default getListsGqlApiInjected\n\nexport const {\n useGetListsInfiniteInfiniteQuery,\n useGetListItemsInfiniteInfiniteQuery,\n useGetListsItemsForReviewSessionInfiniteQuery,\n useLazyGetListsQuery,\n useLazyGetListsItemsForReviewSessionQuery,\n useLazyGetListItemsQuery,\n} = getListsGqlApiInjected\n"],"names":["gqlApi"],"mappings":"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"}
@@ -36,6 +36,7 @@ require("../../generated/versions.cjs.js");
36
36
  require("../../generated/workfiles.cjs.js");
37
37
  require("../../generated/ynputCloud.cjs.js");
38
38
  require("../../generated/grouping.cjs.js");
39
+ require("../../generated/views.cjs.js");
39
40
  const getListsRestApiEnhanced = entityLists.api.enhanceEndpoints({
40
41
  endpoints: {
41
42
  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;;;"}
@@ -34,6 +34,7 @@ import "../../generated/versions.es.js";
34
34
  import "../../generated/workfiles.es.js";
35
35
  import "../../generated/ynputCloud.es.js";
36
36
  import "../../generated/grouping.es.js";
37
+ import "../../generated/views.es.js";
37
38
  const getListsRestApiEnhanced = injectedRtkApi.enhanceEndpoints({
38
39
  endpoints: {
39
40
  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;"}
@@ -36,6 +36,7 @@ require("../../generated/versions.cjs.js");
36
36
  require("../../generated/workfiles.cjs.js");
37
37
  require("../../generated/ynputCloud.cjs.js");
38
38
  require("../../generated/grouping.cjs.js");
39
+ require("../../generated/views.cjs.js");
39
40
  const getLists = require("./getLists.cjs.js");
40
41
  const updateListsEnhancedApi = entityLists.api.enhanceEndpoints({
41
42
  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 { CreateSessionFromListApiArg, CreateSessionFromListApiResponse } from './types'\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\n// inject review addon endpoint Create Session From List\nconst updateListsInjectedApi = updateListsEnhancedApi.injectEndpoints({\n endpoints: (build) => ({\n createSessionFromList: build.mutation<\n CreateSessionFromListApiResponse,\n CreateSessionFromListApiArg\n >({\n query: (queryArg) => ({\n url: `/api/addons/review/${queryArg.addonVersion}/${queryArg.projectName}/sessions/fromList`,\n method: 'POST',\n body: queryArg.sessionFromListRequest,\n }),\n transformErrorResponse: (error: any) => error.data.detail,\n invalidatesTags: () => [{ type: 'entityList', id: 'LIST' }],\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 // REVIEW SESSION MUTATIONS\n useCreateSessionFromListMutation,\n} = updateListsInjectedApi\nexport { updateListsInjectedApi 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 { CreateSessionFromListApiArg, CreateSessionFromListApiResponse } from './types'\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\n// inject review addon endpoint Create Session From List\nconst updateListsInjectedApi = updateListsEnhancedApi.injectEndpoints({\n endpoints: (build) => ({\n createSessionFromList: build.mutation<\n CreateSessionFromListApiResponse,\n CreateSessionFromListApiArg\n >({\n query: (queryArg) => ({\n url: `/api/addons/review/${queryArg.addonVersion}/${queryArg.projectName}/sessions/fromList`,\n method: 'POST',\n body: queryArg.sessionFromListRequest,\n }),\n transformErrorResponse: (error: any) => error.data.detail,\n invalidatesTags: () => [{ type: 'entityList', id: 'LIST' }],\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 // REVIEW SESSION MUTATIONS\n useCreateSessionFromListMutation,\n} = updateListsInjectedApi\nexport { updateListsInjectedApi as entityListsQueriesRest, gqlApi as entityListsQueriesGql }\n"],"names":["entityListsApi","gqlApi"],"mappings":"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"}
@@ -34,6 +34,7 @@ import "../../generated/versions.es.js";
34
34
  import "../../generated/workfiles.es.js";
35
35
  import "../../generated/ynputCloud.es.js";
36
36
  import "../../generated/grouping.es.js";
37
+ import "../../generated/views.es.js";
37
38
  import getListsGqlApiInjected from "./getLists.es.js";
38
39
  const updateListsEnhancedApi = injectedRtkApi.enhanceEndpoints({
39
40
  endpoints: {
@@ -1 +1 @@
1
- {"version":3,"file":"updateLists.es.js","sources":["../../../../../../src/api/queries/entityLists/updateLists.ts"],"sourcesContent":["import { entityListsApi } from '@shared/api/generated'\nimport gqlApi from './getLists'\nimport { CreateSessionFromListApiArg, CreateSessionFromListApiResponse } from './types'\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\n// inject review addon endpoint Create Session From List\nconst updateListsInjectedApi = updateListsEnhancedApi.injectEndpoints({\n endpoints: (build) => ({\n createSessionFromList: build.mutation<\n CreateSessionFromListApiResponse,\n CreateSessionFromListApiArg\n >({\n query: (queryArg) => ({\n url: `/api/addons/review/${queryArg.addonVersion}/${queryArg.projectName}/sessions/fromList`,\n method: 'POST',\n body: queryArg.sessionFromListRequest,\n }),\n transformErrorResponse: (error: any) => error.data.detail,\n invalidatesTags: () => [{ type: 'entityList', id: 'LIST' }],\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 // REVIEW SESSION MUTATIONS\n useCreateSessionFromListMutation,\n} = updateListsInjectedApi\nexport { updateListsInjectedApi as entityListsQueriesRest, gqlApi as entityListsQueriesGql }\n"],"names":["entityListsApi","gqlApi"],"mappings":"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"}
1
+ {"version":3,"file":"updateLists.es.js","sources":["../../../../../../src/api/queries/entityLists/updateLists.ts"],"sourcesContent":["import { entityListsApi } from '@shared/api/generated'\nimport gqlApi from './getLists'\nimport { CreateSessionFromListApiArg, CreateSessionFromListApiResponse } from './types'\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\n// inject review addon endpoint Create Session From List\nconst updateListsInjectedApi = updateListsEnhancedApi.injectEndpoints({\n endpoints: (build) => ({\n createSessionFromList: build.mutation<\n CreateSessionFromListApiResponse,\n CreateSessionFromListApiArg\n >({\n query: (queryArg) => ({\n url: `/api/addons/review/${queryArg.addonVersion}/${queryArg.projectName}/sessions/fromList`,\n method: 'POST',\n body: queryArg.sessionFromListRequest,\n }),\n transformErrorResponse: (error: any) => error.data.detail,\n invalidatesTags: () => [{ type: 'entityList', id: 'LIST' }],\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 // REVIEW SESSION MUTATIONS\n useCreateSessionFromListMutation,\n} = updateListsInjectedApi\nexport { updateListsInjectedApi as entityListsQueriesRest, gqlApi as entityListsQueriesGql }\n"],"names":["entityListsApi","gqlApi"],"mappings":"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"}
@@ -36,6 +36,7 @@ require("../../generated/versions.cjs.js");
36
36
  require("../../generated/workfiles.cjs.js");
37
37
  require("../../generated/ynputCloud.cjs.js");
38
38
  require("../../generated/grouping.cjs.js");
39
+ require("../../generated/views.cjs.js");
39
40
  const enhancedApi = folders.api.enhanceEndpoints({
40
41
  endpoints: {
41
42
  getFolderHierarchy: {
@@ -1 +1 @@
1
- {"version":3,"file":"getFolders.cjs.js","sources":["../../../../../../src/api/queries/folders/getFolders.ts"],"sourcesContent":["import { foldersApi } from '@shared/api/generated'\n\nconst enhancedApi = foldersApi.enhanceEndpoints({\n endpoints: {\n getFolderHierarchy: {\n providesTags: ['hierarchy'],\n },\n getFolderList: {\n providesTags: (result, _e, { projectName }) => [\n 'hierarchy',\n { type: 'folder', id: 'LIST' },\n ...(result?.folders.map(({ id }) => ({ type: 'folder', id })) || []),\n { type: 'folder', id: projectName },\n ],\n },\n },\n})\n\nexport const { useGetFolderHierarchyQuery, useGetFolderListQuery } = enhancedApi\nexport { enhancedApi as foldersQueries }\n"],"names":["foldersApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEM,MAAA,cAAcA,YAAW,iBAAiB;AAAA,EAC9C,WAAW;AAAA,IACT,oBAAoB;AAAA,MAClB,cAAc,CAAC,WAAW;AAAA,IAC5B;AAAA,IACA,eAAe;AAAA,MACb,cAAc,CAAC,QAAQ,IAAI,EAAE,kBAAkB;AAAA,QAC7C;AAAA,QACA,EAAE,MAAM,UAAU,IAAI,OAAO;AAAA,QAC7B,IAAI,iCAAQ,QAAQ,IAAI,CAAC,EAAE,GAAA,OAAU,EAAE,MAAM,UAAU,GAAG,QAAO,CAAC;AAAA,QAClE,EAAE,MAAM,UAAU,IAAI,YAAY;AAAA,MAAA;AAAA,IACpC;AAAA,EACF;AAEJ,CAAC;AAEY,MAAA,EAAE,4BAA4B,0BAA0B;;;;"}
1
+ {"version":3,"file":"getFolders.cjs.js","sources":["../../../../../../src/api/queries/folders/getFolders.ts"],"sourcesContent":["import { foldersApi } from '@shared/api/generated'\n\nconst enhancedApi = foldersApi.enhanceEndpoints({\n endpoints: {\n getFolderHierarchy: {\n providesTags: ['hierarchy'],\n },\n getFolderList: {\n providesTags: (result, _e, { projectName }) => [\n 'hierarchy',\n { type: 'folder', id: 'LIST' },\n ...(result?.folders.map(({ id }) => ({ type: 'folder', id })) || []),\n { type: 'folder', id: projectName },\n ],\n },\n },\n})\n\nexport const { useGetFolderHierarchyQuery, useGetFolderListQuery } = enhancedApi\nexport { enhancedApi as foldersQueries }\n"],"names":["foldersApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEM,MAAA,cAAcA,YAAW,iBAAiB;AAAA,EAC9C,WAAW;AAAA,IACT,oBAAoB;AAAA,MAClB,cAAc,CAAC,WAAW;AAAA,IAC5B;AAAA,IACA,eAAe;AAAA,MACb,cAAc,CAAC,QAAQ,IAAI,EAAE,kBAAkB;AAAA,QAC7C;AAAA,QACA,EAAE,MAAM,UAAU,IAAI,OAAO;AAAA,QAC7B,IAAI,iCAAQ,QAAQ,IAAI,CAAC,EAAE,GAAA,OAAU,EAAE,MAAM,UAAU,GAAG,QAAO,CAAC;AAAA,QAClE,EAAE,MAAM,UAAU,IAAI,YAAY;AAAA,MAAA;AAAA,IACpC;AAAA,EACF;AAEJ,CAAC;AAEY,MAAA,EAAE,4BAA4B,0BAA0B;;;;"}
@@ -34,6 +34,7 @@ import "../../generated/versions.es.js";
34
34
  import "../../generated/workfiles.es.js";
35
35
  import "../../generated/ynputCloud.es.js";
36
36
  import "../../generated/grouping.es.js";
37
+ import "../../generated/views.es.js";
37
38
  const enhancedApi = injectedRtkApi.enhanceEndpoints({
38
39
  endpoints: {
39
40
  getFolderHierarchy: {
@@ -1 +1 @@
1
- {"version":3,"file":"getFolders.es.js","sources":["../../../../../../src/api/queries/folders/getFolders.ts"],"sourcesContent":["import { foldersApi } from '@shared/api/generated'\n\nconst enhancedApi = foldersApi.enhanceEndpoints({\n endpoints: {\n getFolderHierarchy: {\n providesTags: ['hierarchy'],\n },\n getFolderList: {\n providesTags: (result, _e, { projectName }) => [\n 'hierarchy',\n { type: 'folder', id: 'LIST' },\n ...(result?.folders.map(({ id }) => ({ type: 'folder', id })) || []),\n { type: 'folder', id: projectName },\n ],\n },\n },\n})\n\nexport const { useGetFolderHierarchyQuery, useGetFolderListQuery } = enhancedApi\nexport { enhancedApi as foldersQueries }\n"],"names":["foldersApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEM,MAAA,cAAcA,eAAW,iBAAiB;AAAA,EAC9C,WAAW;AAAA,IACT,oBAAoB;AAAA,MAClB,cAAc,CAAC,WAAW;AAAA,IAC5B;AAAA,IACA,eAAe;AAAA,MACb,cAAc,CAAC,QAAQ,IAAI,EAAE,kBAAkB;AAAA,QAC7C;AAAA,QACA,EAAE,MAAM,UAAU,IAAI,OAAO;AAAA,QAC7B,IAAI,iCAAQ,QAAQ,IAAI,CAAC,EAAE,GAAA,OAAU,EAAE,MAAM,UAAU,GAAG,QAAO,CAAC;AAAA,QAClE,EAAE,MAAM,UAAU,IAAI,YAAY;AAAA,MAAA;AAAA,IACpC;AAAA,EACF;AAEJ,CAAC;AAEY,MAAA,EAAE,4BAA4B,0BAA0B;"}
1
+ {"version":3,"file":"getFolders.es.js","sources":["../../../../../../src/api/queries/folders/getFolders.ts"],"sourcesContent":["import { foldersApi } from '@shared/api/generated'\n\nconst enhancedApi = foldersApi.enhanceEndpoints({\n endpoints: {\n getFolderHierarchy: {\n providesTags: ['hierarchy'],\n },\n getFolderList: {\n providesTags: (result, _e, { projectName }) => [\n 'hierarchy',\n { type: 'folder', id: 'LIST' },\n ...(result?.folders.map(({ id }) => ({ type: 'folder', id })) || []),\n { type: 'folder', id: projectName },\n ],\n },\n },\n})\n\nexport const { useGetFolderHierarchyQuery, useGetFolderListQuery } = enhancedApi\nexport { enhancedApi as foldersQueries }\n"],"names":["foldersApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEM,MAAA,cAAcA,eAAW,iBAAiB;AAAA,EAC9C,WAAW;AAAA,IACT,oBAAoB;AAAA,MAClB,cAAc,CAAC,WAAW;AAAA,IAC5B;AAAA,IACA,eAAe;AAAA,MACb,cAAc,CAAC,QAAQ,IAAI,EAAE,kBAAkB;AAAA,QAC7C;AAAA,QACA,EAAE,MAAM,UAAU,IAAI,OAAO;AAAA,QAC7B,IAAI,iCAAQ,QAAQ,IAAI,CAAC,EAAE,GAAA,OAAU,EAAE,MAAM,UAAU,GAAG,QAAO,CAAC;AAAA,QAClE,EAAE,MAAM,UAAU,IAAI,YAAY;AAAA,MAAA;AAAA,IACpC;AAAA,EACF;AAEJ,CAAC;AAEY,MAAA,EAAE,4BAA4B,0BAA0B;"}
@@ -36,6 +36,7 @@ require("../../generated/versions.cjs.js");
36
36
  require("../../generated/workfiles.cjs.js");
37
37
  require("../../generated/ynputCloud.cjs.js");
38
38
  const grouping = require("../../generated/grouping.cjs.js");
39
+ require("../../generated/views.cjs.js");
39
40
  const enhancedGroupingApi = grouping.api.enhanceEndpoints({
40
41
  endpoints: {
41
42
  getEntityGroups: {}
@@ -1 +1 @@
1
- {"version":3,"file":"getGrouping.cjs.js","sources":["../../../../../../src/api/queries/grouping/getGrouping.ts"],"sourcesContent":["import { groupingApi } from '@shared/api/generated'\n\nconst enhancedGroupingApi = groupingApi.enhanceEndpoints({\n endpoints: {\n getEntityGroups: {},\n },\n})\n\nexport const { useGetEntityGroupsQuery } = enhancedGroupingApi\nexport { enhancedGroupingApi as groupingQueries }\n"],"names":["groupingApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEM,MAAA,sBAAsBA,aAAY,iBAAiB;AAAA,EACvD,WAAW;AAAA,IACT,iBAAiB,CAAA;AAAA,EAAC;AAEtB,CAAC;AAEY,MAAA,EAAE,4BAA4B;;;"}
1
+ {"version":3,"file":"getGrouping.cjs.js","sources":["../../../../../../src/api/queries/grouping/getGrouping.ts"],"sourcesContent":["import { groupingApi } from '@shared/api/generated'\n\nconst enhancedGroupingApi = groupingApi.enhanceEndpoints({\n endpoints: {\n getEntityGroups: {},\n },\n})\n\nexport const { useGetEntityGroupsQuery } = enhancedGroupingApi\nexport { enhancedGroupingApi as groupingQueries }\n"],"names":["groupingApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEM,MAAA,sBAAsBA,aAAY,iBAAiB;AAAA,EACvD,WAAW;AAAA,IACT,iBAAiB,CAAA;AAAA,EAAC;AAEtB,CAAC;AAEY,MAAA,EAAE,4BAA4B;;;"}
@@ -34,6 +34,7 @@ import "../../generated/versions.es.js";
34
34
  import "../../generated/workfiles.es.js";
35
35
  import "../../generated/ynputCloud.es.js";
36
36
  import { api as injectedRtkApi } from "../../generated/grouping.es.js";
37
+ import "../../generated/views.es.js";
37
38
  const enhancedGroupingApi = injectedRtkApi.enhanceEndpoints({
38
39
  endpoints: {
39
40
  getEntityGroups: {}
@@ -1 +1 @@
1
- {"version":3,"file":"getGrouping.es.js","sources":["../../../../../../src/api/queries/grouping/getGrouping.ts"],"sourcesContent":["import { groupingApi } from '@shared/api/generated'\n\nconst enhancedGroupingApi = groupingApi.enhanceEndpoints({\n endpoints: {\n getEntityGroups: {},\n },\n})\n\nexport const { useGetEntityGroupsQuery } = enhancedGroupingApi\nexport { enhancedGroupingApi as groupingQueries }\n"],"names":["groupingApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEM,MAAA,sBAAsBA,eAAY,iBAAiB;AAAA,EACvD,WAAW;AAAA,IACT,iBAAiB,CAAA;AAAA,EAAC;AAEtB,CAAC;AAEY,MAAA,EAAE,4BAA4B;"}
1
+ {"version":3,"file":"getGrouping.es.js","sources":["../../../../../../src/api/queries/grouping/getGrouping.ts"],"sourcesContent":["import { groupingApi } from '@shared/api/generated'\n\nconst enhancedGroupingApi = groupingApi.enhanceEndpoints({\n endpoints: {\n getEntityGroups: {},\n },\n})\n\nexport const { useGetEntityGroupsQuery } = enhancedGroupingApi\nexport { enhancedGroupingApi as groupingQueries }\n"],"names":["groupingApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEM,MAAA,sBAAsBA,eAAY,iBAAiB;AAAA,EACvD,WAAW;AAAA,IACT,iBAAiB,CAAA;AAAA,EAAC;AAEtB,CAAC;AAEY,MAAA,EAAE,4BAA4B;"}
@@ -36,6 +36,7 @@ require("../../generated/versions.cjs.js");
36
36
  require("../../generated/workfiles.cjs.js");
37
37
  require("../../generated/ynputCloud.cjs.js");
38
38
  require("../../generated/grouping.cjs.js");
39
+ require("../../generated/views.cjs.js");
39
40
  const parseAllAttribs = (allAttrib) => {
40
41
  try {
41
42
  return JSON.parse(allAttrib);
@@ -1 +1 @@
1
- {"version":3,"file":"getOverview.cjs.js","sources":["../../../../../../src/api/queries/overview/getOverview.ts"],"sourcesContent":["import {\n gqlApi,\n GetTasksByParentQuery,\n GetTasksListQuery,\n tasksApi,\n QueryTasksFoldersApiArg,\n GetTasksListQueryVariables,\n} from '@shared/api/generated'\nimport { EditorTaskNode, TableGroupBy } from '@shared/containers/ProjectTreeTable'\nimport {\n DefinitionsFromApi,\n FetchBaseQueryError,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\n\n// parse attribs JSON string to object\nexport const parseAllAttribs = (allAttrib: string) => {\n try {\n return JSON.parse(allAttrib)\n } catch (e) {\n return {}\n }\n}\n\nconst transformFilteredEntitiesByParent = (response: GetTasksByParentQuery): EditorTaskNode[] => {\n if (!response.project) {\n return []\n }\n\n const tasks: EditorTaskNode[] = []\n for (const { node: taskNode } of response.project.tasks.edges) {\n tasks.push({\n ...taskNode,\n folderId: taskNode.folderId || 'root',\n attrib: parseAllAttribs(taskNode.allAttrib),\n entityId: taskNode.id,\n entityType: 'task',\n })\n }\n\n return tasks\n}\n\nconst getOverviewTaskTags = (\n result: EditorTaskNode[] | undefined = [],\n projectName: string,\n parentIds?: string | string[],\n) => {\n const taskTags = result?.map((task) => ({ type: 'overviewTask', id: task.id })) || []\n\n if (!parentIds) return taskTags\n\n const parentTags = (Array.isArray(parentIds) ? parentIds : [parentIds]).map((id) => ({\n type: 'overviewTask',\n id,\n }))\n\n return [\n ...taskTags,\n ...parentTags,\n { type: 'overviewTask', id: projectName },\n { type: 'overviewTask', id: 'LIST' },\n ]\n}\n\nexport type GetTasksListResult = {\n pageInfo: GetTasksListQuery['project']['tasks']['pageInfo']\n tasks: EditorTaskNode[]\n}\n\nexport type GetTasksListArgs = {\n projectName: string\n filter?: string\n search?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\nexport type GetGroupedTasksListResult = {\n tasks: EditorTaskNode[]\n}\n\nexport type GetGroupedTasksListArgs = {\n projectName: string\n groups: { filter: string; count: number; value: string }[]\n search?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\n// Define the page param type for infinite query\ntype TasksListPageParam = {\n cursor: string\n desc?: boolean\n}\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\ntype UpdatedDefinitions = Omit<Definitions, 'GetFilteredEntities'> & {\n GetTasksByParent: OverrideResultType<Definitions['GetTasksByParent'], EditorTaskNode[]>\n GetTasksList: OverrideResultType<Definitions['GetTasksList'], GetTasksListResult>\n}\n\n// GRAPHQL API\nconst enhancedApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // This gets tasks for all parent folders provided\n // But in this case it will only ever receive one parent folder from the getOverviewTasksByFolders query\n // It is only used by getOverviewTasksByFolders in this file\n GetTasksByParent: {\n transformResponse: transformFilteredEntitiesByParent,\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n },\n GetTasksList: {\n transformResponse: (result: GetTasksListQuery) => ({\n tasks: transformFilteredEntitiesByParent(result),\n pageInfo: result.project.tasks.pageInfo,\n }),\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks || [], projectName),\n },\n },\n})\n\n// REST FOLDERS API\nconst foldersApiEnhanced = tasksApi.enhanceEndpoints({\n endpoints: {\n queryTasksFolders: {},\n },\n})\n\nexport const TASKS_INFINITE_QUERY_COUNT = 100 // Number of items to fetch per page\n\nconst injectedApi = enhancedApi.injectEndpoints({\n endpoints: (build) => ({\n // Each project has one cache for all the tasks of the expanded folders\n // Changing the expanded folders will trigger a refetch but not a new cache\n // Each expanded folder has it's own query that is looped over here\n // When new folders are expanded, the new tasks are fetched and we use the cache for the rest\n // This also solves the pagination issue of getting all tasks in one query, splitting it up in multiple queries to avoid pagination limits\n getOverviewTasksByFolders: build.query<\n EditorTaskNode[],\n { projectName: string; parentIds: string[]; filter?: string; search?: string }\n >({\n async queryFn({ projectName, parentIds, filter, search }, { dispatch, forced }) {\n try {\n // Process parent IDs in sequential batches\n const BATCH_SIZE = 20 // Process x parentIds at a time\n const allTasks: EditorTaskNode[] = []\n\n // Process batches one after another\n for (let i = 0; i < parentIds.length; i += BATCH_SIZE) {\n const batchParentIds = parentIds.slice(i, i + BATCH_SIZE)\n\n // Process this batch in parallel\n const batchResults = await Promise.all(\n batchParentIds.map(async (parentId) =>\n dispatch(\n enhancedApi.endpoints.GetTasksByParent.initiate(\n {\n projectName,\n parentIds: [parentId],\n filter,\n search,\n },\n { forceRefetch: forced },\n ),\n ),\n ),\n )\n\n // Add the results from this batch to our accumulated results\n const batchTasks = batchResults\n .filter((r) => !!r.data)\n .flatMap((result) => result.data as EditorTaskNode[])\n\n allTasks.push(...batchTasks)\n }\n\n return { data: allTasks }\n } catch (e: any) {\n // handle errors appropriately\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n // keep one cache per project\n serializeQueryArgs: ({ queryArgs: { parentIds, ...rest } }) => ({\n ...rest,\n }),\n // Refetch when the page arg changes\n forceRefetch({ currentArg, previousArg }) {\n return JSON.stringify(currentArg) !== JSON.stringify(previousArg)\n },\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n }),\n // queryTasksFolders is a post so it's a bit annoying to consume\n // we wrap it in a queryFn to make it easier to consume as a query hook\n getQueryTasksFolders: build.query<string[], QueryTasksFoldersApiArg>({\n async queryFn({ projectName, tasksFoldersQuery }, { dispatch }) {\n try {\n const result = await dispatch(\n foldersApiEnhanced.endpoints.queryTasksFolders.initiate({\n projectName,\n tasksFoldersQuery,\n }),\n )\n\n const data = result.data?.folderIds || []\n\n return { data }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n }),\n // Add new infinite query endpoint for tasks list\n getTasksListInfinite: build.infiniteQuery<\n GetTasksListResult,\n GetTasksListArgs,\n TasksListPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '', desc: false },\n // Calculate the next page param based on current page response and params\n getNextPageParam: (lastPage, _allPages, lastPageParam, _allPageParams) => {\n // Use the endCursor from the query as the next page param\n const pageInfo = lastPage.pageInfo\n const desc = lastPageParam.desc\n const hasNextPage = desc ? pageInfo.hasPreviousPage : pageInfo.hasNextPage\n\n if (!hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n desc: lastPageParam.desc,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { projectName, filter, search, folderIds, sortBy, desc } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetTasksList\n const queryParams: any = {\n projectName,\n filter,\n search,\n folderIds,\n }\n\n // Add cursor-based pagination\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.last = TASKS_INFINITE_QUERY_COUNT\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n\n // Call the existing GetTasksList endpoint\n const result = await api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n const fallback = {\n tasks: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n }\n\n // Return the tasks directly as required by the infinite query format\n return {\n data: result.data || fallback,\n }\n } catch (e: any) {\n console.error('Error in getTasksListInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.pages.flatMap((p) => p.tasks) || [], projectName),\n }),\n getGroupedTasksList: build.query<GetGroupedTasksListResult, GetGroupedTasksListArgs>({\n queryFn: async ({ projectName, groups, search, folderIds, desc, sortBy }, api) => {\n try {\n let promises = []\n for (const group of groups) {\n const count = group.count || 500\n\n const queryParams: GetTasksListQueryVariables = {\n projectName,\n filter: group.filter,\n search,\n folderIds,\n sortBy: sortBy,\n // @ts-expect-error - we know group does not exist on query variables but we need it for later\n group: group.value,\n }\n if (desc) {\n queryParams.last = count\n } else {\n queryParams.first = count\n }\n\n const promise = api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n promises.push(promise)\n }\n\n const result = await Promise.all(promises)\n const tasks: EditorTaskNode[] = []\n for (const res of result) {\n if (res.error) throw res.error\n // get group value\n // @ts-expect-error - we know group does exist on res.originalArgs from line 319\n const groupValue = res.originalArgs?.group as string\n\n const hasNextPage =\n res.data?.pageInfo?.hasNextPage || res.data?.pageInfo?.hasPreviousPage || false\n const groupTasks =\n res.data?.tasks.map((task, i, a) => ({\n ...task,\n groups: [\n {\n value: groupValue,\n hasNextPage: i === a.length - 1 && hasNextPage ? groupValue : undefined, // Only add hasNextPage to the last task in the group\n },\n ],\n })) || []\n\n tasks.push(...groupTasks)\n }\n\n // Return the tasks directly as required by the query format\n return {\n data: {\n tasks,\n },\n }\n } catch (error: any) {\n console.error('Error in getGroupedTasksList queryFn:', error)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks, projectName),\n }),\n }),\n})\n\nexport const {\n useGetOverviewTasksByFoldersQuery,\n useGetQueryTasksFoldersQuery,\n useGetTasksListQuery,\n useGetTasksListInfiniteInfiniteQuery,\n useLazyGetTasksByParentQuery,\n useGetGroupedTasksListQuery,\n} = injectedApi\nexport default injectedApi\n"],"names":["tasks","gqlApi","tasksApi"],"mappings":"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"}
1
+ {"version":3,"file":"getOverview.cjs.js","sources":["../../../../../../src/api/queries/overview/getOverview.ts"],"sourcesContent":["import {\n gqlApi,\n GetTasksByParentQuery,\n GetTasksListQuery,\n tasksApi,\n QueryTasksFoldersApiArg,\n GetTasksListQueryVariables,\n} from '@shared/api/generated'\nimport { EditorTaskNode, TableGroupBy } from '@shared/containers/ProjectTreeTable'\nimport {\n DefinitionsFromApi,\n FetchBaseQueryError,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\n\n// parse attribs JSON string to object\nexport const parseAllAttribs = (allAttrib: string) => {\n try {\n return JSON.parse(allAttrib)\n } catch (e) {\n return {}\n }\n}\n\nconst transformFilteredEntitiesByParent = (response: GetTasksByParentQuery): EditorTaskNode[] => {\n if (!response.project) {\n return []\n }\n\n const tasks: EditorTaskNode[] = []\n for (const { node: taskNode } of response.project.tasks.edges) {\n tasks.push({\n ...taskNode,\n folderId: taskNode.folderId || 'root',\n attrib: parseAllAttribs(taskNode.allAttrib),\n entityId: taskNode.id,\n entityType: 'task',\n })\n }\n\n return tasks\n}\n\nconst getOverviewTaskTags = (\n result: EditorTaskNode[] | undefined = [],\n projectName: string,\n parentIds?: string | string[],\n) => {\n const taskTags = result?.map((task) => ({ type: 'overviewTask', id: task.id })) || []\n\n if (!parentIds) return taskTags\n\n const parentTags = (Array.isArray(parentIds) ? parentIds : [parentIds]).map((id) => ({\n type: 'overviewTask',\n id,\n }))\n\n return [\n ...taskTags,\n ...parentTags,\n { type: 'overviewTask', id: projectName },\n { type: 'overviewTask', id: 'LIST' },\n ]\n}\n\nexport type GetTasksListResult = {\n pageInfo: GetTasksListQuery['project']['tasks']['pageInfo']\n tasks: EditorTaskNode[]\n}\n\nexport type GetTasksListArgs = {\n projectName: string\n filter?: string\n search?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\nexport type GetGroupedTasksListResult = {\n tasks: EditorTaskNode[]\n}\n\nexport type GetGroupedTasksListArgs = {\n projectName: string\n groups: { filter: string; count: number; value: string }[]\n search?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\n// Define the page param type for infinite query\ntype TasksListPageParam = {\n cursor: string\n desc?: boolean\n}\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\ntype UpdatedDefinitions = Omit<Definitions, 'GetFilteredEntities'> & {\n GetTasksByParent: OverrideResultType<Definitions['GetTasksByParent'], EditorTaskNode[]>\n GetTasksList: OverrideResultType<Definitions['GetTasksList'], GetTasksListResult>\n}\n\n// GRAPHQL API\nconst enhancedApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // This gets tasks for all parent folders provided\n // But in this case it will only ever receive one parent folder from the getOverviewTasksByFolders query\n // It is only used by getOverviewTasksByFolders in this file\n GetTasksByParent: {\n transformResponse: transformFilteredEntitiesByParent,\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n },\n GetTasksList: {\n transformResponse: (result: GetTasksListQuery) => ({\n tasks: transformFilteredEntitiesByParent(result),\n pageInfo: result.project.tasks.pageInfo,\n }),\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks || [], projectName),\n },\n },\n})\n\n// REST FOLDERS API\nconst foldersApiEnhanced = tasksApi.enhanceEndpoints({\n endpoints: {\n queryTasksFolders: {},\n },\n})\n\nexport const TASKS_INFINITE_QUERY_COUNT = 100 // Number of items to fetch per page\n\nconst injectedApi = enhancedApi.injectEndpoints({\n endpoints: (build) => ({\n // Each project has one cache for all the tasks of the expanded folders\n // Changing the expanded folders will trigger a refetch but not a new cache\n // Each expanded folder has it's own query that is looped over here\n // When new folders are expanded, the new tasks are fetched and we use the cache for the rest\n // This also solves the pagination issue of getting all tasks in one query, splitting it up in multiple queries to avoid pagination limits\n getOverviewTasksByFolders: build.query<\n EditorTaskNode[],\n { projectName: string; parentIds: string[]; filter?: string; search?: string }\n >({\n async queryFn({ projectName, parentIds, filter, search }, { dispatch, forced }) {\n try {\n // Process parent IDs in sequential batches\n const BATCH_SIZE = 20 // Process x parentIds at a time\n const allTasks: EditorTaskNode[] = []\n\n // Process batches one after another\n for (let i = 0; i < parentIds.length; i += BATCH_SIZE) {\n const batchParentIds = parentIds.slice(i, i + BATCH_SIZE)\n\n // Process this batch in parallel\n const batchResults = await Promise.all(\n batchParentIds.map(async (parentId) =>\n dispatch(\n enhancedApi.endpoints.GetTasksByParent.initiate(\n {\n projectName,\n parentIds: [parentId],\n filter,\n search,\n },\n { forceRefetch: forced },\n ),\n ),\n ),\n )\n\n // Add the results from this batch to our accumulated results\n const batchTasks = batchResults\n .filter((r) => !!r.data)\n .flatMap((result) => result.data as EditorTaskNode[])\n\n allTasks.push(...batchTasks)\n }\n\n return { data: allTasks }\n } catch (e: any) {\n // handle errors appropriately\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n // keep one cache per project\n serializeQueryArgs: ({ queryArgs: { parentIds, ...rest } }) => ({\n ...rest,\n }),\n // Refetch when the page arg changes\n forceRefetch({ currentArg, previousArg }) {\n return JSON.stringify(currentArg) !== JSON.stringify(previousArg)\n },\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n }),\n // queryTasksFolders is a post so it's a bit annoying to consume\n // we wrap it in a queryFn to make it easier to consume as a query hook\n getQueryTasksFolders: build.query<string[], QueryTasksFoldersApiArg>({\n async queryFn({ projectName, tasksFoldersQuery }, { dispatch }) {\n try {\n const result = await dispatch(\n foldersApiEnhanced.endpoints.queryTasksFolders.initiate({\n projectName,\n tasksFoldersQuery,\n }),\n )\n\n const data = result.data?.folderIds || []\n\n return { data }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n }),\n // Add new infinite query endpoint for tasks list\n getTasksListInfinite: build.infiniteQuery<\n GetTasksListResult,\n GetTasksListArgs,\n TasksListPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '', desc: false },\n // Calculate the next page param based on current page response and params\n getNextPageParam: (lastPage, _allPages, lastPageParam, _allPageParams) => {\n // Use the endCursor from the query as the next page param\n const pageInfo = lastPage.pageInfo\n const desc = lastPageParam.desc\n const hasNextPage = desc ? pageInfo.hasPreviousPage : pageInfo.hasNextPage\n\n if (!hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n desc: lastPageParam.desc,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { projectName, filter, search, folderIds, sortBy, desc } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetTasksList\n const queryParams: any = {\n projectName,\n filter,\n search,\n folderIds,\n }\n\n // Add cursor-based pagination\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.last = TASKS_INFINITE_QUERY_COUNT\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n\n // Call the existing GetTasksList endpoint\n const result = await api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n const fallback = {\n tasks: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n }\n\n // Return the tasks directly as required by the infinite query format\n return {\n data: result.data || fallback,\n }\n } catch (e: any) {\n console.error('Error in getTasksListInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.pages.flatMap((p) => p.tasks) || [], projectName),\n }),\n getGroupedTasksList: build.query<GetGroupedTasksListResult, GetGroupedTasksListArgs>({\n queryFn: async ({ projectName, groups, search, folderIds, desc, sortBy }, api) => {\n try {\n let promises = []\n for (const group of groups) {\n const count = group.count || 500\n\n const queryParams: GetTasksListQueryVariables = {\n projectName,\n filter: group.filter,\n search,\n folderIds,\n sortBy: sortBy,\n // @ts-expect-error - we know group does not exist on query variables but we need it for later\n group: group.value,\n }\n if (desc) {\n queryParams.last = count\n } else {\n queryParams.first = count\n }\n\n const promise = api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n promises.push(promise)\n }\n\n const result = await Promise.all(promises)\n const tasks: EditorTaskNode[] = []\n for (const res of result) {\n if (res.error) throw res.error\n // get group value\n // @ts-expect-error - we know group does exist on res.originalArgs from line 319\n const groupValue = res.originalArgs?.group as string\n\n const hasNextPage =\n res.data?.pageInfo?.hasNextPage || res.data?.pageInfo?.hasPreviousPage || false\n const groupTasks =\n res.data?.tasks.map((task, i, a) => ({\n ...task,\n groups: [\n {\n value: groupValue,\n hasNextPage: i === a.length - 1 && hasNextPage ? groupValue : undefined, // Only add hasNextPage to the last task in the group\n },\n ],\n })) || []\n\n tasks.push(...groupTasks)\n }\n\n // Return the tasks directly as required by the query format\n return {\n data: {\n tasks,\n },\n }\n } catch (error: any) {\n console.error('Error in getGroupedTasksList queryFn:', error)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks, projectName),\n }),\n }),\n})\n\nexport const {\n useGetOverviewTasksByFoldersQuery,\n useGetQueryTasksFoldersQuery,\n useGetTasksListQuery,\n useGetTasksListInfiniteInfiniteQuery,\n useLazyGetTasksByParentQuery,\n useGetGroupedTasksListQuery,\n} = injectedApi\nexport default injectedApi\n"],"names":["tasks","gqlApi","tasksApi"],"mappings":"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"}
@@ -34,6 +34,7 @@ import "../../generated/versions.es.js";
34
34
  import "../../generated/workfiles.es.js";
35
35
  import "../../generated/ynputCloud.es.js";
36
36
  import "../../generated/grouping.es.js";
37
+ import "../../generated/views.es.js";
37
38
  const parseAllAttribs = (allAttrib) => {
38
39
  try {
39
40
  return JSON.parse(allAttrib);
@@ -1 +1 @@
1
- {"version":3,"file":"getOverview.es.js","sources":["../../../../../../src/api/queries/overview/getOverview.ts"],"sourcesContent":["import {\n gqlApi,\n GetTasksByParentQuery,\n GetTasksListQuery,\n tasksApi,\n QueryTasksFoldersApiArg,\n GetTasksListQueryVariables,\n} from '@shared/api/generated'\nimport { EditorTaskNode, TableGroupBy } from '@shared/containers/ProjectTreeTable'\nimport {\n DefinitionsFromApi,\n FetchBaseQueryError,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\n\n// parse attribs JSON string to object\nexport const parseAllAttribs = (allAttrib: string) => {\n try {\n return JSON.parse(allAttrib)\n } catch (e) {\n return {}\n }\n}\n\nconst transformFilteredEntitiesByParent = (response: GetTasksByParentQuery): EditorTaskNode[] => {\n if (!response.project) {\n return []\n }\n\n const tasks: EditorTaskNode[] = []\n for (const { node: taskNode } of response.project.tasks.edges) {\n tasks.push({\n ...taskNode,\n folderId: taskNode.folderId || 'root',\n attrib: parseAllAttribs(taskNode.allAttrib),\n entityId: taskNode.id,\n entityType: 'task',\n })\n }\n\n return tasks\n}\n\nconst getOverviewTaskTags = (\n result: EditorTaskNode[] | undefined = [],\n projectName: string,\n parentIds?: string | string[],\n) => {\n const taskTags = result?.map((task) => ({ type: 'overviewTask', id: task.id })) || []\n\n if (!parentIds) return taskTags\n\n const parentTags = (Array.isArray(parentIds) ? parentIds : [parentIds]).map((id) => ({\n type: 'overviewTask',\n id,\n }))\n\n return [\n ...taskTags,\n ...parentTags,\n { type: 'overviewTask', id: projectName },\n { type: 'overviewTask', id: 'LIST' },\n ]\n}\n\nexport type GetTasksListResult = {\n pageInfo: GetTasksListQuery['project']['tasks']['pageInfo']\n tasks: EditorTaskNode[]\n}\n\nexport type GetTasksListArgs = {\n projectName: string\n filter?: string\n search?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\nexport type GetGroupedTasksListResult = {\n tasks: EditorTaskNode[]\n}\n\nexport type GetGroupedTasksListArgs = {\n projectName: string\n groups: { filter: string; count: number; value: string }[]\n search?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\n// Define the page param type for infinite query\ntype TasksListPageParam = {\n cursor: string\n desc?: boolean\n}\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\ntype UpdatedDefinitions = Omit<Definitions, 'GetFilteredEntities'> & {\n GetTasksByParent: OverrideResultType<Definitions['GetTasksByParent'], EditorTaskNode[]>\n GetTasksList: OverrideResultType<Definitions['GetTasksList'], GetTasksListResult>\n}\n\n// GRAPHQL API\nconst enhancedApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // This gets tasks for all parent folders provided\n // But in this case it will only ever receive one parent folder from the getOverviewTasksByFolders query\n // It is only used by getOverviewTasksByFolders in this file\n GetTasksByParent: {\n transformResponse: transformFilteredEntitiesByParent,\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n },\n GetTasksList: {\n transformResponse: (result: GetTasksListQuery) => ({\n tasks: transformFilteredEntitiesByParent(result),\n pageInfo: result.project.tasks.pageInfo,\n }),\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks || [], projectName),\n },\n },\n})\n\n// REST FOLDERS API\nconst foldersApiEnhanced = tasksApi.enhanceEndpoints({\n endpoints: {\n queryTasksFolders: {},\n },\n})\n\nexport const TASKS_INFINITE_QUERY_COUNT = 100 // Number of items to fetch per page\n\nconst injectedApi = enhancedApi.injectEndpoints({\n endpoints: (build) => ({\n // Each project has one cache for all the tasks of the expanded folders\n // Changing the expanded folders will trigger a refetch but not a new cache\n // Each expanded folder has it's own query that is looped over here\n // When new folders are expanded, the new tasks are fetched and we use the cache for the rest\n // This also solves the pagination issue of getting all tasks in one query, splitting it up in multiple queries to avoid pagination limits\n getOverviewTasksByFolders: build.query<\n EditorTaskNode[],\n { projectName: string; parentIds: string[]; filter?: string; search?: string }\n >({\n async queryFn({ projectName, parentIds, filter, search }, { dispatch, forced }) {\n try {\n // Process parent IDs in sequential batches\n const BATCH_SIZE = 20 // Process x parentIds at a time\n const allTasks: EditorTaskNode[] = []\n\n // Process batches one after another\n for (let i = 0; i < parentIds.length; i += BATCH_SIZE) {\n const batchParentIds = parentIds.slice(i, i + BATCH_SIZE)\n\n // Process this batch in parallel\n const batchResults = await Promise.all(\n batchParentIds.map(async (parentId) =>\n dispatch(\n enhancedApi.endpoints.GetTasksByParent.initiate(\n {\n projectName,\n parentIds: [parentId],\n filter,\n search,\n },\n { forceRefetch: forced },\n ),\n ),\n ),\n )\n\n // Add the results from this batch to our accumulated results\n const batchTasks = batchResults\n .filter((r) => !!r.data)\n .flatMap((result) => result.data as EditorTaskNode[])\n\n allTasks.push(...batchTasks)\n }\n\n return { data: allTasks }\n } catch (e: any) {\n // handle errors appropriately\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n // keep one cache per project\n serializeQueryArgs: ({ queryArgs: { parentIds, ...rest } }) => ({\n ...rest,\n }),\n // Refetch when the page arg changes\n forceRefetch({ currentArg, previousArg }) {\n return JSON.stringify(currentArg) !== JSON.stringify(previousArg)\n },\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n }),\n // queryTasksFolders is a post so it's a bit annoying to consume\n // we wrap it in a queryFn to make it easier to consume as a query hook\n getQueryTasksFolders: build.query<string[], QueryTasksFoldersApiArg>({\n async queryFn({ projectName, tasksFoldersQuery }, { dispatch }) {\n try {\n const result = await dispatch(\n foldersApiEnhanced.endpoints.queryTasksFolders.initiate({\n projectName,\n tasksFoldersQuery,\n }),\n )\n\n const data = result.data?.folderIds || []\n\n return { data }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n }),\n // Add new infinite query endpoint for tasks list\n getTasksListInfinite: build.infiniteQuery<\n GetTasksListResult,\n GetTasksListArgs,\n TasksListPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '', desc: false },\n // Calculate the next page param based on current page response and params\n getNextPageParam: (lastPage, _allPages, lastPageParam, _allPageParams) => {\n // Use the endCursor from the query as the next page param\n const pageInfo = lastPage.pageInfo\n const desc = lastPageParam.desc\n const hasNextPage = desc ? pageInfo.hasPreviousPage : pageInfo.hasNextPage\n\n if (!hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n desc: lastPageParam.desc,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { projectName, filter, search, folderIds, sortBy, desc } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetTasksList\n const queryParams: any = {\n projectName,\n filter,\n search,\n folderIds,\n }\n\n // Add cursor-based pagination\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.last = TASKS_INFINITE_QUERY_COUNT\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n\n // Call the existing GetTasksList endpoint\n const result = await api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n const fallback = {\n tasks: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n }\n\n // Return the tasks directly as required by the infinite query format\n return {\n data: result.data || fallback,\n }\n } catch (e: any) {\n console.error('Error in getTasksListInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.pages.flatMap((p) => p.tasks) || [], projectName),\n }),\n getGroupedTasksList: build.query<GetGroupedTasksListResult, GetGroupedTasksListArgs>({\n queryFn: async ({ projectName, groups, search, folderIds, desc, sortBy }, api) => {\n try {\n let promises = []\n for (const group of groups) {\n const count = group.count || 500\n\n const queryParams: GetTasksListQueryVariables = {\n projectName,\n filter: group.filter,\n search,\n folderIds,\n sortBy: sortBy,\n // @ts-expect-error - we know group does not exist on query variables but we need it for later\n group: group.value,\n }\n if (desc) {\n queryParams.last = count\n } else {\n queryParams.first = count\n }\n\n const promise = api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n promises.push(promise)\n }\n\n const result = await Promise.all(promises)\n const tasks: EditorTaskNode[] = []\n for (const res of result) {\n if (res.error) throw res.error\n // get group value\n // @ts-expect-error - we know group does exist on res.originalArgs from line 319\n const groupValue = res.originalArgs?.group as string\n\n const hasNextPage =\n res.data?.pageInfo?.hasNextPage || res.data?.pageInfo?.hasPreviousPage || false\n const groupTasks =\n res.data?.tasks.map((task, i, a) => ({\n ...task,\n groups: [\n {\n value: groupValue,\n hasNextPage: i === a.length - 1 && hasNextPage ? groupValue : undefined, // Only add hasNextPage to the last task in the group\n },\n ],\n })) || []\n\n tasks.push(...groupTasks)\n }\n\n // Return the tasks directly as required by the query format\n return {\n data: {\n tasks,\n },\n }\n } catch (error: any) {\n console.error('Error in getGroupedTasksList queryFn:', error)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks, projectName),\n }),\n }),\n})\n\nexport const {\n useGetOverviewTasksByFoldersQuery,\n useGetQueryTasksFoldersQuery,\n useGetTasksListQuery,\n useGetTasksListInfiniteInfiniteQuery,\n useLazyGetTasksByParentQuery,\n useGetGroupedTasksListQuery,\n} = injectedApi\nexport default injectedApi\n"],"names":["gqlApi","tasksApi"],"mappings":"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"}
1
+ {"version":3,"file":"getOverview.es.js","sources":["../../../../../../src/api/queries/overview/getOverview.ts"],"sourcesContent":["import {\n gqlApi,\n GetTasksByParentQuery,\n GetTasksListQuery,\n tasksApi,\n QueryTasksFoldersApiArg,\n GetTasksListQueryVariables,\n} from '@shared/api/generated'\nimport { EditorTaskNode, TableGroupBy } from '@shared/containers/ProjectTreeTable'\nimport {\n DefinitionsFromApi,\n FetchBaseQueryError,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\n\n// parse attribs JSON string to object\nexport const parseAllAttribs = (allAttrib: string) => {\n try {\n return JSON.parse(allAttrib)\n } catch (e) {\n return {}\n }\n}\n\nconst transformFilteredEntitiesByParent = (response: GetTasksByParentQuery): EditorTaskNode[] => {\n if (!response.project) {\n return []\n }\n\n const tasks: EditorTaskNode[] = []\n for (const { node: taskNode } of response.project.tasks.edges) {\n tasks.push({\n ...taskNode,\n folderId: taskNode.folderId || 'root',\n attrib: parseAllAttribs(taskNode.allAttrib),\n entityId: taskNode.id,\n entityType: 'task',\n })\n }\n\n return tasks\n}\n\nconst getOverviewTaskTags = (\n result: EditorTaskNode[] | undefined = [],\n projectName: string,\n parentIds?: string | string[],\n) => {\n const taskTags = result?.map((task) => ({ type: 'overviewTask', id: task.id })) || []\n\n if (!parentIds) return taskTags\n\n const parentTags = (Array.isArray(parentIds) ? parentIds : [parentIds]).map((id) => ({\n type: 'overviewTask',\n id,\n }))\n\n return [\n ...taskTags,\n ...parentTags,\n { type: 'overviewTask', id: projectName },\n { type: 'overviewTask', id: 'LIST' },\n ]\n}\n\nexport type GetTasksListResult = {\n pageInfo: GetTasksListQuery['project']['tasks']['pageInfo']\n tasks: EditorTaskNode[]\n}\n\nexport type GetTasksListArgs = {\n projectName: string\n filter?: string\n search?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\nexport type GetGroupedTasksListResult = {\n tasks: EditorTaskNode[]\n}\n\nexport type GetGroupedTasksListArgs = {\n projectName: string\n groups: { filter: string; count: number; value: string }[]\n search?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\n// Define the page param type for infinite query\ntype TasksListPageParam = {\n cursor: string\n desc?: boolean\n}\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\ntype UpdatedDefinitions = Omit<Definitions, 'GetFilteredEntities'> & {\n GetTasksByParent: OverrideResultType<Definitions['GetTasksByParent'], EditorTaskNode[]>\n GetTasksList: OverrideResultType<Definitions['GetTasksList'], GetTasksListResult>\n}\n\n// GRAPHQL API\nconst enhancedApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // This gets tasks for all parent folders provided\n // But in this case it will only ever receive one parent folder from the getOverviewTasksByFolders query\n // It is only used by getOverviewTasksByFolders in this file\n GetTasksByParent: {\n transformResponse: transformFilteredEntitiesByParent,\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n },\n GetTasksList: {\n transformResponse: (result: GetTasksListQuery) => ({\n tasks: transformFilteredEntitiesByParent(result),\n pageInfo: result.project.tasks.pageInfo,\n }),\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks || [], projectName),\n },\n },\n})\n\n// REST FOLDERS API\nconst foldersApiEnhanced = tasksApi.enhanceEndpoints({\n endpoints: {\n queryTasksFolders: {},\n },\n})\n\nexport const TASKS_INFINITE_QUERY_COUNT = 100 // Number of items to fetch per page\n\nconst injectedApi = enhancedApi.injectEndpoints({\n endpoints: (build) => ({\n // Each project has one cache for all the tasks of the expanded folders\n // Changing the expanded folders will trigger a refetch but not a new cache\n // Each expanded folder has it's own query that is looped over here\n // When new folders are expanded, the new tasks are fetched and we use the cache for the rest\n // This also solves the pagination issue of getting all tasks in one query, splitting it up in multiple queries to avoid pagination limits\n getOverviewTasksByFolders: build.query<\n EditorTaskNode[],\n { projectName: string; parentIds: string[]; filter?: string; search?: string }\n >({\n async queryFn({ projectName, parentIds, filter, search }, { dispatch, forced }) {\n try {\n // Process parent IDs in sequential batches\n const BATCH_SIZE = 20 // Process x parentIds at a time\n const allTasks: EditorTaskNode[] = []\n\n // Process batches one after another\n for (let i = 0; i < parentIds.length; i += BATCH_SIZE) {\n const batchParentIds = parentIds.slice(i, i + BATCH_SIZE)\n\n // Process this batch in parallel\n const batchResults = await Promise.all(\n batchParentIds.map(async (parentId) =>\n dispatch(\n enhancedApi.endpoints.GetTasksByParent.initiate(\n {\n projectName,\n parentIds: [parentId],\n filter,\n search,\n },\n { forceRefetch: forced },\n ),\n ),\n ),\n )\n\n // Add the results from this batch to our accumulated results\n const batchTasks = batchResults\n .filter((r) => !!r.data)\n .flatMap((result) => result.data as EditorTaskNode[])\n\n allTasks.push(...batchTasks)\n }\n\n return { data: allTasks }\n } catch (e: any) {\n // handle errors appropriately\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n // keep one cache per project\n serializeQueryArgs: ({ queryArgs: { parentIds, ...rest } }) => ({\n ...rest,\n }),\n // Refetch when the page arg changes\n forceRefetch({ currentArg, previousArg }) {\n return JSON.stringify(currentArg) !== JSON.stringify(previousArg)\n },\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n }),\n // queryTasksFolders is a post so it's a bit annoying to consume\n // we wrap it in a queryFn to make it easier to consume as a query hook\n getQueryTasksFolders: build.query<string[], QueryTasksFoldersApiArg>({\n async queryFn({ projectName, tasksFoldersQuery }, { dispatch }) {\n try {\n const result = await dispatch(\n foldersApiEnhanced.endpoints.queryTasksFolders.initiate({\n projectName,\n tasksFoldersQuery,\n }),\n )\n\n const data = result.data?.folderIds || []\n\n return { data }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n }),\n // Add new infinite query endpoint for tasks list\n getTasksListInfinite: build.infiniteQuery<\n GetTasksListResult,\n GetTasksListArgs,\n TasksListPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '', desc: false },\n // Calculate the next page param based on current page response and params\n getNextPageParam: (lastPage, _allPages, lastPageParam, _allPageParams) => {\n // Use the endCursor from the query as the next page param\n const pageInfo = lastPage.pageInfo\n const desc = lastPageParam.desc\n const hasNextPage = desc ? pageInfo.hasPreviousPage : pageInfo.hasNextPage\n\n if (!hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n desc: lastPageParam.desc,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { projectName, filter, search, folderIds, sortBy, desc } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetTasksList\n const queryParams: any = {\n projectName,\n filter,\n search,\n folderIds,\n }\n\n // Add cursor-based pagination\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.last = TASKS_INFINITE_QUERY_COUNT\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n\n // Call the existing GetTasksList endpoint\n const result = await api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n const fallback = {\n tasks: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n }\n\n // Return the tasks directly as required by the infinite query format\n return {\n data: result.data || fallback,\n }\n } catch (e: any) {\n console.error('Error in getTasksListInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.pages.flatMap((p) => p.tasks) || [], projectName),\n }),\n getGroupedTasksList: build.query<GetGroupedTasksListResult, GetGroupedTasksListArgs>({\n queryFn: async ({ projectName, groups, search, folderIds, desc, sortBy }, api) => {\n try {\n let promises = []\n for (const group of groups) {\n const count = group.count || 500\n\n const queryParams: GetTasksListQueryVariables = {\n projectName,\n filter: group.filter,\n search,\n folderIds,\n sortBy: sortBy,\n // @ts-expect-error - we know group does not exist on query variables but we need it for later\n group: group.value,\n }\n if (desc) {\n queryParams.last = count\n } else {\n queryParams.first = count\n }\n\n const promise = api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n promises.push(promise)\n }\n\n const result = await Promise.all(promises)\n const tasks: EditorTaskNode[] = []\n for (const res of result) {\n if (res.error) throw res.error\n // get group value\n // @ts-expect-error - we know group does exist on res.originalArgs from line 319\n const groupValue = res.originalArgs?.group as string\n\n const hasNextPage =\n res.data?.pageInfo?.hasNextPage || res.data?.pageInfo?.hasPreviousPage || false\n const groupTasks =\n res.data?.tasks.map((task, i, a) => ({\n ...task,\n groups: [\n {\n value: groupValue,\n hasNextPage: i === a.length - 1 && hasNextPage ? groupValue : undefined, // Only add hasNextPage to the last task in the group\n },\n ],\n })) || []\n\n tasks.push(...groupTasks)\n }\n\n // Return the tasks directly as required by the query format\n return {\n data: {\n tasks,\n },\n }\n } catch (error: any) {\n console.error('Error in getGroupedTasksList queryFn:', error)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks, projectName),\n }),\n }),\n})\n\nexport const {\n useGetOverviewTasksByFoldersQuery,\n useGetQueryTasksFoldersQuery,\n useGetTasksListQuery,\n useGetTasksListInfiniteInfiniteQuery,\n useLazyGetTasksByParentQuery,\n useGetGroupedTasksListQuery,\n} = injectedApi\nexport default injectedApi\n"],"names":["gqlApi","tasksApi"],"mappings":"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"}