@ynput/ayon-frontend-shared 0.2.23 → 0.2.24

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 (784) hide show
  1. package/dist/DetailsPanel.cjs.js +22 -12
  2. package/dist/DetailsPanel.cjs.js.map +1 -1
  3. package/dist/DetailsPanel.es.js +22 -12
  4. package/dist/DetailsPanel.es.js.map +1 -1
  5. package/dist/ProjectTreeTable.cjs.js +17 -1
  6. package/dist/ProjectTreeTable.cjs.js.map +1 -1
  7. package/dist/ProjectTreeTable.es.js +19 -3
  8. package/dist/ProjectTreeTable.es.js.map +1 -1
  9. package/dist/SimpleTable.cjs.js +18 -0
  10. package/dist/SimpleTable.cjs.js.map +1 -0
  11. package/dist/SimpleTable.es.js +18 -0
  12. package/dist/SimpleTable.es.js.map +1 -0
  13. package/dist/_virtual/index.cjs10.js +4 -4
  14. package/dist/_virtual/index.cjs8.js +4 -4
  15. package/dist/_virtual/index.cjs9.js +4 -4
  16. package/dist/_virtual/index.es10.js +4 -4
  17. package/dist/_virtual/index.es8.js +4 -4
  18. package/dist/_virtual/index.es9.js +4 -4
  19. package/dist/api.cjs.js +15 -0
  20. package/dist/api.cjs.js.map +1 -1
  21. package/dist/api.es.js +87 -72
  22. package/dist/api.es.js.map +1 -1
  23. package/dist/components.cjs.js +6 -0
  24. package/dist/components.cjs.js.map +1 -1
  25. package/dist/components.es.js +6 -0
  26. package/dist/components.es.js.map +1 -1
  27. package/dist/hooks.cjs.js +2 -0
  28. package/dist/hooks.cjs.js.map +1 -1
  29. package/dist/hooks.es.js +2 -0
  30. package/dist/hooks.es.js.map +1 -1
  31. package/dist/index.cjs.js +22 -12
  32. package/dist/index.cjs.js.map +1 -1
  33. package/dist/index.es.js +22 -12
  34. package/dist/index.es.js.map +1 -1
  35. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +2 -2
  36. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  37. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  38. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  39. package/dist/node_modules/vfile/lib/index.cjs.js +1 -1
  40. package/dist/node_modules/vfile/lib/index.es.js +1 -1
  41. package/dist/shared/src/api/base/client.cjs.js +2 -1
  42. package/dist/shared/src/api/base/client.cjs.js.map +1 -1
  43. package/dist/shared/src/api/base/client.es.js +2 -1
  44. package/dist/shared/src/api/base/client.es.js.map +1 -1
  45. package/dist/shared/src/api/generated/graphql.cjs.js +9 -10
  46. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  47. package/dist/shared/src/api/generated/graphql.es.js +9 -10
  48. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  49. package/dist/shared/src/api/generated/graphqlLinks.cjs.js +447 -0
  50. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -0
  51. package/dist/shared/src/api/generated/graphqlLinks.es.js +447 -0
  52. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -0
  53. package/dist/shared/src/api/queries/actions/getActions.cjs.js +1 -0
  54. package/dist/shared/src/api/queries/actions/getActions.cjs.js.map +1 -1
  55. package/dist/shared/src/api/queries/actions/getActions.es.js +1 -0
  56. package/dist/shared/src/api/queries/actions/getActions.es.js.map +1 -1
  57. package/dist/shared/src/api/queries/activities/getActivities.cjs.js +1 -0
  58. package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
  59. package/dist/shared/src/api/queries/activities/getActivities.es.js +1 -0
  60. package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
  61. package/dist/shared/src/api/queries/activities/getMentions.cjs.js +1 -0
  62. package/dist/shared/src/api/queries/activities/getMentions.cjs.js.map +1 -1
  63. package/dist/shared/src/api/queries/activities/getMentions.es.js +1 -0
  64. package/dist/shared/src/api/queries/activities/getMentions.es.js.map +1 -1
  65. package/dist/shared/src/api/queries/activities/updateReaction.cjs.js +1 -0
  66. package/dist/shared/src/api/queries/activities/updateReaction.cjs.js.map +1 -1
  67. package/dist/shared/src/api/queries/activities/updateReaction.es.js +1 -0
  68. package/dist/shared/src/api/queries/activities/updateReaction.es.js.map +1 -1
  69. package/dist/shared/src/api/queries/addons/getAddons.cjs.js +1 -0
  70. package/dist/shared/src/api/queries/addons/getAddons.cjs.js.map +1 -1
  71. package/dist/shared/src/api/queries/addons/getAddons.es.js +1 -0
  72. package/dist/shared/src/api/queries/addons/getAddons.es.js.map +1 -1
  73. package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js +1 -0
  74. package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js.map +1 -1
  75. package/dist/shared/src/api/queries/attributes/getAttributes.es.js +1 -0
  76. package/dist/shared/src/api/queries/attributes/getAttributes.es.js.map +1 -1
  77. package/dist/shared/src/api/queries/authentication/getAuthentication.cjs.js +1 -0
  78. package/dist/shared/src/api/queries/authentication/getAuthentication.cjs.js.map +1 -1
  79. package/dist/shared/src/api/queries/authentication/getAuthentication.es.js +1 -0
  80. package/dist/shared/src/api/queries/authentication/getAuthentication.es.js.map +1 -1
  81. package/dist/shared/src/api/queries/cloud/cloud.cjs.js +1 -0
  82. package/dist/shared/src/api/queries/cloud/cloud.cjs.js.map +1 -1
  83. package/dist/shared/src/api/queries/cloud/cloud.es.js +1 -0
  84. package/dist/shared/src/api/queries/cloud/cloud.es.js.map +1 -1
  85. package/dist/shared/src/api/queries/entities/getEntity.cjs.js +4 -1
  86. package/dist/shared/src/api/queries/entities/getEntity.cjs.js.map +1 -1
  87. package/dist/shared/src/api/queries/entities/getEntity.es.js +4 -1
  88. package/dist/shared/src/api/queries/entities/getEntity.es.js.map +1 -1
  89. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +2 -0
  90. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  91. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +2 -0
  92. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  93. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +4 -0
  94. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  95. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +4 -0
  96. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  97. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +4 -0
  98. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  99. package/dist/shared/src/api/queries/entities/updateEntity.es.js +4 -0
  100. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  101. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +3 -0
  102. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  103. package/dist/shared/src/api/queries/entityLists/getLists.es.js +3 -0
  104. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  105. package/dist/shared/src/api/queries/entityLists/getListsAttributes.cjs.js +1 -0
  106. package/dist/shared/src/api/queries/entityLists/getListsAttributes.cjs.js.map +1 -1
  107. package/dist/shared/src/api/queries/entityLists/getListsAttributes.es.js +1 -0
  108. package/dist/shared/src/api/queries/entityLists/getListsAttributes.es.js.map +1 -1
  109. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js +1 -0
  110. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
  111. package/dist/shared/src/api/queries/entityLists/updateLists.es.js +1 -0
  112. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
  113. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -0
  114. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  115. package/dist/shared/src/api/queries/folders/getFolders.es.js +1 -0
  116. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  117. package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js +1 -0
  118. package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js.map +1 -1
  119. package/dist/shared/src/api/queries/grouping/getGrouping.es.js +1 -0
  120. package/dist/shared/src/api/queries/grouping/getGrouping.es.js.map +1 -1
  121. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +142 -0
  122. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -0
  123. package/dist/shared/src/api/queries/links/getEntityLinks.es.js +142 -0
  124. package/dist/shared/src/api/queries/links/getEntityLinks.es.js.map +1 -0
  125. package/dist/shared/src/api/queries/links/getLinks.cjs.js +202 -0
  126. package/dist/shared/src/api/queries/links/getLinks.cjs.js.map +1 -0
  127. package/dist/shared/src/api/queries/links/getLinks.es.js +202 -0
  128. package/dist/shared/src/api/queries/links/getLinks.es.js.map +1 -0
  129. package/dist/shared/src/api/queries/links/updateLinks.cjs.js +304 -0
  130. package/dist/shared/src/api/queries/links/updateLinks.cjs.js.map +1 -0
  131. package/dist/shared/src/api/queries/links/updateLinks.es.js +304 -0
  132. package/dist/shared/src/api/queries/links/updateLinks.es.js.map +1 -0
  133. package/dist/shared/src/api/queries/links/utils/formatEntityLinks.cjs.js +8 -0
  134. package/dist/shared/src/api/queries/links/utils/formatEntityLinks.cjs.js.map +1 -0
  135. package/dist/shared/src/api/queries/links/utils/formatEntityLinks.es.js +8 -0
  136. package/dist/shared/src/api/queries/links/utils/formatEntityLinks.es.js.map +1 -0
  137. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +5 -4
  138. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  139. package/dist/shared/src/api/queries/overview/getOverview.es.js +5 -4
  140. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  141. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +70 -15
  142. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  143. package/dist/shared/src/api/queries/overview/updateOverview.es.js +70 -15
  144. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  145. package/dist/shared/src/api/queries/permissions/getPermissions.cjs.js +1 -0
  146. package/dist/shared/src/api/queries/permissions/getPermissions.cjs.js.map +1 -1
  147. package/dist/shared/src/api/queries/permissions/getPermissions.es.js +1 -0
  148. package/dist/shared/src/api/queries/permissions/getPermissions.es.js.map +1 -1
  149. package/dist/shared/src/api/queries/products/createProduct.cjs.js +1 -0
  150. package/dist/shared/src/api/queries/products/createProduct.cjs.js.map +1 -1
  151. package/dist/shared/src/api/queries/products/createProduct.es.js +1 -0
  152. package/dist/shared/src/api/queries/products/createProduct.es.js.map +1 -1
  153. package/dist/shared/src/api/queries/project/getProject.cjs.js +1 -0
  154. package/dist/shared/src/api/queries/project/getProject.cjs.js.map +1 -1
  155. package/dist/shared/src/api/queries/project/getProject.es.js +1 -0
  156. package/dist/shared/src/api/queries/project/getProject.es.js.map +1 -1
  157. package/dist/shared/src/api/queries/review/getReview.cjs.js +2 -0
  158. package/dist/shared/src/api/queries/review/getReview.cjs.js.map +1 -1
  159. package/dist/shared/src/api/queries/review/getReview.es.js +2 -0
  160. package/dist/shared/src/api/queries/review/getReview.es.js.map +1 -1
  161. package/dist/shared/src/api/queries/review/updateReview.cjs.js +1 -0
  162. package/dist/shared/src/api/queries/review/updateReview.cjs.js.map +1 -1
  163. package/dist/shared/src/api/queries/review/updateReview.es.js +1 -0
  164. package/dist/shared/src/api/queries/review/updateReview.es.js.map +1 -1
  165. package/dist/shared/src/api/queries/share/share.cjs.js +1 -0
  166. package/dist/shared/src/api/queries/share/share.cjs.js.map +1 -1
  167. package/dist/shared/src/api/queries/share/share.es.js +1 -0
  168. package/dist/shared/src/api/queries/share/share.es.js.map +1 -1
  169. package/dist/shared/src/api/queries/system/getSystem.cjs.js +1 -0
  170. package/dist/shared/src/api/queries/system/getSystem.cjs.js.map +1 -1
  171. package/dist/shared/src/api/queries/system/getSystem.es.js +1 -0
  172. package/dist/shared/src/api/queries/system/getSystem.es.js.map +1 -1
  173. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +2 -0
  174. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  175. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +2 -0
  176. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  177. package/dist/shared/src/api/queries/users/getUsers.cjs.js +4 -0
  178. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  179. package/dist/shared/src/api/queries/users/getUsers.es.js +4 -0
  180. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  181. package/dist/shared/src/api/queries/users/updateUsers.cjs.js +1 -0
  182. package/dist/shared/src/api/queries/users/updateUsers.cjs.js.map +1 -1
  183. package/dist/shared/src/api/queries/users/updateUsers.es.js +1 -0
  184. package/dist/shared/src/api/queries/users/updateUsers.es.js.map +1 -1
  185. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js +1 -0
  186. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -1
  187. package/dist/shared/src/api/queries/versions/updateVersions.es.js +1 -0
  188. package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -1
  189. package/dist/shared/src/api/queries/views/getViews.cjs.js +1 -0
  190. package/dist/shared/src/api/queries/views/getViews.cjs.js.map +1 -1
  191. package/dist/shared/src/api/queries/views/getViews.es.js +1 -0
  192. package/dist/shared/src/api/queries/views/getViews.es.js.map +1 -1
  193. package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js +1 -0
  194. package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js.map +1 -1
  195. package/dist/shared/src/api/queries/watchers/getWatchers.es.js +1 -0
  196. package/dist/shared/src/api/queries/watchers/getWatchers.es.js.map +1 -1
  197. package/dist/shared/src/components/Chips/Chips.cjs.js +149 -0
  198. package/dist/shared/src/components/Chips/Chips.cjs.js.map +1 -0
  199. package/dist/shared/src/components/Chips/Chips.es.js +149 -0
  200. package/dist/shared/src/components/Chips/Chips.es.js.map +1 -0
  201. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +4 -0
  202. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  203. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +4 -0
  204. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  205. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js +5 -0
  206. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js.map +1 -1
  207. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js +5 -0
  208. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js.map +1 -1
  209. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +1 -0
  210. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
  211. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +1 -0
  212. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
  213. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +37 -27
  214. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  215. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +37 -27
  216. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  217. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -0
  218. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  219. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +1 -0
  220. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  221. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +6 -2
  222. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  223. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +6 -2
  224. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  225. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +331 -0
  226. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -0
  227. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +332 -0
  228. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -0
  229. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +125 -0
  230. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -0
  231. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +125 -0
  232. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -0
  233. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +92 -0
  234. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -0
  235. package/dist/shared/src/components/LinksManager/LinksManager.es.js +92 -0
  236. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -0
  237. package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js +250 -0
  238. package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js.map +1 -0
  239. package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js +250 -0
  240. package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js.map +1 -0
  241. package/dist/shared/src/components/LinksManager/LinksManagerDialog.cjs.js +229 -0
  242. package/dist/shared/src/components/LinksManager/LinksManagerDialog.cjs.js.map +1 -0
  243. package/dist/shared/src/components/LinksManager/LinksManagerDialog.es.js +229 -0
  244. package/dist/shared/src/components/LinksManager/LinksManagerDialog.es.js.map +1 -0
  245. package/dist/shared/src/components/LinksManager/SearchingLoadingItems.cjs.js +12 -0
  246. package/dist/shared/src/components/LinksManager/SearchingLoadingItems.cjs.js.map +1 -0
  247. package/dist/shared/src/components/LinksManager/SearchingLoadingItems.es.js +13 -0
  248. package/dist/shared/src/components/LinksManager/SearchingLoadingItems.es.js.map +1 -0
  249. package/dist/shared/src/components/LinksManager/hooks/useKeyboardNavigation.cjs.js +103 -0
  250. package/dist/shared/src/components/LinksManager/hooks/useKeyboardNavigation.cjs.js.map +1 -0
  251. package/dist/shared/src/components/LinksManager/hooks/useKeyboardNavigation.es.js +104 -0
  252. package/dist/shared/src/components/LinksManager/hooks/useKeyboardNavigation.es.js.map +1 -0
  253. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +278 -0
  254. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -0
  255. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +279 -0
  256. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -0
  257. package/dist/shared/src/components/LinksManager/utils/linkUpdates.cjs.js +70 -0
  258. package/dist/shared/src/components/LinksManager/utils/linkUpdates.cjs.js.map +1 -0
  259. package/dist/shared/src/components/LinksManager/utils/linkUpdates.es.js +70 -0
  260. package/dist/shared/src/components/LinksManager/utils/linkUpdates.es.js.map +1 -0
  261. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +22 -12
  262. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  263. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +22 -12
  264. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  265. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +104 -14
  266. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  267. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +104 -14
  268. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  269. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +22 -12
  270. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  271. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +22 -12
  272. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  273. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +4 -0
  274. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  275. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +4 -0
  276. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  277. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +23 -13
  278. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  279. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +23 -13
  280. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  281. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +22 -12
  282. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  283. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +22 -12
  284. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  285. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +22 -12
  286. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  287. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +22 -12
  288. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  289. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +4 -0
  290. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  291. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +4 -0
  292. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  293. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +5 -0
  294. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  295. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +5 -0
  296. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  297. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +22 -12
  298. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  299. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +22 -12
  300. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  301. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +22 -12
  302. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  303. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +22 -12
  304. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  305. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +7 -2
  306. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  307. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +7 -2
  308. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  309. package/dist/shared/src/components/Watchers/Watchers.cjs.js +4 -0
  310. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  311. package/dist/shared/src/components/Watchers/Watchers.es.js +4 -0
  312. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  313. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +22 -12
  314. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  315. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +22 -12
  316. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  317. package/dist/shared/src/containers/Actions/Actions.cjs.js +4 -0
  318. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  319. package/dist/shared/src/containers/Actions/Actions.es.js +4 -0
  320. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  321. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +22 -12
  322. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  323. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +22 -12
  324. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  325. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +22 -12
  326. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  327. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +22 -12
  328. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  329. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +22 -12
  330. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  331. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +22 -12
  332. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  333. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +22 -12
  334. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  335. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +22 -12
  336. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  337. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +18 -8
  338. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  339. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +18 -8
  340. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  341. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +4 -0
  342. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  343. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +4 -0
  344. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  345. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js +1 -0
  346. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js.map +1 -1
  347. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js +1 -0
  348. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js.map +1 -1
  349. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +4 -0
  350. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  351. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +4 -0
  352. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  353. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +357 -0
  354. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -0
  355. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +357 -0
  356. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -0
  357. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +262 -0
  358. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -0
  359. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +263 -0
  360. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -0
  361. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +273 -0
  362. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -0
  363. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +274 -0
  364. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -0
  365. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +250 -0
  366. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -0
  367. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +251 -0
  368. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -0
  369. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js +35 -0
  370. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js.map +1 -0
  371. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js +36 -0
  372. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js.map +1 -0
  373. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +235 -0
  374. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -0
  375. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +235 -0
  376. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -0
  377. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js +49 -0
  378. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js.map +1 -0
  379. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js +49 -0
  380. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js.map +1 -0
  381. package/dist/shared/src/containers/EntityPickerDialog/util/entityHierarchies.cjs.js +12 -0
  382. package/dist/shared/src/containers/EntityPickerDialog/util/entityHierarchies.cjs.js.map +1 -0
  383. package/dist/shared/src/containers/EntityPickerDialog/util/entityHierarchies.es.js +12 -0
  384. package/dist/shared/src/containers/EntityPickerDialog/util/entityHierarchies.es.js.map +1 -0
  385. package/dist/shared/src/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.cjs.js +26 -0
  386. package/dist/shared/src/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.cjs.js.map +1 -0
  387. package/dist/shared/src/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.es.js +26 -0
  388. package/dist/shared/src/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.es.js.map +1 -0
  389. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +2 -0
  390. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  391. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +2 -0
  392. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  393. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js +1 -0
  394. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js.map +1 -1
  395. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js +1 -0
  396. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js.map +1 -1
  397. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -0
  398. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  399. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +1 -0
  400. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  401. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +4 -0
  402. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  403. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +4 -0
  404. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  405. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js +5 -4
  406. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
  407. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js +5 -4
  408. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js.map +1 -1
  409. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +4 -0
  410. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  411. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +4 -0
  412. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  413. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js +1 -0
  414. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js.map +1 -1
  415. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js +1 -0
  416. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js.map +1 -1
  417. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js +1 -0
  418. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js.map +1 -1
  419. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js +1 -0
  420. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js.map +1 -1
  421. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +36 -6
  422. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  423. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +36 -6
  424. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  425. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +25 -0
  426. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  427. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +25 -0
  428. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  429. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +263 -9
  430. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  431. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +264 -10
  432. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  433. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +21 -11
  434. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  435. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +21 -11
  436. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  437. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.cjs.js +4 -0
  438. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.cjs.js.map +1 -1
  439. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.es.js +4 -0
  440. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.es.js.map +1 -1
  441. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.cjs.js +1 -229
  442. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.cjs.js.map +1 -1
  443. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.es.js +2 -230
  444. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.es.js.map +1 -1
  445. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +432 -0
  446. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -0
  447. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +432 -0
  448. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -0
  449. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +120 -47
  450. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  451. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +121 -48
  452. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  453. package/dist/shared/src/containers/ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js +33 -0
  454. package/dist/shared/src/containers/ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js.map +1 -0
  455. package/dist/shared/src/containers/ProjectTreeTable/context/DetailsPanelEntityContext.es.js +33 -0
  456. package/dist/shared/src/containers/ProjectTreeTable/context/DetailsPanelEntityContext.es.js.map +1 -0
  457. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +4 -0
  458. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  459. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +4 -0
  460. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  461. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js +13 -0
  462. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js.map +1 -1
  463. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js +14 -1
  464. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js.map +1 -1
  465. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +104 -5
  466. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  467. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +104 -5
  468. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  469. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.cjs.js.map +1 -1
  470. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.es.js.map +1 -1
  471. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js +13 -0
  472. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js.map +1 -1
  473. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js +13 -0
  474. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js.map +1 -1
  475. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +4 -0
  476. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  477. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +4 -0
  478. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  479. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +127 -4
  480. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  481. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +127 -4
  482. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  483. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +134 -3
  484. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  485. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +134 -3
  486. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  487. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +199 -0
  488. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  489. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +199 -0
  490. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  491. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +111 -12
  492. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  493. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +111 -12
  494. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  495. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnVirtualization.cjs.js +1 -1
  496. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnVirtualization.cjs.js.map +1 -1
  497. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnVirtualization.es.js +1 -1
  498. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnVirtualization.es.js.map +1 -1
  499. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +2 -0
  500. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  501. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +2 -0
  502. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  503. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +65 -9
  504. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  505. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +65 -9
  506. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  507. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js +1 -0
  508. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js.map +1 -1
  509. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js +1 -0
  510. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js.map +1 -1
  511. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +113 -14
  512. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  513. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +113 -14
  514. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  515. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js +4 -0
  516. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js.map +1 -1
  517. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js +4 -0
  518. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js.map +1 -1
  519. package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.cjs.js +4 -1
  520. package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.cjs.js.map +1 -1
  521. package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.es.js +4 -1
  522. package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.es.js.map +1 -1
  523. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +199 -1
  524. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  525. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +199 -1
  526. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  527. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +201 -0
  528. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -0
  529. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +202 -0
  530. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -0
  531. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js +4 -0
  532. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js.map +1 -1
  533. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js +4 -0
  534. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js.map +1 -1
  535. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +103 -4
  536. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  537. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +103 -4
  538. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  539. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +13 -7
  540. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  541. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +13 -7
  542. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  543. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +126 -15
  544. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  545. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +126 -15
  546. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  547. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js +1 -0
  548. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js.map +1 -1
  549. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js +1 -0
  550. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js.map +1 -1
  551. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.cjs.js +49 -0
  552. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.cjs.js.map +1 -0
  553. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.es.js +49 -0
  554. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.es.js.map +1 -0
  555. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.cjs.js +2 -1
  556. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.cjs.js.map +1 -1
  557. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.es.js +2 -1
  558. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.es.js.map +1 -1
  559. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +142 -0
  560. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  561. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +143 -1
  562. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  563. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +14 -7
  564. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
  565. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +14 -7
  566. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
  567. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +0 -7
  568. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  569. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +0 -7
  570. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  571. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +299 -0
  572. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -0
  573. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +299 -0
  574. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -0
  575. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +22 -12
  576. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  577. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +22 -12
  578. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  579. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +528 -0
  580. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -0
  581. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +529 -0
  582. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -0
  583. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.cjs.js +160 -0
  584. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.cjs.js.map +1 -0
  585. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.es.js +160 -0
  586. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.es.js.map +1 -0
  587. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.cjs.js +74 -0
  588. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.cjs.js.map +1 -0
  589. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.es.js +74 -0
  590. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.es.js.map +1 -0
  591. package/dist/shared/src/containers/SimpleTable/context/SimpleTableContext.cjs.js +19 -0
  592. package/dist/shared/src/containers/SimpleTable/context/SimpleTableContext.cjs.js.map +1 -0
  593. package/dist/shared/src/containers/SimpleTable/context/SimpleTableContext.es.js +19 -0
  594. package/dist/shared/src/containers/SimpleTable/context/SimpleTableContext.es.js.map +1 -0
  595. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js +1 -0
  596. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js.map +1 -1
  597. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js +1 -0
  598. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js.map +1 -1
  599. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +18 -2
  600. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  601. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +18 -2
  602. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  603. package/dist/shared/src/containers/Views/ViewsMenu/SectionHeader.cjs.js.map +1 -1
  604. package/dist/shared/src/containers/Views/ViewsMenu/SectionHeader.es.js.map +1 -1
  605. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +6 -0
  606. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  607. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +6 -0
  608. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  609. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js +1 -0
  610. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js.map +1 -1
  611. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js +1 -0
  612. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js.map +1 -1
  613. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -0
  614. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  615. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +1 -0
  616. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  617. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +10 -3
  618. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  619. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +10 -3
  620. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  621. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +4 -0
  622. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -1
  623. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +4 -0
  624. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -1
  625. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +4 -0
  626. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  627. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +4 -0
  628. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  629. package/dist/shared/src/containers/Views/utils/generateWorkingView.cjs.js +2 -2
  630. package/dist/shared/src/containers/Views/utils/generateWorkingView.cjs.js.map +1 -1
  631. package/dist/shared/src/containers/Views/utils/generateWorkingView.es.js +1 -1
  632. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +4 -0
  633. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  634. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +4 -0
  635. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  636. package/dist/shared/src/context/AddonProjectContext.cjs.js +4 -0
  637. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  638. package/dist/shared/src/context/AddonProjectContext.es.js +4 -0
  639. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  640. package/dist/shared/src/context/DetailsPanelContext.cjs.js +4 -0
  641. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  642. package/dist/shared/src/context/DetailsPanelContext.es.js +4 -0
  643. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  644. package/dist/shared/src/context/PowerpackContext.cjs.js +4 -0
  645. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  646. package/dist/shared/src/context/PowerpackContext.es.js +4 -0
  647. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  648. package/dist/shared/src/context/RemoteModulesContext.cjs.js +4 -0
  649. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  650. package/dist/shared/src/context/RemoteModulesContext.es.js +4 -0
  651. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  652. package/dist/shared/src/hooks/useActionTriggers.cjs.js +4 -0
  653. package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
  654. package/dist/shared/src/hooks/useActionTriggers.es.js +4 -0
  655. package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
  656. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +4 -0
  657. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  658. package/dist/shared/src/hooks/useEntityUpdate.es.js +4 -0
  659. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  660. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +147 -0
  661. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -0
  662. package/dist/shared/src/hooks/useHierarchyTable.es.js +147 -0
  663. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -0
  664. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +12 -5
  665. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  666. package/dist/shared/src/hooks/useScopedStatuses.es.js +12 -5
  667. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  668. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +4 -0
  669. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  670. package/dist/shared/src/hooks/useUserProjectConfig.es.js +4 -0
  671. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  672. package/dist/shared/src/{utils/extractVersionFromFilename.es.js.map → util/extractVersionFromFilename.cjs.js.map} +1 -1
  673. package/dist/shared/src/util/extractVersionFromFilename.es.js.map +1 -0
  674. package/dist/shared/src/util/getEntityId.cjs.js +11 -0
  675. package/dist/shared/src/util/getEntityId.cjs.js.map +1 -0
  676. package/dist/shared/src/util/getEntityId.es.js +11 -0
  677. package/dist/shared/src/util/getEntityId.es.js.map +1 -0
  678. package/dist/shared/src/{utils → util}/versionUploadHelpers.cjs.js +3 -2
  679. package/dist/shared/src/{utils/versionUploadHelpers.es.js.map → util/versionUploadHelpers.cjs.js.map} +1 -1
  680. package/dist/shared/src/{utils → util}/versionUploadHelpers.es.js +3 -2
  681. package/dist/shared/src/util/versionUploadHelpers.es.js.map +1 -0
  682. package/dist/src/containers/Slicer/hooks/useRowKeydown.cjs.js +16 -0
  683. package/dist/src/containers/Slicer/hooks/useRowKeydown.cjs.js.map +1 -0
  684. package/dist/src/containers/Slicer/hooks/useRowKeydown.es.js +17 -0
  685. package/dist/src/containers/Slicer/hooks/useRowKeydown.es.js.map +1 -0
  686. package/dist/types/SimpleTable.d.ts +6 -0
  687. package/dist/types/api/generated/graphql.d.ts +116 -33
  688. package/dist/types/api/generated/graphqlLinks.d.ts +2269 -0
  689. package/dist/types/api/generated/index.d.ts +2 -0
  690. package/dist/types/api/queries/entities/getEntity.d.ts +80 -79
  691. package/dist/types/api/queries/entityLists/types.d.ts +5 -5
  692. package/dist/types/api/queries/index.d.ts +1 -0
  693. package/dist/types/api/queries/links/getEntityLinks.d.ts +182 -0
  694. package/dist/types/api/queries/links/getLinks.d.ts +862 -0
  695. package/dist/types/api/queries/links/index.d.ts +3 -0
  696. package/dist/types/api/queries/links/updateLinks.d.ts +321 -0
  697. package/dist/types/api/queries/links/utils/formatEntityLinks.d.ts +1 -0
  698. package/dist/types/api/queries/overview/index.d.ts +1 -0
  699. package/dist/types/api/queries/overview/updateOverview.d.ts +9 -0
  700. package/dist/types/components/Chips/Chips.d.ts +14 -0
  701. package/dist/types/components/Chips/index.d.ts +1 -0
  702. package/dist/types/components/LinksManager/AddNewLinks.d.ts +11 -0
  703. package/dist/types/components/LinksManager/LinkManagerItem.d.ts +9 -0
  704. package/dist/types/components/LinksManager/LinksManager.d.ts +24 -0
  705. package/dist/types/components/LinksManager/LinksManager.styled.d.ts +17 -0
  706. package/dist/types/components/LinksManager/LinksManagerDialog.d.ts +9 -0
  707. package/dist/types/components/LinksManager/SearchingLoadingItems.d.ts +5 -0
  708. package/dist/types/components/LinksManager/hooks/useKeyboardNavigation.d.ts +24 -0
  709. package/dist/types/components/LinksManager/hooks/useUpdateLinks.d.ts +24 -0
  710. package/dist/types/components/LinksManager/index.d.ts +2 -0
  711. package/dist/types/components/LinksManager/utils/formatEntityPath.d.ts +1 -0
  712. package/dist/types/components/LinksManager/utils/linkUpdates.d.ts +47 -0
  713. package/dist/types/components/index.d.ts +2 -0
  714. package/dist/types/containers/EntityPickerDialog/EntityPickerDialog.d.ts +15 -0
  715. package/dist/types/containers/EntityPickerDialog/components/EntityTypeTable.d.ts +17 -0
  716. package/dist/types/containers/EntityPickerDialog/components/EntityTypeTableHeader.d.ts +25 -0
  717. package/dist/types/containers/EntityPickerDialog/components/EntityTypeTableSearch.d.ts +8 -0
  718. package/dist/types/containers/EntityPickerDialog/components/index.d.ts +1 -0
  719. package/dist/types/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.d.ts +9 -0
  720. package/dist/types/containers/EntityPickerDialog/hooks/useGetEntityPickerData.d.ts +28 -0
  721. package/dist/types/containers/EntityPickerDialog/index.d.ts +1 -0
  722. package/dist/types/containers/EntityPickerDialog/util/buildEntityPickerTableData.d.ts +8 -0
  723. package/dist/types/containers/EntityPickerDialog/util/entityHierarchies.d.ts +3 -0
  724. package/dist/types/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.d.ts +2 -0
  725. package/dist/types/containers/EntityPickerDialog/util/index.d.ts +3 -0
  726. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +2 -2
  727. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.styled.d.ts +1 -0
  728. package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +6 -1
  729. package/dist/types/containers/ProjectTreeTable/context/CellEditingContext.d.ts +1 -4
  730. package/dist/types/containers/ProjectTreeTable/context/CellEditingProvider.d.ts +4 -0
  731. package/dist/types/containers/ProjectTreeTable/context/DetailsPanelEntityContext.d.ts +16 -0
  732. package/dist/types/containers/ProjectTreeTable/context/clipboard/clipboardTypes.d.ts +4 -1
  733. package/dist/types/containers/ProjectTreeTable/context/index.d.ts +2 -0
  734. package/dist/types/containers/ProjectTreeTable/hooks/useHistory.d.ts +1 -1
  735. package/dist/types/containers/ProjectTreeTable/hooks/usePasteLinks.d.ts +34 -0
  736. package/dist/types/containers/ProjectTreeTable/hooks/useUpdateTableData.d.ts +1 -0
  737. package/dist/types/containers/ProjectTreeTable/types/table.d.ts +10 -34
  738. package/dist/types/containers/ProjectTreeTable/utils/cellUtils.d.ts +2 -0
  739. package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +1 -0
  740. package/dist/types/containers/ProjectTreeTable/utils/linksToTableData.d.ts +17 -0
  741. package/dist/types/containers/ProjectTreeTable/widgets/CellWidget.d.ts +7 -1
  742. package/dist/types/containers/ProjectTreeTable/widgets/LinksWidget.d.ts +23 -0
  743. package/dist/types/containers/ProjectTreeTable/widgets/index.d.ts +1 -0
  744. package/dist/types/{SimpleTable → containers/SimpleTable}/SimpleTable.d.ts +7 -0
  745. package/dist/types/{SimpleTable → containers/SimpleTable}/SimpleTableRowTemplate.d.ts +1 -0
  746. package/dist/types/{SimpleTable → containers/SimpleTable}/index.d.ts +1 -0
  747. package/dist/types/containers/Views/hooks/useBuildViewMenuItems.d.ts +2 -1
  748. package/dist/types/hooks/index.d.ts +1 -0
  749. package/dist/types/hooks/useHierarchyTable.d.ts +13 -0
  750. package/dist/types/util/getEntityId.d.ts +2 -0
  751. package/dist/types/util/index.d.ts +3 -0
  752. package/dist/util.cjs.js +16 -0
  753. package/dist/util.cjs.js.map +1 -1
  754. package/dist/util.es.js +17 -1
  755. package/dist/util.es.js.map +1 -1
  756. package/package.json +8 -2
  757. package/dist/shared/node_modules/uuid/dist/esm-browser/native.cjs.js +0 -7
  758. package/dist/shared/node_modules/uuid/dist/esm-browser/native.cjs.js.map +0 -1
  759. package/dist/shared/node_modules/uuid/dist/esm-browser/native.es.js +0 -8
  760. package/dist/shared/node_modules/uuid/dist/esm-browser/native.es.js.map +0 -1
  761. package/dist/shared/node_modules/uuid/dist/esm-browser/rng.cjs.js +0 -14
  762. package/dist/shared/node_modules/uuid/dist/esm-browser/rng.cjs.js.map +0 -1
  763. package/dist/shared/node_modules/uuid/dist/esm-browser/rng.es.js +0 -15
  764. package/dist/shared/node_modules/uuid/dist/esm-browser/rng.es.js.map +0 -1
  765. package/dist/shared/node_modules/uuid/dist/esm-browser/stringify.cjs.js +0 -11
  766. package/dist/shared/node_modules/uuid/dist/esm-browser/stringify.cjs.js.map +0 -1
  767. package/dist/shared/node_modules/uuid/dist/esm-browser/stringify.es.js +0 -11
  768. package/dist/shared/node_modules/uuid/dist/esm-browser/stringify.es.js.map +0 -1
  769. package/dist/shared/node_modules/uuid/dist/esm-browser/v1.cjs.js +0 -57
  770. package/dist/shared/node_modules/uuid/dist/esm-browser/v1.cjs.js.map +0 -1
  771. package/dist/shared/node_modules/uuid/dist/esm-browser/v1.es.js +0 -58
  772. package/dist/shared/node_modules/uuid/dist/esm-browser/v1.es.js.map +0 -1
  773. package/dist/shared/node_modules/uuid/dist/esm-browser/v4.cjs.js +0 -16
  774. package/dist/shared/node_modules/uuid/dist/esm-browser/v4.cjs.js.map +0 -1
  775. package/dist/shared/node_modules/uuid/dist/esm-browser/v4.es.js +0 -17
  776. package/dist/shared/node_modules/uuid/dist/esm-browser/v4.es.js.map +0 -1
  777. package/dist/shared/src/utils/extractVersionFromFilename.cjs.js.map +0 -1
  778. package/dist/shared/src/utils/versionUploadHelpers.cjs.js.map +0 -1
  779. /package/dist/shared/src/{utils → util}/extractVersionFromFilename.cjs.js +0 -0
  780. /package/dist/shared/src/{utils → util}/extractVersionFromFilename.es.js +0 -0
  781. /package/dist/types/{SimpleTable → containers/SimpleTable}/SimpleTable.styled.d.ts +0 -0
  782. /package/dist/types/{SimpleTable → containers/SimpleTable}/context/SimpleTableContext.d.ts +0 -0
  783. /package/dist/types/{utils → util}/extractVersionFromFilename.d.ts +0 -0
  784. /package/dist/types/{utils → util}/versionUploadHelpers.d.ts +0 -0
