@ynput/ayon-frontend-shared 0.3.8 → 0.3.10

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 (811) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +24 -22
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +182 -171
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/Slicer.cjs.js +1 -1
  8. package/dist/Slicer.es.js +13 -11
  9. package/dist/Slicer.es.js.map +1 -1
  10. package/dist/api.cjs.js +1 -1
  11. package/dist/api.es.js +340 -331
  12. package/dist/api.es.js.map +1 -1
  13. package/dist/context.cjs.js +1 -1
  14. package/dist/context.es.js +39 -36
  15. package/dist/context.es.js.map +1 -1
  16. package/dist/index.cjs.js +1 -1
  17. package/dist/index.es.js +11 -9
  18. package/dist/index.es.js.map +1 -1
  19. package/dist/shared/src/api/generated/actions.cjs.js.map +1 -1
  20. package/dist/shared/src/api/generated/actions.es.js.map +1 -1
  21. package/dist/shared/src/api/generated/folders.cjs.js.map +1 -1
  22. package/dist/shared/src/api/generated/folders.es.js.map +1 -1
  23. package/dist/shared/src/api/generated/projectFolders.cjs.js +2 -0
  24. package/dist/shared/src/api/generated/projectFolders.cjs.js.map +1 -0
  25. package/dist/shared/src/api/generated/projectFolders.es.js +44 -0
  26. package/dist/shared/src/api/generated/projectFolders.es.js.map +1 -0
  27. package/dist/shared/src/api/generated/projects.cjs.js +1 -1
  28. package/dist/shared/src/api/generated/projects.cjs.js.map +1 -1
  29. package/dist/shared/src/api/generated/projects.es.js +20 -0
  30. package/dist/shared/src/api/generated/projects.es.js.map +1 -1
  31. package/dist/shared/src/api/generated/system.cjs.js.map +1 -1
  32. package/dist/shared/src/api/generated/system.es.js.map +1 -1
  33. package/dist/shared/src/api/queries/actions/getActions.cjs.js +1 -1
  34. package/dist/shared/src/api/queries/actions/getActions.cjs.js.map +1 -1
  35. package/dist/shared/src/api/queries/actions/getActions.es.js +11 -10
  36. package/dist/shared/src/api/queries/actions/getActions.es.js.map +1 -1
  37. package/dist/shared/src/api/queries/activities/getActivities.cjs.js +1 -1
  38. package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
  39. package/dist/shared/src/api/queries/activities/getActivities.es.js +11 -10
  40. package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
  41. package/dist/shared/src/api/queries/activities/getCategories.cjs.js +1 -1
  42. package/dist/shared/src/api/queries/activities/getCategories.cjs.js.map +1 -1
  43. package/dist/shared/src/api/queries/activities/getCategories.es.js +3 -2
  44. package/dist/shared/src/api/queries/activities/getCategories.es.js.map +1 -1
  45. package/dist/shared/src/api/queries/activities/getMentions.cjs.js +1 -1
  46. package/dist/shared/src/api/queries/activities/getMentions.cjs.js.map +1 -1
  47. package/dist/shared/src/api/queries/activities/getMentions.es.js +3 -2
  48. package/dist/shared/src/api/queries/activities/getMentions.es.js.map +1 -1
  49. package/dist/shared/src/api/queries/activities/updateReaction.cjs.js +1 -1
  50. package/dist/shared/src/api/queries/activities/updateReaction.cjs.js.map +1 -1
  51. package/dist/shared/src/api/queries/activities/updateReaction.es.js +4 -3
  52. package/dist/shared/src/api/queries/activities/updateReaction.es.js.map +1 -1
  53. package/dist/shared/src/api/queries/addons/getAddons.cjs.js +1 -1
  54. package/dist/shared/src/api/queries/addons/getAddons.cjs.js.map +1 -1
  55. package/dist/shared/src/api/queries/addons/getAddons.es.js +7 -6
  56. package/dist/shared/src/api/queries/addons/getAddons.es.js.map +1 -1
  57. package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js +1 -1
  58. package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js.map +1 -1
  59. package/dist/shared/src/api/queries/attributes/getAttributes.es.js +4 -3
  60. package/dist/shared/src/api/queries/attributes/getAttributes.es.js.map +1 -1
  61. package/dist/shared/src/api/queries/authentication/getAuthentication.cjs.js +1 -1
  62. package/dist/shared/src/api/queries/authentication/getAuthentication.cjs.js.map +1 -1
  63. package/dist/shared/src/api/queries/authentication/getAuthentication.es.js +4 -3
  64. package/dist/shared/src/api/queries/authentication/getAuthentication.es.js.map +1 -1
  65. package/dist/shared/src/api/queries/cloud/cloud.cjs.js +1 -1
  66. package/dist/shared/src/api/queries/cloud/cloud.cjs.js.map +1 -1
  67. package/dist/shared/src/api/queries/cloud/cloud.es.js +9 -8
  68. package/dist/shared/src/api/queries/cloud/cloud.es.js.map +1 -1
  69. package/dist/shared/src/api/queries/config/getConfig.cjs.js +1 -1
  70. package/dist/shared/src/api/queries/config/getConfig.cjs.js.map +1 -1
  71. package/dist/shared/src/api/queries/config/getConfig.es.js +9 -8
  72. package/dist/shared/src/api/queries/config/getConfig.es.js.map +1 -1
  73. package/dist/shared/src/api/queries/entities/getEntity.cjs.js +1 -1
  74. package/dist/shared/src/api/queries/entities/getEntity.cjs.js.map +1 -1
  75. package/dist/shared/src/api/queries/entities/getEntity.es.js +13 -12
  76. package/dist/shared/src/api/queries/entities/getEntity.es.js.map +1 -1
  77. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
  78. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  79. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +4 -3
  80. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  81. package/dist/shared/src/api/queries/entities/patchDetailsPanel.cjs.js +1 -1
  82. package/dist/shared/src/api/queries/entities/patchDetailsPanel.cjs.js.map +1 -1
  83. package/dist/shared/src/api/queries/entities/patchDetailsPanel.es.js +4 -2
  84. package/dist/shared/src/api/queries/entities/patchDetailsPanel.es.js.map +1 -1
  85. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +1 -1
  86. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  87. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +5 -3
  88. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  89. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  90. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  91. package/dist/shared/src/api/queries/entityLists/getLists.es.js +15 -14
  92. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  93. package/dist/shared/src/api/queries/entityLists/getListsAttributes.cjs.js +1 -1
  94. package/dist/shared/src/api/queries/entityLists/getListsAttributes.cjs.js.map +1 -1
  95. package/dist/shared/src/api/queries/entityLists/getListsAttributes.es.js +3 -2
  96. package/dist/shared/src/api/queries/entityLists/getListsAttributes.es.js.map +1 -1
  97. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js +1 -1
  98. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js.map +1 -1
  99. package/dist/shared/src/api/queries/entityLists/listFolders.es.js +22 -20
  100. package/dist/shared/src/api/queries/entityLists/listFolders.es.js.map +1 -1
  101. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js +1 -1
  102. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
  103. package/dist/shared/src/api/queries/entityLists/updateLists.es.js +17 -16
  104. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
  105. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -1
  106. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  107. package/dist/shared/src/api/queries/folders/getFolders.es.js +4 -3
  108. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  109. package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js +1 -1
  110. package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js.map +1 -1
  111. package/dist/shared/src/api/queries/grouping/getGrouping.es.js +22 -6
  112. package/dist/shared/src/api/queries/grouping/getGrouping.es.js.map +1 -1
  113. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +1 -1
  114. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -1
  115. package/dist/shared/src/api/queries/links/getEntityLinks.es.js +3 -2
  116. package/dist/shared/src/api/queries/links/getEntityLinks.es.js.map +1 -1
  117. package/dist/shared/src/api/queries/links/getLinks.cjs.js +1 -1
  118. package/dist/shared/src/api/queries/links/getLinks.cjs.js.map +1 -1
  119. package/dist/shared/src/api/queries/links/getLinks.es.js +14 -13
  120. package/dist/shared/src/api/queries/links/getLinks.es.js.map +1 -1
  121. package/dist/shared/src/api/queries/links/updateLinks.cjs.js +1 -1
  122. package/dist/shared/src/api/queries/links/updateLinks.cjs.js.map +1 -1
  123. package/dist/shared/src/api/queries/links/updateLinks.es.js +17 -16
  124. package/dist/shared/src/api/queries/links/updateLinks.es.js.map +1 -1
  125. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  126. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  127. package/dist/shared/src/api/queries/overview/getOverview.es.js +37 -36
  128. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  129. package/dist/shared/src/api/queries/overview/patchVersions.cjs.js +1 -1
  130. package/dist/shared/src/api/queries/overview/patchVersions.cjs.js.map +1 -1
  131. package/dist/shared/src/api/queries/overview/patchVersions.es.js +88 -53
  132. package/dist/shared/src/api/queries/overview/patchVersions.es.js.map +1 -1
  133. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +1 -1
  134. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  135. package/dist/shared/src/api/queries/overview/updateOverview.es.js +8 -6
  136. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  137. package/dist/shared/src/api/queries/permissions/getPermissions.cjs.js +1 -1
  138. package/dist/shared/src/api/queries/permissions/getPermissions.cjs.js.map +1 -1
  139. package/dist/shared/src/api/queries/permissions/getPermissions.es.js +4 -3
  140. package/dist/shared/src/api/queries/permissions/getPermissions.es.js.map +1 -1
  141. package/dist/shared/src/api/queries/products/createProduct.cjs.js +1 -1
  142. package/dist/shared/src/api/queries/products/createProduct.cjs.js.map +1 -1
  143. package/dist/shared/src/api/queries/products/createProduct.es.js +3 -2
  144. package/dist/shared/src/api/queries/products/createProduct.es.js.map +1 -1
  145. package/dist/shared/src/api/queries/project/getProject.cjs.js +1 -1
  146. package/dist/shared/src/api/queries/project/getProject.cjs.js.map +1 -1
  147. package/dist/shared/src/api/queries/project/getProject.es.js +9 -8
  148. package/dist/shared/src/api/queries/project/getProject.es.js.map +1 -1
  149. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js +2 -0
  150. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js.map +1 -0
  151. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js +178 -0
  152. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js.map +1 -0
  153. package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -1
  154. package/dist/shared/src/api/queries/review/getReview.cjs.js.map +1 -1
  155. package/dist/shared/src/api/queries/review/getReview.es.js +15 -14
  156. package/dist/shared/src/api/queries/review/getReview.es.js.map +1 -1
  157. package/dist/shared/src/api/queries/review/updateReview.cjs.js +1 -1
  158. package/dist/shared/src/api/queries/review/updateReview.cjs.js.map +1 -1
  159. package/dist/shared/src/api/queries/review/updateReview.es.js +7 -6
  160. package/dist/shared/src/api/queries/review/updateReview.es.js.map +1 -1
  161. package/dist/shared/src/api/queries/share/share.cjs.js +1 -1
  162. package/dist/shared/src/api/queries/share/share.cjs.js.map +1 -1
  163. package/dist/shared/src/api/queries/share/share.es.js +3 -2
  164. package/dist/shared/src/api/queries/share/share.es.js.map +1 -1
  165. package/dist/shared/src/api/queries/system/getSystem.cjs.js +1 -1
  166. package/dist/shared/src/api/queries/system/getSystem.cjs.js.map +1 -1
  167. package/dist/shared/src/api/queries/system/getSystem.es.js +5 -4
  168. package/dist/shared/src/api/queries/system/getSystem.es.js.map +1 -1
  169. package/dist/shared/src/api/queries/tasks/updateTasks.cjs.js +1 -1
  170. package/dist/shared/src/api/queries/tasks/updateTasks.cjs.js.map +1 -1
  171. package/dist/shared/src/api/queries/tasks/updateTasks.es.js +6 -6
  172. package/dist/shared/src/api/queries/tasks/updateTasks.es.js.map +1 -1
  173. package/dist/shared/src/api/queries/uris/getUris.cjs.js +1 -1
  174. package/dist/shared/src/api/queries/uris/getUris.cjs.js.map +1 -1
  175. package/dist/shared/src/api/queries/uris/getUris.es.js +3 -2
  176. package/dist/shared/src/api/queries/uris/getUris.es.js.map +1 -1
  177. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  178. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  179. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +6 -5
  180. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  181. package/dist/shared/src/api/queries/users/getUsers.cjs.js +1 -1
  182. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  183. package/dist/shared/src/api/queries/users/getUsers.es.js +20 -18
  184. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  185. package/dist/shared/src/api/queries/users/guests.cjs.js +1 -1
  186. package/dist/shared/src/api/queries/users/guests.cjs.js.map +1 -1
  187. package/dist/shared/src/api/queries/users/guests.es.js +5 -4
  188. package/dist/shared/src/api/queries/users/guests.es.js.map +1 -1
  189. package/dist/shared/src/api/queries/users/updateUsers.cjs.js +1 -1
  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 +21 -20
  192. package/dist/shared/src/api/queries/users/updateUsers.es.js.map +1 -1
  193. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  194. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  195. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +348 -136
  196. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  197. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.cjs.js +1 -1
  198. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.cjs.js.map +1 -1
  199. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.es.js +57 -59
  200. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.es.js.map +1 -1
  201. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js +1 -1
  202. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -1
  203. package/dist/shared/src/api/queries/versions/updateVersions.es.js +6 -5
  204. package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -1
  205. package/dist/shared/src/api/queries/views/getViews.cjs.js +1 -1
  206. package/dist/shared/src/api/queries/views/getViews.cjs.js.map +1 -1
  207. package/dist/shared/src/api/queries/views/getViews.es.js +11 -10
  208. package/dist/shared/src/api/queries/views/getViews.es.js.map +1 -1
  209. package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js +1 -1
  210. package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js.map +1 -1
  211. package/dist/shared/src/api/queries/watchers/getWatchers.es.js +4 -3
  212. package/dist/shared/src/api/queries/watchers/getWatchers.es.js.map +1 -1
  213. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +1 -1
  214. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  215. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +4 -2
  216. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  217. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +3 -3
  218. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
  219. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +13 -13
  220. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
  221. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +3 -3
  222. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  223. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +24 -22
  224. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  225. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  226. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  227. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +4 -2
  228. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  229. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +1 -1
  230. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  231. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +4 -2
  232. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  233. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  234. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  235. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +4 -2
  236. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  237. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  238. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  239. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +4 -2
  240. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  241. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  242. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  243. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +16 -14
  244. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  245. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  246. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  247. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +4 -2
  248. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  249. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
  250. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  251. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +4 -2
  252. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  253. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  254. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  255. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +4 -2
  256. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  257. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  258. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  259. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +4 -2
  260. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  261. package/dist/shared/src/components/Menu/Menu.styled.cjs.js +0 -1
  262. package/dist/shared/src/components/Menu/Menu.styled.cjs.js.map +1 -1
  263. package/dist/shared/src/components/Menu/Menu.styled.es.js +0 -1
  264. package/dist/shared/src/components/Menu/Menu.styled.es.js.map +1 -1
  265. package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
  266. package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
  267. package/dist/shared/src/components/Menu/MenuList.es.js +21 -21
  268. package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
  269. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  270. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  271. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +58 -38
  272. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  273. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
  274. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  275. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +113 -107
  276. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  277. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  278. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  279. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +4 -2
  280. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  281. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  282. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  283. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +4 -2
  284. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  285. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  286. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  287. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +4 -2
  288. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  289. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  290. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  291. package/dist/shared/src/components/RenameForm/RenameForm.es.js +4 -2
  292. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  293. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +1 -1
  294. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  295. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +4 -2
  296. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  297. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  298. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  299. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +32 -30
  300. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  301. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  302. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  303. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +5 -3
  304. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  305. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  306. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  307. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +4 -2
  308. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  309. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
  310. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  311. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +4 -2
  312. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  313. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  314. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  315. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +8 -6
  316. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  317. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +31 -0
  318. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -0
  319. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +107 -0
  320. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -0
  321. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +2 -2
  322. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  323. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +33 -28
  324. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  325. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
  326. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
  327. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +12 -11
  328. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
  329. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  330. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  331. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +4 -2
  332. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  333. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  334. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  335. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +6 -4
  336. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  337. package/dist/shared/src/components/Watchers/Watchers.cjs.js +1 -1
  338. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  339. package/dist/shared/src/components/Watchers/Watchers.es.js +4 -2
  340. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  341. package/dist/shared/src/config/plannerFeatures.cjs.js +2 -0
  342. package/dist/shared/src/config/plannerFeatures.cjs.js.map +1 -0
  343. package/dist/shared/src/config/plannerFeatures.es.js +50 -0
  344. package/dist/shared/src/config/plannerFeatures.es.js.map +1 -0
  345. package/dist/shared/src/config/powerpackFeatures.cjs.js +2 -0
  346. package/dist/shared/src/config/powerpackFeatures.cjs.js.map +1 -0
  347. package/dist/shared/src/config/powerpackFeatures.es.js +74 -0
  348. package/dist/shared/src/config/powerpackFeatures.es.js.map +1 -0
  349. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  350. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  351. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +4 -2
  352. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  353. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  354. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  355. package/dist/shared/src/containers/Actions/Actions.es.js +18 -15
  356. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  357. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js +2 -2
  358. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
  359. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js +33 -32
  360. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
  361. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  362. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  363. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +4 -2
  364. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  365. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  366. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  367. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +73 -68
  368. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  369. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  370. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  371. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +4 -2
  372. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  373. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  374. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  375. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +5 -3
  376. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  377. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  378. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  379. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +4 -2
  380. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  381. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  382. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  383. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +4 -2
  384. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  385. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  386. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  387. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +18 -16
  388. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  389. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  390. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  391. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +4 -2
  392. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  393. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  394. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  395. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +4 -2
  396. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  397. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  398. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  399. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +4 -2
  400. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  401. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  402. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  403. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +4 -2
  404. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  405. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  406. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  407. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +4 -2
  408. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  409. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  410. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  411. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +4 -2
  412. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  413. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  414. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  415. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +4 -2
  416. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  417. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  418. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  419. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +4 -2
  420. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  421. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  422. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  423. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +4 -2
  424. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  425. package/dist/shared/src/containers/Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.cjs.js +1 -1
  426. package/dist/shared/src/containers/Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.cjs.js.map +1 -1
  427. package/dist/shared/src/containers/Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.es.js +8 -8
  428. package/dist/shared/src/containers/Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.es.js.map +1 -1
  429. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  430. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  431. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +4 -2
  432. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  433. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  434. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  435. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +4 -2
  436. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  437. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  438. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  439. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +4 -2
  440. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  441. package/dist/shared/src/containers/Feed/components/ActivityItem.cjs.js.map +1 -1
  442. package/dist/shared/src/containers/Feed/components/ActivityItem.es.js.map +1 -1
  443. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.cjs.js +1 -1
  444. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.cjs.js.map +1 -1
  445. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.es.js +18 -18
  446. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.es.js.map +1 -1
  447. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
  448. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  449. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +4 -2
  450. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  451. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  452. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  453. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +4 -2
  454. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  455. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  456. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  457. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +7 -5
  458. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  459. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +1 -1
  460. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  461. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +4 -2
  462. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  463. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  464. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  465. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +686 -616
  466. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  467. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +26 -11
  468. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  469. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +40 -25
  470. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  471. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  472. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  473. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +4 -2
  474. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  475. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +2 -0
  476. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -0
  477. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +381 -0
  478. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -0
  479. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  480. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  481. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +4 -2
  482. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  483. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  484. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  485. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +4 -2
  486. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  487. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.cjs.js +6 -2
  488. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.cjs.js.map +1 -1
  489. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.es.js +13 -9
  490. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.es.js.map +1 -1
  491. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  492. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  493. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +147 -119
  494. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  495. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +4 -3
  496. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  497. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +487 -262
  498. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  499. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  500. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  501. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +149 -145
  502. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  503. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  504. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  505. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +6 -4
  506. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  507. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  508. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  509. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +1 -1
  510. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -1
  511. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +118 -109
  512. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -1
  513. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js +1 -1
  514. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js.map +1 -1
  515. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js +30 -30
  516. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js.map +1 -1
  517. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  518. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  519. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +94 -91
  520. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  521. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.cjs.js +5 -0
  522. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.cjs.js.map +1 -0
  523. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.es.js +67 -0
  524. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.es.js.map +1 -0
  525. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  526. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  527. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +33 -31
  528. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  529. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  530. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  531. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +30 -28
  532. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  533. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  534. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  535. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +4 -2
  536. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  537. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  538. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  539. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +4 -2
  540. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  541. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnDragRestriction.cjs.js +2 -0
  542. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnDragRestriction.cjs.js.map +1 -0
  543. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnDragRestriction.es.js +56 -0
  544. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnDragRestriction.es.js.map +1 -0
  545. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  546. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  547. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +4 -2
  548. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  549. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnVirtualization.cjs.js +1 -1
  550. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnVirtualization.cjs.js.map +1 -1
  551. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnVirtualization.es.js +57 -40
  552. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnVirtualization.es.js.map +1 -1
  553. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  554. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  555. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +4 -2
  556. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  557. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  558. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  559. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +4 -2
  560. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  561. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  562. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  563. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +4 -2
  564. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  565. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  566. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  567. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +4 -2
  568. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  569. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  570. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  571. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +4 -2
  572. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  573. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  574. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  575. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +4 -2
  576. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  577. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  578. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  579. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +30 -28
  580. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  581. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +2 -0
  582. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -0
  583. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +303 -0
  584. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -0
  585. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  586. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  587. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +175 -156
  588. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  589. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  590. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  591. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +15 -13
  592. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  593. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
  594. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  595. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +21 -19
  596. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  597. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  598. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  599. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +6 -4
  600. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  601. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  602. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  603. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +4 -2
  604. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  605. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  606. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  607. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +21 -18
  608. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  609. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +1 -1
  610. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  611. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +1 -1
  612. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  613. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidgetInput.cjs.js +1 -1
  614. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidgetInput.cjs.js.map +1 -1
  615. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidgetInput.es.js +29 -29
  616. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidgetInput.es.js.map +1 -1
  617. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  618. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  619. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +7 -5
  620. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  621. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  622. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  623. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +90 -85
  624. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  625. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.cjs.js +9 -5
  626. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.cjs.js.map +1 -1
  627. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.es.js +11 -7
  628. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.es.js.map +1 -1
  629. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  630. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  631. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +4 -2
  632. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  633. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  634. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  635. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +6 -4
  636. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  637. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  638. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  639. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +14 -12
  640. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  641. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js +1 -1
  642. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -1
  643. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js +4 -2
  644. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -1
  645. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  646. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  647. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +4 -2
  648. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  649. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  650. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  651. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +4 -2
  652. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  653. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  654. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  655. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +40 -38
  656. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  657. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
  658. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
  659. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +10 -8
  660. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
  661. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  662. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  663. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +5 -3
  664. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  665. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js +1 -1
  666. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
  667. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js +4 -2
  668. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
  669. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +1 -1
  670. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -1
  671. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +4 -2
  672. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -1
  673. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +1 -1
  674. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  675. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +12 -10
  676. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  677. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  678. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  679. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +4 -2
  680. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  681. package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
  682. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  683. package/dist/shared/src/context/AddonProjectContext.es.js +6 -4
  684. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  685. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  686. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  687. package/dist/shared/src/context/DetailsPanelContext.es.js +6 -4
  688. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  689. package/dist/shared/src/context/GlobalContext.cjs.js +1 -1
  690. package/dist/shared/src/context/GlobalContext.cjs.js.map +1 -1
  691. package/dist/shared/src/context/GlobalContext.es.js +6 -4
  692. package/dist/shared/src/context/GlobalContext.es.js.map +1 -1
  693. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  694. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  695. package/dist/shared/src/context/PowerpackContext.es.js +46 -94
  696. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  697. package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
  698. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
  699. package/dist/shared/src/context/ProjectContext.es.js +6 -4
  700. package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
  701. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  702. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  703. package/dist/shared/src/context/ProjectFoldersContext.es.js +6 -4
  704. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  705. package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
  706. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  707. package/dist/shared/src/context/RemoteModulesContext.es.js +6 -4
  708. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  709. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  710. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  711. package/dist/shared/src/context/SubtasksModulesContext.es.js +21 -14
  712. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  713. package/dist/shared/src/context/UriContext.cjs.js +1 -1
  714. package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
  715. package/dist/shared/src/context/UriContext.es.js +7 -5
  716. package/dist/shared/src/context/UriContext.es.js.map +1 -1
  717. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  718. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  719. package/dist/shared/src/context/WebsocketContext.es.js +6 -4
  720. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  721. package/dist/shared/src/hooks/useActionTriggers.cjs.js +1 -1
  722. package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
  723. package/dist/shared/src/hooks/useActionTriggers.es.js +4 -2
  724. package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
  725. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  726. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  727. package/dist/shared/src/hooks/useEntityUpdate.es.js +4 -2
  728. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  729. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js +1 -1
  730. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js.map +1 -1
  731. package/dist/shared/src/hooks/useGetEntityGroups.es.js +4 -2
  732. package/dist/shared/src/hooks/useGetEntityGroups.es.js.map +1 -1
  733. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  734. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  735. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +4 -2
  736. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  737. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +1 -1
  738. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  739. package/dist/shared/src/hooks/useScopedStatuses.es.js +6 -4
  740. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  741. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  742. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  743. package/dist/shared/src/hooks/useUserProjectConfig.es.js +4 -2
  744. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  745. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js +2 -0
  746. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js.map +1 -0
  747. package/dist/shared/src/util/buildHierarchicalTableRows.es.js +69 -0
  748. package/dist/shared/src/util/buildHierarchicalTableRows.es.js.map +1 -0
  749. package/dist/shared/src/util/errorHandling.cjs.js +2 -0
  750. package/dist/shared/src/util/errorHandling.cjs.js.map +1 -0
  751. package/dist/shared/src/util/errorHandling.es.js +9 -0
  752. package/dist/shared/src/util/errorHandling.es.js.map +1 -0
  753. package/dist/shared/src/util/folderHierarchy.cjs.js +2 -0
  754. package/dist/shared/src/util/folderHierarchy.cjs.js.map +1 -0
  755. package/dist/shared/src/util/folderHierarchy.es.js +14 -0
  756. package/dist/shared/src/util/folderHierarchy.es.js.map +1 -0
  757. package/dist/shared/src/util/folderOperations.cjs.js +2 -0
  758. package/dist/shared/src/util/folderOperations.cjs.js.map +1 -0
  759. package/dist/shared/src/util/folderOperations.es.js +27 -0
  760. package/dist/shared/src/util/folderOperations.es.js.map +1 -0
  761. package/dist/shared/src/util/keyboardShortcuts.cjs.js +2 -0
  762. package/dist/shared/src/util/keyboardShortcuts.cjs.js.map +1 -0
  763. package/dist/shared/src/util/keyboardShortcuts.es.js +8 -0
  764. package/dist/shared/src/util/keyboardShortcuts.es.js.map +1 -0
  765. package/dist/types/api/generated/actions.d.ts +2 -1
  766. package/dist/types/api/generated/folders.d.ts +3 -3
  767. package/dist/types/api/generated/index.d.ts +2 -0
  768. package/dist/types/api/generated/projectFolders.d.ts +79 -0
  769. package/dist/types/api/generated/projects.d.ts +55 -1
  770. package/dist/types/api/generated/system.d.ts +2 -1
  771. package/dist/types/api/queries/index.d.ts +1 -0
  772. package/dist/types/api/queries/project/getProject.d.ts +4 -0
  773. package/dist/types/api/queries/projectFolders/index.d.ts +1 -0
  774. package/dist/types/api/queries/projectFolders/projectFolders.d.ts +985 -0
  775. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +1 -1
  776. package/dist/types/components/FolderForm/FolderForm.d.ts +24 -0
  777. package/dist/types/components/FolderForm/index.d.ts +3 -0
  778. package/dist/types/components/ProjectTableSettings/ProjectTableSettings.d.ts +1 -1
  779. package/dist/types/components/SimpleFormDialog/FormFile.d.ts +16 -0
  780. package/dist/types/components/SimpleFormDialog/SimpleFormDialog.d.ts +2 -1
  781. package/dist/types/components/SubtasksManager/SubtasksManagerWrapper.d.ts +3 -2
  782. package/dist/types/config/index.d.ts +2 -0
  783. package/dist/types/config/plannerFeatures.d.ts +13 -0
  784. package/dist/types/config/powerpackFeatures.d.ts +6 -0
  785. package/dist/types/containers/Actions/ActionsDropdown/ActionsDropdown.d.ts +2 -1
  786. package/dist/types/containers/Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.d.ts +1 -0
  787. package/dist/types/containers/Feed/components/ActivityItem.d.ts +1 -0
  788. package/dist/types/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.d.ts +1 -0
  789. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +1 -0
  790. package/dist/types/containers/ProjectTreeTable/components/ColumnDndProvider.d.ts +6 -0
  791. package/dist/types/containers/ProjectTreeTable/components/index.d.ts +1 -0
  792. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +5 -0
  793. package/dist/types/containers/ProjectTreeTable/context/ProjectTableProvider.d.ts +6 -1
  794. package/dist/types/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.d.ts +26 -0
  795. package/dist/types/containers/ProjectTreeTable/context/clipboard/index.d.ts +1 -0
  796. package/dist/types/containers/ProjectTreeTable/hooks/index.d.ts +1 -0
  797. package/dist/types/containers/ProjectTreeTable/hooks/useColumnDragRestriction.d.ts +19 -0
  798. package/dist/types/containers/ProjectTreeTable/hooks/useSortBySettings.d.ts +4 -0
  799. package/dist/types/containers/SimpleTable/SimpleTable.d.ts +2 -1
  800. package/dist/types/containers/Views/hooks/useBaseViewMutations.d.ts +2 -2
  801. package/dist/types/context/PowerpackContext.d.ts +17 -6
  802. package/dist/types/util/buildHierarchicalTableRows.d.ts +43 -0
  803. package/dist/types/util/errorHandling.d.ts +7 -0
  804. package/dist/types/util/folderHierarchy.d.ts +37 -0
  805. package/dist/types/util/folderOperations.d.ts +34 -0
  806. package/dist/types/util/index.d.ts +5 -0
  807. package/dist/types/util/keyboardShortcuts.d.ts +6 -0
  808. package/dist/util.cjs.js +1 -1
  809. package/dist/util.es.js +51 -41
  810. package/dist/util.es.js.map +1 -1
  811. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"updateLinks.cjs.js","sources":["../../../../../../src/api/queries/links/updateLinks.ts"],"sourcesContent":["import { gqlLinksApi, linksApi } from '@shared/api/generated'\nimport { RootState } from '@reduxjs/toolkit/query'\nimport { current, ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { EntityLink, EntityWithLinks, entityLinksApi } from './getEntityLinks'\n\ntype Entity = {\n entityType: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n entityId: string\n name: string\n label?: string | null\n parents: string[]\n subType: string | undefined // Optional subtype for folders, products, versions\n}\n\n// Helper function to get entity data by type\nconst getEntityDataByType = async (\n entityType: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile',\n entityId: string,\n projectName: string,\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n) => {\n switch (entityType) {\n case 'task': {\n const resTask = await dispatch(\n gqlLinksApi.endpoints.GetTaskLinkData.initiate({\n projectName,\n taskId: entityId,\n }),\n ).unwrap()\n return resTask?.project.task\n }\n case 'folder': {\n const resFolder = await dispatch(\n gqlLinksApi.endpoints.GetFolderLinkData.initiate({\n projectName,\n folderId: entityId,\n }),\n ).unwrap()\n return resFolder?.project.folder\n }\n case 'product': {\n const resProduct = await dispatch(\n gqlLinksApi.endpoints.GetProductLinkData.initiate({\n projectName,\n productId: entityId,\n }),\n ).unwrap()\n return resProduct?.project.product\n }\n case 'version': {\n const resVersion = await dispatch(\n gqlLinksApi.endpoints.GetVersionLinkData.initiate({\n projectName,\n versionId: entityId,\n }),\n ).unwrap()\n return resVersion?.project.version\n }\n case 'representation': {\n const resRepresentation = await dispatch(\n gqlLinksApi.endpoints.GetRepresentationLinkData.initiate({\n projectName,\n representationId: entityId,\n }),\n ).unwrap()\n return resRepresentation?.project.representation\n }\n case 'workfile': {\n const resWorkfile = await dispatch(\n gqlLinksApi.endpoints.GetWorkfileLinkData.initiate({\n projectName,\n workfileId: entityId,\n }),\n ).unwrap()\n return resWorkfile?.project.workfile\n }\n default:\n throw new Error(`Unknown entity type: ${entityType}`)\n }\n}\n\n// Helper function to patch entity links cache for all entity types\nconst patchEntityLinksCache = (\n {\n projectName,\n sourceEntity,\n targetEntity,\n linkId,\n linkType,\n direction,\n isDelete = false,\n }: {\n projectName: string\n sourceEntity: Entity\n targetEntity: Entity\n linkId: string\n linkType: string\n direction: 'in' | 'out'\n isDelete?: boolean\n },\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches: any[] = [],\n) => {\n // Helper function to patch a single entity's links\n const patchEntityLinks = (\n entityToPatch: Entity,\n otherEntity: Entity,\n linkDirection: 'in' | 'out',\n ) => {\n // Get all cached query arguments for the getEntityLinks endpoint\n const cachedArgs = entityLinksApi.util.selectCachedArgsForQuery(state, 'getEntityLinks')\n\n // Filter for queries that match our project and entity type\n const relevantArgs = cachedArgs.filter(\n (args) => args.projectName === projectName && args.entityType === entityToPatch.entityType,\n )\n\n let entityFoundInAnyCache = false\n\n for (const args of relevantArgs) {\n try {\n const patch = dispatch(\n entityLinksApi.util.updateQueryData(\n 'getEntityLinks',\n args,\n (draft: EntityWithLinks[]) => {\n // Find the entity in the cache\n const entityInCache = draft.find((entity) => entity.id === entityToPatch.entityId)\n if (!entityInCache) {\n // Entity not in this specific cache, continue to next one\n return\n }\n\n entityFoundInAnyCache = true\n console.log(\n `Found and patching ${entityToPatch.entityType} ${entityToPatch.entityId} in cache`,\n )\n\n if (isDelete) {\n // Remove the link from the entity\n entityInCache.links = entityInCache.links.filter((link) => link.id !== linkId)\n } else {\n console.log(`Adding new link to ${entityToPatch.entityType}`)\n // Add the new link to the entity\n const newLink: EntityLink = {\n id: linkId,\n direction: linkDirection,\n linkType,\n entityType: otherEntity.entityType,\n node: {\n id: otherEntity.entityId,\n name: otherEntity.name,\n label: otherEntity.label,\n parents: otherEntity.parents,\n subType: otherEntity.subType,\n },\n }\n\n // Check if link already exists and update it, or add new one\n const existingLinkIndex = entityInCache.links.findIndex(\n (link) => link.id === linkId,\n )\n\n if (existingLinkIndex !== -1) {\n entityInCache.links[existingLinkIndex] = newLink\n } else {\n console.log(\n `Adding new link to ${entityToPatch.entityType} links cache`,\n newLink,\n current(entityInCache),\n )\n entityInCache.links.push(newLink)\n }\n }\n },\n ),\n )\n\n patches.push(patch)\n } catch (error) {\n console.error(`Error patching cache for ${entityToPatch.entityType}:`, error)\n }\n }\n\n // If entity was not found in any cache, handle based on context\n if (!entityFoundInAnyCache) {\n // For source entities (where user is creating the link from), we need to invalidate\n // to ensure the user sees the new link appear in the UI\n if (entityToPatch.entityId === sourceEntity.entityId) {\n console.warn(\n `Source ${entityToPatch.entityType} ${entityToPatch.entityId} not in cache - invalidating to refresh UI`,\n )\n dispatch(\n entityLinksApi.util.invalidateTags([\n { type: 'link', id: `${projectName}-${entityToPatch.entityType}` },\n ]),\n )\n } else {\n // For target entities, we can skip since they're not currently visible\n console.log(\n `Target ${entityToPatch.entityType} ${entityToPatch.entityId} not in cache - skipping patch (entity not currently visible)`,\n )\n // No action needed - when the entity is eventually loaded, it will have the correct links from the server\n }\n }\n }\n\n // Patch the source entity with the link\n patchEntityLinks(sourceEntity, targetEntity, direction)\n\n // Patch the target entity with the link (flip direction)\n const targetDirection = direction === 'in' ? 'out' : 'in'\n patchEntityLinks(targetEntity, sourceEntity, targetDirection)\n}\n\nconst enhancedApi = linksApi.enhanceEndpoints({\n endpoints: {\n deleteEntityLink: {\n transformErrorResponse: (error: any) => error.data?.detail || '',\n async onQueryStarted(\n // @ts-ignore - patch is purely used for patching the entities\n { linkId, projectName, patch },\n { dispatch, getState, queryFulfilled },\n ) {\n const state = getState()\n let patches: any[] = []\n\n const sourceEntity = patch?.source\n const targetEntity = patch?.target\n const linkType = patch?.linkType || ''\n const direction = patch?.direction || 'out'\n\n if (sourceEntity && targetEntity) {\n try {\n // Update entity links cache for both entities\n patchEntityLinksCache(\n {\n projectName,\n sourceEntity,\n targetEntity,\n linkId,\n linkType,\n direction,\n isDelete: true,\n },\n { state, dispatch },\n patches,\n )\n\n // Wait for the mutation to finish\n await queryFulfilled\n } catch (error) {\n console.error('Error patching entities during link deletion:', error)\n // Undo patches if there's an error\n for (const patch of patches) {\n patch.undo()\n }\n\n // Invalidate entity links queries as fallback\n dispatch(\n entityLinksApi.util.invalidateTags([\n { type: 'link', id: `${projectName}-${sourceEntity.entityType}` },\n { type: 'link', id: `${projectName}-${targetEntity.entityType}` },\n ]),\n )\n }\n } else {\n console.warn('Source or target entity not provided for link deletion')\n }\n },\n },\n createEntityLink: {\n transformErrorResponse: (error: any) => error.data?.detail || '',\n async onQueryStarted(\n // @ts-ignore - patch is purely used for patching the entities\n { projectName, createLinkRequestModel, patch },\n { dispatch, getState, queryFulfilled },\n ) {\n const { linkType, id: linkId } = createLinkRequestModel\n const state = getState()\n\n let patches: any[] = []\n\n const sourceEntity = patch?.source\n const sourceEntityType = sourceEntity?.entityType\n const sourceEntityId = sourceEntity?.entityId\n const targetEntity = patch?.target\n const targetEntityType = targetEntity?.entityType\n const targetEntityId = targetEntity?.entityId\n const direction = patch?.direction || ('out' as 'in' | 'out')\n const linkTypeName = linkType?.split('|')[0] as string\n\n try {\n if (sourceEntity.entityType && targetEntity) {\n // Get the source entity data based on its type\n const sourcePromise = getEntityDataByType(\n sourceEntityType,\n sourceEntityId,\n projectName,\n dispatch,\n )\n\n const targetPromise = getEntityDataByType(\n targetEntityType,\n targetEntityId,\n projectName,\n dispatch,\n )\n\n // Wait for both cache data and source entity data to be loaded\n const res = await Promise.all([sourcePromise, targetPromise])\n const sourceEntityData = res[0]\n const targetEntityData = res[1]\n\n if (!sourceEntityData || !targetEntityData) {\n throw new Error('Source or target entity data not found')\n }\n\n if (!linkId) {\n throw new Error('Link ID not found in cache entry')\n }\n\n const sourceEntity: Entity = {\n entityType: sourceEntityType,\n entityId: sourceEntityId,\n name: sourceEntityData.name,\n label: 'label' in sourceEntityData ? sourceEntityData.label : undefined,\n parents: sourceEntityData.parents || [],\n subType: 'subType' in sourceEntityData ? sourceEntityData.subType : undefined,\n }\n\n const targetEntity: Entity = {\n entityType: targetEntityType,\n entityId: targetEntityId,\n name: targetEntityData.name,\n label: 'label' in targetEntityData ? targetEntityData.label : undefined,\n parents: targetEntityData.parents || [],\n subType: 'subType' in targetEntityData ? targetEntityData.subType : undefined,\n }\n\n // Update entity links cache for both entities\n patchEntityLinksCache(\n {\n projectName,\n sourceEntity,\n targetEntity,\n linkId,\n linkType: linkTypeName,\n direction,\n isDelete: false,\n },\n { state, dispatch },\n patches,\n )\n\n // Wait for the mutation to finish (undo patches if it fails)\n await queryFulfilled\n } else {\n console.warn('Source entity type not provided, falling back to task query')\n throw new Error('Source entity type not provided')\n }\n } catch (error) {\n console.error(error)\n\n // Undo patches if the mutation fails\n for (const patch of patches) {\n patch.undo()\n }\n\n // Invalidate entity links queries as fallback\n if (sourceEntity && targetEntity) {\n dispatch(\n entityLinksApi.util.invalidateTags([\n { type: 'link', id: `${projectName}-${sourceEntity.entityType}` },\n { type: 'link', id: `${projectName}-${targetEntity.entityType}` },\n ]),\n )\n }\n }\n },\n },\n },\n})\n\nexport const { useDeleteEntityLinkMutation, useCreateEntityLinkMutation } = enhancedApi\n"],"names":["getEntityDataByType","entityType","entityId","projectName","dispatch","gqlLinksApi","patchEntityLinksCache","sourceEntity","targetEntity","linkId","linkType","direction","isDelete","state","patches","patchEntityLinks","entityToPatch","otherEntity","linkDirection","relevantArgs","entityLinksApi","args","entityFoundInAnyCache","patch","draft","entityInCache","entity","link","newLink","existingLinkIndex","current","error","enhancedApi","linksApi","getState","queryFulfilled","createLinkRequestModel","sourceEntityType","sourceEntityId","targetEntityType","targetEntityId","linkTypeName","sourcePromise","targetPromise","res","sourceEntityData","targetEntityData","useDeleteEntityLinkMutation","useCreateEntityLinkMutation"],"mappings":"uwDAeMA,EAAsB,MAC1BC,EACAC,EACAC,EACAC,IACG,CACH,OAAQH,EAAA,CACN,IAAK,OAOH,OANgB,MAAMG,EACpBC,MAAY,UAAU,gBAAgB,SAAS,CAC7C,YAAAF,EACA,OAAQD,CAAA,CACT,CAAA,EACD,OAAA,IACc,QAAQ,KAE1B,IAAK,SAOH,OANkB,MAAME,EACtBC,MAAY,UAAU,kBAAkB,SAAS,CAC/C,YAAAF,EACA,SAAUD,CAAA,CACX,CAAA,EACD,OAAA,IACgB,QAAQ,OAE5B,IAAK,UAOH,OANmB,MAAME,EACvBC,MAAY,UAAU,mBAAmB,SAAS,CAChD,YAAAF,EACA,UAAWD,CAAA,CACZ,CAAA,EACD,OAAA,IACiB,QAAQ,QAE7B,IAAK,UAOH,OANmB,MAAME,EACvBC,MAAY,UAAU,mBAAmB,SAAS,CAChD,YAAAF,EACA,UAAWD,CAAA,CACZ,CAAA,EACD,OAAA,IACiB,QAAQ,QAE7B,IAAK,iBAOH,OAN0B,MAAME,EAC9BC,MAAY,UAAU,0BAA0B,SAAS,CACvD,YAAAF,EACA,iBAAkBD,CAAA,CACnB,CAAA,EACD,OAAA,IACwB,QAAQ,eAEpC,IAAK,WAOH,OANoB,MAAME,EACxBC,MAAY,UAAU,oBAAoB,SAAS,CACjD,YAAAF,EACA,WAAYD,CAAA,CACb,CAAA,EACD,OAAA,IACkB,QAAQ,SAE9B,QACE,MAAM,IAAI,MAAM,wBAAwBD,CAAU,EAAE,CAAA,CAE1D,EAGMK,EAAwB,CAC5B,CACE,YAAAH,EACA,aAAAI,EACA,aAAAC,EACA,OAAAC,EACA,SAAAC,EACA,UAAAC,EACA,SAAAC,EAAW,EACb,EASA,CACE,MAAAC,EACA,SAAAT,CACF,EAIAU,EAAiB,CAAA,IACd,CAEH,MAAMC,EAAmB,CACvBC,EACAC,EACAC,IACG,CAKH,MAAMC,EAHaC,EAAAA,eAAe,KAAK,yBAAyBP,EAAO,gBAAgB,EAGvD,OAC7BQ,GAASA,EAAK,cAAgBlB,GAAekB,EAAK,aAAeL,EAAc,UAAA,EAGlF,IAAIM,EAAwB,GAE5B,UAAWD,KAAQF,EACjB,GAAI,CACF,MAAMI,EAAQnB,EACZgB,EAAAA,eAAe,KAAK,gBAClB,iBACAC,EACCG,GAA6B,CAE5B,MAAMC,EAAgBD,EAAM,KAAME,GAAWA,EAAO,KAAOV,EAAc,QAAQ,EACjF,GAAKS,EAUL,GALAH,EAAwB,GACxB,QAAQ,IACN,sBAAsBN,EAAc,UAAU,IAAIA,EAAc,QAAQ,WAAA,EAGtEJ,EAEFa,EAAc,MAAQA,EAAc,MAAM,OAAQE,GAASA,EAAK,KAAOlB,CAAM,MACxE,CACL,QAAQ,IAAI,sBAAsBO,EAAc,UAAU,EAAE,EAE5D,MAAMY,EAAsB,CAC1B,GAAInB,EACJ,UAAWS,EACX,SAAAR,EACA,WAAYO,EAAY,WACxB,KAAM,CACJ,GAAIA,EAAY,SAChB,KAAMA,EAAY,KAClB,MAAOA,EAAY,MACnB,QAASA,EAAY,QACrB,QAASA,EAAY,OAAA,CACvB,EAIIY,EAAoBJ,EAAc,MAAM,UAC3CE,GAASA,EAAK,KAAOlB,CAAA,EAGpBoB,IAAsB,GACxBJ,EAAc,MAAMI,CAAiB,EAAID,GAEzC,QAAQ,IACN,sBAAsBZ,EAAc,UAAU,eAC9CY,EACAE,EAAAA,QAAQL,CAAa,CAAA,EAEvBA,EAAc,MAAM,KAAKG,CAAO,EAEpC,CACF,CAAA,CACF,EAGFd,EAAQ,KAAKS,CAAK,CACpB,OAASQ,EAAO,CACd,QAAQ,MAAM,4BAA4Bf,EAAc,UAAU,IAAKe,CAAK,CAC9E,CAIGT,IAGCN,EAAc,WAAaT,EAAa,UAC1C,QAAQ,KACN,UAAUS,EAAc,UAAU,IAAIA,EAAc,QAAQ,4CAAA,EAE9DZ,EACEgB,EAAAA,eAAe,KAAK,eAAe,CACjC,CAAE,KAAM,OAAQ,GAAI,GAAGjB,CAAW,IAAIa,EAAc,UAAU,EAAA,CAAG,CAClE,CAAA,GAIH,QAAQ,IACN,UAAUA,EAAc,UAAU,IAAIA,EAAc,QAAQ,+DAAA,EAKpE,EAGAD,EAAiBR,EAAcC,EAAcG,CAAS,EAItDI,EAAiBP,EAAcD,EADPI,IAAc,KAAO,MAAQ,IACO,CAC9D,EAEMqB,EAAcC,EAAAA,IAAS,iBAAiB,CAC5C,UAAW,CACT,iBAAkB,CAChB,uBAAyBF,GAAeA,EAAM,MAAM,QAAU,GAC9D,MAAM,eAEJ,CAAE,OAAAtB,EAAQ,YAAAN,EAAa,MAAAoB,CAAA,EACvB,CAAE,SAAAnB,EAAU,SAAA8B,EAAU,eAAAC,GACtB,CACA,MAAMtB,EAAQqB,EAAA,EACd,IAAIpB,EAAiB,CAAA,EAErB,MAAMP,EAAegB,GAAO,OACtBf,EAAee,GAAO,OACtBb,EAAWa,GAAO,UAAY,GAC9BZ,EAAYY,GAAO,WAAa,MAEtC,GAAIhB,GAAgBC,EAClB,GAAI,CAEFF,EACE,CACE,YAAAH,EACA,aAAAI,EACA,aAAAC,EACA,OAAAC,EACA,SAAAC,EACA,UAAAC,EACA,SAAU,EAAA,EAEZ,CAAE,MAAAE,EAAO,SAAAT,CAAA,EACTU,CAAA,EAIF,MAAMqB,CACR,OAASJ,EAAO,CACd,QAAQ,MAAM,gDAAiDA,CAAK,EAEpE,UAAWR,KAAST,EAClBS,EAAM,KAAA,EAIRnB,EACEgB,EAAAA,eAAe,KAAK,eAAe,CACjC,CAAE,KAAM,OAAQ,GAAI,GAAGjB,CAAW,IAAII,EAAa,UAAU,EAAA,EAC7D,CAAE,KAAM,OAAQ,GAAI,GAAGJ,CAAW,IAAIK,EAAa,UAAU,EAAA,CAAG,CACjE,CAAA,CAEL,MAEA,QAAQ,KAAK,wDAAwD,CAEzE,CAAA,EAEF,iBAAkB,CAChB,uBAAyBuB,GAAeA,EAAM,MAAM,QAAU,GAC9D,MAAM,eAEJ,CAAE,YAAA5B,EAAa,uBAAAiC,EAAwB,MAAAb,CAAA,EACvC,CAAE,SAAAnB,EAAU,SAAA8B,EAAU,eAAAC,GACtB,CACA,KAAM,CAAE,SAAAzB,EAAU,GAAID,CAAA,EAAW2B,EAC3BvB,EAAQqB,EAAA,EAEd,IAAIpB,EAAiB,CAAA,EAErB,MAAMP,EAAegB,GAAO,OACtBc,EAAmB9B,GAAc,WACjC+B,EAAiB/B,GAAc,SAC/BC,EAAee,GAAO,OACtBgB,EAAmB/B,GAAc,WACjCgC,EAAiBhC,GAAc,SAC/BG,EAAYY,GAAO,WAAc,MACjCkB,EAAe/B,GAAU,MAAM,GAAG,EAAE,CAAC,EAE3C,GAAI,CACF,GAAIH,EAAa,YAAcC,EAAc,CAE3C,MAAMkC,EAAgB1C,EACpBqC,EACAC,EACAnC,EACAC,CAAA,EAGIuC,EAAgB3C,EACpBuC,EACAC,EACArC,EACAC,CAAA,EAIIwC,EAAM,MAAM,QAAQ,IAAI,CAACF,EAAeC,CAAa,CAAC,EACtDE,EAAmBD,EAAI,CAAC,EACxBE,EAAmBF,EAAI,CAAC,EAE9B,GAAI,CAACC,GAAoB,CAACC,EACxB,MAAM,IAAI,MAAM,wCAAwC,EAG1D,GAAI,CAACrC,EACH,MAAM,IAAI,MAAM,kCAAkC,EAGpD,MAAMF,EAAuB,CAC3B,WAAY8B,EACZ,SAAUC,EACV,KAAMO,EAAiB,KACvB,MAAO,UAAWA,EAAmBA,EAAiB,MAAQ,OAC9D,QAASA,EAAiB,SAAW,CAAA,EACrC,QAAS,YAAaA,EAAmBA,EAAiB,QAAU,MAAA,EAGhErC,EAAuB,CAC3B,WAAY+B,EACZ,SAAUC,EACV,KAAMM,EAAiB,KACvB,MAAO,UAAWA,EAAmBA,EAAiB,MAAQ,OAC9D,QAASA,EAAiB,SAAW,CAAA,EACrC,QAAS,YAAaA,EAAmBA,EAAiB,QAAU,MAAA,EAItExC,EACE,CACE,YAAAH,EACA,aAAAI,EACA,aAAAC,EACA,OAAAC,EACA,SAAUgC,EACV,UAAA9B,EACA,SAAU,EAAA,EAEZ,CAAE,MAAAE,EAAO,SAAAT,CAAA,EACTU,CAAA,EAIF,MAAMqB,CACR,KACE,eAAQ,KAAK,6DAA6D,EACpE,IAAI,MAAM,iCAAiC,CAErD,OAASJ,EAAO,CACd,QAAQ,MAAMA,CAAK,EAGnB,UAAWR,KAAST,EAClBS,EAAM,KAAA,EAIJhB,GAAgBC,GAClBJ,EACEgB,EAAAA,eAAe,KAAK,eAAe,CACjC,CAAE,KAAM,OAAQ,GAAI,GAAGjB,CAAW,IAAII,EAAa,UAAU,EAAA,EAC7D,CAAE,KAAM,OAAQ,GAAI,GAAGJ,CAAW,IAAIK,EAAa,UAAU,EAAA,CAAG,CACjE,CAAA,CAGP,CACF,CAAA,CACF,CAEJ,CAAC,EAEY,CAAE,4BAAAuC,EAA6B,4BAAAC,GAAgChB"}
1
+ {"version":3,"file":"updateLinks.cjs.js","sources":["../../../../../../src/api/queries/links/updateLinks.ts"],"sourcesContent":["import { gqlLinksApi, linksApi } from '@shared/api/generated'\nimport { RootState } from '@reduxjs/toolkit/query'\nimport { current, ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { EntityLink, EntityWithLinks, entityLinksApi } from './getEntityLinks'\n\ntype Entity = {\n entityType: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n entityId: string\n name: string\n label?: string | null\n parents: string[]\n subType: string | undefined // Optional subtype for folders, products, versions\n}\n\n// Helper function to get entity data by type\nconst getEntityDataByType = async (\n entityType: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile',\n entityId: string,\n projectName: string,\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n) => {\n switch (entityType) {\n case 'task': {\n const resTask = await dispatch(\n gqlLinksApi.endpoints.GetTaskLinkData.initiate({\n projectName,\n taskId: entityId,\n }),\n ).unwrap()\n return resTask?.project.task\n }\n case 'folder': {\n const resFolder = await dispatch(\n gqlLinksApi.endpoints.GetFolderLinkData.initiate({\n projectName,\n folderId: entityId,\n }),\n ).unwrap()\n return resFolder?.project.folder\n }\n case 'product': {\n const resProduct = await dispatch(\n gqlLinksApi.endpoints.GetProductLinkData.initiate({\n projectName,\n productId: entityId,\n }),\n ).unwrap()\n return resProduct?.project.product\n }\n case 'version': {\n const resVersion = await dispatch(\n gqlLinksApi.endpoints.GetVersionLinkData.initiate({\n projectName,\n versionId: entityId,\n }),\n ).unwrap()\n return resVersion?.project.version\n }\n case 'representation': {\n const resRepresentation = await dispatch(\n gqlLinksApi.endpoints.GetRepresentationLinkData.initiate({\n projectName,\n representationId: entityId,\n }),\n ).unwrap()\n return resRepresentation?.project.representation\n }\n case 'workfile': {\n const resWorkfile = await dispatch(\n gqlLinksApi.endpoints.GetWorkfileLinkData.initiate({\n projectName,\n workfileId: entityId,\n }),\n ).unwrap()\n return resWorkfile?.project.workfile\n }\n default:\n throw new Error(`Unknown entity type: ${entityType}`)\n }\n}\n\n// Helper function to patch entity links cache for all entity types\nconst patchEntityLinksCache = (\n {\n projectName,\n sourceEntity,\n targetEntity,\n linkId,\n linkType,\n direction,\n isDelete = false,\n }: {\n projectName: string\n sourceEntity: Entity\n targetEntity: Entity\n linkId: string\n linkType: string\n direction: 'in' | 'out'\n isDelete?: boolean\n },\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches: any[] = [],\n) => {\n // Helper function to patch a single entity's links\n const patchEntityLinks = (\n entityToPatch: Entity,\n otherEntity: Entity,\n linkDirection: 'in' | 'out',\n ) => {\n // Get all cached query arguments for the getEntityLinks endpoint\n const cachedArgs = entityLinksApi.util.selectCachedArgsForQuery(state, 'getEntityLinks')\n\n // Filter for queries that match our project and entity type\n const relevantArgs = cachedArgs.filter(\n (args) => args.projectName === projectName && args.entityType === entityToPatch.entityType,\n )\n\n let entityFoundInAnyCache = false\n\n for (const args of relevantArgs) {\n try {\n const patch = dispatch(\n entityLinksApi.util.updateQueryData(\n 'getEntityLinks',\n args,\n (draft: EntityWithLinks[]) => {\n // Find the entity in the cache\n const entityInCache = draft.find((entity) => entity.id === entityToPatch.entityId)\n if (!entityInCache) {\n // Entity not in this specific cache, continue to next one\n return\n }\n\n entityFoundInAnyCache = true\n console.log(\n `Found and patching ${entityToPatch.entityType} ${entityToPatch.entityId} in cache`,\n )\n\n if (isDelete) {\n // Remove the link from the entity\n entityInCache.links = entityInCache.links.filter((link) => link.id !== linkId)\n } else {\n console.log(`Adding new link to ${entityToPatch.entityType}`)\n // Add the new link to the entity\n const newLink: EntityLink = {\n id: linkId,\n direction: linkDirection,\n linkType,\n entityType: otherEntity.entityType,\n node: {\n id: otherEntity.entityId,\n name: otherEntity.name,\n label: otherEntity.label,\n parents: otherEntity.parents,\n subType: otherEntity.subType,\n },\n }\n\n // Check if link already exists and update it, or add new one\n const existingLinkIndex = entityInCache.links.findIndex(\n (link) => link.id === linkId,\n )\n\n if (existingLinkIndex !== -1) {\n entityInCache.links[existingLinkIndex] = newLink\n } else {\n console.log(\n `Adding new link to ${entityToPatch.entityType} links cache`,\n newLink,\n current(entityInCache),\n )\n entityInCache.links.push(newLink)\n }\n }\n },\n ),\n )\n\n patches.push(patch)\n } catch (error) {\n console.error(`Error patching cache for ${entityToPatch.entityType}:`, error)\n }\n }\n\n // If entity was not found in any cache, handle based on context\n if (!entityFoundInAnyCache) {\n // For source entities (where user is creating the link from), we need to invalidate\n // to ensure the user sees the new link appear in the UI\n if (entityToPatch.entityId === sourceEntity.entityId) {\n console.warn(\n `Source ${entityToPatch.entityType} ${entityToPatch.entityId} not in cache - invalidating to refresh UI`,\n )\n dispatch(\n entityLinksApi.util.invalidateTags([\n { type: 'link', id: `${projectName}-${entityToPatch.entityType}` },\n ]),\n )\n } else {\n // For target entities, we can skip since they're not currently visible\n console.log(\n `Target ${entityToPatch.entityType} ${entityToPatch.entityId} not in cache - skipping patch (entity not currently visible)`,\n )\n // No action needed - when the entity is eventually loaded, it will have the correct links from the server\n }\n }\n }\n\n // Patch the source entity with the link\n patchEntityLinks(sourceEntity, targetEntity, direction)\n\n // Patch the target entity with the link (flip direction)\n const targetDirection = direction === 'in' ? 'out' : 'in'\n patchEntityLinks(targetEntity, sourceEntity, targetDirection)\n}\n\nconst enhancedApi = linksApi.enhanceEndpoints({\n endpoints: {\n deleteEntityLink: {\n transformErrorResponse: (error: any) => error.data?.detail || '',\n async onQueryStarted(\n // @ts-ignore - patch is purely used for patching the entities\n { linkId, projectName, patch },\n { dispatch, getState, queryFulfilled },\n ) {\n const state = getState()\n let patches: any[] = []\n\n const sourceEntity = patch?.source\n const targetEntity = patch?.target\n const linkType = patch?.linkType || ''\n const direction = patch?.direction || 'out'\n\n if (sourceEntity && targetEntity) {\n try {\n // Update entity links cache for both entities\n patchEntityLinksCache(\n {\n projectName,\n sourceEntity,\n targetEntity,\n linkId,\n linkType,\n direction,\n isDelete: true,\n },\n { state, dispatch },\n patches,\n )\n\n // Wait for the mutation to finish\n await queryFulfilled\n } catch (error) {\n console.error('Error patching entities during link deletion:', error)\n // Undo patches if there's an error\n for (const patch of patches) {\n patch.undo()\n }\n\n // Invalidate entity links queries as fallback\n dispatch(\n entityLinksApi.util.invalidateTags([\n { type: 'link', id: `${projectName}-${sourceEntity.entityType}` },\n { type: 'link', id: `${projectName}-${targetEntity.entityType}` },\n ]),\n )\n }\n } else {\n console.warn('Source or target entity not provided for link deletion')\n }\n },\n },\n createEntityLink: {\n transformErrorResponse: (error: any) => error.data?.detail || '',\n async onQueryStarted(\n // @ts-ignore - patch is purely used for patching the entities\n { projectName, createLinkRequestModel, patch },\n { dispatch, getState, queryFulfilled },\n ) {\n const { linkType, id: linkId } = createLinkRequestModel\n const state = getState()\n\n let patches: any[] = []\n\n const sourceEntity = patch?.source\n const sourceEntityType = sourceEntity?.entityType\n const sourceEntityId = sourceEntity?.entityId\n const targetEntity = patch?.target\n const targetEntityType = targetEntity?.entityType\n const targetEntityId = targetEntity?.entityId\n const direction = patch?.direction || ('out' as 'in' | 'out')\n const linkTypeName = linkType?.split('|')[0] as string\n\n try {\n if (sourceEntity.entityType && targetEntity) {\n // Get the source entity data based on its type\n const sourcePromise = getEntityDataByType(\n sourceEntityType,\n sourceEntityId,\n projectName,\n dispatch,\n )\n\n const targetPromise = getEntityDataByType(\n targetEntityType,\n targetEntityId,\n projectName,\n dispatch,\n )\n\n // Wait for both cache data and source entity data to be loaded\n const res = await Promise.all([sourcePromise, targetPromise])\n const sourceEntityData = res[0]\n const targetEntityData = res[1]\n\n if (!sourceEntityData || !targetEntityData) {\n throw new Error('Source or target entity data not found')\n }\n\n if (!linkId) {\n throw new Error('Link ID not found in cache entry')\n }\n\n const sourceEntity: Entity = {\n entityType: sourceEntityType,\n entityId: sourceEntityId,\n name: sourceEntityData.name,\n label: 'label' in sourceEntityData ? sourceEntityData.label : undefined,\n parents: sourceEntityData.parents || [],\n subType: 'subType' in sourceEntityData ? sourceEntityData.subType : undefined,\n }\n\n const targetEntity: Entity = {\n entityType: targetEntityType,\n entityId: targetEntityId,\n name: targetEntityData.name,\n label: 'label' in targetEntityData ? targetEntityData.label : undefined,\n parents: targetEntityData.parents || [],\n subType: 'subType' in targetEntityData ? targetEntityData.subType : undefined,\n }\n\n // Update entity links cache for both entities\n patchEntityLinksCache(\n {\n projectName,\n sourceEntity,\n targetEntity,\n linkId,\n linkType: linkTypeName,\n direction,\n isDelete: false,\n },\n { state, dispatch },\n patches,\n )\n\n // Wait for the mutation to finish (undo patches if it fails)\n await queryFulfilled\n } else {\n console.warn('Source entity type not provided, falling back to task query')\n throw new Error('Source entity type not provided')\n }\n } catch (error) {\n console.error(error)\n\n // Undo patches if the mutation fails\n for (const patch of patches) {\n patch.undo()\n }\n\n // Invalidate entity links queries as fallback\n if (sourceEntity && targetEntity) {\n dispatch(\n entityLinksApi.util.invalidateTags([\n { type: 'link', id: `${projectName}-${sourceEntity.entityType}` },\n { type: 'link', id: `${projectName}-${targetEntity.entityType}` },\n ]),\n )\n }\n }\n },\n },\n },\n})\n\nexport const { useDeleteEntityLinkMutation, useCreateEntityLinkMutation } = enhancedApi\n"],"names":["getEntityDataByType","entityType","entityId","projectName","dispatch","gqlLinksApi","patchEntityLinksCache","sourceEntity","targetEntity","linkId","linkType","direction","isDelete","state","patches","patchEntityLinks","entityToPatch","otherEntity","linkDirection","relevantArgs","entityLinksApi","args","entityFoundInAnyCache","patch","draft","entityInCache","entity","link","newLink","existingLinkIndex","current","error","enhancedApi","linksApi","getState","queryFulfilled","createLinkRequestModel","sourceEntityType","sourceEntityId","targetEntityType","targetEntityId","linkTypeName","sourcePromise","targetPromise","res","sourceEntityData","targetEntityData","useDeleteEntityLinkMutation","useCreateEntityLinkMutation"],"mappings":"wzDAeMA,EAAsB,MAC1BC,EACAC,EACAC,EACAC,IACG,CACH,OAAQH,EAAA,CACN,IAAK,OAOH,OANgB,MAAMG,EACpBC,MAAY,UAAU,gBAAgB,SAAS,CAC7C,YAAAF,EACA,OAAQD,CAAA,CACT,CAAA,EACD,OAAA,IACc,QAAQ,KAE1B,IAAK,SAOH,OANkB,MAAME,EACtBC,MAAY,UAAU,kBAAkB,SAAS,CAC/C,YAAAF,EACA,SAAUD,CAAA,CACX,CAAA,EACD,OAAA,IACgB,QAAQ,OAE5B,IAAK,UAOH,OANmB,MAAME,EACvBC,MAAY,UAAU,mBAAmB,SAAS,CAChD,YAAAF,EACA,UAAWD,CAAA,CACZ,CAAA,EACD,OAAA,IACiB,QAAQ,QAE7B,IAAK,UAOH,OANmB,MAAME,EACvBC,MAAY,UAAU,mBAAmB,SAAS,CAChD,YAAAF,EACA,UAAWD,CAAA,CACZ,CAAA,EACD,OAAA,IACiB,QAAQ,QAE7B,IAAK,iBAOH,OAN0B,MAAME,EAC9BC,MAAY,UAAU,0BAA0B,SAAS,CACvD,YAAAF,EACA,iBAAkBD,CAAA,CACnB,CAAA,EACD,OAAA,IACwB,QAAQ,eAEpC,IAAK,WAOH,OANoB,MAAME,EACxBC,MAAY,UAAU,oBAAoB,SAAS,CACjD,YAAAF,EACA,WAAYD,CAAA,CACb,CAAA,EACD,OAAA,IACkB,QAAQ,SAE9B,QACE,MAAM,IAAI,MAAM,wBAAwBD,CAAU,EAAE,CAAA,CAE1D,EAGMK,EAAwB,CAC5B,CACE,YAAAH,EACA,aAAAI,EACA,aAAAC,EACA,OAAAC,EACA,SAAAC,EACA,UAAAC,EACA,SAAAC,EAAW,EACb,EASA,CACE,MAAAC,EACA,SAAAT,CACF,EAIAU,EAAiB,CAAA,IACd,CAEH,MAAMC,EAAmB,CACvBC,EACAC,EACAC,IACG,CAKH,MAAMC,EAHaC,EAAAA,eAAe,KAAK,yBAAyBP,EAAO,gBAAgB,EAGvD,OAC7BQ,GAASA,EAAK,cAAgBlB,GAAekB,EAAK,aAAeL,EAAc,UAAA,EAGlF,IAAIM,EAAwB,GAE5B,UAAWD,KAAQF,EACjB,GAAI,CACF,MAAMI,EAAQnB,EACZgB,EAAAA,eAAe,KAAK,gBAClB,iBACAC,EACCG,GAA6B,CAE5B,MAAMC,EAAgBD,EAAM,KAAME,GAAWA,EAAO,KAAOV,EAAc,QAAQ,EACjF,GAAKS,EAUL,GALAH,EAAwB,GACxB,QAAQ,IACN,sBAAsBN,EAAc,UAAU,IAAIA,EAAc,QAAQ,WAAA,EAGtEJ,EAEFa,EAAc,MAAQA,EAAc,MAAM,OAAQE,GAASA,EAAK,KAAOlB,CAAM,MACxE,CACL,QAAQ,IAAI,sBAAsBO,EAAc,UAAU,EAAE,EAE5D,MAAMY,EAAsB,CAC1B,GAAInB,EACJ,UAAWS,EACX,SAAAR,EACA,WAAYO,EAAY,WACxB,KAAM,CACJ,GAAIA,EAAY,SAChB,KAAMA,EAAY,KAClB,MAAOA,EAAY,MACnB,QAASA,EAAY,QACrB,QAASA,EAAY,OAAA,CACvB,EAIIY,EAAoBJ,EAAc,MAAM,UAC3CE,GAASA,EAAK,KAAOlB,CAAA,EAGpBoB,IAAsB,GACxBJ,EAAc,MAAMI,CAAiB,EAAID,GAEzC,QAAQ,IACN,sBAAsBZ,EAAc,UAAU,eAC9CY,EACAE,EAAAA,QAAQL,CAAa,CAAA,EAEvBA,EAAc,MAAM,KAAKG,CAAO,EAEpC,CACF,CAAA,CACF,EAGFd,EAAQ,KAAKS,CAAK,CACpB,OAASQ,EAAO,CACd,QAAQ,MAAM,4BAA4Bf,EAAc,UAAU,IAAKe,CAAK,CAC9E,CAIGT,IAGCN,EAAc,WAAaT,EAAa,UAC1C,QAAQ,KACN,UAAUS,EAAc,UAAU,IAAIA,EAAc,QAAQ,4CAAA,EAE9DZ,EACEgB,EAAAA,eAAe,KAAK,eAAe,CACjC,CAAE,KAAM,OAAQ,GAAI,GAAGjB,CAAW,IAAIa,EAAc,UAAU,EAAA,CAAG,CAClE,CAAA,GAIH,QAAQ,IACN,UAAUA,EAAc,UAAU,IAAIA,EAAc,QAAQ,+DAAA,EAKpE,EAGAD,EAAiBR,EAAcC,EAAcG,CAAS,EAItDI,EAAiBP,EAAcD,EADPI,IAAc,KAAO,MAAQ,IACO,CAC9D,EAEMqB,EAAcC,EAAAA,IAAS,iBAAiB,CAC5C,UAAW,CACT,iBAAkB,CAChB,uBAAyBF,GAAeA,EAAM,MAAM,QAAU,GAC9D,MAAM,eAEJ,CAAE,OAAAtB,EAAQ,YAAAN,EAAa,MAAAoB,CAAA,EACvB,CAAE,SAAAnB,EAAU,SAAA8B,EAAU,eAAAC,GACtB,CACA,MAAMtB,EAAQqB,EAAA,EACd,IAAIpB,EAAiB,CAAA,EAErB,MAAMP,EAAegB,GAAO,OACtBf,EAAee,GAAO,OACtBb,EAAWa,GAAO,UAAY,GAC9BZ,EAAYY,GAAO,WAAa,MAEtC,GAAIhB,GAAgBC,EAClB,GAAI,CAEFF,EACE,CACE,YAAAH,EACA,aAAAI,EACA,aAAAC,EACA,OAAAC,EACA,SAAAC,EACA,UAAAC,EACA,SAAU,EAAA,EAEZ,CAAE,MAAAE,EAAO,SAAAT,CAAA,EACTU,CAAA,EAIF,MAAMqB,CACR,OAASJ,EAAO,CACd,QAAQ,MAAM,gDAAiDA,CAAK,EAEpE,UAAWR,KAAST,EAClBS,EAAM,KAAA,EAIRnB,EACEgB,EAAAA,eAAe,KAAK,eAAe,CACjC,CAAE,KAAM,OAAQ,GAAI,GAAGjB,CAAW,IAAII,EAAa,UAAU,EAAA,EAC7D,CAAE,KAAM,OAAQ,GAAI,GAAGJ,CAAW,IAAIK,EAAa,UAAU,EAAA,CAAG,CACjE,CAAA,CAEL,MAEA,QAAQ,KAAK,wDAAwD,CAEzE,CAAA,EAEF,iBAAkB,CAChB,uBAAyBuB,GAAeA,EAAM,MAAM,QAAU,GAC9D,MAAM,eAEJ,CAAE,YAAA5B,EAAa,uBAAAiC,EAAwB,MAAAb,CAAA,EACvC,CAAE,SAAAnB,EAAU,SAAA8B,EAAU,eAAAC,GACtB,CACA,KAAM,CAAE,SAAAzB,EAAU,GAAID,CAAA,EAAW2B,EAC3BvB,EAAQqB,EAAA,EAEd,IAAIpB,EAAiB,CAAA,EAErB,MAAMP,EAAegB,GAAO,OACtBc,EAAmB9B,GAAc,WACjC+B,EAAiB/B,GAAc,SAC/BC,EAAee,GAAO,OACtBgB,EAAmB/B,GAAc,WACjCgC,EAAiBhC,GAAc,SAC/BG,EAAYY,GAAO,WAAc,MACjCkB,EAAe/B,GAAU,MAAM,GAAG,EAAE,CAAC,EAE3C,GAAI,CACF,GAAIH,EAAa,YAAcC,EAAc,CAE3C,MAAMkC,EAAgB1C,EACpBqC,EACAC,EACAnC,EACAC,CAAA,EAGIuC,EAAgB3C,EACpBuC,EACAC,EACArC,EACAC,CAAA,EAIIwC,EAAM,MAAM,QAAQ,IAAI,CAACF,EAAeC,CAAa,CAAC,EACtDE,EAAmBD,EAAI,CAAC,EACxBE,EAAmBF,EAAI,CAAC,EAE9B,GAAI,CAACC,GAAoB,CAACC,EACxB,MAAM,IAAI,MAAM,wCAAwC,EAG1D,GAAI,CAACrC,EACH,MAAM,IAAI,MAAM,kCAAkC,EAGpD,MAAMF,EAAuB,CAC3B,WAAY8B,EACZ,SAAUC,EACV,KAAMO,EAAiB,KACvB,MAAO,UAAWA,EAAmBA,EAAiB,MAAQ,OAC9D,QAASA,EAAiB,SAAW,CAAA,EACrC,QAAS,YAAaA,EAAmBA,EAAiB,QAAU,MAAA,EAGhErC,EAAuB,CAC3B,WAAY+B,EACZ,SAAUC,EACV,KAAMM,EAAiB,KACvB,MAAO,UAAWA,EAAmBA,EAAiB,MAAQ,OAC9D,QAASA,EAAiB,SAAW,CAAA,EACrC,QAAS,YAAaA,EAAmBA,EAAiB,QAAU,MAAA,EAItExC,EACE,CACE,YAAAH,EACA,aAAAI,EACA,aAAAC,EACA,OAAAC,EACA,SAAUgC,EACV,UAAA9B,EACA,SAAU,EAAA,EAEZ,CAAE,MAAAE,EAAO,SAAAT,CAAA,EACTU,CAAA,EAIF,MAAMqB,CACR,KACE,eAAQ,KAAK,6DAA6D,EACpE,IAAI,MAAM,iCAAiC,CAErD,OAASJ,EAAO,CACd,QAAQ,MAAMA,CAAK,EAGnB,UAAWR,KAAST,EAClBS,EAAM,KAAA,EAIJhB,GAAgBC,GAClBJ,EACEgB,EAAAA,eAAe,KAAK,eAAe,CACjC,CAAE,KAAM,OAAQ,GAAI,GAAGjB,CAAW,IAAII,EAAa,UAAU,EAAA,EAC7D,CAAE,KAAM,OAAQ,GAAI,GAAGJ,CAAW,IAAIK,EAAa,UAAU,EAAA,CAAG,CACjE,CAAA,CAGP,CACF,CAAA,CACF,CAEJ,CAAC,EAEY,CAAE,4BAAAuC,EAA6B,4BAAAC,GAAgChB"}
@@ -1,6 +1,6 @@
1
1
  import "../../base/client.es.js";