@@ -0,0 +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 the entity links cache entries for this project and entity type\n const tags = [{ type: 'link', id: `${projectName}-${entityToPatch.entityType}` }]\n const entries = entityLinksApi.util.selectInvalidatedBy(state, tags)\n\n for (const entry of entries) {\n if (entry.endpointName === 'getEntityLinks') {\n console.log(`Patching ${entityToPatch.entityType} links cache`, entry)\n const patch = dispatch(\n entityLinksApi.util.updateQueryData(\n 'getEntityLinks',\n entry.originalArgs,\n (draft: EntityWithLinks[]) => {\n console.log(`Patching ${entityToPatch.entityType} links cache`)\n // Find the entity in the cache\n const entityInCache = draft.find((entity) => entity.id === entityToPatch.entityId)\n if (!entityInCache) {\n console.warn(\n `${entityToPatch.entityType} ${entityToPatch.entityId} not found in cache`,\n )\n return\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 }\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 } 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 },\n },\n },\n})\n\nexport const { useDeleteEntityLinkMutation, useCreateEntityLinkMutation } = enhancedApi\n"],"names":["gqlLinksApi","entityLinksApi","linksApi","patch","sourceEntity","targetEntity"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const formatEntityLabel = (node) => {
4
+ if (!node) return void 0;
5
+ return node.label;
6
+ };
7
+ exports.formatEntityLabel = formatEntityLabel;
8
+ //# sourceMappingURL=formatEntityLinks.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatEntityLinks.cjs.js","sources":["../../../../../../../src/api/queries/links/utils/formatEntityLinks.ts"],"sourcesContent":["import { EntityLinkQuery } from '../getEntityLinks'\n\n// Helper function to format entity label based on type\nexport const formatEntityLabel = (node: any): string | undefined => {\n if (!node) return undefined\n // Use label if available, otherwise fallback to name\n return node.label\n}\n"],"names":[],"mappings":";;AAGa,MAAA,oBAAoB,CAAC,SAAkC;AAC9D,MAAA,CAAC,KAAa,QAAA;AAElB,SAAO,KAAK;AACd;;"}
@@ -0,0 +1,8 @@
1
+ const formatEntityLabel = (node) => {
2
+ if (!node) return void 0;
3
+ return node.label;
4
+ };
5
+ export {
6
+ formatEntityLabel
7
+ };
8
+ //# sourceMappingURL=formatEntityLinks.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatEntityLinks.es.js","sources":["../../../../../../../src/api/queries/links/utils/formatEntityLinks.ts"],"sourcesContent":["import { EntityLinkQuery } from '../getEntityLinks'\n\n// Helper function to format entity label based on type\nexport const formatEntityLabel = (node: any): string | undefined => {\n if (!node) return undefined\n // Use label if available, otherwise fallback to name\n return node.label\n}\n"],"names":[],"mappings":"AAGa,MAAA,oBAAoB,CAAC,SAAkC;AAC9D,MAAA,CAAC,KAAa,QAAA;AAElB,SAAO,KAAK;AACd;"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  require("../../base/client.cjs.js");
4
4
  const graphql = require("../../generated/graphql.cjs.js");
5
+ require("../../generated/graphqlLinks.cjs.js");
5
6
  require("../../generated/access.cjs.js");
6
7
  require("../../generated/actions.cjs.js");
7
8
  require("../../generated/activityFeed.cjs.js");
@@ -55,18 +56,18 @@ const transformFilteredEntitiesByParent = (response) => {
55
56
  folderId: taskNode.folderId || "root",
56
57
  attrib: parseAllAttribs(taskNode.allAttrib),
57
58
  entityId: taskNode.id,
58
- entityType: "task"
59
+ entityType: "task",
60
+ links: []
59
61
  });
60
62
  }
61
63
  return tasks2;
62
64
  };
63
65
  const getOverviewTaskTags = (result = [], projectName, parentIds) => {
64
66
  const taskTags = (result == null ? void 0 : result.map((task) => ({ type: "overviewTask", id: task.id }))) || [];
65
- if (!parentIds) return taskTags;
66
- const parentTags = (Array.isArray(parentIds) ? parentIds : [parentIds]).map((id) => ({
67
+ const parentTags = parentIds ? (Array.isArray(parentIds) ? parentIds : [parentIds]).map((id) => ({
67
68
  type: "overviewTask",
68
69
  id
69
- }));
70
+ })) : [];
70
71
  return [
71
72
  ...taskTags,
72
73
  ...parentTags,
@@ -1 +1 @@
1
- {"version":3,"file":"getOverview.cjs.js","sources":["../../../../../../src/api/queries/overview/getOverview.ts"],"sourcesContent":["import {\n gqlApi,\n GetTasksByParentQuery,\n GetTasksListQuery,\n tasksApi,\n QueryTasksFoldersApiArg,\n GetTasksListQueryVariables,\n} from '@shared/api/generated'\nimport { EditorTaskNode, TableGroupBy } from '@shared/containers/ProjectTreeTable'\nimport {\n DefinitionsFromApi,\n FetchBaseQueryError,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\n\n// parse attribs JSON string to object\nexport const parseAllAttribs = (allAttrib: string) => {\n try {\n return JSON.parse(allAttrib)\n } catch (e) {\n return {}\n }\n}\n\nconst transformFilteredEntitiesByParent = (response: GetTasksByParentQuery): EditorTaskNode[] => {\n if (!response.project) {\n return []\n }\n\n const tasks: EditorTaskNode[] = []\n for (const { node: taskNode } of response.project.tasks.edges) {\n tasks.push({\n ...taskNode,\n folderId: taskNode.folderId || 'root',\n attrib: parseAllAttribs(taskNode.allAttrib),\n entityId: taskNode.id,\n entityType: 'task',\n })\n }\n\n return tasks\n}\n\nconst getOverviewTaskTags = (\n result: EditorTaskNode[] | undefined = [],\n projectName: string,\n parentIds?: string | string[],\n) => {\n const taskTags = result?.map((task) => ({ type: 'overviewTask', id: task.id })) || []\n\n if (!parentIds) return taskTags\n\n const parentTags = (Array.isArray(parentIds) ? parentIds : [parentIds]).map((id) => ({\n type: 'overviewTask',\n id,\n }))\n\n return [\n ...taskTags,\n ...parentTags,\n { type: 'overviewTask', id: projectName },\n { type: 'overviewTask', id: 'LIST' },\n ]\n}\n\nexport type GetTasksListResult = {\n pageInfo: GetTasksListQuery['project']['tasks']['pageInfo']\n tasks: EditorTaskNode[]\n}\n\nexport type GetTasksListArgs = {\n projectName: string\n filter?: string\n search?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\nexport type GetGroupedTasksListResult = {\n tasks: EditorTaskNode[]\n}\n\nexport type GetGroupedTasksListArgs = {\n projectName: string\n groups: { filter: string; count: number; value: string }[]\n search?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\n// Define the page param type for infinite query\ntype TasksListPageParam = {\n cursor: string\n desc?: boolean\n}\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\ntype UpdatedDefinitions = Omit<Definitions, 'GetFilteredEntities'> & {\n GetTasksByParent: OverrideResultType<Definitions['GetTasksByParent'], EditorTaskNode[]>\n GetTasksList: OverrideResultType<Definitions['GetTasksList'], GetTasksListResult>\n}\n\n// GRAPHQL API\nconst enhancedApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // This gets tasks for all parent folders provided\n // But in this case it will only ever receive one parent folder from the getOverviewTasksByFolders query\n // It is only used by getOverviewTasksByFolders in this file\n GetTasksByParent: {\n transformResponse: transformFilteredEntitiesByParent,\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n },\n GetTasksList: {\n transformResponse: (result: GetTasksListQuery) => ({\n tasks: transformFilteredEntitiesByParent(result),\n pageInfo: result.project.tasks.pageInfo,\n }),\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks || [], projectName),\n },\n },\n})\n\n// REST FOLDERS API\nconst foldersApiEnhanced = tasksApi.enhanceEndpoints({\n endpoints: {\n queryTasksFolders: {},\n },\n})\n\nexport const TASKS_INFINITE_QUERY_COUNT = 100 // Number of items to fetch per page\n\nconst injectedApi = enhancedApi.injectEndpoints({\n endpoints: (build) => ({\n // Each project has one cache for all the tasks of the expanded folders\n // Changing the expanded folders will trigger a refetch but not a new cache\n // Each expanded folder has it's own query that is looped over here\n // When new folders are expanded, the new tasks are fetched and we use the cache for the rest\n // This also solves the pagination issue of getting all tasks in one query, splitting it up in multiple queries to avoid pagination limits\n getOverviewTasksByFolders: build.query<\n EditorTaskNode[],\n { projectName: string; parentIds: string[]; filter?: string; search?: string }\n >({\n async queryFn({ projectName, parentIds, filter, search }, { dispatch, forced }) {\n try {\n // Process parent IDs in sequential batches\n const BATCH_SIZE = 20 // Process x parentIds at a time\n const allTasks: EditorTaskNode[] = []\n\n // Process batches one after another\n for (let i = 0; i < parentIds.length; i += BATCH_SIZE) {\n const batchParentIds = parentIds.slice(i, i + BATCH_SIZE)\n\n // Process this batch in parallel\n const batchResults = await Promise.all(\n batchParentIds.map(async (parentId) =>\n dispatch(\n enhancedApi.endpoints.GetTasksByParent.initiate(\n {\n projectName,\n parentIds: [parentId],\n filter,\n search,\n },\n { forceRefetch: forced },\n ),\n ),\n ),\n )\n\n // Add the results from this batch to our accumulated results\n const batchTasks = batchResults\n .filter((r) => !!r.data)\n .flatMap((result) => result.data as EditorTaskNode[])\n\n allTasks.push(...batchTasks)\n }\n\n return { data: allTasks }\n } catch (e: any) {\n // handle errors appropriately\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n // keep one cache per project\n serializeQueryArgs: ({ queryArgs: { parentIds, ...rest } }) => ({\n ...rest,\n }),\n // Refetch when the page arg changes\n forceRefetch({ currentArg, previousArg }) {\n return JSON.stringify(currentArg) !== JSON.stringify(previousArg)\n },\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n }),\n // queryTasksFolders is a post so it's a bit annoying to consume\n // we wrap it in a queryFn to make it easier to consume as a query hook\n getQueryTasksFolders: build.query<string[], QueryTasksFoldersApiArg>({\n async queryFn({ projectName, tasksFoldersQuery }, { dispatch }) {\n try {\n const result = await dispatch(\n foldersApiEnhanced.endpoints.queryTasksFolders.initiate({\n projectName,\n tasksFoldersQuery,\n }),\n )\n\n const data = result.data?.folderIds || []\n\n return { data }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n }),\n // Add new infinite query endpoint for tasks list\n getTasksListInfinite: build.infiniteQuery<\n GetTasksListResult,\n GetTasksListArgs,\n TasksListPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '', desc: false },\n // Calculate the next page param based on current page response and params\n getNextPageParam: (lastPage, _allPages, lastPageParam, _allPageParams) => {\n // Use the endCursor from the query as the next page param\n const pageInfo = lastPage.pageInfo\n const desc = lastPageParam.desc\n const hasNextPage = desc ? pageInfo.hasPreviousPage : pageInfo.hasNextPage\n\n if (!hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n desc: lastPageParam.desc,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { projectName, filter, search, folderIds, sortBy, desc } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetTasksList\n const queryParams: any = {\n projectName,\n filter,\n search,\n folderIds,\n }\n\n // Add cursor-based pagination\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.last = TASKS_INFINITE_QUERY_COUNT\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n\n // Call the existing GetTasksList endpoint\n const result = await api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n const fallback = {\n tasks: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n }\n\n // Return the tasks directly as required by the infinite query format\n return {\n data: result.data || fallback,\n }\n } catch (e: any) {\n console.error('Error in getTasksListInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.pages.flatMap((p) => p.tasks) || [], projectName),\n }),\n getGroupedTasksList: build.query<GetGroupedTasksListResult, GetGroupedTasksListArgs>({\n queryFn: async ({ projectName, groups, search, folderIds, desc, sortBy }, api) => {\n try {\n let promises = []\n for (const group of groups) {\n const count = group.count || 500\n\n const queryParams: GetTasksListQueryVariables = {\n projectName,\n filter: group.filter,\n search,\n folderIds,\n sortBy: sortBy,\n // @ts-expect-error - we know group does not exist on query variables but we need it for later\n group: group.value,\n }\n if (desc) {\n queryParams.last = count\n } else {\n queryParams.first = count\n }\n\n const promise = api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n promises.push(promise)\n }\n\n const result = await Promise.all(promises)\n const tasks: EditorTaskNode[] = []\n for (const res of result) {\n if (res.error) throw res.error\n // get group value\n // @ts-expect-error - we know group does exist on res.originalArgs from line 319\n const groupValue = res.originalArgs?.group as string\n\n const hasNextPage =\n res.data?.pageInfo?.hasNextPage || res.data?.pageInfo?.hasPreviousPage || false\n const groupTasks =\n res.data?.tasks.map((task, i, a) => ({\n ...task,\n groups: [\n {\n value: groupValue,\n hasNextPage: i === a.length - 1 && hasNextPage ? groupValue : undefined, // Only add hasNextPage to the last task in the group\n },\n ],\n })) || []\n\n tasks.push(...groupTasks)\n }\n\n // Return the tasks directly as required by the query format\n return {\n data: {\n tasks,\n },\n }\n } catch (error: any) {\n console.error('Error in getGroupedTasksList queryFn:', error)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks, projectName),\n }),\n }),\n})\n\nexport const {\n useGetOverviewTasksByFoldersQuery,\n useGetQueryTasksFoldersQuery,\n useGetTasksListQuery,\n useGetTasksListInfiniteInfiniteQuery,\n useLazyGetTasksByParentQuery,\n useGetGroupedTasksListQuery,\n} = injectedApi\nexport default injectedApi\n"],"names":["tasks","gqlApi","tasksApi"],"mappings":"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"}
1
+ {"version":3,"file":"getOverview.cjs.js","sources":["../../../../../../src/api/queries/overview/getOverview.ts"],"sourcesContent":["import {\n gqlApi,\n GetTasksByParentQuery,\n GetTasksListQuery,\n tasksApi,\n QueryTasksFoldersApiArg,\n GetTasksListQueryVariables,\n} from '@shared/api/generated'\nimport { EditorTaskNode, TableGroupBy } from '@shared/containers/ProjectTreeTable'\nimport {\n DefinitionsFromApi,\n FetchBaseQueryError,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\n\n// parse attribs JSON string to object\nexport const parseAllAttribs = (allAttrib: string) => {\n try {\n return JSON.parse(allAttrib)\n } catch (e) {\n return {}\n }\n}\n\nconst transformFilteredEntitiesByParent = (response: GetTasksByParentQuery): EditorTaskNode[] => {\n if (!response.project) {\n return []\n }\n\n const tasks: EditorTaskNode[] = []\n for (const { node: taskNode } of response.project.tasks.edges) {\n tasks.push({\n ...taskNode,\n folderId: taskNode.folderId || 'root',\n attrib: parseAllAttribs(taskNode.allAttrib),\n entityId: taskNode.id,\n entityType: 'task',\n 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 search?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\nexport type GetGroupedTasksListResult = {\n tasks: EditorTaskNode[]\n}\n\nexport type GetGroupedTasksListArgs = {\n projectName: string\n groups: { filter: string; count: number; value: string }[]\n search?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\n// Define the page param type for infinite query\ntype TasksListPageParam = {\n cursor: string\n desc?: boolean\n}\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\ntype UpdatedDefinitions = Omit<Definitions, 'GetFilteredEntities'> & {\n GetTasksByParent: OverrideResultType<Definitions['GetTasksByParent'], EditorTaskNode[]>\n GetTasksList: OverrideResultType<Definitions['GetTasksList'], GetTasksListResult>\n}\n\n// GRAPHQL API\nconst enhancedApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // This gets tasks for all parent folders provided\n // But in this case it will only ever receive one parent folder from the getOverviewTasksByFolders query\n // It is only used by getOverviewTasksByFolders in this file\n GetTasksByParent: {\n transformResponse: transformFilteredEntitiesByParent,\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n },\n GetTasksList: {\n transformResponse: (result: GetTasksListQuery) => ({\n tasks: transformFilteredEntitiesByParent(result),\n pageInfo: result.project.tasks.pageInfo,\n }),\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks || [], projectName),\n },\n },\n})\n\n// REST FOLDERS API\nconst foldersApiEnhanced = tasksApi.enhanceEndpoints({\n endpoints: {\n queryTasksFolders: {},\n },\n})\n\nexport const TASKS_INFINITE_QUERY_COUNT = 100 // Number of items to fetch per page\n\nconst injectedApi = enhancedApi.injectEndpoints({\n endpoints: (build) => ({\n // Each project has one cache for all the tasks of the expanded folders\n // Changing the expanded folders will trigger a refetch but not a new cache\n // Each expanded folder has it's own query that is looped over here\n // When new folders are expanded, the new tasks are fetched and we use the cache for the rest\n // This also solves the pagination issue of getting all tasks in one query, splitting it up in multiple queries to avoid pagination limits\n getOverviewTasksByFolders: build.query<\n EditorTaskNode[],\n { projectName: string; parentIds: string[]; filter?: string; search?: string }\n >({\n async queryFn({ projectName, parentIds, filter, search }, { dispatch, forced }) {\n try {\n // Process parent IDs in sequential batches\n const BATCH_SIZE = 20 // Process x parentIds at a time\n const allTasks: EditorTaskNode[] = []\n\n // Process batches one after another\n for (let i = 0; i < parentIds.length; i += BATCH_SIZE) {\n const batchParentIds = parentIds.slice(i, i + BATCH_SIZE)\n\n // Process this batch in parallel\n const batchResults = await Promise.all(\n batchParentIds.map(async (parentId) =>\n dispatch(\n enhancedApi.endpoints.GetTasksByParent.initiate(\n {\n projectName,\n parentIds: [parentId],\n filter,\n search,\n },\n { forceRefetch: forced },\n ),\n ),\n ),\n )\n\n // Add the results from this batch to our accumulated results\n const batchTasks = batchResults\n .filter((r) => !!r.data)\n .flatMap((result) => result.data as EditorTaskNode[])\n\n allTasks.push(...batchTasks)\n }\n\n return { data: allTasks }\n } catch (e: any) {\n // handle errors appropriately\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n // keep one cache per project\n serializeQueryArgs: ({ queryArgs: { parentIds, ...rest } }) => ({\n ...rest,\n }),\n // Refetch when the page arg changes\n forceRefetch({ currentArg, previousArg }) {\n return JSON.stringify(currentArg) !== JSON.stringify(previousArg)\n },\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n }),\n // queryTasksFolders is a post so it's a bit annoying to consume\n // we wrap it in a queryFn to make it easier to consume as a query hook\n getQueryTasksFolders: build.query<string[], QueryTasksFoldersApiArg>({\n async queryFn({ projectName, tasksFoldersQuery }, { dispatch }) {\n try {\n const result = await dispatch(\n foldersApiEnhanced.endpoints.queryTasksFolders.initiate({\n projectName,\n tasksFoldersQuery,\n }),\n )\n\n const data = result.data?.folderIds || []\n\n return { data }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n }),\n // Add new infinite query endpoint for tasks list\n getTasksListInfinite: build.infiniteQuery<\n GetTasksListResult,\n GetTasksListArgs,\n TasksListPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '', desc: false },\n // Calculate the next page param based on current page response and params\n getNextPageParam: (lastPage, _allPages, lastPageParam, _allPageParams) => {\n // Use the endCursor from the query as the next page param\n const pageInfo = lastPage.pageInfo\n const desc = lastPageParam.desc\n const hasNextPage = desc ? pageInfo.hasPreviousPage : pageInfo.hasNextPage\n\n if (!hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n desc: lastPageParam.desc,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { projectName, filter, search, folderIds, sortBy, desc } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetTasksList\n const queryParams: any = {\n projectName,\n filter,\n search,\n folderIds,\n }\n\n // Add cursor-based pagination\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.last = TASKS_INFINITE_QUERY_COUNT\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n\n // Call the existing GetTasksList endpoint\n const result = await api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n const fallback = {\n tasks: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n }\n\n // Return the tasks directly as required by the infinite query format\n return {\n data: result.data || fallback,\n }\n } catch (e: any) {\n console.error('Error in getTasksListInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.pages.flatMap((p) => p.tasks) || [], projectName),\n }),\n getGroupedTasksList: build.query<GetGroupedTasksListResult, GetGroupedTasksListArgs>({\n queryFn: async ({ projectName, groups, search, folderIds, desc, sortBy }, api) => {\n try {\n let promises = []\n for (const group of groups) {\n const count = group.count || 500\n\n const queryParams: GetTasksListQueryVariables = {\n projectName,\n filter: group.filter,\n search,\n folderIds,\n sortBy: sortBy,\n // @ts-expect-error - we know group does not exist on query variables but we need it for later\n group: group.value,\n }\n if (desc) {\n queryParams.last = count\n } else {\n queryParams.first = count\n }\n\n const promise = api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n promises.push(promise)\n }\n\n const result = await Promise.all(promises)\n const tasks: EditorTaskNode[] = []\n for (const res of result) {\n if (res.error) throw res.error\n // get group value\n // @ts-expect-error - we know group does exist on res.originalArgs from line 319\n const groupValue = res.originalArgs?.group as string\n\n const hasNextPage =\n res.data?.pageInfo?.hasNextPage || res.data?.pageInfo?.hasPreviousPage || false\n const groupTasks =\n res.data?.tasks.map((task, i, a) => ({\n ...task,\n groups: [\n {\n value: groupValue,\n hasNextPage: i === a.length - 1 && hasNextPage ? groupValue : undefined, // Only add hasNextPage to the last task in the group\n },\n ],\n })) || []\n\n tasks.push(...groupTasks)\n }\n\n // Return the tasks directly as required by the query format\n return {\n data: {\n tasks,\n },\n }\n } catch (error: any) {\n console.error('Error in getGroupedTasksList queryFn:', error)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks, projectName),\n }),\n }),\n})\n\nexport const {\n useGetOverviewTasksByFoldersQuery,\n useGetQueryTasksFoldersQuery,\n useGetTasksListQuery,\n useGetTasksListInfiniteInfiniteQuery,\n useLazyGetTasksByParentQuery,\n useGetGroupedTasksListQuery,\n} = injectedApi\nexport default injectedApi\n"],"names":["tasks","gqlApi","tasksApi"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import "../../base/client.es.js";
2
2
  import { api as injectedRtkApi } from "../../generated/graphql.es.js";
3
+ import "../../generated/graphqlLinks.es.js";
3
4
  import "../../generated/access.es.js";
4
5
  import "../../generated/actions.es.js";
5
6
  import "../../generated/activityFeed.es.js";
@@ -53,18 +54,18 @@ const transformFilteredEntitiesByParent = (response) => {
53
54
  folderId: taskNode.folderId || "root",
54
55
  attrib: parseAllAttribs(taskNode.allAttrib),
55
56
  entityId: taskNode.id,
56
- entityType: "task"
57
+ entityType: "task",
58
+ links: []
57
59
  });
58
60
  }
59
61
  return tasks;
60
62
  };
61
63
  const getOverviewTaskTags = (result = [], projectName, parentIds) => {
62
64
  const taskTags = (result == null ? void 0 : result.map((task) => ({ type: "overviewTask", id: task.id }))) || [];
63
- if (!parentIds) return taskTags;
64
- const parentTags = (Array.isArray(parentIds) ? parentIds : [parentIds]).map((id) => ({
65
+ const parentTags = parentIds ? (Array.isArray(parentIds) ? parentIds : [parentIds]).map((id) => ({
65
66
  type: "overviewTask",
66
67
  id
67
- }));
68
+ })) : [];
68
69
  return [
69
70
  ...taskTags,
70
71
  ...parentTags,
@@ -1 +1 @@
1
- {"version":3,"file":"getOverview.es.js","sources":["../../../../../../src/api/queries/overview/getOverview.ts"],"sourcesContent":["import {\n gqlApi,\n GetTasksByParentQuery,\n GetTasksListQuery,\n tasksApi,\n QueryTasksFoldersApiArg,\n GetTasksListQueryVariables,\n} from '@shared/api/generated'\nimport { EditorTaskNode, TableGroupBy } from '@shared/containers/ProjectTreeTable'\nimport {\n DefinitionsFromApi,\n FetchBaseQueryError,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\n\n// parse attribs JSON string to object\nexport const parseAllAttribs = (allAttrib: string) => {\n try {\n return JSON.parse(allAttrib)\n } catch (e) {\n return {}\n }\n}\n\nconst transformFilteredEntitiesByParent = (response: GetTasksByParentQuery): EditorTaskNode[] => {\n if (!response.project) {\n return []\n }\n\n const tasks: EditorTaskNode[] = []\n for (const { node: taskNode } of response.project.tasks.edges) {\n tasks.push({\n ...taskNode,\n folderId: taskNode.folderId || 'root',\n attrib: parseAllAttribs(taskNode.allAttrib),\n entityId: taskNode.id,\n entityType: 'task',\n })\n }\n\n return tasks\n}\n\nconst getOverviewTaskTags = (\n result: EditorTaskNode[] | undefined = [],\n projectName: string,\n parentIds?: string | string[],\n) => {\n const taskTags = result?.map((task) => ({ type: 'overviewTask', id: task.id })) || []\n\n if (!parentIds) return taskTags\n\n const parentTags = (Array.isArray(parentIds) ? parentIds : [parentIds]).map((id) => ({\n type: 'overviewTask',\n id,\n }))\n\n return [\n ...taskTags,\n ...parentTags,\n { type: 'overviewTask', id: projectName },\n { type: 'overviewTask', id: 'LIST' },\n ]\n}\n\nexport type GetTasksListResult = {\n pageInfo: GetTasksListQuery['project']['tasks']['pageInfo']\n tasks: EditorTaskNode[]\n}\n\nexport type GetTasksListArgs = {\n projectName: string\n filter?: string\n search?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\nexport type GetGroupedTasksListResult = {\n tasks: EditorTaskNode[]\n}\n\nexport type GetGroupedTasksListArgs = {\n projectName: string\n groups: { filter: string; count: number; value: string }[]\n search?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\n// Define the page param type for infinite query\ntype TasksListPageParam = {\n cursor: string\n desc?: boolean\n}\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\ntype UpdatedDefinitions = Omit<Definitions, 'GetFilteredEntities'> & {\n GetTasksByParent: OverrideResultType<Definitions['GetTasksByParent'], EditorTaskNode[]>\n GetTasksList: OverrideResultType<Definitions['GetTasksList'], GetTasksListResult>\n}\n\n// GRAPHQL API\nconst enhancedApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // This gets tasks for all parent folders provided\n // But in this case it will only ever receive one parent folder from the getOverviewTasksByFolders query\n // It is only used by getOverviewTasksByFolders in this file\n GetTasksByParent: {\n transformResponse: transformFilteredEntitiesByParent,\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n },\n GetTasksList: {\n transformResponse: (result: GetTasksListQuery) => ({\n tasks: transformFilteredEntitiesByParent(result),\n pageInfo: result.project.tasks.pageInfo,\n }),\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks || [], projectName),\n },\n },\n})\n\n// REST FOLDERS API\nconst foldersApiEnhanced = tasksApi.enhanceEndpoints({\n endpoints: {\n queryTasksFolders: {},\n },\n})\n\nexport const TASKS_INFINITE_QUERY_COUNT = 100 // Number of items to fetch per page\n\nconst injectedApi = enhancedApi.injectEndpoints({\n endpoints: (build) => ({\n // Each project has one cache for all the tasks of the expanded folders\n // Changing the expanded folders will trigger a refetch but not a new cache\n // Each expanded folder has it's own query that is looped over here\n // When new folders are expanded, the new tasks are fetched and we use the cache for the rest\n // This also solves the pagination issue of getting all tasks in one query, splitting it up in multiple queries to avoid pagination limits\n getOverviewTasksByFolders: build.query<\n EditorTaskNode[],\n { projectName: string; parentIds: string[]; filter?: string; search?: string }\n >({\n async queryFn({ projectName, parentIds, filter, search }, { dispatch, forced }) {\n try {\n // Process parent IDs in sequential batches\n const BATCH_SIZE = 20 // Process x parentIds at a time\n const allTasks: EditorTaskNode[] = []\n\n // Process batches one after another\n for (let i = 0; i < parentIds.length; i += BATCH_SIZE) {\n const batchParentIds = parentIds.slice(i, i + BATCH_SIZE)\n\n // Process this batch in parallel\n const batchResults = await Promise.all(\n batchParentIds.map(async (parentId) =>\n dispatch(\n enhancedApi.endpoints.GetTasksByParent.initiate(\n {\n projectName,\n parentIds: [parentId],\n filter,\n search,\n },\n { forceRefetch: forced },\n ),\n ),\n ),\n )\n\n // Add the results from this batch to our accumulated results\n const batchTasks = batchResults\n .filter((r) => !!r.data)\n .flatMap((result) => result.data as EditorTaskNode[])\n\n allTasks.push(...batchTasks)\n }\n\n return { data: allTasks }\n } catch (e: any) {\n // handle errors appropriately\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n // keep one cache per project\n serializeQueryArgs: ({ queryArgs: { parentIds, ...rest } }) => ({\n ...rest,\n }),\n // Refetch when the page arg changes\n forceRefetch({ currentArg, previousArg }) {\n return JSON.stringify(currentArg) !== JSON.stringify(previousArg)\n },\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n }),\n // queryTasksFolders is a post so it's a bit annoying to consume\n // we wrap it in a queryFn to make it easier to consume as a query hook\n getQueryTasksFolders: build.query<string[], QueryTasksFoldersApiArg>({\n async queryFn({ projectName, tasksFoldersQuery }, { dispatch }) {\n try {\n const result = await dispatch(\n foldersApiEnhanced.endpoints.queryTasksFolders.initiate({\n projectName,\n tasksFoldersQuery,\n }),\n )\n\n const data = result.data?.folderIds || []\n\n return { data }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n }),\n // Add new infinite query endpoint for tasks list\n getTasksListInfinite: build.infiniteQuery<\n GetTasksListResult,\n GetTasksListArgs,\n TasksListPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '', desc: false },\n // Calculate the next page param based on current page response and params\n getNextPageParam: (lastPage, _allPages, lastPageParam, _allPageParams) => {\n // Use the endCursor from the query as the next page param\n const pageInfo = lastPage.pageInfo\n const desc = lastPageParam.desc\n const hasNextPage = desc ? pageInfo.hasPreviousPage : pageInfo.hasNextPage\n\n if (!hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n desc: lastPageParam.desc,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { projectName, filter, search, folderIds, sortBy, desc } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetTasksList\n const queryParams: any = {\n projectName,\n filter,\n search,\n folderIds,\n }\n\n // Add cursor-based pagination\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.last = TASKS_INFINITE_QUERY_COUNT\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n\n // Call the existing GetTasksList endpoint\n const result = await api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n const fallback = {\n tasks: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n }\n\n // Return the tasks directly as required by the infinite query format\n return {\n data: result.data || fallback,\n }\n } catch (e: any) {\n console.error('Error in getTasksListInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.pages.flatMap((p) => p.tasks) || [], projectName),\n }),\n getGroupedTasksList: build.query<GetGroupedTasksListResult, GetGroupedTasksListArgs>({\n queryFn: async ({ projectName, groups, search, folderIds, desc, sortBy }, api) => {\n try {\n let promises = []\n for (const group of groups) {\n const count = group.count || 500\n\n const queryParams: GetTasksListQueryVariables = {\n projectName,\n filter: group.filter,\n search,\n folderIds,\n sortBy: sortBy,\n // @ts-expect-error - we know group does not exist on query variables but we need it for later\n group: group.value,\n }\n if (desc) {\n queryParams.last = count\n } else {\n queryParams.first = count\n }\n\n const promise = api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n promises.push(promise)\n }\n\n const result = await Promise.all(promises)\n const tasks: EditorTaskNode[] = []\n for (const res of result) {\n if (res.error) throw res.error\n // get group value\n // @ts-expect-error - we know group does exist on res.originalArgs from line 319\n const groupValue = res.originalArgs?.group as string\n\n const hasNextPage =\n res.data?.pageInfo?.hasNextPage || res.data?.pageInfo?.hasPreviousPage || false\n const groupTasks =\n res.data?.tasks.map((task, i, a) => ({\n ...task,\n groups: [\n {\n value: groupValue,\n hasNextPage: i === a.length - 1 && hasNextPage ? groupValue : undefined, // Only add hasNextPage to the last task in the group\n },\n ],\n })) || []\n\n tasks.push(...groupTasks)\n }\n\n // Return the tasks directly as required by the query format\n return {\n data: {\n tasks,\n },\n }\n } catch (error: any) {\n console.error('Error in getGroupedTasksList queryFn:', error)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks, projectName),\n }),\n }),\n})\n\nexport const {\n useGetOverviewTasksByFoldersQuery,\n useGetQueryTasksFoldersQuery,\n useGetTasksListQuery,\n useGetTasksListInfiniteInfiniteQuery,\n useLazyGetTasksByParentQuery,\n useGetGroupedTasksListQuery,\n} = injectedApi\nexport default injectedApi\n"],"names":["gqlApi","tasksApi"],"mappings":"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"}
1
+ {"version":3,"file":"getOverview.es.js","sources":["../../../../../../src/api/queries/overview/getOverview.ts"],"sourcesContent":["import {\n gqlApi,\n GetTasksByParentQuery,\n GetTasksListQuery,\n tasksApi,\n QueryTasksFoldersApiArg,\n GetTasksListQueryVariables,\n} from '@shared/api/generated'\nimport { EditorTaskNode, TableGroupBy } from '@shared/containers/ProjectTreeTable'\nimport {\n DefinitionsFromApi,\n FetchBaseQueryError,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\n\n// parse attribs JSON string to object\nexport const parseAllAttribs = (allAttrib: string) => {\n try {\n return JSON.parse(allAttrib)\n } catch (e) {\n return {}\n }\n}\n\nconst transformFilteredEntitiesByParent = (response: GetTasksByParentQuery): EditorTaskNode[] => {\n if (!response.project) {\n return []\n }\n\n const tasks: EditorTaskNode[] = []\n for (const { node: taskNode } of response.project.tasks.edges) {\n tasks.push({\n ...taskNode,\n folderId: taskNode.folderId || 'root',\n attrib: parseAllAttribs(taskNode.allAttrib),\n entityId: taskNode.id,\n entityType: 'task',\n 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 search?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\nexport type GetGroupedTasksListResult = {\n tasks: EditorTaskNode[]\n}\n\nexport type GetGroupedTasksListArgs = {\n projectName: string\n groups: { filter: string; count: number; value: string }[]\n search?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\n// Define the page param type for infinite query\ntype TasksListPageParam = {\n cursor: string\n desc?: boolean\n}\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\ntype UpdatedDefinitions = Omit<Definitions, 'GetFilteredEntities'> & {\n GetTasksByParent: OverrideResultType<Definitions['GetTasksByParent'], EditorTaskNode[]>\n GetTasksList: OverrideResultType<Definitions['GetTasksList'], GetTasksListResult>\n}\n\n// GRAPHQL API\nconst enhancedApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // This gets tasks for all parent folders provided\n // But in this case it will only ever receive one parent folder from the getOverviewTasksByFolders query\n // It is only used by getOverviewTasksByFolders in this file\n GetTasksByParent: {\n transformResponse: transformFilteredEntitiesByParent,\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n },\n GetTasksList: {\n transformResponse: (result: GetTasksListQuery) => ({\n tasks: transformFilteredEntitiesByParent(result),\n pageInfo: result.project.tasks.pageInfo,\n }),\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks || [], projectName),\n },\n },\n})\n\n// REST FOLDERS API\nconst foldersApiEnhanced = tasksApi.enhanceEndpoints({\n endpoints: {\n queryTasksFolders: {},\n },\n})\n\nexport const TASKS_INFINITE_QUERY_COUNT = 100 // Number of items to fetch per page\n\nconst injectedApi = enhancedApi.injectEndpoints({\n endpoints: (build) => ({\n // Each project has one cache for all the tasks of the expanded folders\n // Changing the expanded folders will trigger a refetch but not a new cache\n // Each expanded folder has it's own query that is looped over here\n // When new folders are expanded, the new tasks are fetched and we use the cache for the rest\n // This also solves the pagination issue of getting all tasks in one query, splitting it up in multiple queries to avoid pagination limits\n getOverviewTasksByFolders: build.query<\n EditorTaskNode[],\n { projectName: string; parentIds: string[]; filter?: string; search?: string }\n >({\n async queryFn({ projectName, parentIds, filter, search }, { dispatch, forced }) {\n try {\n // Process parent IDs in sequential batches\n const BATCH_SIZE = 20 // Process x parentIds at a time\n const allTasks: EditorTaskNode[] = []\n\n // Process batches one after another\n for (let i = 0; i < parentIds.length; i += BATCH_SIZE) {\n const batchParentIds = parentIds.slice(i, i + BATCH_SIZE)\n\n // Process this batch in parallel\n const batchResults = await Promise.all(\n batchParentIds.map(async (parentId) =>\n dispatch(\n enhancedApi.endpoints.GetTasksByParent.initiate(\n {\n projectName,\n parentIds: [parentId],\n filter,\n search,\n },\n { forceRefetch: forced },\n ),\n ),\n ),\n )\n\n // Add the results from this batch to our accumulated results\n const batchTasks = batchResults\n .filter((r) => !!r.data)\n .flatMap((result) => result.data as EditorTaskNode[])\n\n allTasks.push(...batchTasks)\n }\n\n return { data: allTasks }\n } catch (e: any) {\n // handle errors appropriately\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n // keep one cache per project\n serializeQueryArgs: ({ queryArgs: { parentIds, ...rest } }) => ({\n ...rest,\n }),\n // Refetch when the page arg changes\n forceRefetch({ currentArg, previousArg }) {\n return JSON.stringify(currentArg) !== JSON.stringify(previousArg)\n },\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n }),\n // queryTasksFolders is a post so it's a bit annoying to consume\n // we wrap it in a queryFn to make it easier to consume as a query hook\n getQueryTasksFolders: build.query<string[], QueryTasksFoldersApiArg>({\n async queryFn({ projectName, tasksFoldersQuery }, { dispatch }) {\n try {\n const result = await dispatch(\n foldersApiEnhanced.endpoints.queryTasksFolders.initiate({\n projectName,\n tasksFoldersQuery,\n }),\n )\n\n const data = result.data?.folderIds || []\n\n return { data }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n }),\n // Add new infinite query endpoint for tasks list\n getTasksListInfinite: build.infiniteQuery<\n GetTasksListResult,\n GetTasksListArgs,\n TasksListPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '', desc: false },\n // Calculate the next page param based on current page response and params\n getNextPageParam: (lastPage, _allPages, lastPageParam, _allPageParams) => {\n // Use the endCursor from the query as the next page param\n const pageInfo = lastPage.pageInfo\n const desc = lastPageParam.desc\n const hasNextPage = desc ? pageInfo.hasPreviousPage : pageInfo.hasNextPage\n\n if (!hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n desc: lastPageParam.desc,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { projectName, filter, search, folderIds, sortBy, desc } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetTasksList\n const queryParams: any = {\n projectName,\n filter,\n search,\n folderIds,\n }\n\n // Add cursor-based pagination\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.last = TASKS_INFINITE_QUERY_COUNT\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n\n // Call the existing GetTasksList endpoint\n const result = await api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n const fallback = {\n tasks: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n }\n\n // Return the tasks directly as required by the infinite query format\n return {\n data: result.data || fallback,\n }\n } catch (e: any) {\n console.error('Error in getTasksListInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.pages.flatMap((p) => p.tasks) || [], projectName),\n }),\n getGroupedTasksList: build.query<GetGroupedTasksListResult, GetGroupedTasksListArgs>({\n queryFn: async ({ projectName, groups, search, folderIds, desc, sortBy }, api) => {\n try {\n let promises = []\n for (const group of groups) {\n const count = group.count || 500\n\n const queryParams: GetTasksListQueryVariables = {\n projectName,\n filter: group.filter,\n search,\n folderIds,\n sortBy: sortBy,\n // @ts-expect-error - we know group does not exist on query variables but we need it for later\n group: group.value,\n }\n if (desc) {\n queryParams.last = count\n } else {\n queryParams.first = count\n }\n\n const promise = api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n promises.push(promise)\n }\n\n const result = await Promise.all(promises)\n const tasks: EditorTaskNode[] = []\n for (const res of result) {\n if (res.error) throw res.error\n // get group value\n // @ts-expect-error - we know group does exist on res.originalArgs from line 319\n const groupValue = res.originalArgs?.group as string\n\n const hasNextPage =\n res.data?.pageInfo?.hasNextPage || res.data?.pageInfo?.hasPreviousPage || false\n const groupTasks =\n res.data?.tasks.map((task, i, a) => ({\n ...task,\n groups: [\n {\n value: groupValue,\n hasNextPage: i === a.length - 1 && hasNextPage ? groupValue : undefined, // Only add hasNextPage to the last task in the group\n },\n ],\n })) || []\n\n tasks.push(...groupTasks)\n }\n\n // Return the tasks directly as required by the query format\n return {\n data: {\n tasks,\n },\n }\n } catch (error: any) {\n console.error('Error in getGroupedTasksList queryFn:', error)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks, projectName),\n }),\n }),\n})\n\nexport const {\n useGetOverviewTasksByFoldersQuery,\n useGetQueryTasksFoldersQuery,\n useGetTasksListQuery,\n useGetTasksListInfiniteInfiniteQuery,\n useLazyGetTasksByParentQuery,\n useGetGroupedTasksListQuery,\n} = injectedApi\nexport default injectedApi\n"],"names":["gqlApi","tasksApi"],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  require("../../base/client.cjs.js");
4
4
  require("../../generated/graphql.cjs.js");
5
+ require("../../generated/graphqlLinks.cjs.js");
5
6
  require("../../generated/access.cjs.js");
6
7
  require("../../generated/actions.cjs.js");
7
8
  require("../../generated/activityFeed.cjs.js");
@@ -57,6 +58,9 @@ require("../entityLists/getListsAttributes.cjs.js");
57
58
  require("../entityLists/updateListsAttributes.cjs.js");
58
59
  const getFolders = require("../folders/getFolders.cjs.js");
59
60
  require("../grouping/getGrouping.cjs.js");
61
+ require("../links/updateLinks.cjs.js");
62
+ require("../links/getLinks.cjs.js");
63
+ require("../links/getEntityLinks.cjs.js");
60
64
  const getOverview = require("./getOverview.cjs.js");
61
65
  require("../permissions/getPermissions.cjs.js");
62
66
  require("../products/createProduct.cjs.js");
@@ -74,21 +78,37 @@ require("../views/getViews.cjs.js");
74
78
  require("../views/updateViews.cjs.js");
75
79
  require("../watchers/getWatchers.cjs.js");
76
80
  const updateEntityWithOperation = (entity, operationData) => {
77
- let updatedOperationData = { ...operationData };
78
- if ((operationData == null ? void 0 : operationData.name) && entity.path && entity.entityType !== "task") {
79
- const pathParts = entity.path.split("/");
80
- pathParts[pathParts.length - 1] = operationData.name;
81
- updatedOperationData.path = pathParts.join("/");
82
- }
83
- const newData = {
84
- ...entity,
85
- ...updatedOperationData,
86
- attrib: {
81
+ Object.keys(operationData).forEach((key) => {
82
+ if (key === "attrib" || key === "links" || key === "deleteLinks") return;
83
+ entity[key] = operationData[key];
84
+ });
85
+ if (operationData.attrib) {
86
+ entity.attrib = {
87
87
  ...entity.attrib,
88
- ...(updatedOperationData == null ? void 0 : updatedOperationData.attrib) || {}
89
- }
90
- };
91
- Object.assign(entity, newData);
88
+ ...operationData.attrib
89
+ };
90
+ }
91
+ if (operationData.links) {
92
+ const existingLinks = entity.links || [];
93
+ const newLinks = operationData.links || [];
94
+ if (!entity.links) entity.links = [];
95
+ entity.links = [...existingLinks];
96
+ newLinks.forEach((newLink) => {
97
+ const existingIndex = entity.links.findIndex((link) => link.id === newLink.id);
98
+ if (existingIndex !== -1) {
99
+ entity.links[existingIndex] = { ...entity.links[existingIndex], ...newLink };
100
+ } else {
101
+ entity.links.push(newLink);
102
+ }
103
+ });
104
+ }
105
+ if (operationData.deleteLinks) {
106
+ const linksToDelete = operationData.deleteLinks || [];
107
+ if (!entity.links) entity.links = [];
108
+ linksToDelete.forEach((linkId) => {
109
+ entity.links = entity.links.filter((link) => link.id !== linkId);
110
+ });
111
+ }
92
112
  };
93
113
  const getOverviewTaskTags = (tasks) => {
94
114
  return [
@@ -123,6 +143,37 @@ const getOverviewFolderTags = (folders) => {
123
143
  })
124
144
  ];
125
145
  };
146
+ const createLinkDeletionPatch = (entityId, entityType, linkIds) => {
147
+ return {
148
+ entityId,
149
+ entityType,
150
+ type: "update",
151
+ data: { deleteLinks: linkIds }
152
+ };
153
+ };
154
+ const deleteLinksFromEntities = (entities, linkIds) => {
155
+ return entities.map(
156
+ (entity) => createLinkDeletionPatch(entity.entityId, entity.entityType, linkIds)
157
+ );
158
+ };
159
+ const patchOverviewEntities = (entities, {
160
+ state,
161
+ dispatch
162
+ }, patches) => {
163
+ const entitiesByType = entities.reduce((acc, entity) => {
164
+ if (!acc[entity.entityType]) {
165
+ acc[entity.entityType] = [];
166
+ }
167
+ acc[entity.entityType].push(entity);
168
+ return acc;
169
+ }, {});
170
+ if (entitiesByType.task) {
171
+ patchOverviewTasks(entitiesByType.task, { state, dispatch }, patches);
172
+ }
173
+ if (entitiesByType.folder) {
174
+ patchOverviewFolders(entitiesByType.folder, { state, dispatch }, patches);
175
+ }
176
+ };
126
177
  const patchOverviewTasks = (tasks, {
127
178
  state,
128
179
  dispatch
@@ -154,8 +205,9 @@ const patchOverviewTasks = (tasks, {
154
205
  entry.endpointName,
155
206
  entry.originalArgs,
156
207
  (draft) => {
208
+ var _a;
157
209
  for (const taskOperation of tasks) {
158
- if (taskOperation.type === "create" && taskOperation.data && entry.originalArgs.parentIds.includes(taskOperation.data.folderId)) {
210
+ if (taskOperation.type === "create" && taskOperation.data && ((_a = entry.originalArgs.parentIds) == null ? void 0 : _a.includes(taskOperation.data.folderId))) {
159
211
  const patchTask = (tasksArrayDraft) => {
160
212
  tasksArrayDraft.push(taskOperation.data);
161
213
  };
@@ -506,8 +558,11 @@ const operationsApiEnhancedInjected = operationsEnhanced.injectEndpoints({
506
558
  })
507
559
  });
508
560
  const { useUpdateOverviewEntitiesMutation } = operationsApiEnhancedInjected;
561
+ exports.createLinkDeletionPatch = createLinkDeletionPatch;
562
+ exports.deleteLinksFromEntities = deleteLinksFromEntities;
509
563
  exports.overviewQueries = operationsApiEnhancedInjected;
510
564
  exports.patchDetailsPanelEntity = patchDetailsPanelEntity;
565
+ exports.patchOverviewEntities = patchOverviewEntities;
511
566
  exports.patchOverviewFolders = patchOverviewFolders;
512
567
  exports.patchOverviewTasks = patchOverviewTasks;
513
568
  exports.useUpdateOverviewEntitiesMutation = useUpdateOverviewEntitiesMutation;
@@ -1 +1 @@
1
- {"version":3,"file":"updateOverview.cjs.js","sources":["../../../../../../src/api/queries/overview/updateOverview.ts"],"sourcesContent":["import {\n foldersQueries,\n detailsPanelQueries,\n operationsApi,\n entityListsQueriesGql,\n} from '@shared/api'\nimport type { OperationsResponseModel, OperationModel, OperationsApiArg } from '@shared/api'\nimport getOverviewApi from './getOverview'\nimport { DetailsPanelEntityData, DetailsPanelEntityType } from '@shared/api/queries/entities'\nimport { FetchBaseQueryError, RootState } from '@reduxjs/toolkit/query'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { EditorTaskNode } from '@shared/containers/ProjectTreeTable'\n// these operations are dedicated to the overview page\n// this mean cache updates are custom for the overview page here\n\n// Helper function to update entities with operation data\nconst updateEntityWithOperation = (entity: any, operationData: any) => {\n // If this is a folder and name is being updated, also update the path\n let updatedOperationData = { ...operationData }\n if (operationData?.name && entity.path && entity.entityType !== 'task') {\n // Construct new path by replacing the last segment with the new name\n const pathParts = entity.path.split('/')\n pathParts[pathParts.length - 1] = operationData.name\n updatedOperationData.path = pathParts.join('/')\n }\n\n const newData = {\n ...entity,\n ...updatedOperationData,\n attrib: {\n ...entity.attrib,\n ...(updatedOperationData?.attrib || {}),\n },\n }\n\n // patch data onto the entity\n Object.assign(entity, newData)\n}\n\nconst getOverviewTaskTags = (tasks: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n { type: 'overviewTask', id: 'LIST' },\n ...tasks.map((op) => ({ type: 'overviewTask', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...tasks\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'overviewTask',\n id: op.data?.projectName,\n })),\n ]\n}\n\nconst getOverviewFolderTags = (folders: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n ...folders.map((op) => ({ type: 'folder', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...folders\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'folder',\n id: op.data?.projectName,\n })),\n ]\n}\n\nexport type PatchOperation = Pick<OperationModel, 'entityId' | 'entityType' | 'data'> & {\n type?: OperationModel['type']\n}\n\nexport const patchOverviewTasks = (\n tasks: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = getOverviewTaskTags(tasks)\n const taskEntries = getOverviewApi.util.selectInvalidatedBy(state, tags)\n\n for (const entry of taskEntries) {\n if (entry.endpointName === 'getTasksListInfinite') {\n // patch getTasksListInfinite\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData('getTasksListInfinite', entry.originalArgs, (draft) => {\n // Apply each change to matching tasks in all pages\n for (const taskOperation of tasks) {\n if (taskOperation.type === 'create' && taskOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.pages[0].tasks.push(taskOperation.data)\n } else {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n const task = page.tasks.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n }\n }\n }\n }),\n )\n\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n } else {\n // this updates the main overview cache task\n // it also updates any GetTasksByParent caches\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData(\n entry.endpointName as 'getOverviewTasksByFolders' | 'GetTasksByParent' | 'GetTasksList',\n entry.originalArgs,\n (draft) => {\n // Apply each change to matching tasks in the cache\n for (const taskOperation of tasks) {\n if (\n taskOperation.type === 'create' &&\n taskOperation.data &&\n entry.originalArgs.parentIds.includes(taskOperation.data.folderId)\n ) {\n const patchTask = (tasksArrayDraft: EditorTaskNode[]) => {\n // @ts-expect-error\n tasksArrayDraft.push(taskOperation.data)\n }\n\n // Check if draft is an array or an object with a tasks property\n if (Array.isArray(draft)) {\n patchTask(draft)\n } else if (draft.tasks && Array.isArray(draft.tasks)) {\n // Handle object with tasks array case (like in GetTasksList)\n const draftArray = draft.tasks\n patchTask(draftArray)\n }\n } else {\n const patchTask = (tasksArrayDraft: EditorTaskNode[]) => {\n const task = tasksArrayDraft.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n }\n\n // Check if draft is an array or an object with a tasks property\n if (Array.isArray(draft)) {\n patchTask(draft)\n } else if (draft.tasks && Array.isArray(draft.tasks)) {\n // Handle object with tasks array case (like in GetTasksList)\n const draftArray = draft.tasks\n patchTask(draftArray)\n }\n }\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n }\n }\n}\n\nconst invalidateOverviewTasks = (\n tasks: PatchOperation[],\n {\n dispatch,\n }: {\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n) => {\n if (!tasks.length) return\n dispatch(getOverviewApi.util.invalidateTags(getOverviewTaskTags(tasks)))\n}\n\nexport const patchOverviewFolders = (\n folders: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const folderEntries = foldersQueries.util\n .selectInvalidatedBy(state, getOverviewFolderTags(folders))\n .filter((entry) => entry.endpointName === 'getFolderList')\n for (const entry of folderEntries) {\n const folderPatch = dispatch(\n foldersQueries.util.updateQueryData(\n entry.endpointName as 'getFolderList',\n entry.originalArgs,\n (draft) => {\n // Create a Map for O(1) folder lookups\n const folderMap = new Map()\n draft.folders.forEach((folder) => {\n folderMap.set(folder.id, folder)\n })\n\n for (const folderOperation of folders) {\n if (folderOperation.type === 'create' && folderOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.folders.push(folderOperation.data)\n } else {\n const folder = folderMap.get(folderOperation.entityId)\n\n if (folder) {\n updateEntityWithOperation(folder, folderOperation.data)\n }\n }\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(folderPatch)\n }\n}\n\ntype DeepPartial<T> = T extends object\n ? {\n [P in keyof T]?: DeepPartial<T[P]>\n }\n : T\n\nconst operationDataToDetailsData = (\n data: Record<string, any>,\n entityType: DetailsPanelEntityType,\n): DeepPartial<DetailsPanelEntityData> => {\n const sharedData: DeepPartial<DetailsPanelEntityData> = {\n name: data.name,\n attrib: data.attrib,\n status: data.status,\n tags: data.tags,\n label: data.label,\n updatedAt: data.updatedAt,\n createdAt: data.createdAt,\n hasReviewables: data.hasReviewables,\n thumbnailId: data.thumbnailId,\n }\n\n switch (entityType) {\n case 'task':\n return {\n ...sharedData,\n task: {\n assignees: data.assignees,\n label: data.label,\n name: data.name,\n taskType: data.taskType,\n },\n }\n case 'folder':\n return {\n ...sharedData,\n folder: {\n id: data.id,\n name: data.name,\n label: data.label,\n folderType: data.folderType,\n },\n }\n case 'version':\n return {\n ...sharedData,\n version: {\n id: data.id,\n name: data.name,\n },\n }\n case 'representation':\n return {\n ...sharedData,\n }\n }\n}\n\nexport const patchDetailsPanelEntity = (\n operations: PatchOperation[] = [],\n draft: DetailsPanelEntityData,\n) => {\n // find the entity we are updating from the draft\n const operation = operations.find((op) => op.entityId === draft.id)\n const operationData = operation?.data\n\n if (!operationData || operation.entityType === 'product' || operation.entityType === 'workfile')\n return console.warn('No operation data found or entity type not supported')\n\n // transform the data to match the details panel entity data\n const detailsPanelData = operationDataToDetailsData(operationData, operation.entityType)\n\n // If this is a folder and name is being updated, also update the path\n if (operation.entityType === 'folder' && operationData.name && draft.path) {\n // Construct new path by replacing the last segment with the new name\n const pathParts = draft.path.split('/')\n pathParts[pathParts.length - 1] = operationData.name\n detailsPanelData.path = pathParts.join('/')\n }\n\n // helper to deep‐clean undefined values\n function cleanUndefined(obj: any): void {\n Object.entries(obj).forEach(([key, val]) => {\n if (val === undefined) {\n delete obj[key]\n } else if (val !== null && typeof val === 'object') {\n cleanUndefined(val)\n }\n })\n }\n\n // remove all undefineds at root and nested levels\n cleanUndefined(detailsPanelData as Record<string, any>)\n\n const newData: DeepPartial<DetailsPanelEntityData> = {\n ...draft,\n ...detailsPanelData,\n attrib: {\n ...(draft?.attrib || {}),\n ...detailsPanelData.attrib,\n },\n folder: {\n ...(draft?.folder || {}),\n ...detailsPanelData.folder,\n },\n task: {\n ...(draft?.task || {}),\n ...detailsPanelData.task,\n },\n version: {\n ...(draft?.version || {}),\n ...detailsPanelData.version,\n },\n }\n\n // patch data onto the entity\n Object.assign(draft, newData)\n}\n\nconst patchListItems = (\n entities: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = entities.map((op) => ({ type: 'entityListItem', id: op.entityId }))\n const entries = entityListsQueriesGql.util.selectInvalidatedBy(state, tags)\n\n for (const entry of entries) {\n if (entry.endpointName === 'getListItemsInfinite') {\n const listItemsPatch = dispatch(\n entityListsQueriesGql.util.updateQueryData(\n 'getListItemsInfinite',\n entry.originalArgs,\n (draft) => {\n // Apply each change to matching tasks in all pages\n for (const listOperation of entities) {\n if (listOperation.type === 'update' && listOperation.data) {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n const item = page.items.find((item) => item.entityId === listOperation.entityId)\n if (item) {\n updateEntityWithOperation(item, listOperation.data)\n }\n }\n }\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches?.push(listItemsPatch)\n }\n }\n}\n\nconst splitByOpType = (operations: OperationModel[]) => {\n return operations.reduce(\n (acc: Record<OperationModel['type'], OperationModel[]>, operation) => {\n acc[operation.type].push(operation)\n return acc\n },\n {\n create: [],\n update: [],\n delete: [],\n },\n )\n}\n\nconst operationsEnhanced = operationsApi.enhanceEndpoints({\n endpoints: {\n operations: {},\n },\n})\n\n// enhance the argument type to include some extra fields\ninterface UpdateOverviewEntitiesArg extends OperationsApiArg {\n patchOperations?: PatchOperation[] // extra entities to patch\n}\n\nconst operationsApiEnhancedInjected = operationsEnhanced.injectEndpoints({\n endpoints: (build) => ({\n updateOverviewEntities: build.mutation<\n OperationsResponseModel | undefined,\n UpdateOverviewEntitiesArg\n >({\n async queryFn(arg, { dispatch }) {\n try {\n const result = await dispatch(operationsEnhanced.endpoints.operations.initiate(arg))\n\n const data = result.data\n // check for any errors in the result\n const uniqueErrors = new Set()\n const uniqueErrorCodes = new Set()\n for (const op of data?.operations || []) {\n if (op.success === false && op.detail) {\n if (!uniqueErrors.has(op.detail)) {\n uniqueErrors.add(op.detail)\n }\n if (!uniqueErrorCodes.has(op.errorCode)) {\n uniqueErrorCodes.add(op.errorCode)\n }\n }\n }\n\n if (uniqueErrors.size > 0) {\n const error = {\n status: 'FETCH_ERROR',\n error: Array.from(uniqueErrors).join(', '),\n errorCodes: Array.from(uniqueErrorCodes),\n } as FetchBaseQueryError\n return { error }\n } else {\n return { data }\n }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n async onQueryStarted(\n { operationsRequestModel, patchOperations = [] },\n { dispatch, queryFulfilled, getState },\n ) {\n if (!operationsRequestModel.operations?.length) return\n const { operations } = operationsRequestModel\n // we need to split the operations by entity type\n const operationsByType = operations.reduce(\n (acc: Record<OperationModel['entityType'], OperationModel[]>, operation) => {\n acc[operation.entityType].push(operation)\n return acc\n },\n {\n task: [],\n folder: [],\n product: [],\n version: [],\n representation: [],\n workfile: [],\n },\n )\n\n // collect patches incase we need to undo them\n const state = getState()\n const patches: any[] = []\n\n // patch the overview tasks\n if (operationsByType.task?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.task)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing tasks\n patchOverviewTasks(updatesToPatch, { state, dispatch }, patches)\n // invalidate the caches for tasks being created and deleted\n invalidateOverviewTasks([...deleteOps], {\n dispatch,\n })\n }\n\n // patch the overview folders (any other folders from foldersList)\n if (operationsByType.folder?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.folder)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing folders\n patchOverviewFolders(updatesToPatch, { state, dispatch }, patches)\n // invalidate the caches for folders being created and deleted\n if (deleteOps.length) {\n dispatch(foldersQueries.util.invalidateTags([{ type: 'folder', id: 'LIST' }]))\n }\n }\n\n const patchExtraTasks = patchOperations.filter((op) => op.entityType === 'task')\n const patchExtraFolders = patchOperations.filter((op) => op.entityType === 'folder')\n\n if (patchExtraTasks.length) {\n // often used for updating inherited dependents\n patchOverviewTasks(patchExtraTasks, { state, dispatch }, patches)\n }\n\n if (patchExtraFolders.length) {\n // often used for updating inherited dependents\n patchOverviewFolders(patchExtraFolders, { state, dispatch }, patches)\n }\n\n // patch the list items\n patchListItems([...operations, ...patchOperations], { state, dispatch }, patches)\n\n // try to patch any details panels\n // first we patch the individual entities\n // then we patch the details panel cache\n const entityTags = operations.map((op) => ({\n id: op.entityId,\n type: op.entityType,\n }))\n const entitiesTags = entityTags.map((tag) => ({\n type: 'entities',\n id: tag.id,\n }))\n\n // invalidates the details panel cache so that it fetches all individual entities again (using it's updated cache)\n const invalidateEntryPanel = () =>\n dispatch(detailsPanelQueries.util.invalidateTags(entitiesTags))\n\n // the individual entities that are patched for the details panel\n // remember the details panel cache is made up of individual entity caches\n const detailsPanelEntityCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entityTags,\n )\n\n // the cache for the whole details panel\n const detailsPanelEntitiesCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entitiesTags,\n )\n\n for (const entry of detailsPanelEntitiesCaches) {\n if (entry.endpointName !== 'getEntitiesDetailsPanel') continue\n const entitiesDetailsResult = dispatch(\n detailsPanelQueries.util.updateQueryData(\n entry.endpointName as 'getEntitiesDetailsPanel',\n entry.originalArgs,\n (draft) => {\n for (const entity of draft) {\n patchDetailsPanelEntity(operations, entity)\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches.push(entitiesDetailsResult)\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // undo all patches if there is an error\n for (const patch of patches) {\n patch.undo()\n }\n\n if (detailsPanelEntityCaches.length) {\n // we invalidate the tags for the detailsPanelEntityCaches that were patched\n // invalidate the details panel cache\n invalidateEntryPanel()\n }\n }\n },\n invalidatesTags: (_r, _e, { operationsRequestModel, projectName }) => {\n type Tags = { id: string; type: string }[]\n const userDashboardTags: Tags = [{ type: 'kanban', id: 'project-' + projectName }],\n taskProgressTags: Tags = []\n\n operationsRequestModel.operations?.forEach((op) => {\n const { entityId } = op\n if (entityId) {\n taskProgressTags.push({ type: 'progress', id: entityId })\n } else {\n // new entity created, so we should invalidate everything\n taskProgressTags.push({ type: 'progress', id: 'LIST' })\n }\n })\n\n return [...userDashboardTags, ...taskProgressTags]\n },\n }),\n }),\n})\n\nexport const { useUpdateOverviewEntitiesMutation } = operationsApiEnhancedInjected\nexport { operationsApiEnhancedInjected as overviewQueries }\n"],"names":["getOverviewApi","task","foldersQueries","operations","entityListsQueriesGql","item","operationsApi","detailsPanelQueries"],"mappings":"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"}
1
+ {"version":3,"file":"updateOverview.cjs.js","sources":["../../../../../../src/api/queries/overview/updateOverview.ts"],"sourcesContent":["import {\n foldersQueries,\n detailsPanelQueries,\n operationsApi,\n entityListsQueriesGql,\n} from '@shared/api'\nimport type { OperationsResponseModel, OperationModel, OperationsApiArg } from '@shared/api'\nimport getOverviewApi from './getOverview'\nimport { DetailsPanelEntityData, DetailsPanelEntityType } from '@shared/api/queries/entities'\nimport { FetchBaseQueryError, RootState } from '@reduxjs/toolkit/query'\nimport { current, ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { EditorTaskNode } from '@shared/containers/ProjectTreeTable'\n// these operations are dedicated to the overview page\n// this mean cache updates are custom for the overview page here\n\n// Helper function to update entities with operation data\nconst updateEntityWithOperation = (entity: any, operationData: any) => {\n // Update top-level properties directly\n Object.keys(operationData).forEach((key) => {\n if (key === 'attrib' || key === 'links' || key === 'deleteLinks') return\n entity[key] = operationData[key]\n })\n\n // Handle attrib merging\n if (operationData.attrib) {\n entity.attrib = {\n ...entity.attrib,\n ...operationData.attrib,\n }\n }\n\n // Handle links merging\n if (operationData.links) {\n const existingLinks = entity.links || []\n const newLinks = operationData.links || []\n\n // Ensure links structure exists\n if (!entity.links) entity.links = []\n\n // Process links directly\n entity.links = [...existingLinks]\n\n newLinks.forEach((newLink: any) => {\n const existingIndex = entity.links.findIndex((link: any) => link.id === newLink.id)\n\n if (existingIndex !== -1) {\n entity.links[existingIndex] = { ...entity.links[existingIndex], ...newLink }\n } else {\n entity.links.push(newLink)\n }\n })\n }\n\n // Handle links deletion\n if (operationData.deleteLinks) {\n const linksToDelete = operationData.deleteLinks || []\n\n // Ensure links structure exists\n if (!entity.links) entity.links = []\n\n // Remove links by ID\n linksToDelete.forEach((linkId: string) => {\n entity.links = entity.links.filter((link: any) => link.id !== linkId)\n })\n }\n}\n\nconst getOverviewTaskTags = (tasks: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n { type: 'overviewTask', id: 'LIST' },\n ...tasks.map((op) => ({ type: 'overviewTask', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...tasks\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'overviewTask',\n id: op.data?.projectName,\n })),\n ]\n}\n\nconst getOverviewFolderTags = (folders: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n ...folders.map((op) => ({ type: 'folder', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...folders\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'folder',\n id: op.data?.projectName,\n })),\n ]\n}\n\nexport type PatchOperation = Pick<OperationModel, 'entityId' | 'entityType' | 'data'> & {\n type?: OperationModel['type']\n}\n\n// Helper function to create a patch operation for deleting links\nexport const createLinkDeletionPatch = (\n entityId: string,\n entityType: OperationModel['entityType'],\n linkIds: string[],\n): PatchOperation => {\n return {\n entityId,\n entityType,\n type: 'update',\n data: { deleteLinks: linkIds },\n }\n}\n\n// Utility function to delete specific links by ID from entities\nexport const deleteLinksFromEntities = (\n entities: { entityId: string; entityType: OperationModel['entityType'] }[],\n linkIds: string[],\n): PatchOperation[] => {\n return entities.map((entity) =>\n createLinkDeletionPatch(entity.entityId, entity.entityType, linkIds),\n )\n}\n\n// Generic helper function to patch entities based on their type\nexport const patchOverviewEntities = (\n entities: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n // Group entities by type\n const entitiesByType = entities.reduce((acc, entity) => {\n if (!acc[entity.entityType]) {\n acc[entity.entityType] = []\n }\n acc[entity.entityType].push(entity)\n return acc\n }, {} as Record<string, PatchOperation[]>)\n\n // Patch each entity type using the appropriate function\n if (entitiesByType.task) {\n patchOverviewTasks(entitiesByType.task, { state, dispatch }, patches)\n }\n if (entitiesByType.folder) {\n patchOverviewFolders(entitiesByType.folder, { state, dispatch }, patches)\n }\n // Add more entity types as needed\n // if (entitiesByType.product) { ... }\n // if (entitiesByType.version) { ... }\n // etc.\n}\n\nexport const patchOverviewTasks = (\n tasks: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = getOverviewTaskTags(tasks)\n const taskEntries = getOverviewApi.util.selectInvalidatedBy(state, tags)\n\n for (const entry of taskEntries) {\n if (entry.endpointName === 'getTasksListInfinite') {\n // patch getTasksListInfinite\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData('getTasksListInfinite', entry.originalArgs, (draft) => {\n // Apply each change to matching tasks in all pages\n for (const taskOperation of tasks) {\n if (taskOperation.type === 'create' && taskOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.pages[0].tasks.push(taskOperation.data)\n } else {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n // TODO: task is not found here, why?\n const task = page.tasks.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n }\n }\n }\n }),\n )\n\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n } else {\n // this updates the main overview cache task\n // it also updates any GetTasksByParent caches\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData(\n entry.endpointName as 'getOverviewTasksByFolders' | 'GetTasksByParent' | 'GetTasksList',\n entry.originalArgs,\n (draft) => {\n // Apply each change to matching tasks in the cache\n for (const taskOperation of tasks) {\n if (\n taskOperation.type === 'create' &&\n taskOperation.data &&\n entry.originalArgs.parentIds?.includes(taskOperation.data.folderId)\n ) {\n const patchTask = (tasksArrayDraft: EditorTaskNode[]) => {\n // @ts-expect-error\n tasksArrayDraft.push(taskOperation.data)\n }\n\n // Check if draft is an array or an object with a tasks property\n if (Array.isArray(draft)) {\n patchTask(draft)\n } else if (draft.tasks && Array.isArray(draft.tasks)) {\n // Handle object with tasks array case (like in GetTasksList)\n const draftArray = draft.tasks\n patchTask(draftArray)\n }\n } else {\n const patchTask = (tasksArrayDraft: EditorTaskNode[]) => {\n const task = tasksArrayDraft.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n }\n\n // Check if draft is an array or an object with a tasks property\n if (Array.isArray(draft)) {\n patchTask(draft)\n } else if (draft.tasks && Array.isArray(draft.tasks)) {\n // Handle object with tasks array case (like in GetTasksList)\n const draftArray = draft.tasks\n patchTask(draftArray)\n }\n }\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n }\n }\n}\n\nconst invalidateOverviewTasks = (\n tasks: PatchOperation[],\n {\n dispatch,\n }: {\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n) => {\n if (!tasks.length) return\n dispatch(getOverviewApi.util.invalidateTags(getOverviewTaskTags(tasks)))\n}\n\nexport const patchOverviewFolders = (\n folders: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const folderEntries = foldersQueries.util\n .selectInvalidatedBy(state, getOverviewFolderTags(folders))\n .filter((entry) => entry.endpointName === 'getFolderList')\n for (const entry of folderEntries) {\n const folderPatch = dispatch(\n foldersQueries.util.updateQueryData(\n entry.endpointName as 'getFolderList',\n entry.originalArgs,\n (draft) => {\n // Create a Map for O(1) folder lookups\n const folderMap = new Map()\n draft.folders.forEach((folder) => {\n folderMap.set(folder.id, folder)\n })\n\n for (const folderOperation of folders) {\n if (folderOperation.type === 'create' && folderOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.folders.push(folderOperation.data)\n } else {\n const folder = folderMap.get(folderOperation.entityId)\n\n if (folder) {\n updateEntityWithOperation(folder, folderOperation.data)\n }\n }\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(folderPatch)\n }\n}\n\ntype DeepPartial<T> = T extends object\n ? {\n [P in keyof T]?: DeepPartial<T[P]>\n }\n : T\n\nconst operationDataToDetailsData = (\n data: Record<string, any>,\n entityType: DetailsPanelEntityType,\n): DeepPartial<DetailsPanelEntityData> => {\n const sharedData: DeepPartial<DetailsPanelEntityData> = {\n name: data.name,\n attrib: data.attrib,\n status: data.status,\n tags: data.tags,\n label: data.label,\n updatedAt: data.updatedAt,\n createdAt: data.createdAt,\n hasReviewables: data.hasReviewables,\n thumbnailId: data.thumbnailId,\n }\n\n switch (entityType) {\n case 'task':\n return {\n ...sharedData,\n task: {\n assignees: data.assignees,\n label: data.label,\n name: data.name,\n taskType: data.taskType,\n },\n }\n case 'folder':\n return {\n ...sharedData,\n folder: {\n id: data.id,\n name: data.name,\n label: data.label,\n folderType: data.folderType,\n },\n }\n case 'version':\n return {\n ...sharedData,\n version: {\n id: data.id,\n name: data.name,\n },\n }\n case 'representation':\n return {\n ...sharedData,\n }\n }\n}\n\nexport const patchDetailsPanelEntity = (\n operations: PatchOperation[] = [],\n draft: DetailsPanelEntityData,\n) => {\n // find the entity we are updating from the draft\n const operation = operations.find((op) => op.entityId === draft.id)\n const operationData = operation?.data\n\n if (!operationData || operation.entityType === 'product' || operation.entityType === 'workfile')\n return console.warn('No operation data found or entity type not supported')\n\n // transform the data to match the details panel entity data\n const detailsPanelData = operationDataToDetailsData(operationData, operation.entityType)\n\n // If this is a folder and name is being updated, also update the path\n if (operation.entityType === 'folder' && operationData.name && draft.path) {\n // Construct new path by replacing the last segment with the new name\n const pathParts = draft.path.split('/')\n pathParts[pathParts.length - 1] = operationData.name\n detailsPanelData.path = pathParts.join('/')\n }\n\n // helper to deep‐clean undefined values\n function cleanUndefined(obj: any): void {\n Object.entries(obj).forEach(([key, val]) => {\n if (val === undefined) {\n delete obj[key]\n } else if (val !== null && typeof val === 'object') {\n cleanUndefined(val)\n }\n })\n }\n\n // remove all undefineds at root and nested levels\n cleanUndefined(detailsPanelData as Record<string, any>)\n\n const newData: DeepPartial<DetailsPanelEntityData> = {\n ...draft,\n ...detailsPanelData,\n attrib: {\n ...(draft?.attrib || {}),\n ...detailsPanelData.attrib,\n },\n folder: {\n ...(draft?.folder || {}),\n ...detailsPanelData.folder,\n },\n task: {\n ...(draft?.task || {}),\n ...detailsPanelData.task,\n },\n version: {\n ...(draft?.version || {}),\n ...detailsPanelData.version,\n },\n }\n\n // patch data onto the entity\n Object.assign(draft, newData)\n}\n\nconst patchListItems = (\n entities: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = entities.map((op) => ({ type: 'entityListItem', id: op.entityId }))\n const entries = entityListsQueriesGql.util.selectInvalidatedBy(state, tags)\n\n for (const entry of entries) {\n if (entry.endpointName === 'getListItemsInfinite') {\n const listItemsPatch = dispatch(\n entityListsQueriesGql.util.updateQueryData(\n 'getListItemsInfinite',\n entry.originalArgs,\n (draft) => {\n // Apply each change to matching tasks in all pages\n for (const listOperation of entities) {\n if (listOperation.type === 'update' && listOperation.data) {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n const item = page.items.find((item) => item.entityId === listOperation.entityId)\n if (item) {\n updateEntityWithOperation(item, listOperation.data)\n }\n }\n }\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches?.push(listItemsPatch)\n }\n }\n}\n\nconst splitByOpType = (operations: OperationModel[]) => {\n return operations.reduce(\n (acc: Record<OperationModel['type'], OperationModel[]>, operation) => {\n acc[operation.type].push(operation)\n return acc\n },\n {\n create: [],\n update: [],\n delete: [],\n },\n )\n}\n\nconst operationsEnhanced = operationsApi.enhanceEndpoints({\n endpoints: {\n operations: {},\n },\n})\n\n// enhance the argument type to include some extra fields\ninterface UpdateOverviewEntitiesArg extends OperationsApiArg {\n patchOperations?: PatchOperation[] // extra entities to patch\n}\n\nconst operationsApiEnhancedInjected = operationsEnhanced.injectEndpoints({\n endpoints: (build) => ({\n updateOverviewEntities: build.mutation<\n OperationsResponseModel | undefined,\n UpdateOverviewEntitiesArg\n >({\n async queryFn(arg, { dispatch }) {\n try {\n const result = await dispatch(operationsEnhanced.endpoints.operations.initiate(arg))\n\n const data = result.data\n // check for any errors in the result\n const uniqueErrors = new Set()\n const uniqueErrorCodes = new Set()\n for (const op of data?.operations || []) {\n if (op.success === false && op.detail) {\n if (!uniqueErrors.has(op.detail)) {\n uniqueErrors.add(op.detail)\n }\n if (!uniqueErrorCodes.has(op.errorCode)) {\n uniqueErrorCodes.add(op.errorCode)\n }\n }\n }\n\n if (uniqueErrors.size > 0) {\n const error = {\n status: 'FETCH_ERROR',\n error: Array.from(uniqueErrors).join(', '),\n errorCodes: Array.from(uniqueErrorCodes),\n } as FetchBaseQueryError\n return { error }\n } else {\n return { data }\n }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n async onQueryStarted(\n { operationsRequestModel, patchOperations = [] },\n { dispatch, queryFulfilled, getState },\n ) {\n if (!operationsRequestModel.operations?.length) return\n const { operations } = operationsRequestModel\n // we need to split the operations by entity type\n const operationsByType = operations.reduce(\n (acc: Record<OperationModel['entityType'], OperationModel[]>, operation) => {\n acc[operation.entityType].push(operation)\n return acc\n },\n {\n task: [],\n folder: [],\n product: [],\n version: [],\n representation: [],\n workfile: [],\n },\n )\n\n // collect patches incase we need to undo them\n const state = getState()\n const patches: any[] = []\n\n // patch the overview tasks\n if (operationsByType.task?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.task)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing tasks\n patchOverviewTasks(updatesToPatch, { state, dispatch }, patches)\n // invalidate the caches for tasks being created and deleted\n invalidateOverviewTasks([...deleteOps], {\n dispatch,\n })\n }\n\n // patch the overview folders (any other folders from foldersList)\n if (operationsByType.folder?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.folder)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing folders\n patchOverviewFolders(updatesToPatch, { state, dispatch }, patches)\n // invalidate the caches for folders being created and deleted\n if (deleteOps.length) {\n dispatch(foldersQueries.util.invalidateTags([{ type: 'folder', id: 'LIST' }]))\n }\n }\n\n const patchExtraTasks = patchOperations.filter((op) => op.entityType === 'task')\n const patchExtraFolders = patchOperations.filter((op) => op.entityType === 'folder')\n\n if (patchExtraTasks.length) {\n // often used for updating inherited dependents\n patchOverviewTasks(patchExtraTasks, { state, dispatch }, patches)\n }\n\n if (patchExtraFolders.length) {\n // often used for updating inherited dependents\n patchOverviewFolders(patchExtraFolders, { state, dispatch }, patches)\n }\n\n // patch the list items\n patchListItems([...operations, ...patchOperations], { state, dispatch }, patches)\n\n // try to patch any details panels\n // first we patch the individual entities\n // then we patch the details panel cache\n const entityTags = operations.map((op) => ({\n id: op.entityId,\n type: op.entityType,\n }))\n const entitiesTags = entityTags.map((tag) => ({\n type: 'entities',\n id: tag.id,\n }))\n\n // invalidates the details panel cache so that it fetches all individual entities again (using it's updated cache)\n const invalidateEntryPanel = () =>\n dispatch(detailsPanelQueries.util.invalidateTags(entitiesTags))\n\n // the individual entities that are patched for the details panel\n // remember the details panel cache is made up of individual entity caches\n const detailsPanelEntityCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entityTags,\n )\n\n // the cache for the whole details panel\n const detailsPanelEntitiesCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entitiesTags,\n )\n\n for (const entry of detailsPanelEntitiesCaches) {\n if (entry.endpointName !== 'getEntitiesDetailsPanel') continue\n const entitiesDetailsResult = dispatch(\n detailsPanelQueries.util.updateQueryData(\n entry.endpointName as 'getEntitiesDetailsPanel',\n entry.originalArgs,\n (draft) => {\n for (const entity of draft) {\n patchDetailsPanelEntity(operations, entity)\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches.push(entitiesDetailsResult)\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // undo all patches if there is an error\n for (const patch of patches) {\n patch.undo()\n }\n\n if (detailsPanelEntityCaches.length) {\n // we invalidate the tags for the detailsPanelEntityCaches that were patched\n // invalidate the details panel cache\n invalidateEntryPanel()\n }\n }\n },\n invalidatesTags: (_r, _e, { operationsRequestModel, projectName }) => {\n type Tags = { id: string; type: string }[]\n const userDashboardTags: Tags = [{ type: 'kanban', id: 'project-' + projectName }],\n taskProgressTags: Tags = []\n\n operationsRequestModel.operations?.forEach((op) => {\n const { entityId } = op\n if (entityId) {\n taskProgressTags.push({ type: 'progress', id: entityId })\n } else {\n // new entity created, so we should invalidate everything\n taskProgressTags.push({ type: 'progress', id: 'LIST' })\n }\n })\n\n return [...userDashboardTags, ...taskProgressTags]\n },\n }),\n }),\n})\n\nexport const { useUpdateOverviewEntitiesMutation } = operationsApiEnhancedInjected\nexport { operationsApiEnhancedInjected as overviewQueries }\n"],"names":["getOverviewApi","task","foldersQueries","operations","entityListsQueriesGql","item","operationsApi","detailsPanelQueries"],"mappings":"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"}