2
2
  import "../../generated/graphql.es.js";
3
- import { api as m } from "../../generated/graphqlLinks.es.js";
3
+ import { api as f } from "../../generated/graphqlLinks.es.js";
4
4
  import "../../generated/access.es.js";
5
5
  import "../../generated/actions.es.js";
6
6
  import "../../generated/activityFeed.es.js";
@@ -23,6 +23,7 @@ import "../../generated/operations.es.js";
23
23
  import "../../generated/products.es.js";
24
24
  import "../../generated/projectDashboard.es.js";
25
25
  import "../../generated/projects.es.js";
26
+ import "../../generated/projectFolders.es.js";
26
27
  import "../../generated/reviewables.es.js";
27
28
  import "../../generated/services.es.js";
28
29
  import "../../generated/system.es.js";
@@ -42,42 +43,42 @@ const A = async (i, r, t, e) => {
42
43
  switch (i) {
43
44
  case "task":
44
45
  return (await e(
45
- m.endpoints.GetTaskLinkData.initiate({
46
+ f.endpoints.GetTaskLinkData.initiate({
46
47
  projectName: t,
47
48
  taskId: r
48
49
  })
49
50
  ).unwrap())?.project.task;
50
51
  case "folder":
51
52
  return (await e(
52
- m.endpoints.GetFolderLinkData.initiate({
53
+ f.endpoints.GetFolderLinkData.initiate({
53
54
  projectName: t,
54
55
  folderId: r
55
56
  })
56
57
  ).unwrap())?.project.folder;
57
58
  case "product":
58
59
  return (await e(
59
- m.endpoints.GetProductLinkData.initiate({
60
+ f.endpoints.GetProductLinkData.initiate({
60
61
  projectName: t,
61
62
  productId: r
62
63
  })
63
64
  ).unwrap())?.project.product;
64
65
  case "version":
65
66
  return (await e(
66
- m.endpoints.GetVersionLinkData.initiate({
67
+ f.endpoints.GetVersionLinkData.initiate({
67
68
  projectName: t,
68
69
  versionId: r
69
70
  })
70
71
  ).unwrap())?.project.version;
71
72
  case "representation":
72
73
  return (await e(
73
- m.endpoints.GetRepresentationLinkData.initiate({
74
+ f.endpoints.GetRepresentationLinkData.initiate({
74
75
  projectName: t,
75
76
  representationId: r
76
77
  })
77
78
  ).unwrap())?.project.representation;
78
79
  case "workfile":
79
80
  return (await e(
80
- m.endpoints.GetWorkfileLinkData.initiate({
81
+ f.endpoints.GetWorkfileLinkData.initiate({
81
82
  projectName: t,
82
83
  workfileId: r
83
84
  })
@@ -91,7 +92,7 @@ const A = async (i, r, t, e) => {
91
92
  targetEntity: t,
92
93
  linkId: e,
93
94
  linkType: p,
94
- direction: f,
95
+ direction: m,
95
96
  isDelete: g = !1
96
97
  }, {
97
98
  state: u,
@@ -155,12 +156,12 @@ const A = async (i, r, t, e) => {
155
156
  `Target ${n.entityType} ${n.entityId} not in cache - skipping patch (entity not currently visible)`
156
157
  ));
157
158
  };
158
- c(r, t, f), c(t, r, f === "in" ? "out" : "in");
159
+ c(r, t, m), c(t, r, m === "in" ? "out" : "in");
159
160
  }, G = S.enhanceEndpoints({
160
161
  endpoints: {
161
162
  deleteEntityLink: {
162
163
  transformErrorResponse: (i) => i.data?.detail || "",
163
- async onQueryStarted({ linkId: i, projectName: r, patch: t }, { dispatch: e, getState: p, queryFulfilled: f }) {
164
+ async onQueryStarted({ linkId: i, projectName: r, patch: t }, { dispatch: e, getState: p, queryFulfilled: m }) {
164
165
  const g = p();
165
166
  let u = [];
166
167
  const l = t?.source, y = t?.target, c = t?.linkType || "", w = t?.direction || "out";
@@ -178,7 +179,7 @@ const A = async (i, r, t, e) => {
178
179
  },
179
180
  { state: g, dispatch: e },
180
181
  u
181
- ), await f;
182
+ ), await m;
182
183
  } catch (n) {
183
184
  console.error("Error patching entities during link deletion:", n);
184
185
  for (const a of u)
@@ -196,7 +197,7 @@ const A = async (i, r, t, e) => {
196
197
  },
197
198
  createEntityLink: {
198
199
  transformErrorResponse: (i) => i.data?.detail || "",
199
- async onQueryStarted({ projectName: i, createLinkRequestModel: r, patch: t }, { dispatch: e, getState: p, queryFulfilled: f }) {
200
+ async onQueryStarted({ projectName: i, createLinkRequestModel: r, patch: t }, { dispatch: e, getState: p, queryFulfilled: m }) {
200
201
  const { linkType: g, id: u } = r, l = p();
201
202
  let y = [];
202
203
  const c = t?.source, w = c?.entityType, n = c?.entityId, a = t?.target, E = a?.entityType, L = a?.entityId, v = t?.direction || "out", $ = g?.split("|")[0];
@@ -244,7 +245,7 @@ const A = async (i, r, t, e) => {
244
245
  },
245
246
  { state: l, dispatch: e },
246
247
  y
247
- ), await f;
248
+ ), await m;
248
249
  } else
249
250
  throw console.warn("Source entity type not provided, falling back to task query"), new Error("Source entity type not provided");
250
251
  } catch (d) {
@@ -261,9 +262,9 @@ const A = async (i, r, t, e) => {
261
262
  }
262
263
  }
263
264
  }
264
- }), { useDeleteEntityLinkMutation: wt, useCreateEntityLinkMutation: Tt } = G;
265
+ }), { useDeleteEntityLinkMutation: Tt, useCreateEntityLinkMutation: Et } = G;
265
266
  export {
266
- Tt as useCreateEntityLinkMutation,
267
- wt as useDeleteEntityLinkMutation
267
+ Et as useCreateEntityLinkMutation,
268
+ Tt as useDeleteEntityLinkMutation
268
269
  };
269
270
  //# sourceMappingURL=updateLinks.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"updateLinks.es.js","sources":["../../../../../../src/api/queries/links/updateLinks.ts"],"sourcesContent":["import { gqlLinksApi, linksApi } from '@shared/api/generated'\nimport { RootState } from '@reduxjs/toolkit/query'\nimport { current, ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { EntityLink, EntityWithLinks, entityLinksApi } from './getEntityLinks'\n\ntype Entity = {\n entityType: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n entityId: string\n name: string\n label?: string | null\n parents: string[]\n subType: string | undefined // Optional subtype for folders, products, versions\n}\n\n// Helper function to get entity data by type\nconst getEntityDataByType = async (\n entityType: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile',\n entityId: string,\n projectName: string,\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n) => {\n switch (entityType) {\n case 'task': {\n const resTask = await dispatch(\n gqlLinksApi.endpoints.GetTaskLinkData.initiate({\n projectName,\n taskId: entityId,\n }),\n ).unwrap()\n return resTask?.project.task\n }\n case 'folder': {\n const resFolder = await dispatch(\n gqlLinksApi.endpoints.GetFolderLinkData.initiate({\n projectName,\n folderId: entityId,\n }),\n ).unwrap()\n return resFolder?.project.folder\n }\n case 'product': {\n const resProduct = await dispatch(\n gqlLinksApi.endpoints.GetProductLinkData.initiate({\n projectName,\n productId: entityId,\n }),\n ).unwrap()\n return resProduct?.project.product\n }\n case 'version': {\n const resVersion = await dispatch(\n gqlLinksApi.endpoints.GetVersionLinkData.initiate({\n projectName,\n versionId: entityId,\n }),\n ).unwrap()\n return resVersion?.project.version\n }\n case 'representation': {\n const resRepresentation = await dispatch(\n gqlLinksApi.endpoints.GetRepresentationLinkData.initiate({\n projectName,\n representationId: entityId,\n }),\n ).unwrap()\n return resRepresentation?.project.representation\n }\n case 'workfile': {\n const resWorkfile = await dispatch(\n gqlLinksApi.endpoints.GetWorkfileLinkData.initiate({\n projectName,\n workfileId: entityId,\n }),\n ).unwrap()\n return resWorkfile?.project.workfile\n }\n default:\n throw new Error(`Unknown entity type: ${entityType}`)\n }\n}\n\n// Helper function to patch entity links cache for all entity types\nconst patchEntityLinksCache = (\n {\n projectName,\n sourceEntity,\n targetEntity,\n linkId,\n linkType,\n direction,\n isDelete = false,\n }: {\n projectName: string\n sourceEntity: Entity\n targetEntity: Entity\n linkId: string\n linkType: string\n direction: 'in' | 'out'\n isDelete?: boolean\n },\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches: any[] = [],\n) => {\n // Helper function to patch a single entity's links\n const patchEntityLinks = (\n entityToPatch: Entity,\n otherEntity: Entity,\n linkDirection: 'in' | 'out',\n ) => {\n // Get all cached query arguments for the getEntityLinks endpoint\n const cachedArgs = entityLinksApi.util.selectCachedArgsForQuery(state, 'getEntityLinks')\n\n // Filter for queries that match our project and entity type\n const relevantArgs = cachedArgs.filter(\n (args) => args.projectName === projectName && args.entityType === entityToPatch.entityType,\n )\n\n let entityFoundInAnyCache = false\n\n for (const args of relevantArgs) {\n try {\n const patch = dispatch(\n entityLinksApi.util.updateQueryData(\n 'getEntityLinks',\n args,\n (draft: EntityWithLinks[]) => {\n // Find the entity in the cache\n const entityInCache = draft.find((entity) => entity.id === entityToPatch.entityId)\n if (!entityInCache) {\n // Entity not in this specific cache, continue to next one\n return\n }\n\n entityFoundInAnyCache = true\n console.log(\n `Found and patching ${entityToPatch.entityType} ${entityToPatch.entityId} in cache`,\n )\n\n if (isDelete) {\n // Remove the link from the entity\n entityInCache.links = entityInCache.links.filter((link) => link.id !== linkId)\n } else {\n console.log(`Adding new link to ${entityToPatch.entityType}`)\n // Add the new link to the entity\n const newLink: EntityLink = {\n id: linkId,\n direction: linkDirection,\n linkType,\n entityType: otherEntity.entityType,\n node: {\n id: otherEntity.entityId,\n name: otherEntity.name,\n label: otherEntity.label,\n parents: otherEntity.parents,\n subType: otherEntity.subType,\n },\n }\n\n // Check if link already exists and update it, or add new one\n const existingLinkIndex = entityInCache.links.findIndex(\n (link) => link.id === linkId,\n )\n\n if (existingLinkIndex !== -1) {\n entityInCache.links[existingLinkIndex] = newLink\n } else {\n console.log(\n `Adding new link to ${entityToPatch.entityType} links cache`,\n newLink,\n current(entityInCache),\n )\n entityInCache.links.push(newLink)\n }\n }\n },\n ),\n )\n\n patches.push(patch)\n } catch (error) {\n console.error(`Error patching cache for ${entityToPatch.entityType}:`, error)\n }\n }\n\n // If entity was not found in any cache, handle based on context\n if (!entityFoundInAnyCache) {\n // For source entities (where user is creating the link from), we need to invalidate\n // to ensure the user sees the new link appear in the UI\n if (entityToPatch.entityId === sourceEntity.entityId) {\n console.warn(\n `Source ${entityToPatch.entityType} ${entityToPatch.entityId} not in cache - invalidating to refresh UI`,\n )\n dispatch(\n entityLinksApi.util.invalidateTags([\n { type: 'link', id: `${projectName}-${entityToPatch.entityType}` },\n ]),\n )\n } else {\n // For target entities, we can skip since they're not currently visible\n console.log(\n `Target ${entityToPatch.entityType} ${entityToPatch.entityId} not in cache - skipping patch (entity not currently visible)`,\n )\n // No action needed - when the entity is eventually loaded, it will have the correct links from the server\n }\n }\n }\n\n // Patch the source entity with the link\n patchEntityLinks(sourceEntity, targetEntity, direction)\n\n // Patch the target entity with the link (flip direction)\n const targetDirection = direction === 'in' ? 'out' : 'in'\n patchEntityLinks(targetEntity, sourceEntity, targetDirection)\n}\n\nconst enhancedApi = linksApi.enhanceEndpoints({\n endpoints: {\n deleteEntityLink: {\n transformErrorResponse: (error: any) => error.data?.detail || '',\n async onQueryStarted(\n // @ts-ignore - patch is purely used for patching the entities\n { linkId, projectName, patch },\n { dispatch, getState, queryFulfilled },\n ) {\n const state = getState()\n let patches: any[] = []\n\n const sourceEntity = patch?.source\n const targetEntity = patch?.target\n const linkType = patch?.linkType || ''\n const direction = patch?.direction || 'out'\n\n if (sourceEntity && targetEntity) {\n try {\n // Update entity links cache for both entities\n patchEntityLinksCache(\n {\n projectName,\n sourceEntity,\n targetEntity,\n linkId,\n linkType,\n direction,\n isDelete: true,\n },\n { state, dispatch },\n patches,\n )\n\n // Wait for the mutation to finish\n await queryFulfilled\n } catch (error) {\n console.error('Error patching entities during link deletion:', error)\n // Undo patches if there's an error\n for (const patch of patches) {\n patch.undo()\n }\n\n // Invalidate entity links queries as fallback\n dispatch(\n entityLinksApi.util.invalidateTags([\n { type: 'link', id: `${projectName}-${sourceEntity.entityType}` },\n { type: 'link', id: `${projectName}-${targetEntity.entityType}` },\n ]),\n )\n }\n } else {\n console.warn('Source or target entity not provided for link deletion')\n }\n },\n },\n createEntityLink: {\n transformErrorResponse: (error: any) => error.data?.detail || '',\n async onQueryStarted(\n // @ts-ignore - patch is purely used for patching the entities\n { projectName, createLinkRequestModel, patch },\n { dispatch, getState, queryFulfilled },\n ) {\n const { linkType, id: linkId } = createLinkRequestModel\n const state = getState()\n\n let patches: any[] = []\n\n const sourceEntity = patch?.source\n const sourceEntityType = sourceEntity?.entityType\n const sourceEntityId = sourceEntity?.entityId\n const targetEntity = patch?.target\n const targetEntityType = targetEntity?.entityType\n const targetEntityId = targetEntity?.entityId\n const direction = patch?.direction || ('out' as 'in' | 'out')\n const linkTypeName = linkType?.split('|')[0] as string\n\n try {\n if (sourceEntity.entityType && targetEntity) {\n // Get the source entity data based on its type\n const sourcePromise = getEntityDataByType(\n sourceEntityType,\n sourceEntityId,\n projectName,\n dispatch,\n )\n\n const targetPromise = getEntityDataByType(\n targetEntityType,\n targetEntityId,\n projectName,\n dispatch,\n )\n\n // Wait for both cache data and source entity data to be loaded\n const res = await Promise.all([sourcePromise, targetPromise])\n const sourceEntityData = res[0]\n const targetEntityData = res[1]\n\n if (!sourceEntityData || !targetEntityData) {\n throw new Error('Source or target entity data not found')\n }\n\n if (!linkId) {\n throw new Error('Link ID not found in cache entry')\n }\n\n const sourceEntity: Entity = {\n entityType: sourceEntityType,\n entityId: sourceEntityId,\n name: sourceEntityData.name,\n label: 'label' in sourceEntityData ? sourceEntityData.label : undefined,\n parents: sourceEntityData.parents || [],\n subType: 'subType' in sourceEntityData ? sourceEntityData.subType : undefined,\n }\n\n const targetEntity: Entity = {\n entityType: targetEntityType,\n entityId: targetEntityId,\n name: targetEntityData.name,\n label: 'label' in targetEntityData ? targetEntityData.label : undefined,\n parents: targetEntityData.parents || [],\n subType: 'subType' in targetEntityData ? targetEntityData.subType : undefined,\n }\n\n // Update entity links cache for both entities\n patchEntityLinksCache(\n {\n projectName,\n sourceEntity,\n targetEntity,\n linkId,\n linkType: linkTypeName,\n direction,\n isDelete: false,\n },\n { state, dispatch },\n patches,\n )\n\n // Wait for the mutation to finish (undo patches if it fails)\n await queryFulfilled\n } else {\n console.warn('Source entity type not provided, falling back to task query')\n throw new Error('Source entity type not provided')\n }\n } catch (error) {\n console.error(error)\n\n // Undo patches if the mutation fails\n for (const patch of patches) {\n patch.undo()\n }\n\n // Invalidate entity links queries as fallback\n if (sourceEntity && targetEntity) {\n dispatch(\n entityLinksApi.util.invalidateTags([\n { type: 'link', id: `${projectName}-${sourceEntity.entityType}` },\n { type: 'link', id: `${projectName}-${targetEntity.entityType}` },\n ]),\n )\n }\n }\n },\n },\n },\n})\n\nexport const { useDeleteEntityLinkMutation, useCreateEntityLinkMutation } = enhancedApi\n"],"names":["getEntityDataByType","entityType","entityId","projectName","dispatch","gqlLinksApi","patchEntityLinksCache","sourceEntity","targetEntity","linkId","linkType","direction","isDelete","state","patches","patchEntityLinks","entityToPatch","otherEntity","linkDirection","relevantArgs","entityLinksApi","args","entityFoundInAnyCache","patch","draft","entityInCache","entity","link","newLink","existingLinkIndex","current","error","enhancedApi","linksApi","getState","queryFulfilled","createLinkRequestModel","sourceEntityType","sourceEntityId","targetEntityType","targetEntityId","linkTypeName","sourcePromise","targetPromise","res","sourceEntityData","targetEntityData","useDeleteEntityLinkMutation","useCreateEntityLinkMutation"],"mappings":"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"}
1
+ {"version":3,"file":"updateLinks.es.js","sources":["../../../../../../src/api/queries/links/updateLinks.ts"],"sourcesContent":["import { gqlLinksApi, linksApi } from '@shared/api/generated'\nimport { RootState } from '@reduxjs/toolkit/query'\nimport { current, ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { EntityLink, EntityWithLinks, entityLinksApi } from './getEntityLinks'\n\ntype Entity = {\n entityType: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n entityId: string\n name: string\n label?: string | null\n parents: string[]\n subType: string | undefined // Optional subtype for folders, products, versions\n}\n\n// Helper function to get entity data by type\nconst getEntityDataByType = async (\n entityType: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile',\n entityId: string,\n projectName: string,\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n) => {\n switch (entityType) {\n case 'task': {\n const resTask = await dispatch(\n gqlLinksApi.endpoints.GetTaskLinkData.initiate({\n projectName,\n taskId: entityId,\n }),\n ).unwrap()\n return resTask?.project.task\n }\n case 'folder': {\n const resFolder = await dispatch(\n gqlLinksApi.endpoints.GetFolderLinkData.initiate({\n projectName,\n folderId: entityId,\n }),\n ).unwrap()\n return resFolder?.project.folder\n }\n case 'product': {\n const resProduct = await dispatch(\n gqlLinksApi.endpoints.GetProductLinkData.initiate({\n projectName,\n productId: entityId,\n }),\n ).unwrap()\n return resProduct?.project.product\n }\n case 'version': {\n const resVersion = await dispatch(\n gqlLinksApi.endpoints.GetVersionLinkData.initiate({\n projectName,\n versionId: entityId,\n }),\n ).unwrap()\n return resVersion?.project.version\n }\n case 'representation': {\n const resRepresentation = await dispatch(\n gqlLinksApi.endpoints.GetRepresentationLinkData.initiate({\n projectName,\n representationId: entityId,\n }),\n ).unwrap()\n return resRepresentation?.project.representation\n }\n case 'workfile': {\n const resWorkfile = await dispatch(\n gqlLinksApi.endpoints.GetWorkfileLinkData.initiate({\n projectName,\n workfileId: entityId,\n }),\n ).unwrap()\n return resWorkfile?.project.workfile\n }\n default:\n throw new Error(`Unknown entity type: ${entityType}`)\n }\n}\n\n// Helper function to patch entity links cache for all entity types\nconst patchEntityLinksCache = (\n {\n projectName,\n sourceEntity,\n targetEntity,\n linkId,\n linkType,\n direction,\n isDelete = false,\n }: {\n projectName: string\n sourceEntity: Entity\n targetEntity: Entity\n linkId: string\n linkType: string\n direction: 'in' | 'out'\n isDelete?: boolean\n },\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches: any[] = [],\n) => {\n // Helper function to patch a single entity's links\n const patchEntityLinks = (\n entityToPatch: Entity,\n otherEntity: Entity,\n linkDirection: 'in' | 'out',\n ) => {\n // Get all cached query arguments for the getEntityLinks endpoint\n const cachedArgs = entityLinksApi.util.selectCachedArgsForQuery(state, 'getEntityLinks')\n\n // Filter for queries that match our project and entity type\n const relevantArgs = cachedArgs.filter(\n (args) => args.projectName === projectName && args.entityType === entityToPatch.entityType,\n )\n\n let entityFoundInAnyCache = false\n\n for (const args of relevantArgs) {\n try {\n const patch = dispatch(\n entityLinksApi.util.updateQueryData(\n 'getEntityLinks',\n args,\n (draft: EntityWithLinks[]) => {\n // Find the entity in the cache\n const entityInCache = draft.find((entity) => entity.id === entityToPatch.entityId)\n if (!entityInCache) {\n // Entity not in this specific cache, continue to next one\n return\n }\n\n entityFoundInAnyCache = true\n console.log(\n `Found and patching ${entityToPatch.entityType} ${entityToPatch.entityId} in cache`,\n )\n\n if (isDelete) {\n // Remove the link from the entity\n entityInCache.links = entityInCache.links.filter((link) => link.id !== linkId)\n } else {\n console.log(`Adding new link to ${entityToPatch.entityType}`)\n // Add the new link to the entity\n const newLink: EntityLink = {\n id: linkId,\n direction: linkDirection,\n linkType,\n entityType: otherEntity.entityType,\n node: {\n id: otherEntity.entityId,\n name: otherEntity.name,\n label: otherEntity.label,\n parents: otherEntity.parents,\n subType: otherEntity.subType,\n },\n }\n\n // Check if link already exists and update it, or add new one\n const existingLinkIndex = entityInCache.links.findIndex(\n (link) => link.id === linkId,\n )\n\n if (existingLinkIndex !== -1) {\n entityInCache.links[existingLinkIndex] = newLink\n } else {\n console.log(\n `Adding new link to ${entityToPatch.entityType} links cache`,\n newLink,\n current(entityInCache),\n )\n entityInCache.links.push(newLink)\n }\n }\n },\n ),\n )\n\n patches.push(patch)\n } catch (error) {\n console.error(`Error patching cache for ${entityToPatch.entityType}:`, error)\n }\n }\n\n // If entity was not found in any cache, handle based on context\n if (!entityFoundInAnyCache) {\n // For source entities (where user is creating the link from), we need to invalidate\n // to ensure the user sees the new link appear in the UI\n if (entityToPatch.entityId === sourceEntity.entityId) {\n console.warn(\n `Source ${entityToPatch.entityType} ${entityToPatch.entityId} not in cache - invalidating to refresh UI`,\n )\n dispatch(\n entityLinksApi.util.invalidateTags([\n { type: 'link', id: `${projectName}-${entityToPatch.entityType}` },\n ]),\n )\n } else {\n // For target entities, we can skip since they're not currently visible\n console.log(\n `Target ${entityToPatch.entityType} ${entityToPatch.entityId} not in cache - skipping patch (entity not currently visible)`,\n )\n // No action needed - when the entity is eventually loaded, it will have the correct links from the server\n }\n }\n }\n\n // Patch the source entity with the link\n patchEntityLinks(sourceEntity, targetEntity, direction)\n\n // Patch the target entity with the link (flip direction)\n const targetDirection = direction === 'in' ? 'out' : 'in'\n patchEntityLinks(targetEntity, sourceEntity, targetDirection)\n}\n\nconst enhancedApi = linksApi.enhanceEndpoints({\n endpoints: {\n deleteEntityLink: {\n transformErrorResponse: (error: any) => error.data?.detail || '',\n async onQueryStarted(\n // @ts-ignore - patch is purely used for patching the entities\n { linkId, projectName, patch },\n { dispatch, getState, queryFulfilled },\n ) {\n const state = getState()\n let patches: any[] = []\n\n const sourceEntity = patch?.source\n const targetEntity = patch?.target\n const linkType = patch?.linkType || ''\n const direction = patch?.direction || 'out'\n\n if (sourceEntity && targetEntity) {\n try {\n // Update entity links cache for both entities\n patchEntityLinksCache(\n {\n projectName,\n sourceEntity,\n targetEntity,\n linkId,\n linkType,\n direction,\n isDelete: true,\n },\n { state, dispatch },\n patches,\n )\n\n // Wait for the mutation to finish\n await queryFulfilled\n } catch (error) {\n console.error('Error patching entities during link deletion:', error)\n // Undo patches if there's an error\n for (const patch of patches) {\n patch.undo()\n }\n\n // Invalidate entity links queries as fallback\n dispatch(\n entityLinksApi.util.invalidateTags([\n { type: 'link', id: `${projectName}-${sourceEntity.entityType}` },\n { type: 'link', id: `${projectName}-${targetEntity.entityType}` },\n ]),\n )\n }\n } else {\n console.warn('Source or target entity not provided for link deletion')\n }\n },\n },\n createEntityLink: {\n transformErrorResponse: (error: any) => error.data?.detail || '',\n async onQueryStarted(\n // @ts-ignore - patch is purely used for patching the entities\n { projectName, createLinkRequestModel, patch },\n { dispatch, getState, queryFulfilled },\n ) {\n const { linkType, id: linkId } = createLinkRequestModel\n const state = getState()\n\n let patches: any[] = []\n\n const sourceEntity = patch?.source\n const sourceEntityType = sourceEntity?.entityType\n const sourceEntityId = sourceEntity?.entityId\n const targetEntity = patch?.target\n const targetEntityType = targetEntity?.entityType\n const targetEntityId = targetEntity?.entityId\n const direction = patch?.direction || ('out' as 'in' | 'out')\n const linkTypeName = linkType?.split('|')[0] as string\n\n try {\n if (sourceEntity.entityType && targetEntity) {\n // Get the source entity data based on its type\n const sourcePromise = getEntityDataByType(\n sourceEntityType,\n sourceEntityId,\n projectName,\n dispatch,\n )\n\n const targetPromise = getEntityDataByType(\n targetEntityType,\n targetEntityId,\n projectName,\n dispatch,\n )\n\n // Wait for both cache data and source entity data to be loaded\n const res = await Promise.all([sourcePromise, targetPromise])\n const sourceEntityData = res[0]\n const targetEntityData = res[1]\n\n if (!sourceEntityData || !targetEntityData) {\n throw new Error('Source or target entity data not found')\n }\n\n if (!linkId) {\n throw new Error('Link ID not found in cache entry')\n }\n\n const sourceEntity: Entity = {\n entityType: sourceEntityType,\n entityId: sourceEntityId,\n name: sourceEntityData.name,\n label: 'label' in sourceEntityData ? sourceEntityData.label : undefined,\n parents: sourceEntityData.parents || [],\n subType: 'subType' in sourceEntityData ? sourceEntityData.subType : undefined,\n }\n\n const targetEntity: Entity = {\n entityType: targetEntityType,\n entityId: targetEntityId,\n name: targetEntityData.name,\n label: 'label' in targetEntityData ? targetEntityData.label : undefined,\n parents: targetEntityData.parents || [],\n subType: 'subType' in targetEntityData ? targetEntityData.subType : undefined,\n }\n\n // Update entity links cache for both entities\n patchEntityLinksCache(\n {\n projectName,\n sourceEntity,\n targetEntity,\n linkId,\n linkType: linkTypeName,\n direction,\n isDelete: false,\n },\n { state, dispatch },\n patches,\n )\n\n // Wait for the mutation to finish (undo patches if it fails)\n await queryFulfilled\n } else {\n console.warn('Source entity type not provided, falling back to task query')\n throw new Error('Source entity type not provided')\n }\n } catch (error) {\n console.error(error)\n\n // Undo patches if the mutation fails\n for (const patch of patches) {\n patch.undo()\n }\n\n // Invalidate entity links queries as fallback\n if (sourceEntity && targetEntity) {\n dispatch(\n entityLinksApi.util.invalidateTags([\n { type: 'link', id: `${projectName}-${sourceEntity.entityType}` },\n { type: 'link', id: `${projectName}-${targetEntity.entityType}` },\n ]),\n )\n }\n }\n },\n },\n },\n})\n\nexport const { useDeleteEntityLinkMutation, useCreateEntityLinkMutation } = enhancedApi\n"],"names":["getEntityDataByType","entityType","entityId","projectName","dispatch","gqlLinksApi","patchEntityLinksCache","sourceEntity","targetEntity","linkId","linkType","direction","isDelete","state","patches","patchEntityLinks","entityToPatch","otherEntity","linkDirection","relevantArgs","entityLinksApi","args","entityFoundInAnyCache","patch","draft","entityInCache","entity","link","newLink","existingLinkIndex","current","error","enhancedApi","linksApi","getState","queryFulfilled","createLinkRequestModel","sourceEntityType","sourceEntityId","targetEntityType","targetEntityId","linkTypeName","sourcePromise","targetPromise","res","sourceEntityData","targetEntityData","useDeleteEntityLinkMutation","useCreateEntityLinkMutation"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("../../base/client.cjs.js");const G=require("../../generated/graphql.cjs.js");require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/desktop.cjs.js");require("../../generated/entityLists.cjs.js");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");const F=require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");require("lodash");require("react-toastify");require("uuid");const A=require("../../../util/pubsub.cjs.js"),_=u=>{try{return JSON.parse(u)}catch{return{}}},w=u=>{if(!u.project)return[];const s=[];for(const{node:e}of u.project.tasks.edges)s.push({...e,folderId:e.folderId||"root",attrib:_(e.allAttrib),entityId:e.id,entityType:"task",links:[]});return s},b=(u=[],s,e)=>{const t=u?.map(o=>({type:"overviewTask",id:o.id}))||[],a=e?(Array.isArray(e)?e:[e]).map(o=>({type:"overviewTask",id:o})):[];return[...t,...a,{type:"overviewTask",id:s},{type:"overviewTask",id:"LIST"}]},P=G.api.enhanceEndpoints({endpoints:{GetTasksByParent:{transformResponse:w,providesTags:(u,s,{parentIds:e,projectName:t})=>b(u,t,e)},GetTasksList:{transformResponse:u=>({tasks:w(u),pageInfo:u.project.tasks.pageInfo}),providesTags:(u,s,{projectName:e})=>b(u?.tasks||[],e)}}}),L=F.api.enhanceEndpoints({endpoints:{searchFolders:{}}}),E=100,N=P.injectEndpoints({endpoints:u=>({getOverviewTasksByFolders:u.query({async queryFn({projectName:s,parentIds:e,filter:t,folderFilter:a,search:o},{dispatch:g,forced:y}){try{const h=[];for(let i=0;i<e.length;i+=20){const k=e.slice(i,i+20),r=(await Promise.all(k.map(async n=>g(P.endpoints.GetTasksByParent.initiate({projectName:s,parentIds:[n],filter:t,folderFilter:a,search:o},{forceRefetch:y}))))).filter(n=>!!n.data).flatMap(n=>n.data);h.push(...r)}return{data:h}}catch(I){return console.error(I),{error:{status:"FETCH_ERROR",error:I.message}}}},serializeQueryArgs:({queryArgs:{parentIds:s,...e}})=>({...e}),forceRefetch({currentArg:s,previousArg:e}){return JSON.stringify(s)!==JSON.stringify(e)},providesTags:(s,e,{parentIds:t,projectName:a})=>b(s,a,t),async onCacheEntryAdded({projectName:s,parentIds:e,filter:t,search:a},{cacheDataLoaded:o,cacheEntryRemoved:g,updateCachedData:y,dispatch:I}){let h;const i=new Set,k=100,d=500;let r=!1;const n=()=>{r||(r=!0,setTimeout(T,d))},T=async()=>{if(r=!1,!i.size)return;const f=Array.from(i).slice(0,k);f.forEach(l=>i.delete(l));try{const p=(await I(P.endpoints.GetTasksList.initiate({projectName:s,taskIds:f},{forceRefetch:!0})).unwrap()).tasks||[],q=new Map(p.map(c=>[c.id,c]));y(c=>{for(const m of p){const v=c.findIndex(R=>R.id===m.id);v>-1?c[v]=m:c.push(m)}for(const m of f)if(!q.has(m)){const v=c.findIndex(R=>R.id===m);v>-1&&c.splice(v,1)}})}catch(l){console.error("Realtime overview batch update failed",l)}finally{i.size&&n()}};try{await o;const f=async(l,p)=>{const q=p?.summary?.entityId,c=p?.summary?.parentId;!q||!c||e.includes(c)&&(i.add(q),n())};h=A.subscribe("entity.task",f)}catch{}await g,h&&A.unsubscribe(h)}}),getSearchFolders:u.query({async queryFn({projectName:s,folderSearchRequest:e},{dispatch:t}){try{return{data:(await t(L.endpoints.searchFolders.initiate({projectName:s,folderSearchRequest:e}))).data?.folderIds||[]}}catch(a){return console.error(a),{error:{status:"FETCH_ERROR",error:a.message}}}}}),getTasksListInfinite:u.infiniteQuery({infiniteQueryOptions:{initialPageParam:{cursor:"",desc:!1},getNextPageParam:(s,e,t,a)=>{const o=s.pageInfo;if(!(!(t.desc?o.hasPreviousPage:o.hasNextPage)||!o.endCursor))return{cursor:o.endCursor,desc:t.desc}}},queryFn:async({queryArg:s,pageParam:e},t)=>{try{const{projectName:a,filter:o,folderFilter:g,search:y,folderIds:I,sortBy:h,desc:i}=s,{cursor:k}=e,d={projectName:a,filter:o,folderFilter:g,search:y,folderIds:I};h?(d.sortBy=h,i?(d.before=k||void 0,d.last=E):(d.after=k||void 0,d.first=E)):(d.after=k||void 0,d.first=E);const r=await t.dispatch(P.endpoints.GetTasksList.initiate(d,{forceRefetch:!0}));if(r.error)throw r.error;const n={tasks:[],pageInfo:{hasNextPage:!1,endCursor:null,startCursor:null,hasPreviousPage:!1}};return{data:r.data||n}}catch(a){return console.error("Error in getTasksListInfinite queryFn:",a),{error:{status:"FETCH_ERROR",error:a.message}}}},providesTags:(s,e,{projectName:t})=>b(s?.pages.flatMap(a=>a.tasks)||[],t),async onCacheEntryAdded(s,{cacheDataLoaded:e,cacheEntryRemoved:t,updateCachedData:a,dispatch:o}){let g;const y=new Set,I=100,h=500;let i=!1;const k=()=>{i||(i=!0,setTimeout(d,h))},d=async()=>{if(i=!1,!y.size)return;const r=Array.from(y).slice(0,I);r.forEach(n=>y.delete(n));try{const T=(await o(P.endpoints.GetTasksList.initiate({projectName:s.projectName,taskIds:r,folderIds:s.folderIds},{forceRefetch:!0})).unwrap()).tasks||[],f=new Map(T.map(l=>[l.id,l]));a(l=>{for(const p of T){let q=!1;for(const c of l.pages){const m=c.tasks.findIndex(v=>v.id===p.id);if(m!==-1){c.tasks[m]=p,q=!0;break}}q||(l.pages.length?l.pages[0].tasks.unshift(p):l.pages.push({tasks:[p],pageInfo:{startCursor:null,endCursor:null,hasNextPage:!1,hasPreviousPage:!1}}))}for(const p of r)if(!f.has(p))for(const q of l.pages){const c=q.tasks.findIndex(m=>m.id===p);if(c!==-1){q.tasks.splice(c,1);break}}})}catch(n){console.error("Realtime infinite tasks batch update failed",n)}finally{y.size&&k()}};try{await e;const r=async(n,T)=>{const f=T?.summary?.entityId;f&&(y.add(f),k())};g=A.subscribe("entity.task",r)}catch{}await t,g&&A.unsubscribe(g)}}),getGroupedTasksList:u.query({queryFn:async({projectName:s,groups:e,search:t,folderFilter:a,folderIds:o,desc:g,sortBy:y,groupCount:I},h)=>{try{let i=[];for(const r of e){const n=I||r.count||500,T={projectName:s,filter:r.filter,folderFilter:a,search:t,folderIds:o,sortBy:y,group:r.value};g?T.last=n:T.first=n;const f=h.dispatch(P.endpoints.GetTasksList.initiate(T,{forceRefetch:!0}));i.push(f)}const k=await Promise.all(i),d=[];for(const r of k){if(r.error)throw r.error;const n=r.originalArgs?.group,T=r.data?.pageInfo?.hasNextPage||r.data?.pageInfo?.hasPreviousPage||!1,f=r.data?.tasks.map((l,p,q)=>({...l,groups:[{value:n,hasNextPage:p===q.length-1&&T?n:void 0}]}))||[];d.push(...f)}return{data:{tasks:d}}}catch(i){return console.error("Error in getGroupedTasksList queryFn:",i),{error:{status:"FETCH_ERROR",error:i.message}}}},providesTags:(s,e,{projectName:t})=>b(s?.tasks,t)})})}),{useGetOverviewTasksByFoldersQuery:S,useGetSearchFoldersQuery:C,useGetTasksListQuery:x,useGetTasksListInfiniteInfiniteQuery:Q,useLazyGetTasksByParentQuery:B,useGetGroupedTasksListQuery:O}=N;exports.TASKS_INFINITE_QUERY_COUNT=E;exports.default=N;exports.parseAllAttribs=_;exports.useGetGroupedTasksListQuery=O;exports.useGetOverviewTasksByFoldersQuery=S;exports.useGetSearchFoldersQuery=C;exports.useGetTasksListInfiniteInfiniteQuery=Q;exports.useGetTasksListQuery=x;exports.useLazyGetTasksByParentQuery=B;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("../../base/client.cjs.js");const G=require("../../generated/graphql.cjs.js");require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/desktop.cjs.js");require("../../generated/entityLists.cjs.js");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");const F=require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/projectFolders.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");require("lodash");require("react-toastify");require("uuid");const A=require("../../../util/pubsub.cjs.js"),_=u=>{try{return JSON.parse(u)}catch{return{}}},w=u=>{if(!u.project)return[];const s=[];for(const{node:e}of u.project.tasks.edges)s.push({...e,folderId:e.folderId||"root",attrib:_(e.allAttrib),entityId:e.id,entityType:"task",links:[]});return s},b=(u=[],s,e)=>{const t=u?.map(o=>({type:"overviewTask",id:o.id}))||[],a=e?(Array.isArray(e)?e:[e]).map(o=>({type:"overviewTask",id:o})):[];return[...t,...a,{type:"overviewTask",id:s},{type:"overviewTask",id:"LIST"}]},P=G.api.enhanceEndpoints({endpoints:{GetTasksByParent:{transformResponse:w,providesTags:(u,s,{parentIds:e,projectName:t})=>b(u,t,e)},GetTasksList:{transformResponse:u=>({tasks:w(u),pageInfo:u.project.tasks.pageInfo}),providesTags:(u,s,{projectName:e})=>b(u?.tasks||[],e)}}}),L=F.api.enhanceEndpoints({endpoints:{searchFolders:{}}}),E=100,N=P.injectEndpoints({endpoints:u=>({getOverviewTasksByFolders:u.query({async queryFn({projectName:s,parentIds:e,filter:t,folderFilter:a,search:o},{dispatch:g,forced:y}){try{const h=[];for(let i=0;i<e.length;i+=20){const k=e.slice(i,i+20),r=(await Promise.all(k.map(async n=>g(P.endpoints.GetTasksByParent.initiate({projectName:s,parentIds:[n],filter:t,folderFilter:a,search:o},{forceRefetch:y}))))).filter(n=>!!n.data).flatMap(n=>n.data);h.push(...r)}return{data:h}}catch(I){return console.error(I),{error:{status:"FETCH_ERROR",error:I.message}}}},serializeQueryArgs:({queryArgs:{parentIds:s,...e}})=>({...e}),forceRefetch({currentArg:s,previousArg:e}){return JSON.stringify(s)!==JSON.stringify(e)},providesTags:(s,e,{parentIds:t,projectName:a})=>b(s,a,t),async onCacheEntryAdded({projectName:s,parentIds:e,filter:t,search:a},{cacheDataLoaded:o,cacheEntryRemoved:g,updateCachedData:y,dispatch:I}){let h;const i=new Set,k=100,d=500;let r=!1;const n=()=>{r||(r=!0,setTimeout(T,d))},T=async()=>{if(r=!1,!i.size)return;const f=Array.from(i).slice(0,k);f.forEach(l=>i.delete(l));try{const p=(await I(P.endpoints.GetTasksList.initiate({projectName:s,taskIds:f},{forceRefetch:!0})).unwrap()).tasks||[],q=new Map(p.map(c=>[c.id,c]));y(c=>{for(const m of p){const v=c.findIndex(R=>R.id===m.id);v>-1?c[v]=m:c.push(m)}for(const m of f)if(!q.has(m)){const v=c.findIndex(R=>R.id===m);v>-1&&c.splice(v,1)}})}catch(l){console.error("Realtime overview batch update failed",l)}finally{i.size&&n()}};try{await o;const f=async(l,p)=>{const q=p?.summary?.entityId,c=p?.summary?.parentId;!q||!c||e.includes(c)&&(i.add(q),n())};h=A.subscribe("entity.task",f)}catch{}await g,h&&A.unsubscribe(h)}}),getSearchFolders:u.query({async queryFn({projectName:s,folderSearchRequest:e},{dispatch:t}){try{return{data:(await t(L.endpoints.searchFolders.initiate({projectName:s,folderSearchRequest:e}))).data?.folderIds||[]}}catch(a){return console.error(a),{error:{status:"FETCH_ERROR",error:a.message}}}}}),getTasksListInfinite:u.infiniteQuery({infiniteQueryOptions:{initialPageParam:{cursor:"",desc:!1},getNextPageParam:(s,e,t,a)=>{const o=s.pageInfo;if(!(!(t.desc?o.hasPreviousPage:o.hasNextPage)||!o.endCursor))return{cursor:o.endCursor,desc:t.desc}}},queryFn:async({queryArg:s,pageParam:e},t)=>{try{const{projectName:a,filter:o,folderFilter:g,search:y,folderIds:I,sortBy:h,desc:i}=s,{cursor:k}=e,d={projectName:a,filter:o,folderFilter:g,search:y,folderIds:I};h?(d.sortBy=h,i?(d.before=k||void 0,d.last=E):(d.after=k||void 0,d.first=E)):(d.after=k||void 0,d.first=E);const r=await t.dispatch(P.endpoints.GetTasksList.initiate(d,{forceRefetch:!0}));if(r.error)throw r.error;const n={tasks:[],pageInfo:{hasNextPage:!1,endCursor:null,startCursor:null,hasPreviousPage:!1}};return{data:r.data||n}}catch(a){return console.error("Error in getTasksListInfinite queryFn:",a),{error:{status:"FETCH_ERROR",error:a.message}}}},providesTags:(s,e,{projectName:t})=>b(s?.pages.flatMap(a=>a.tasks)||[],t),async onCacheEntryAdded(s,{cacheDataLoaded:e,cacheEntryRemoved:t,updateCachedData:a,dispatch:o}){let g;const y=new Set,I=100,h=500;let i=!1;const k=()=>{i||(i=!0,setTimeout(d,h))},d=async()=>{if(i=!1,!y.size)return;const r=Array.from(y).slice(0,I);r.forEach(n=>y.delete(n));try{const T=(await o(P.endpoints.GetTasksList.initiate({projectName:s.projectName,taskIds:r,folderIds:s.folderIds},{forceRefetch:!0})).unwrap()).tasks||[],f=new Map(T.map(l=>[l.id,l]));a(l=>{for(const p of T){let q=!1;for(const c of l.pages){const m=c.tasks.findIndex(v=>v.id===p.id);if(m!==-1){c.tasks[m]=p,q=!0;break}}q||(l.pages.length?l.pages[0].tasks.unshift(p):l.pages.push({tasks:[p],pageInfo:{startCursor:null,endCursor:null,hasNextPage:!1,hasPreviousPage:!1}}))}for(const p of r)if(!f.has(p))for(const q of l.pages){const c=q.tasks.findIndex(m=>m.id===p);if(c!==-1){q.tasks.splice(c,1);break}}})}catch(n){console.error("Realtime infinite tasks batch update failed",n)}finally{y.size&&k()}};try{await e;const r=async(n,T)=>{const f=T?.summary?.entityId;f&&(y.add(f),k())};g=A.subscribe("entity.task",r)}catch{}await t,g&&A.unsubscribe(g)}}),getGroupedTasksList:u.query({queryFn:async({projectName:s,groups:e,search:t,folderFilter:a,folderIds:o,desc:g,sortBy:y,groupCount:I},h)=>{try{let i=[];for(const r of e){const n=I||r.count||500,T={projectName:s,filter:r.filter,folderFilter:a,search:t,folderIds:o,sortBy:y,group:r.value};g?T.last=n:T.first=n;const f=h.dispatch(P.endpoints.GetTasksList.initiate(T,{forceRefetch:!0}));i.push(f)}const k=await Promise.all(i),d=[];for(const r of k){if(r.error)throw r.error;const n=r.originalArgs?.group,T=r.data?.pageInfo?.hasNextPage||r.data?.pageInfo?.hasPreviousPage||!1,f=r.data?.tasks.map((l,p,q)=>({...l,groups:[{value:n,hasNextPage:p===q.length-1&&T?n:void 0}]}))||[];d.push(...f)}return{data:{tasks:d}}}catch(i){return console.error("Error in getGroupedTasksList queryFn:",i),{error:{status:"FETCH_ERROR",error:i.message}}}},providesTags:(s,e,{projectName:t})=>b(s?.tasks,t)})})}),{useGetOverviewTasksByFoldersQuery:S,useGetSearchFoldersQuery:C,useGetTasksListQuery:x,useGetTasksListInfiniteInfiniteQuery:Q,useLazyGetTasksByParentQuery:B,useGetGroupedTasksListQuery:O}=N;exports.TASKS_INFINITE_QUERY_COUNT=E;exports.default=N;exports.parseAllAttribs=_;exports.useGetGroupedTasksListQuery=O;exports.useGetOverviewTasksByFoldersQuery=S;exports.useGetSearchFoldersQuery=C;exports.useGetTasksListInfiniteInfiniteQuery=Q;exports.useGetTasksListQuery=x;exports.useLazyGetTasksByParentQuery=B;
2
2
  //# sourceMappingURL=getOverview.cjs.js.map
@@ -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 foldersApi,\n SearchFoldersApiArg,\n GetTasksListQueryVariables,\n} from '@shared/api/generated'\nimport { PubSub } from '@shared/util'\nimport { EditorTaskNode } 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 links: [],\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 const parentTags = parentIds\n ? (Array.isArray(parentIds) ? parentIds : [parentIds]).map((id) => ({\n type: 'overviewTask',\n id,\n }))\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 folderFilter?: 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 folderFilter?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n groupCount?: number // optional override for all groups\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 = foldersApi.enhanceEndpoints({\n endpoints: {\n searchFolders: {},\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 {\n projectName: string\n parentIds: string[]\n filter?: string\n folderFilter?: string\n search?: string\n }\n >({\n async queryFn(\n { projectName, parentIds, filter, folderFilter, search },\n { dispatch, forced },\n ) {\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 folderFilter,\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 async onCacheEntryAdded(\n { projectName, parentIds, filter, search },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n let token: any\n const pendingTaskIds = new Set<string>()\n const MAX_BATCH = 100\n const INTERVAL = 500\n let scheduled = false\n\n const schedule = () => {\n if (scheduled) return\n scheduled = true\n setTimeout(flush, INTERVAL)\n }\n\n const flush = async () => {\n scheduled = false\n if (!pendingTaskIds.size) return\n const batchIds = Array.from(pendingTaskIds).slice(0, MAX_BATCH)\n batchIds.forEach((id) => pendingTaskIds.delete(id))\n try {\n const res = await dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(\n {\n projectName,\n taskIds: batchIds,\n } as any,\n { forceRefetch: true },\n ),\n ).unwrap()\n const returned = res.tasks || []\n const returnedMap = new Map(returned.map((t: EditorTaskNode) => [t.id, t]))\n\n updateCachedData((draft: EditorTaskNode[]) => {\n // update or add\n for (const task of returned) {\n const idx = draft.findIndex((t) => t.id === task.id)\n if (idx > -1) draft[idx] = task\n else draft.push(task)\n }\n // remove missing\n for (const id of batchIds) {\n if (!returnedMap.has(id)) {\n const idx = draft.findIndex((t) => t.id === id)\n if (idx > -1) draft.splice(idx, 1)\n }\n }\n })\n } catch (err) {\n console.error('Realtime overview batch update failed', err)\n } finally {\n if (pendingTaskIds.size) schedule()\n }\n }\n try {\n await cacheDataLoaded\n\n const handlePubSub = async (_topic: string, message: any) => {\n const taskId = message?.summary?.entityId\n const parentId = message?.summary?.parentId\n if (!taskId || !parentId) return\n // Only react if the parent folder is part of the current expanded set\n if (!parentIds.includes(parentId)) return\n pendingTaskIds.add(taskId)\n schedule()\n }\n\n // Subscribe to task entity updates\n // NOTE: backend emits topics like 'entity.task.assignees_changed'.\n // Assuming PubSub supports prefix matching when subscribing without the suffix.\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (e) {\n // cache entry removed before loaded - ignore\n }\n\n await cacheEntryRemoved\n if (token) PubSub.unsubscribe(token)\n },\n }),\n // searchFolders 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 getSearchFolders: build.query<string[], SearchFoldersApiArg>({\n async queryFn({ projectName, folderSearchRequest }, { dispatch }) {\n try {\n const result = await dispatch(\n foldersApiEnhanced.endpoints.searchFolders.initiate({\n projectName,\n folderSearchRequest,\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, folderFilter, 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 folderFilter,\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 async onCacheEntryAdded(\n arg,\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n let token: any\n const pendingTaskIds = new Set<string>()\n const MAX_BATCH = 100\n const INTERVAL = 500\n let scheduled = false\n\n const schedule = () => {\n if (scheduled) return\n scheduled = true\n setTimeout(flush, INTERVAL)\n }\n\n const flush = async () => {\n scheduled = false\n if (!pendingTaskIds.size) return\n const batchIds = Array.from(pendingTaskIds).slice(0, MAX_BATCH)\n batchIds.forEach((id) => pendingTaskIds.delete(id))\n try {\n const res = await dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(\n {\n projectName: arg.projectName,\n taskIds: batchIds,\n folderIds: arg.folderIds,\n } as any,\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const returned = res.tasks || []\n const returnedMap = new Map(returned.map((t: EditorTaskNode) => [t.id, t]))\n\n updateCachedData((draft: { pages: GetTasksListResult[]; pageParams: any[] }) => {\n // update/insert\n for (const task of returned) {\n let located = false\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === task.id)\n if (idx !== -1) {\n page.tasks[idx] = task\n located = true\n break\n }\n }\n if (!located) {\n if (draft.pages.length) draft.pages[0].tasks.unshift(task)\n else\n draft.pages.push({\n tasks: [task],\n pageInfo: {\n startCursor: null,\n endCursor: null,\n hasNextPage: false,\n hasPreviousPage: false,\n },\n })\n }\n }\n // remove any requested but missing tasks\n for (const id of batchIds) {\n if (returnedMap.has(id)) continue\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === id)\n if (idx !== -1) {\n page.tasks.splice(idx, 1)\n break\n }\n }\n }\n })\n } catch (err) {\n console.error('Realtime infinite tasks batch update failed', err)\n } finally {\n if (pendingTaskIds.size) schedule()\n }\n }\n try {\n await cacheDataLoaded\n\n const handlePubSub = async (_topic: string, message: any) => {\n const taskId = message?.summary?.entityId\n if (!taskId) return\n pendingTaskIds.add(taskId)\n schedule()\n }\n\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (_) {\n // ignore\n }\n await cacheEntryRemoved\n if (token) PubSub.unsubscribe(token)\n },\n }),\n getGroupedTasksList: build.query<GetGroupedTasksListResult, GetGroupedTasksListArgs>({\n queryFn: async (\n { projectName, groups, search, folderFilter, folderIds, desc, sortBy, groupCount },\n api,\n ) => {\n try {\n let promises = []\n for (const group of groups) {\n // Determine count for this group - use argument override, else group count, else default\n const count = groupCount || group.count || 500\n\n const queryParams: GetTasksListQueryVariables = {\n projectName,\n filter: group.filter,\n folderFilter, // Passed but not yet supported by backend\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 useGetSearchFoldersQuery,\n useGetTasksListQuery,\n useGetTasksListInfiniteInfiniteQuery,\n useLazyGetTasksByParentQuery,\n useGetGroupedTasksListQuery,\n} = injectedApi\nexport default injectedApi\n"],"names":["parseAllAttribs","allAttrib","transformFilteredEntitiesByParent","response","tasks","taskNode","getOverviewTaskTags","result","projectName","parentIds","taskTags","task","parentTags","id","enhancedApi","gqlApi","_e","foldersApiEnhanced","foldersApi","TASKS_INFINITE_QUERY_COUNT","injectedApi","build","filter","folderFilter","search","dispatch","forced","allTasks","batchParentIds","batchTasks","parentId","r","e","rest","currentArg","previousArg","cacheDataLoaded","cacheEntryRemoved","updateCachedData","token","pendingTaskIds","MAX_BATCH","INTERVAL","scheduled","schedule","flush","batchIds","returned","returnedMap","t","draft","idx","err","handlePubSub","_topic","message","taskId","PubSub","folderSearchRequest","lastPage","_allPages","lastPageParam","_allPageParams","pageInfo","queryArg","pageParam","api","folderIds","sortBy","desc","cursor","queryParams","fallback","p","arg","located","page","groups","groupCount","promises","group","count","promise","res","groupValue","hasNextPage","groupTasks","i","a","error","useGetOverviewTasksByFoldersQuery","useGetSearchFoldersQuery","useGetTasksListQuery","useGetTasksListInfiniteInfiniteQuery","useLazyGetTasksByParentQuery","useGetGroupedTasksListQuery"],"mappings":"q0DAkBaA,EAAmBC,GAAsB,CACpD,GAAI,CACF,OAAO,KAAK,MAAMA,CAAS,CAC7B,MAAY,CACV,MAAO,CAAA,CACT,CACF,EAEMC,EAAqCC,GAAsD,CAC/F,GAAI,CAACA,EAAS,QACZ,MAAO,CAAA,EAGT,MAAMC,EAA0B,CAAA,EAChC,SAAW,CAAE,KAAMC,CAAA,IAAcF,EAAS,QAAQ,MAAM,MACtDC,EAAM,KAAK,CACT,GAAGC,EACH,SAAUA,EAAS,UAAY,OAC/B,OAAQL,EAAgBK,EAAS,SAAS,EAC1C,SAAUA,EAAS,GACnB,WAAY,OACZ,MAAO,CAAA,CAAC,CACT,EAGH,OAAOD,CACT,EAEME,EAAsB,CAC1BC,EAAuC,GACvCC,EACAC,IACG,CACH,MAAMC,EAAWH,GAAQ,IAAKI,IAAU,CAAE,KAAM,eAAgB,GAAIA,EAAK,EAAA,EAAK,GAAK,CAAA,EAE7EC,EAAaH,GACd,MAAM,QAAQA,CAAS,EAAIA,EAAY,CAACA,CAAS,GAAG,IAAKI,IAAQ,CAChE,KAAM,eACN,GAAAA,CAAA,EACA,EACF,CAAA,EAEJ,MAAO,CACL,GAAGH,EACH,GAAGE,EACH,CAAE,KAAM,eAAgB,GAAIJ,CAAA,EAC5B,CAAE,KAAM,eAAgB,GAAI,MAAA,CAAO,CAEvC,EA8CMM,EAAcC,EAAAA,IAAO,iBAA+C,CACxE,UAAW,CAIT,iBAAkB,CAChB,kBAAmBb,EACnB,aAAc,CAACK,EAAQS,EAAI,CAAE,UAAAP,EAAW,YAAAD,CAAA,IACtCF,EAAoBC,EAAQC,EAAaC,CAAS,CAAA,EAEtD,aAAc,CACZ,kBAAoBF,IAA+B,CACjD,MAAOL,EAAkCK,CAAM,EAC/C,SAAUA,EAAO,QAAQ,MAAM,QAAA,GAEjC,aAAc,CAACA,EAAQS,EAAI,CAAE,YAAAR,KAC3BF,EAAoBC,GAAQ,OAAS,CAAA,EAAIC,CAAW,CAAA,CACxD,CAEJ,CAAC,EAGKS,EAAqBC,EAAAA,IAAW,iBAAiB,CACrD,UAAW,CACT,cAAe,CAAA,CAAC,CAEpB,CAAC,EAEYC,EAA6B,IAEpCC,EAAcN,EAAY,gBAAgB,CAC9C,UAAYO,IAAW,CAMrB,0BAA2BA,EAAM,MAS/B,CACA,MAAM,QACJ,CAAE,YAAAb,EAAa,UAAAC,EAAW,OAAAa,EAAQ,aAAAC,EAAc,OAAAC,GAChD,CAAE,SAAAC,EAAU,OAAAC,GACZ,CACA,GAAI,CAGF,MAAMC,EAA6B,CAAA,EAGnC,QAAS,EAAI,EAAG,EAAIlB,EAAU,OAAQ,GAAK,GAAY,CACrD,MAAMmB,EAAiBnB,EAAU,MAAM,EAAG,EAAI,EAAU,EAqBlDoB,GAlBe,MAAM,QAAQ,IACjCD,EAAe,IAAI,MAAOE,GACxBL,EACEX,EAAY,UAAU,iBAAiB,SACrC,CACE,YAAAN,EACA,UAAW,CAACsB,CAAQ,EACpB,OAAAR,EACA,aAAAC,EACA,OAAAC,CAAA,EAEF,CAAE,aAAcE,CAAA,CAAO,CACzB,CACF,CACF,GAKC,OAAQK,GAAM,CAAC,CAACA,EAAE,IAAI,EACtB,QAASxB,GAAWA,EAAO,IAAwB,EAEtDoB,EAAS,KAAK,GAAGE,CAAU,CAC7B,CAEA,MAAO,CAAE,KAAMF,CAAA,CACjB,OAASK,EAAQ,CAEf,eAAQ,MAAMA,CAAC,EAER,CAAE,MADK,CAAE,OAAQ,cAAe,MAAOA,EAAE,OAAA,CACvC,CACX,CACF,EAEA,mBAAoB,CAAC,CAAE,UAAW,CAAE,UAAAvB,EAAW,GAAGwB,CAAA,MAAc,CAC9D,GAAGA,CAAA,GAGL,aAAa,CAAE,WAAAC,EAAY,YAAAC,GAAe,CACxC,OAAO,KAAK,UAAUD,CAAU,IAAM,KAAK,UAAUC,CAAW,CAClE,EACA,aAAc,CAAC5B,EAAQS,EAAI,CAAE,UAAAP,EAAW,YAAAD,CAAA,IACtCF,EAAoBC,EAAQC,EAAaC,CAAS,EACpD,MAAM,kBACJ,CAAE,YAAAD,EAAa,UAAAC,EAAW,OAAAa,EAAQ,OAAAE,GAClC,CAAE,gBAAAY,EAAiB,kBAAAC,EAAmB,iBAAAC,EAAkB,SAAAb,GACxD,CACA,IAAIc,EACJ,MAAMC,MAAqB,IACrBC,EAAY,IACZC,EAAW,IACjB,IAAIC,EAAY,GAEhB,MAAMC,EAAW,IAAM,CACjBD,IACJA,EAAY,GACZ,WAAWE,EAAOH,CAAQ,EAC5B,EAEMG,EAAQ,SAAY,CAExB,GADAF,EAAY,GACR,CAACH,EAAe,KAAM,OAC1B,MAAMM,EAAW,MAAM,KAAKN,CAAc,EAAE,MAAM,EAAGC,CAAS,EAC9DK,EAAS,QAASjC,GAAO2B,EAAe,OAAO3B,CAAE,CAAC,EAClD,GAAI,CAUF,MAAMkC,GATM,MAAMtB,EAChBX,EAAY,UAAU,aAAa,SACjC,CACE,YAAAN,EACA,QAASsC,CAAA,EAEX,CAAE,aAAc,EAAA,CAAK,CACvB,EACA,OAAA,GACmB,OAAS,CAAA,EACxBE,EAAc,IAAI,IAAID,EAAS,IAAKE,GAAsB,CAACA,EAAE,GAAIA,CAAC,CAAC,CAAC,EAE1EX,EAAkBY,GAA4B,CAE5C,UAAWvC,KAAQoC,EAAU,CAC3B,MAAMI,EAAMD,EAAM,UAAWD,GAAMA,EAAE,KAAOtC,EAAK,EAAE,EAC/CwC,EAAM,GAAID,EAAMC,CAAG,EAAIxC,EACtBuC,EAAM,KAAKvC,CAAI,CACtB,CAEA,UAAWE,KAAMiC,EACf,GAAI,CAACE,EAAY,IAAInC,CAAE,EAAG,CACxB,MAAMsC,EAAMD,EAAM,UAAWD,GAAMA,EAAE,KAAOpC,CAAE,EAC1CsC,EAAM,IAAID,EAAM,OAAOC,EAAK,CAAC,CACnC,CAEJ,CAAC,CACH,OAASC,EAAK,CACZ,QAAQ,MAAM,wCAAyCA,CAAG,CAC5D,QAAA,CACMZ,EAAe,MAAMI,EAAA,CAC3B,CACF,EACA,GAAI,CACF,MAAMR,EAEN,MAAMiB,EAAe,MAAOC,EAAgBC,IAAiB,CAC3D,MAAMC,EAASD,GAAS,SAAS,SAC3BzB,EAAWyB,GAAS,SAAS,SAC/B,CAACC,GAAU,CAAC1B,GAEXrB,EAAU,SAASqB,CAAQ,IAChCU,EAAe,IAAIgB,CAAM,EACzBZ,EAAA,EACF,EAKAL,EAAQkB,EAAO,UAAU,cAAeJ,CAAY,CACtD,MAAY,CAEZ,CAEA,MAAMhB,EACFE,GAAOkB,EAAO,YAAYlB,CAAK,CACrC,CAAA,CACD,EAGD,iBAAkBlB,EAAM,MAAqC,CAC3D,MAAM,QAAQ,CAAE,YAAAb,EAAa,oBAAAkD,GAAuB,CAAE,SAAAjC,GAAY,CAChE,GAAI,CAUF,MAAO,CAAE,MATM,MAAMA,EACnBR,EAAmB,UAAU,cAAc,SAAS,CAClD,YAAAT,EACA,oBAAAkD,CAAA,CACD,CAAA,GAGiB,MAAM,WAAa,CAAA,CAE9B,CACX,OAAS1B,EAAQ,CACf,eAAQ,MAAMA,CAAC,EAER,CAAE,MADK,CAAE,OAAQ,cAAe,MAAOA,EAAE,OAAA,CACvC,CACX,CACF,CAAA,CACD,EAED,qBAAsBX,EAAM,cAI1B,CACA,qBAAsB,CACpB,iBAAkB,CAAE,OAAQ,GAAI,KAAM,EAAA,EAEtC,iBAAkB,CAACsC,EAAUC,EAAWC,EAAeC,IAAmB,CAExE,MAAMC,EAAWJ,EAAS,SAI1B,GAAI,IAHSE,EAAc,KACAE,EAAS,gBAAkBA,EAAS,cAE3C,CAACA,EAAS,WAE9B,MAAO,CACL,OAAQA,EAAS,UACjB,KAAMF,EAAc,IAAA,CAExB,CAAA,EAEF,QAAS,MAAO,CAAE,SAAAG,EAAU,UAAAC,CAAA,EAAaC,IAAQ,CAC/C,GAAI,CACF,KAAM,CAAE,YAAA1D,EAAa,OAAAc,EAAQ,aAAAC,EAAc,OAAAC,EAAQ,UAAA2C,EAAW,OAAAC,EAAQ,KAAAC,GAASL,EACzE,CAAE,OAAAM,GAAWL,EAGbM,EAAmB,CACvB,YAAA/D,EACA,OAAAc,EACA,aAAAC,EACA,OAAAC,EACA,UAAA2C,CAAA,EAIEC,GACFG,EAAY,OAASH,EACjBC,GACFE,EAAY,OAASD,GAAU,OAC/BC,EAAY,KAAOpD,IAEnBoD,EAAY,MAAQD,GAAU,OAC9BC,EAAY,MAAQpD,KAGtBoD,EAAY,MAAQD,GAAU,OAC9BC,EAAY,MAAQpD,GAItB,MAAMZ,EAAS,MAAM2D,EAAI,SACvBpD,EAAY,UAAU,aAAa,SAASyD,EAAa,CAAE,aAAc,GAAM,CAAA,EAGjF,GAAIhE,EAAO,MAAO,MAAMA,EAAO,MAC/B,MAAMiE,EAAW,CACf,MAAO,CAAA,EACP,SAAU,CACR,YAAa,GACb,UAAW,KACX,YAAa,KACb,gBAAiB,EAAA,CACnB,EAIF,MAAO,CACL,KAAMjE,EAAO,MAAQiE,CAAA,CAEzB,OAASxC,EAAQ,CACf,eAAQ,MAAM,yCAA0CA,CAAC,EAClD,CAAE,MAAO,CAAE,OAAQ,cAAe,MAAOA,EAAE,QAAQ,CAC5D,CACF,EACA,aAAc,CAACzB,EAAQS,EAAI,CAAE,YAAAR,CAAA,IAC3BF,EAAoBC,GAAQ,MAAM,QAASkE,GAAMA,EAAE,KAAK,GAAK,CAAA,EAAIjE,CAAW,EAC9E,MAAM,kBACJkE,EACA,CAAE,gBAAAtC,EAAiB,kBAAAC,EAAmB,iBAAAC,EAAkB,SAAAb,GACxD,CACA,IAAIc,EACJ,MAAMC,MAAqB,IACrBC,EAAY,IACZC,EAAW,IACjB,IAAIC,EAAY,GAEhB,MAAMC,EAAW,IAAM,CACjBD,IACJA,EAAY,GACZ,WAAWE,EAAOH,CAAQ,EAC5B,EAEMG,EAAQ,SAAY,CAExB,GADAF,EAAY,GACR,CAACH,EAAe,KAAM,OAC1B,MAAMM,EAAW,MAAM,KAAKN,CAAc,EAAE,MAAM,EAAGC,CAAS,EAC9DK,EAAS,QAASjC,GAAO2B,EAAe,OAAO3B,CAAE,CAAC,EAClD,GAAI,CAYF,MAAMkC,GAXM,MAAMtB,EAChBX,EAAY,UAAU,aAAa,SACjC,CACE,YAAa4D,EAAI,YACjB,QAAS5B,EACT,UAAW4B,EAAI,SAAA,EAEjB,CAAE,aAAc,EAAA,CAAK,CACvB,EACA,OAAA,GAEmB,OAAS,CAAA,EACxB1B,EAAc,IAAI,IAAID,EAAS,IAAKE,GAAsB,CAACA,EAAE,GAAIA,CAAC,CAAC,CAAC,EAE1EX,EAAkBY,GAA8D,CAE9E,UAAWvC,KAAQoC,EAAU,CAC3B,IAAI4B,EAAU,GACd,UAAWC,KAAQ1B,EAAM,MAAO,CAC9B,MAAMC,EAAMyB,EAAK,MAAM,UAAW3B,GAAMA,EAAE,KAAOtC,EAAK,EAAE,EACxD,GAAIwC,IAAQ,GAAI,CACdyB,EAAK,MAAMzB,CAAG,EAAIxC,EAClBgE,EAAU,GACV,KACF,CACF,CACKA,IACCzB,EAAM,MAAM,OAAQA,EAAM,MAAM,CAAC,EAAE,MAAM,QAAQvC,CAAI,EAEvDuC,EAAM,MAAM,KAAK,CACf,MAAO,CAACvC,CAAI,EACZ,SAAU,CACR,YAAa,KACb,UAAW,KACX,YAAa,GACb,gBAAiB,EAAA,CACnB,CACD,EAEP,CAEA,UAAWE,KAAMiC,EACf,GAAI,CAAAE,EAAY,IAAInC,CAAE,EACtB,UAAW+D,KAAQ1B,EAAM,MAAO,CAC9B,MAAMC,EAAMyB,EAAK,MAAM,UAAW3B,GAAMA,EAAE,KAAOpC,CAAE,EACnD,GAAIsC,IAAQ,GAAI,CACdyB,EAAK,MAAM,OAAOzB,EAAK,CAAC,EACxB,KACF,CACF,CAEJ,CAAC,CACH,OAASC,EAAK,CACZ,QAAQ,MAAM,8CAA+CA,CAAG,CAClE,QAAA,CACMZ,EAAe,MAAMI,EAAA,CAC3B,CACF,EACA,GAAI,CACF,MAAMR,EAEN,MAAMiB,EAAe,MAAOC,EAAgBC,IAAiB,CAC3D,MAAMC,EAASD,GAAS,SAAS,SAC5BC,IACLhB,EAAe,IAAIgB,CAAM,EACzBZ,EAAA,EACF,EAEAL,EAAQkB,EAAO,UAAU,cAAeJ,CAAY,CACtD,MAAY,CAEZ,CACA,MAAMhB,EACFE,GAAOkB,EAAO,YAAYlB,CAAK,CACrC,CAAA,CACD,EACD,oBAAqBlB,EAAM,MAA0D,CACnF,QAAS,MACP,CAAE,YAAAb,EAAa,OAAAqE,EAAQ,OAAArD,EAAQ,aAAAD,EAAc,UAAA4C,EAAW,KAAAE,EAAM,OAAAD,EAAQ,WAAAU,CAAA,EACtEZ,IACG,CACH,GAAI,CACF,IAAIa,EAAW,CAAA,EACf,UAAWC,KAASH,EAAQ,CAE1B,MAAMI,EAAQH,GAAcE,EAAM,OAAS,IAErCT,EAA0C,CAC9C,YAAA/D,EACA,OAAQwE,EAAM,OACd,aAAAzD,EACA,OAAAC,EACA,UAAA2C,EACA,OAAAC,EAEA,MAAOY,EAAM,KAAA,EAEXX,EACFE,EAAY,KAAOU,EAEnBV,EAAY,MAAQU,EAGtB,MAAMC,EAAUhB,EAAI,SAClBpD,EAAY,UAAU,aAAa,SAASyD,EAAa,CAAE,aAAc,GAAM,CAAA,EAEjFQ,EAAS,KAAKG,CAAO,CACvB,CAEA,MAAM3E,EAAS,MAAM,QAAQ,IAAIwE,CAAQ,EACnC3E,EAA0B,CAAA,EAChC,UAAW+E,KAAO5E,EAAQ,CACxB,GAAI4E,EAAI,MAAO,MAAMA,EAAI,MAGzB,MAAMC,EAAaD,EAAI,cAAc,MAE/BE,EACJF,EAAI,MAAM,UAAU,aAAeA,EAAI,MAAM,UAAU,iBAAmB,GACtEG,EACJH,EAAI,MAAM,MAAM,IAAI,CAACxE,EAAM4E,EAAGC,KAAO,CACnC,GAAG7E,EACH,OAAQ,CACN,CACE,MAAOyE,EACP,YAAaG,IAAMC,EAAE,OAAS,GAAKH,EAAcD,EAAa,MAAA,CAChE,CACF,EACA,GAAK,CAAA,EAEThF,EAAM,KAAK,GAAGkF,CAAU,CAC1B,CAGA,MAAO,CACL,KAAM,CACJ,MAAAlF,CAAA,CACF,CAEJ,OAASqF,EAAY,CACnB,eAAQ,MAAM,wCAAyCA,CAAK,EACrD,CAAE,MAAO,CAAE,OAAQ,cAAe,MAAOA,EAAM,QAAQ,CAChE,CACF,EACA,aAAc,CAAClF,EAAQS,EAAI,CAAE,YAAAR,KAC3BF,EAAoBC,GAAQ,MAAOC,CAAW,CAAA,CACjD,CAAA,EAEL,CAAC,EAEY,CACX,kCAAAkF,EACA,yBAAAC,EACA,qBAAAC,EACA,qCAAAC,EACA,6BAAAC,EACA,4BAAAC,CACF,EAAI3E"}
1
+ {"version":3,"file":"getOverview.cjs.js","sources":["../../../../../../src/api/queries/overview/getOverview.ts"],"sourcesContent":["import {\n gqlApi,\n GetTasksByParentQuery,\n GetTasksListQuery,\n foldersApi,\n SearchFoldersApiArg,\n GetTasksListQueryVariables,\n} from '@shared/api/generated'\nimport { PubSub } from '@shared/util'\nimport { EditorTaskNode } 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 links: [],\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 const parentTags = parentIds\n ? (Array.isArray(parentIds) ? parentIds : [parentIds]).map((id) => ({\n type: 'overviewTask',\n id,\n }))\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 folderFilter?: 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 folderFilter?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n groupCount?: number // optional override for all groups\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 = foldersApi.enhanceEndpoints({\n endpoints: {\n searchFolders: {},\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 {\n projectName: string\n parentIds: string[]\n filter?: string\n folderFilter?: string\n search?: string\n }\n >({\n async queryFn(\n { projectName, parentIds, filter, folderFilter, search },\n { dispatch, forced },\n ) {\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 folderFilter,\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 async onCacheEntryAdded(\n { projectName, parentIds, filter, search },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n let token: any\n const pendingTaskIds = new Set<string>()\n const MAX_BATCH = 100\n const INTERVAL = 500\n let scheduled = false\n\n const schedule = () => {\n if (scheduled) return\n scheduled = true\n setTimeout(flush, INTERVAL)\n }\n\n const flush = async () => {\n scheduled = false\n if (!pendingTaskIds.size) return\n const batchIds = Array.from(pendingTaskIds).slice(0, MAX_BATCH)\n batchIds.forEach((id) => pendingTaskIds.delete(id))\n try {\n const res = await dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(\n {\n projectName,\n taskIds: batchIds,\n } as any,\n { forceRefetch: true },\n ),\n ).unwrap()\n const returned = res.tasks || []\n const returnedMap = new Map(returned.map((t: EditorTaskNode) => [t.id, t]))\n\n updateCachedData((draft: EditorTaskNode[]) => {\n // update or add\n for (const task of returned) {\n const idx = draft.findIndex((t) => t.id === task.id)\n if (idx > -1) draft[idx] = task\n else draft.push(task)\n }\n // remove missing\n for (const id of batchIds) {\n if (!returnedMap.has(id)) {\n const idx = draft.findIndex((t) => t.id === id)\n if (idx > -1) draft.splice(idx, 1)\n }\n }\n })\n } catch (err) {\n console.error('Realtime overview batch update failed', err)\n } finally {\n if (pendingTaskIds.size) schedule()\n }\n }\n try {\n await cacheDataLoaded\n\n const handlePubSub = async (_topic: string, message: any) => {\n const taskId = message?.summary?.entityId\n const parentId = message?.summary?.parentId\n if (!taskId || !parentId) return\n // Only react if the parent folder is part of the current expanded set\n if (!parentIds.includes(parentId)) return\n pendingTaskIds.add(taskId)\n schedule()\n }\n\n // Subscribe to task entity updates\n // NOTE: backend emits topics like 'entity.task.assignees_changed'.\n // Assuming PubSub supports prefix matching when subscribing without the suffix.\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (e) {\n // cache entry removed before loaded - ignore\n }\n\n await cacheEntryRemoved\n if (token) PubSub.unsubscribe(token)\n },\n }),\n // searchFolders 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 getSearchFolders: build.query<string[], SearchFoldersApiArg>({\n async queryFn({ projectName, folderSearchRequest }, { dispatch }) {\n try {\n const result = await dispatch(\n foldersApiEnhanced.endpoints.searchFolders.initiate({\n projectName,\n folderSearchRequest,\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, folderFilter, 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 folderFilter,\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 async onCacheEntryAdded(\n arg,\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n let token: any\n const pendingTaskIds = new Set<string>()\n const MAX_BATCH = 100\n const INTERVAL = 500\n let scheduled = false\n\n const schedule = () => {\n if (scheduled) return\n scheduled = true\n setTimeout(flush, INTERVAL)\n }\n\n const flush = async () => {\n scheduled = false\n if (!pendingTaskIds.size) return\n const batchIds = Array.from(pendingTaskIds).slice(0, MAX_BATCH)\n batchIds.forEach((id) => pendingTaskIds.delete(id))\n try {\n const res = await dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(\n {\n projectName: arg.projectName,\n taskIds: batchIds,\n folderIds: arg.folderIds,\n } as any,\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const returned = res.tasks || []\n const returnedMap = new Map(returned.map((t: EditorTaskNode) => [t.id, t]))\n\n updateCachedData((draft: { pages: GetTasksListResult[]; pageParams: any[] }) => {\n // update/insert\n for (const task of returned) {\n let located = false\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === task.id)\n if (idx !== -1) {\n page.tasks[idx] = task\n located = true\n break\n }\n }\n if (!located) {\n if (draft.pages.length) draft.pages[0].tasks.unshift(task)\n else\n draft.pages.push({\n tasks: [task],\n pageInfo: {\n startCursor: null,\n endCursor: null,\n hasNextPage: false,\n hasPreviousPage: false,\n },\n })\n }\n }\n // remove any requested but missing tasks\n for (const id of batchIds) {\n if (returnedMap.has(id)) continue\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === id)\n if (idx !== -1) {\n page.tasks.splice(idx, 1)\n break\n }\n }\n }\n })\n } catch (err) {\n console.error('Realtime infinite tasks batch update failed', err)\n } finally {\n if (pendingTaskIds.size) schedule()\n }\n }\n try {\n await cacheDataLoaded\n\n const handlePubSub = async (_topic: string, message: any) => {\n const taskId = message?.summary?.entityId\n if (!taskId) return\n pendingTaskIds.add(taskId)\n schedule()\n }\n\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (_) {\n // ignore\n }\n await cacheEntryRemoved\n if (token) PubSub.unsubscribe(token)\n },\n }),\n getGroupedTasksList: build.query<GetGroupedTasksListResult, GetGroupedTasksListArgs>({\n queryFn: async (\n { projectName, groups, search, folderFilter, folderIds, desc, sortBy, groupCount },\n api,\n ) => {\n try {\n let promises = []\n for (const group of groups) {\n // Determine count for this group - use argument override, else group count, else default\n const count = groupCount || group.count || 500\n\n const queryParams: GetTasksListQueryVariables = {\n projectName,\n filter: group.filter,\n folderFilter, // Passed but not yet supported by backend\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 useGetSearchFoldersQuery,\n useGetTasksListQuery,\n useGetTasksListInfiniteInfiniteQuery,\n useLazyGetTasksByParentQuery,\n useGetGroupedTasksListQuery,\n} = injectedApi\nexport default injectedApi\n"],"names":["parseAllAttribs","allAttrib","transformFilteredEntitiesByParent","response","tasks","taskNode","getOverviewTaskTags","result","projectName","parentIds","taskTags","task","parentTags","id","enhancedApi","gqlApi","_e","foldersApiEnhanced","foldersApi","TASKS_INFINITE_QUERY_COUNT","injectedApi","build","filter","folderFilter","search","dispatch","forced","allTasks","batchParentIds","batchTasks","parentId","r","e","rest","currentArg","previousArg","cacheDataLoaded","cacheEntryRemoved","updateCachedData","token","pendingTaskIds","MAX_BATCH","INTERVAL","scheduled","schedule","flush","batchIds","returned","returnedMap","t","draft","idx","err","handlePubSub","_topic","message","taskId","PubSub","folderSearchRequest","lastPage","_allPages","lastPageParam","_allPageParams","pageInfo","queryArg","pageParam","api","folderIds","sortBy","desc","cursor","queryParams","fallback","p","arg","located","page","groups","groupCount","promises","group","count","promise","res","groupValue","hasNextPage","groupTasks","i","a","error","useGetOverviewTasksByFoldersQuery","useGetSearchFoldersQuery","useGetTasksListQuery","useGetTasksListInfiniteInfiniteQuery","useLazyGetTasksByParentQuery","useGetGroupedTasksListQuery"],"mappings":"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"}