@ynput/ayon-frontend-shared 0.3.31 → 0.3.32

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 (877) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +24 -22
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +213 -197
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/Slicer.cjs.js +1 -1
  8. package/dist/Slicer.es.js +19 -18
  9. package/dist/Slicer.es.js.map +1 -1
  10. package/dist/_virtual/index.cjs22.js +1 -1
  11. package/dist/_virtual/index.cjs23.js +1 -1
  12. package/dist/_virtual/index.cjs24.js +1 -1
  13. package/dist/_virtual/index.cjs4.js +1 -1
  14. package/dist/_virtual/index.cjs5.js +1 -1
  15. package/dist/_virtual/index.cjs6.js +1 -1
  16. package/dist/_virtual/index.cjs8.js +1 -1
  17. package/dist/_virtual/index.es19.js +2 -2
  18. package/dist/_virtual/index.es20.js +2 -2
  19. package/dist/_virtual/index.es22.js +3 -3
  20. package/dist/_virtual/index.es23.js +5 -5
  21. package/dist/_virtual/index.es24.js +5 -5
  22. package/dist/_virtual/index.es4.js +2 -5
  23. package/dist/_virtual/index.es4.js.map +1 -1
  24. package/dist/_virtual/index.es5.js +5 -2
  25. package/dist/_virtual/index.es5.js.map +1 -1
  26. package/dist/_virtual/index.es6.js +2 -2
  27. package/dist/_virtual/index.es8.js +2 -2
  28. package/dist/api.cjs.js +1 -1
  29. package/dist/api.es.js +453 -434
  30. package/dist/api.es.js.map +1 -1
  31. package/dist/index.cjs.js +1 -1
  32. package/dist/index.es.js +11 -9
  33. package/dist/index.es.js.map +1 -1
  34. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  35. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  36. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  37. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  38. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  39. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  40. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  41. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  42. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  43. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  44. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  45. package/dist/node_modules/remove-accents/index.es.js +1 -1
  46. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  47. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  48. package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
  49. package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
  50. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  51. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  52. package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
  53. package/dist/shared/node_modules/prop-types/index.es.js +1 -1
  54. package/dist/shared/src/api/base/client.cjs.js +1 -1
  55. package/dist/shared/src/api/base/client.cjs.js.map +1 -1
  56. package/dist/shared/src/api/base/client.es.js +21 -17
  57. package/dist/shared/src/api/base/client.es.js.map +1 -1
  58. package/dist/shared/src/api/generated/folders.cjs.js +1 -1
  59. package/dist/shared/src/api/generated/folders.cjs.js.map +1 -1
  60. package/dist/shared/src/api/generated/folders.es.js +2 -14
  61. package/dist/shared/src/api/generated/folders.es.js.map +1 -1
  62. package/dist/shared/src/api/generated/graphql.cjs.js +237 -55
  63. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  64. package/dist/shared/src/api/generated/graphql.es.js +361 -161
  65. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  66. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  67. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  68. package/dist/shared/src/api/queries/activities/activityQueries.cjs.js +1 -0
  69. package/dist/shared/src/api/queries/activities/activityQueries.cjs.js.map +1 -1
  70. package/dist/shared/src/api/queries/activities/activityQueries.es.js +1 -0
  71. package/dist/shared/src/api/queries/activities/activityQueries.es.js.map +1 -1
  72. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js +1 -1
  73. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js.map +1 -1
  74. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js +33 -21
  75. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js.map +1 -1
  76. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
  77. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
  78. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +74 -60
  79. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
  80. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js +2 -0
  81. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js.map +1 -0
  82. package/dist/shared/src/api/queries/columnStats/columnStats.es.js +96 -0
  83. package/dist/shared/src/api/queries/columnStats/columnStats.es.js.map +1 -0
  84. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js +2 -0
  85. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -0
  86. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js +88 -0
  87. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -0
  88. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
  89. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  90. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +62 -48
  91. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  92. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +1 -1
  93. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  94. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +7 -3
  95. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  96. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  97. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  98. package/dist/shared/src/api/queries/entityLists/getLists.es.js +94 -79
  99. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  100. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -1
  101. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  102. package/dist/shared/src/api/queries/folders/getFolders.es.js +104 -71
  103. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  104. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  105. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  106. package/dist/shared/src/api/queries/overview/getOverview.es.js +265 -216
  107. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  108. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +1 -1
  109. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  110. package/dist/shared/src/api/queries/overview/updateOverview.es.js +198 -183
  111. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  112. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  113. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  114. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +138 -107
  115. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  116. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  117. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  118. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +332 -239
  119. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  120. package/dist/shared/src/api/queries/views/updateViews.cjs.js +1 -1
  121. package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
  122. package/dist/shared/src/api/queries/views/updateViews.es.js +38 -38
  123. package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
  124. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +1 -1
  125. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
  126. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +3 -2
  127. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
  128. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +1 -1
  129. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  130. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +3 -2
  131. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  132. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  133. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  134. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +4 -2
  135. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  136. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  137. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  138. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +3 -2
  139. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  140. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +1 -1
  141. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  142. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +3 -2
  143. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  144. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  145. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  146. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +3 -2
  147. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  148. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
  149. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
  150. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +3 -2
  151. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
  152. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  153. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  154. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +137 -158
  155. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  156. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  157. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  158. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +4 -2
  159. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  160. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  161. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  162. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +3 -2
  163. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  164. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  165. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  166. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +5 -4
  167. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  168. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  169. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  170. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +3 -2
  171. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  172. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
  173. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  174. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +3 -2
  175. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  176. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  177. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  178. package/dist/shared/src/components/LinksManager/LinksManager.es.js +3 -2
  179. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  180. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  181. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  182. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +4 -2
  183. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  184. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  185. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  186. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +3 -2
  187. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  188. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
  189. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
  190. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +3 -2
  191. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
  192. package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
  193. package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
  194. package/dist/shared/src/components/Menu/Menu.es.js +3 -2
  195. package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
  196. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  197. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  198. package/dist/shared/src/components/Menu/MenuItem.es.js +1 -0
  199. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  200. package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
  201. package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
  202. package/dist/shared/src/components/Menu/MenuList.es.js +3 -2
  203. package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
  204. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +1 -1
  205. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  206. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +3 -2
  207. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  208. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  209. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  210. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +3 -2
  211. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  212. package/dist/shared/src/components/Powerpack/useFreeTrialLink.cjs.js +1 -1
  213. package/dist/shared/src/components/Powerpack/useFreeTrialLink.cjs.js.map +1 -1
  214. package/dist/shared/src/components/Powerpack/useFreeTrialLink.es.js +3 -2
  215. package/dist/shared/src/components/Powerpack/useFreeTrialLink.es.js.map +1 -1
  216. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +1 -1
  217. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  218. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +79 -77
  219. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  220. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  221. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  222. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +6 -4
  223. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  224. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  225. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  226. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +3 -2
  227. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  228. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  229. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  230. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +4 -2
  231. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  232. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  233. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  234. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +4 -2
  235. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  236. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  237. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  238. package/dist/shared/src/components/RenameForm/RenameForm.es.js +4 -2
  239. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  240. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +1 -1
  241. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  242. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +3 -2
  243. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  244. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  245. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  246. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +4 -2
  247. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  248. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  249. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  250. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +5 -3
  251. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  252. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  253. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  254. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +4 -2
  255. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  256. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
  257. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  258. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +3 -2
  259. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  260. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  261. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  262. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +4 -2
  263. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  264. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  265. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  266. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +7 -6
  267. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  268. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +1 -1
  269. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  270. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +3 -2
  271. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  272. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
  273. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  274. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +6 -4
  275. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  276. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  277. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  278. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +4 -2
  279. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  280. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
  281. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
  282. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +3 -2
  283. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
  284. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +2 -2
  285. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  286. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +11 -10
  287. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  288. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js +1 -1
  289. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js.map +1 -1
  290. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js +49 -44
  291. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js.map +1 -1
  292. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js +3 -3
  293. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js.map +1 -1
  294. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js +32 -22
  295. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js.map +1 -1
  296. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  297. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  298. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +4 -2
  299. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  300. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  301. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  302. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +8 -6
  303. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  304. package/dist/shared/src/components/Watchers/Watchers.cjs.js +1 -1
  305. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  306. package/dist/shared/src/components/Watchers/Watchers.es.js +3 -2
  307. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  308. package/dist/shared/src/config/powerpackFeatures.cjs.js +1 -1
  309. package/dist/shared/src/config/powerpackFeatures.cjs.js.map +1 -1
  310. package/dist/shared/src/config/powerpackFeatures.es.js +7 -1
  311. package/dist/shared/src/config/powerpackFeatures.es.js.map +1 -1
  312. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  313. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  314. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +4 -2
  315. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  316. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  317. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  318. package/dist/shared/src/containers/Actions/Actions.es.js +3 -2
  319. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  320. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  321. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  322. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +4 -2
  323. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  324. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  325. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  326. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +4 -2
  327. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  328. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  329. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  330. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +4 -2
  331. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  332. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  333. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  334. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +41 -38
  335. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  336. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  337. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  338. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +4 -2
  339. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  340. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  341. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  342. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +4 -2
  343. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  344. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  345. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  346. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +4 -2
  347. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  348. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  349. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  350. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +3 -2
  351. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  352. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  353. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  354. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +18 -16
  355. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  356. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  357. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  358. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +4 -2
  359. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  360. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  361. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  362. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +4 -2
  363. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  364. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  365. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  366. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +13 -11
  367. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  368. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js +1 -1
  369. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js.map +1 -1
  370. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js +14 -14
  371. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js.map +1 -1
  372. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  373. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  374. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +13 -9
  375. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  376. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  377. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  378. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +4 -2
  379. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  380. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  381. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  382. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +4 -2
  383. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  384. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  385. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  386. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +4 -2
  387. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  388. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  389. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  390. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +4 -2
  391. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  392. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  393. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  394. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +3 -2
  395. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  396. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  397. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  398. package/dist/shared/src/containers/Feed/Feed.es.js +5 -4
  399. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  400. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  401. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  402. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +4 -2
  403. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  404. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  405. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  406. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +4 -2
  407. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  408. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  409. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  410. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +4 -2
  411. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  412. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  413. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  414. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +28 -27
  415. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  416. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
  417. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  418. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +4 -2
  419. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  420. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  421. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  422. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +8 -6
  423. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  424. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  425. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  426. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +3 -2
  427. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  428. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  429. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  430. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +3 -2
  431. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  432. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  433. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  434. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +3 -2
  435. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  436. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  437. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  438. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +37 -44
  439. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  440. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.cjs.js +1 -1
  441. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.cjs.js.map +1 -1
  442. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.es.js +3 -2
  443. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.es.js.map +1 -1
  444. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  445. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  446. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +6 -5
  447. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  448. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.cjs.js +1 -1
  449. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.cjs.js.map +1 -1
  450. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.es.js +14 -13
  451. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.es.js.map +1 -1
  452. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +1 -1
  453. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  454. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +3 -2
  455. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  456. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  457. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  458. package/dist/shared/src/containers/ListTable/ListTable.es.js +212 -204
  459. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  460. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  461. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  462. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +4 -2
  463. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  464. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  465. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  466. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +4 -2
  467. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  468. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  469. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  470. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +729 -675
  471. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  472. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +32 -10
  473. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  474. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +42 -18
  475. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  476. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  477. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  478. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +17 -14
  479. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  480. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  481. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  482. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +57 -43
  483. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  484. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  485. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  486. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +4 -2
  487. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  488. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  489. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  490. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +4 -2
  491. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  492. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js +48 -0
  493. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js.map +1 -0
  494. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js +103 -0
  495. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js.map +1 -0
  496. package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js +2 -0
  497. package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js.map +1 -0
  498. package/dist/shared/src/containers/ProjectTreeTable/constants.es.js +6 -0
  499. package/dist/shared/src/containers/ProjectTreeTable/constants.es.js.map +1 -0
  500. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  501. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  502. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +4 -2
  503. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  504. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +4 -4
  505. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  506. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +7 -5
  507. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  508. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
  509. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
  510. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  511. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  512. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +215 -181
  513. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  514. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  515. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  516. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +5 -4
  517. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  518. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +1 -1
  519. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -1
  520. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +3 -2
  521. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -1
  522. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js +1 -1
  523. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js.map +1 -1
  524. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js +21 -17
  525. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js.map +1 -1
  526. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js +1 -1
  527. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js.map +1 -1
  528. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js +1 -2
  529. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js.map +1 -1
  530. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  531. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  532. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +17 -11
  533. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  534. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  535. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  536. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +3 -2
  537. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  538. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  539. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  540. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +83 -81
  541. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  542. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  543. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  544. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +116 -111
  545. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  546. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  547. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  548. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +6 -3
  549. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  550. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  551. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  552. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +4 -2
  553. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  554. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  555. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  556. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +4 -2
  557. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  558. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  559. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  560. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +4 -2
  561. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  562. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  563. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  564. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +3 -2
  565. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  566. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.cjs.js.map +1 -1
  567. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.es.js.map +1 -1
  568. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  569. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  570. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +4 -2
  571. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  572. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  573. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  574. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +4 -2
  575. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  576. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  577. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  578. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +4 -2
  579. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  580. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  581. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  582. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +4 -2
  583. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  584. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  585. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  586. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +4 -2
  587. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  588. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  589. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  590. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +80 -78
  591. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  592. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  593. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  594. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +4 -2
  595. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  596. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  597. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  598. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +45 -44
  599. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  600. package/dist/shared/src/containers/ProjectTreeTable/types/summaryTypes.cjs.js +2 -0
  601. package/dist/shared/src/containers/ProjectTreeTable/types/summaryTypes.cjs.js.map +1 -0
  602. package/dist/shared/src/containers/ProjectTreeTable/types/summaryTypes.es.js +16 -0
  603. package/dist/shared/src/containers/ProjectTreeTable/types/summaryTypes.es.js.map +1 -0
  604. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  605. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  606. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +15 -13
  607. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  608. package/dist/shared/src/containers/ProjectTreeTable/utils/checkColumnVisibility.cjs.js +1 -1
  609. package/dist/shared/src/containers/ProjectTreeTable/utils/checkColumnVisibility.cjs.js.map +1 -1
  610. package/dist/shared/src/containers/ProjectTreeTable/utils/checkColumnVisibility.es.js +29 -25
  611. package/dist/shared/src/containers/ProjectTreeTable/utils/checkColumnVisibility.es.js.map +1 -1
  612. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.cjs.js +2 -0
  613. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.cjs.js.map +1 -0
  614. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.es.js +17 -0
  615. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.es.js.map +1 -0
  616. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +1 -1
  617. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  618. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +4 -2
  619. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  620. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
  621. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  622. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +12 -10
  623. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  624. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  625. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  626. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +6 -4
  627. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  628. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +1 -1
  629. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
  630. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +3 -2
  631. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
  632. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  633. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  634. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +4 -2
  635. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  636. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  637. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  638. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +4 -2
  639. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  640. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +1 -1
  641. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
  642. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +3 -2
  643. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
  644. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +4 -4
  645. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  646. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +24 -19
  647. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  648. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  649. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  650. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +4 -2
  651. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  652. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  653. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  654. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +4 -2
  655. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  656. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +1 -1
  657. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
  658. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +3 -2
  659. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
  660. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  661. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  662. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +4 -2
  663. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  664. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  665. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  666. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +5 -4
  667. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  668. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
  669. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
  670. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +3 -2
  671. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
  672. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
  673. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
  674. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +3 -2
  675. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
  676. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js +1 -1
  677. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js.map +1 -1
  678. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js +4 -2
  679. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js.map +1 -1
  680. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
  681. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
  682. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +3 -2
  683. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
  684. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  685. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  686. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +12 -11
  687. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  688. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js +1 -1
  689. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -1
  690. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js +3 -2
  691. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -1
  692. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  693. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  694. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +3 -2
  695. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  696. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  697. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  698. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +4 -2
  699. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  700. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +1 -1
  701. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  702. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +3 -2
  703. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  704. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  705. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  706. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +119 -118
  707. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  708. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js +1 -1
  709. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js.map +1 -1
  710. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js +18 -16
  711. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js.map +1 -1
  712. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
  713. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  714. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +79 -51
  715. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  716. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.cjs.js +1 -1
  717. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.cjs.js.map +1 -1
  718. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.es.js +19 -17
  719. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.es.js.map +1 -1
  720. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
  721. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
  722. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +3 -2
  723. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
  724. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  725. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  726. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +6 -5
  727. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  728. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +1 -1
  729. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -1
  730. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +12 -11
  731. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -1
  732. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +1 -1
  733. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  734. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +3 -2
  735. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  736. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  737. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  738. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +78 -65
  739. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  740. package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
  741. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  742. package/dist/shared/src/context/AddonProjectContext.es.js +5 -4
  743. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  744. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  745. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  746. package/dist/shared/src/context/DetailsPanelContext.es.js +5 -4
  747. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  748. package/dist/shared/src/context/GlobalContext.cjs.js +1 -1
  749. package/dist/shared/src/context/GlobalContext.cjs.js.map +1 -1
  750. package/dist/shared/src/context/GlobalContext.es.js +5 -4
  751. package/dist/shared/src/context/GlobalContext.es.js.map +1 -1
  752. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  753. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  754. package/dist/shared/src/context/PowerpackContext.es.js +7 -6
  755. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  756. package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
  757. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
  758. package/dist/shared/src/context/ProjectContext.es.js +5 -4
  759. package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
  760. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  761. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  762. package/dist/shared/src/context/ProjectFoldersContext.es.js +5 -4
  763. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  764. package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
  765. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  766. package/dist/shared/src/context/RemoteModulesContext.es.js +5 -4
  767. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  768. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  769. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  770. package/dist/shared/src/context/SubtasksModulesContext.es.js +5 -4
  771. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  772. package/dist/shared/src/context/UriContext.cjs.js +1 -1
  773. package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
  774. package/dist/shared/src/context/UriContext.es.js +6 -5
  775. package/dist/shared/src/context/UriContext.es.js.map +1 -1
  776. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  777. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  778. package/dist/shared/src/context/WebsocketContext.es.js +6 -4
  779. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  780. package/dist/shared/src/hooks/useActionTriggers.cjs.js +1 -1
  781. package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
  782. package/dist/shared/src/hooks/useActionTriggers.es.js +3 -2
  783. package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
  784. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  785. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  786. package/dist/shared/src/hooks/useEntityUpdate.es.js +3 -2
  787. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  788. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js +1 -1
  789. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js.map +1 -1
  790. package/dist/shared/src/hooks/useGetEntityGroups.es.js +3 -2
  791. package/dist/shared/src/hooks/useGetEntityGroups.es.js.map +1 -1
  792. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  793. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  794. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +3 -2
  795. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  796. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
  797. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
  798. package/dist/shared/src/hooks/useHierarchyTable.es.js +3 -2
  799. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
  800. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +1 -1
  801. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  802. package/dist/shared/src/hooks/useScopedStatuses.es.js +5 -4
  803. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  804. package/dist/shared/src/hooks/useScopedTypes.cjs.js +1 -1
  805. package/dist/shared/src/hooks/useScopedTypes.cjs.js.map +1 -1
  806. package/dist/shared/src/hooks/useScopedTypes.es.js +3 -2
  807. package/dist/shared/src/hooks/useScopedTypes.es.js.map +1 -1
  808. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  809. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  810. package/dist/shared/src/hooks/useUserProjectConfig.es.js +3 -2
  811. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  812. package/dist/shared/src/util/columnConfigConverter.cjs.js +1 -1
  813. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
  814. package/dist/shared/src/util/columnConfigConverter.es.js +86 -65
  815. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
  816. package/dist/shared/src/util/getThumbnailUrl.cjs.js +2 -0
  817. package/dist/shared/src/util/getThumbnailUrl.cjs.js.map +1 -0
  818. package/dist/shared/src/util/getThumbnailUrl.es.js +23 -0
  819. package/dist/shared/src/util/getThumbnailUrl.es.js.map +1 -0
  820. package/dist/shared/src/util/thumbnailWebsocket.cjs.js +2 -0
  821. package/dist/shared/src/util/thumbnailWebsocket.cjs.js.map +1 -0
  822. package/dist/shared/src/util/thumbnailWebsocket.es.js +54 -0
  823. package/dist/shared/src/util/thumbnailWebsocket.es.js.map +1 -0
  824. package/dist/types/api/generated/folders.d.ts +1 -6
  825. package/dist/types/api/generated/graphql.d.ts +275 -6
  826. package/dist/types/api/generated/graphqlLinks.d.ts +7 -4
  827. package/dist/types/api/queries/activities/activityQueries.d.ts +1 -0
  828. package/dist/types/api/queries/activities/getActivities.d.ts +47 -0
  829. package/dist/types/api/queries/activities/updateActivities.d.ts +94 -0
  830. package/dist/types/api/queries/activities/util/activitiesHelpers.d.ts +1 -0
  831. package/dist/types/api/queries/columnStats/columnStats.d.ts +28 -0
  832. package/dist/types/api/queries/columnStats/index.d.ts +2 -0
  833. package/dist/types/api/queries/columnStats/metricTargets.d.ts +31 -0
  834. package/dist/types/api/queries/entities/getEntity.d.ts +47 -0
  835. package/dist/types/api/queries/entities/getEntityPanel.d.ts +47 -0
  836. package/dist/types/api/queries/entities/transformDetailsPanelData.d.ts +1 -0
  837. package/dist/types/api/queries/entities/updateEntity.d.ts +47 -0
  838. package/dist/types/api/queries/entityLists/getLists.d.ts +47 -0
  839. package/dist/types/api/queries/index.d.ts +1 -0
  840. package/dist/types/api/queries/overview/getOverview.d.ts +733 -1
  841. package/dist/types/api/queries/project/getProject.d.ts +47 -0
  842. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +69 -0
  843. package/dist/types/api/queries/users/getUsers.d.ts +47 -0
  844. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +828 -1
  845. package/dist/types/components/EntityPanelUploader/EntityPanelUploader.d.ts +1 -11
  846. package/dist/types/components/Thumbnail/StackedThumbnails.d.ts +2 -2
  847. package/dist/types/components/Thumbnail/Thumbnail.d.ts +2 -2
  848. package/dist/types/components/ThumbnailSimple/ThumbnailSimple.d.ts +1 -1
  849. package/dist/types/config/powerpackFeatures.d.ts +1 -1
  850. package/dist/types/containers/DetailsPanel/containers/FeedWrapper.d.ts +1 -0
  851. package/dist/types/containers/DetailsPanel/helpers/getThumbnails.d.ts +2 -2
  852. package/dist/types/containers/Feed/components/ActivityVersions/ActivityVersions.d.ts +1 -0
  853. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +8 -3
  854. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.styled.d.ts +2 -0
  855. package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +1 -1
  856. package/dist/types/containers/ProjectTreeTable/components/TableFooterRow.d.ts +14 -0
  857. package/dist/types/containers/ProjectTreeTable/constants.d.ts +2 -0
  858. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +10 -0
  859. package/dist/types/containers/ProjectTreeTable/context/SelectionCellsContext.d.ts +0 -1
  860. package/dist/types/containers/ProjectTreeTable/index.d.ts +1 -0
  861. package/dist/types/containers/ProjectTreeTable/types/index.d.ts +17 -1
  862. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +2 -0
  863. package/dist/types/containers/ProjectTreeTable/types/summaryTypes.d.ts +50 -0
  864. package/dist/types/containers/ProjectTreeTable/types/table.d.ts +3 -0
  865. package/dist/types/containers/ProjectTreeTable/utils/checkColumnVisibility.d.ts +2 -0
  866. package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +1 -0
  867. package/dist/types/containers/ProjectTreeTable/utils/pinningUtils.d.ts +6 -0
  868. package/dist/types/containers/ProjectTreeTable/widgets/ThumbnailWidget.d.ts +1 -1
  869. package/dist/types/containers/Views/hooks/useSelectedView.d.ts +2 -1
  870. package/dist/types/containers/Views/utils/viewUpdateHelper.d.ts +7 -3
  871. package/dist/types/util/getThumbnailUrl.d.ts +18 -0
  872. package/dist/types/util/index.d.ts +2 -0
  873. package/dist/types/util/thumbnailWebsocket.d.ts +21 -0
  874. package/dist/util.cjs.js +1 -1
  875. package/dist/util.es.js +35 -30
  876. package/dist/util.es.js.map +1 -1
  877. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/dataImport.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");const U=require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");const Z=require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");const o=require("react");require("../../../context/RemoteModulesContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("lodash");require("react-toastify");require("../../../../../_virtual/jsx-runtime.cjs.js");require("../../../context/PowerpackContextInstance.cjs.js");require("../../../context/UriContext.cjs.js");require("../../../context/DetailsPanelContextInstance.cjs.js");require("../../../context/SubtasksModulesContextInstance.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");require("../../../context/ProjectContext.cjs.js");const Ue=require("../../../context/ProjectFoldersContext.cjs.js");require("react-redux");require("custom-protocol-check");const De=require("../../../hooks/useGroupedPagination.cjs.js");require("../components/GroupSettingsFallback.cjs.js");require("uuid");const Ee=require("../../../util/getGroupByDataType.cjs.js");require("../../../util/pubsub.cjs.js");const be=require("../utils/loadingUtils.cjs.js"),B=require("./useBuildGroupByTableData.cjs.js"),Be=({projectName:g,selectedFolders:h,taskIds:d,taskFilters:u,folderFilters:f,sorting:F,groupBy:c,taskGroups:L=[],taskGroupsCount:$,expanded:y,showHierarchy:k,isFlatFolderView:q=!1,attribFields:H,modules:V,skipLinks:Q})=>{const{getGroupQueries:C,isLoading:O}=V,{folders:l,isLoading:ee,isUninitialized:re,refetch:ie}=Ue.useProjectFoldersContext(),P=Object.entries(y).filter(([,e])=>e).filter(([e])=>!B.isGroupId(e)).map(([e])=>e),{data:m=[],isFetching:A,refetch:te,isUninitialized:se}=U.useGetOverviewTasksByFoldersQuery({projectName:g,parentIds:P,filter:u.filterString,folderFilter:f.filterString,search:u.search},{skip:!P.length||!k&&!q}),_=!u.filterString&&!f.filterString&&!u.search&&!f.search||!l.length||!k&&!q,{data:v,isUninitialized:w,isLoading:ne,isUninitialized:ae,refetch:ue}=U.useGetSearchFoldersQuery({projectName:g,folderSearchRequest:{taskFilter:u.filter?.conditions?.length?u.filter:void 0,folderFilter:f.filter?.conditions?.length?f.filter:void 0,search:u.search}},{skip:_}),oe=o.useMemo(()=>{const e=new Set;return l.forEach(n=>{if(!n.parentId){e.add(n.id);return}const t=n.parentId,r=h.includes(n.id);(y[t]===!0||r)&&e.add(n.id)}),e},[l,v,_,y,h]),{data:R=[],refetch:de,isUninitialized:ce}=Z.useGetEntityLinksQuery({projectName:g,entityIds:Array.from(oe),entityType:"folder"},{skip:Q}),p=o.useMemo(()=>{const e=new Map,n=t=>({...t,entityId:t.id,entityType:"folder",links:R?.find(i=>i.id===t.id)?.links||[]});if(!w&&v&&l.length){const t=new Set;for(const s of v)t.add(s);const r=new Map;for(const s of l)r.set(s.id,s);const i=s=>{const a=r.get(s);a&&a.parentId&&(t.add(a.parentId),i(a.parentId))};if(!q){const s=[...t];for(const a of s)i(a)}for(const s of l)t.has(s.id)&&e.set(s.id,n(s))}else for(const t of l)e.set(t.id,n(t));if(h.length){const t=h.map(i=>e.get(i)?.path).filter(Boolean),r=new Map;return e.forEach((i,s)=>{const a=i.path,M=a.split("/");let z=!1;for(let I=0;I<M.length;I++){const xe=M.slice(0,I+1).join("/");if(t.some(ze=>ze===xe)){z=!0;break}}const Ge=t.some(I=>a.startsWith(I+"/"));(z||Ge)&&r.set(s,n(i))}),r}return e},[l,v,w,h,R,q]),le=o.useMemo(()=>A?be.determineLoadingTaskFolders({expandedFoldersTasks:m,expandedParentIds:P,foldersMap:p}):{},[A,m,P,p]),[W,fe]=o.useState("");o.useEffect(()=>{W&&fe("")},[F,W]);const T={...F[0]},S=T?.id==="name"&&!k?"path":T?.id==="subType"?"taskType":T?.id,j=h.length?Array.from(p.keys()):void 0,{data:D,isLoading:qe,isFetching:Qe,fetchNextPage:pe,hasNextPage:ge,isFetchingNextPage:he,isUninitialized:ke,refetch:Te}=U.useGetTasksListInfiniteInfiniteQuery({projectName:g,filter:u.filterString,folderFilter:f.filterString,search:u.search,folderIds:d?.length?void 0:j,taskIds:d?.length?d:void 0,sortBy:S?S.replace("_","."):void 0,desc:!!T?.desc},{skip:(k||q)&&!d?.length,initialPageParam:{cursor:"",desc:!!T?.desc}}),E=o.useMemo(()=>D?.pages?D.pages.flatMap(e=>e.tasks||[]):[],[D?.pages]),{pageCounts:b,incrementPageCount:ye}=De.useGroupedPagination({groups:L}),Me=Ee.getGroupByDataType(c,H),N=o.useMemo(()=>Object.entries(y).filter(([,e])=>e).filter(([e])=>B.isGroupId(e)).map(([e])=>e.slice(B.GROUP_BY_ID.length)),[y]),Y=o.useMemo(()=>c?(C?.({groups:L,taskGroups:L,filters:u.filter,groupBy:c,groupPageCounts:b})??[]).filter(n=>N.includes(n.value)):[],[c,L,b,Me,u.filter,C,N]),{data:{tasks:J=[]}={},isUninitialized:Ie,refetch:Le}=U.useGetGroupedTasksListQuery({projectName:g,groups:Y,sortBy:S?S.replace("_","."):void 0,desc:!!T?.desc,search:u.search,folderFilter:f.filterString,folderIds:j,groupCount:$},{skip:!c||!Y.length||O}),G=o.useMemo(()=>d?.length?E:k||q?m:c?J:E,[d,k,q,c,E,m,J]),K=o.useMemo(()=>new Set(G.map(e=>e.id)),[G]),{data:X=[],refetch:Pe,isUninitialized:me}=Z.useGetEntityLinksQuery({projectName:g,entityIds:Array.from(K),entityType:"task"},{skip:K.size===0||Q}),ve=e=>{c?e&&e in b&&ye(e):ge&&pe()},{tasksMap:Se,tasksByFolderMap:x}=o.useMemo(()=>{const e=new Map,n=new Map,t=r=>({...r,entityId:r.id,entityType:"task",links:X?.find(i=>i.id===r.id)?.links||[]});for(const r of G){const i=r.id,s=r.folderId;if(e.has(i)){const a=e.get(i),M=t(r),z={...a,...M,groups:[...a.groups||[],...M.groups||[]]};e.set(i,z)}else e.set(i,t(r));if(n.has(s)){const a=n.get(s);a.includes(i)||a.push(i)}else n.set(s,[i])}return{tasksMap:e,tasksByFolderMap:n}},[G,X]);return{foldersMap:o.useMemo(()=>{if(!d?.length||!x.size)return p;const e=new Set;for(const r of x.keys())e.add(r);const n=r=>{const i=p.get(r);if(i&&i.parentId){const s=i.parentId;e.has(s)||(e.add(s),n(s))}};for(const r of e)n(r);const t=new Map;for(const[r,i]of p)e.has(r)&&t.set(r,i);return t},[p,x,d]),tasksMap:Se,tasksByFolderMap:x,isLoadingAll:ee||qe||ne||O,isLoadingMore:he,loadingTasks:le,fetchNextPage:ve,reloadTableData:()=>{re||ie(),se||te(),ae||ue(),ke||Te(),Ie||Le(),ce||de(),me||Pe()}}};exports.useFetchOverviewData=Be;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/dataImport.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/columnStats/metricTargets.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");const U=require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");const Z=require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");const o=require("react");require("../../../context/RemoteModulesContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("lodash");require("react-toastify");require("../../../../../_virtual/jsx-runtime.cjs.js");require("../../../context/PowerpackContextInstance.cjs.js");require("../../../context/UriContext.cjs.js");require("../../../context/DetailsPanelContextInstance.cjs.js");require("../../../context/SubtasksModulesContextInstance.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");require("../../../context/ProjectContext.cjs.js");const Ue=require("../../../context/ProjectFoldersContext.cjs.js");require("react-redux");require("custom-protocol-check");const De=require("../../../hooks/useGroupedPagination.cjs.js");require("../components/GroupSettingsFallback.cjs.js");require("uuid");const Ee=require("../../../util/getGroupByDataType.cjs.js");require("../../../util/pubsub.cjs.js");const be=require("../utils/loadingUtils.cjs.js"),B=require("./useBuildGroupByTableData.cjs.js"),Be=({projectName:g,selectedFolders:h,taskIds:d,taskFilters:u,folderFilters:f,sorting:F,groupBy:c,taskGroups:L=[],taskGroupsCount:$,expanded:y,showHierarchy:k,isFlatFolderView:q=!1,attribFields:H,modules:V,skipLinks:Q})=>{const{getGroupQueries:C,isLoading:O}=V,{folders:l,isLoading:ee,isUninitialized:re,refetch:ie}=Ue.useProjectFoldersContext(),P=Object.entries(y).filter(([,e])=>e).filter(([e])=>!B.isGroupId(e)).map(([e])=>e),{data:m=[],isFetching:A,refetch:te,isUninitialized:se}=U.useGetOverviewTasksByFoldersQuery({projectName:g,parentIds:P,filter:u.filterString,folderFilter:f.filterString,search:u.search},{skip:!P.length||!k&&!q}),_=!u.filterString&&!f.filterString&&!u.search&&!f.search||!l.length||!k&&!q,{data:v,isUninitialized:w,isLoading:ne,isUninitialized:ae,refetch:ue}=U.useGetSearchFoldersQuery({projectName:g,folderSearchRequest:{taskFilter:u.filter?.conditions?.length?u.filter:void 0,folderFilter:f.filter?.conditions?.length?f.filter:void 0,search:u.search}},{skip:_}),oe=o.useMemo(()=>{const e=new Set;return l.forEach(n=>{if(!n.parentId){e.add(n.id);return}const t=n.parentId,r=h.includes(n.id);(y[t]===!0||r)&&e.add(n.id)}),e},[l,v,_,y,h]),{data:R=[],refetch:de,isUninitialized:ce}=Z.useGetEntityLinksQuery({projectName:g,entityIds:Array.from(oe),entityType:"folder"},{skip:Q}),p=o.useMemo(()=>{const e=new Map,n=t=>({...t,entityId:t.id,entityType:"folder",links:R?.find(i=>i.id===t.id)?.links||[]});if(!w&&v&&l.length){const t=new Set;for(const s of v)t.add(s);const r=new Map;for(const s of l)r.set(s.id,s);const i=s=>{const a=r.get(s);a&&a.parentId&&(t.add(a.parentId),i(a.parentId))};if(!q){const s=[...t];for(const a of s)i(a)}for(const s of l)t.has(s.id)&&e.set(s.id,n(s))}else for(const t of l)e.set(t.id,n(t));if(h.length){const t=h.map(i=>e.get(i)?.path).filter(Boolean),r=new Map;return e.forEach((i,s)=>{const a=i.path,M=a.split("/");let z=!1;for(let I=0;I<M.length;I++){const xe=M.slice(0,I+1).join("/");if(t.some(ze=>ze===xe)){z=!0;break}}const Ge=t.some(I=>a.startsWith(I+"/"));(z||Ge)&&r.set(s,n(i))}),r}return e},[l,v,w,h,R,q]),le=o.useMemo(()=>A?be.determineLoadingTaskFolders({expandedFoldersTasks:m,expandedParentIds:P,foldersMap:p}):{},[A,m,P,p]),[W,fe]=o.useState("");o.useEffect(()=>{W&&fe("")},[F,W]);const T={...F[0]},S=T?.id==="name"&&!k?"path":T?.id==="subType"?"taskType":T?.id,j=h.length?Array.from(p.keys()):void 0,{data:D,isLoading:qe,isFetching:Qe,fetchNextPage:pe,hasNextPage:ge,isFetchingNextPage:he,isUninitialized:ke,refetch:Te}=U.useGetTasksListInfiniteInfiniteQuery({projectName:g,filter:u.filterString,folderFilter:f.filterString,search:u.search,folderIds:d?.length?void 0:j,taskIds:d?.length?d:void 0,sortBy:S?S.replace("_","."):void 0,desc:!!T?.desc},{skip:(k||q)&&!d?.length,initialPageParam:{cursor:"",desc:!!T?.desc}}),E=o.useMemo(()=>D?.pages?D.pages.flatMap(e=>e.tasks||[]):[],[D?.pages]),{pageCounts:b,incrementPageCount:ye}=De.useGroupedPagination({groups:L}),Me=Ee.getGroupByDataType(c,H),N=o.useMemo(()=>Object.entries(y).filter(([,e])=>e).filter(([e])=>B.isGroupId(e)).map(([e])=>e.slice(B.GROUP_BY_ID.length)),[y]),Y=o.useMemo(()=>c?(C?.({groups:L,taskGroups:L,filters:u.filter,groupBy:c,groupPageCounts:b})??[]).filter(n=>N.includes(n.value)):[],[c,L,b,Me,u.filter,C,N]),{data:{tasks:J=[]}={},isUninitialized:Ie,refetch:Le}=U.useGetGroupedTasksListQuery({projectName:g,groups:Y,sortBy:S?S.replace("_","."):void 0,desc:!!T?.desc,search:u.search,folderFilter:f.filterString,folderIds:j,groupCount:$},{skip:!c||!Y.length||O}),G=o.useMemo(()=>d?.length?E:k||q?m:c?J:E,[d,k,q,c,E,m,J]),K=o.useMemo(()=>new Set(G.map(e=>e.id)),[G]),{data:X=[],refetch:Pe,isUninitialized:me}=Z.useGetEntityLinksQuery({projectName:g,entityIds:Array.from(K),entityType:"task"},{skip:K.size===0||Q}),ve=e=>{c?e&&e in b&&ye(e):ge&&pe()},{tasksMap:Se,tasksByFolderMap:x}=o.useMemo(()=>{const e=new Map,n=new Map,t=r=>({...r,entityId:r.id,entityType:"task",links:X?.find(i=>i.id===r.id)?.links||[]});for(const r of G){const i=r.id,s=r.folderId;if(e.has(i)){const a=e.get(i),M=t(r),z={...a,...M,groups:[...a.groups||[],...M.groups||[]]};e.set(i,z)}else e.set(i,t(r));if(n.has(s)){const a=n.get(s);a.includes(i)||a.push(i)}else n.set(s,[i])}return{tasksMap:e,tasksByFolderMap:n}},[G,X]);return{foldersMap:o.useMemo(()=>{if(!d?.length||!x.size)return p;const e=new Set;for(const r of x.keys())e.add(r);const n=r=>{const i=p.get(r);if(i&&i.parentId){const s=i.parentId;e.has(s)||(e.add(s),n(s))}};for(const r of e)n(r);const t=new Map;for(const[r,i]of p)e.has(r)&&t.set(r,i);return t},[p,x,d]),tasksMap:Se,tasksByFolderMap:x,isLoadingAll:ee||qe||ne||O,isLoadingMore:he,loadingTasks:le,fetchNextPage:ve,reloadTableData:()=>{re||ie(),se||te(),ae||ue(),ke||Te(),Ie||Le(),ce||de(),me||Pe()}}};exports.useFetchOverviewData=Be;
2
2
  //# sourceMappingURL=useFetchOverviewData.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFetchOverviewData.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useFetchOverviewData.ts"],"sourcesContent":["import {\n useGetGroupedTasksListQuery,\n useGetOverviewTasksByFoldersQuery,\n useGetSearchFoldersQuery,\n useGetTasksListInfiniteInfiniteQuery,\n} from '@shared/api'\nimport type { FolderListItem, GetGroupedTasksListArgs, EntityGroup, QueryFilter } from '@shared/api'\nimport { useGroupedPagination } from '@shared/hooks'\nimport { getGroupByDataType } from '@shared/util'\nimport { EditorTaskNode, FolderNodeMap, MatchingFolder, TaskNodeMap } from '../types/table'\nimport { useEffect, useMemo, useState } from 'react'\nimport { ExpandedState, SortingState } from '@tanstack/react-table'\nimport { determineLoadingTaskFolders } from '../utils/loadingUtils'\nimport { LoadingTasks } from '../types'\nimport { TasksByFolderMap } from '../utils'\nimport { TableGroupBy } from '../context'\nimport { isGroupId, GROUP_BY_ID } from '../hooks/useBuildGroupByTableData'\nimport { ProjectTableAttribute } from '../hooks/useAttributesList'\nimport { ProjectTableModulesType } from '@shared/hooks'\nimport { useGetEntityLinksQuery } from '@shared/api'\nimport { useProjectFoldersContext } from '@shared/context'\n\ntype QueryFilterParams = {\n filter: QueryFilter | undefined\n filterString?: string\n search?: string\n}\n\ntype useFetchOverviewDataData = {\n foldersMap: FolderNodeMap\n tasksMap: TaskNodeMap\n tasksByFolderMap: TasksByFolderMap\n isLoadingAll: boolean // the whole table is a loading state\n isLoadingMore: boolean // loading more tasks\n loadingTasks: LoadingTasks // show number of loading tasks per folder or root\n fetchNextPage: (value?: string) => void\n reloadTableData: () => void\n}\n\ntype Params = {\n projectName: string\n selectedFolders: string[] // folders selected in the slicer (hierarchy)\n taskIds?: string[] // specific task IDs to filter by (from entity list slicer)\n taskFilters: QueryFilterParams // filters for tasks\n folderFilters: QueryFilterParams // filters for folders\n sorting: SortingState\n groupBy: TableGroupBy | undefined\n taskGroups: EntityGroup[]\n taskGroupsCount?: number // override for number of items per group\n expanded: ExpandedState\n showHierarchy: boolean\n isFlatFolderView?: boolean\n attribFields: ProjectTableAttribute[]\n modules: ProjectTableModulesType\n skipLinks?: boolean\n}\n\nexport const useFetchOverviewData = ({\n projectName,\n selectedFolders, // comes from the slicer\n taskIds, // specific task IDs from entity list slicer\n taskFilters,\n folderFilters,\n sorting,\n groupBy,\n taskGroups = [],\n taskGroupsCount,\n expanded,\n showHierarchy,\n isFlatFolderView = false,\n attribFields,\n modules,\n skipLinks,\n}: Params): useFetchOverviewDataData => {\n const { getGroupQueries, isLoading: isLoadingModules } = modules\n\n const {\n folders,\n isLoading: isLoadingFolders,\n isUninitialized: isUninitializedFolders,\n refetch: refetchFolders,\n } = useProjectFoldersContext()\n\n const expandedParentIds = Object.entries(expanded)\n .filter(([, isExpanded]) => isExpanded)\n .filter(([id]) => !isGroupId(id)) // filter out the root folder\n .map(([id]) => id)\n\n const {\n data: expandedFoldersTasks = [],\n isFetching: isFetchingExpandedFoldersTasks,\n refetch: refetchExpandedFoldersTasks,\n isUninitialized: isUninitializedExpandedFoldersTasks,\n } = useGetOverviewTasksByFoldersQuery(\n {\n projectName,\n parentIds: expandedParentIds,\n filter: taskFilters.filterString,\n folderFilter: folderFilters.filterString,\n search: taskFilters.search,\n },\n { skip: !expandedParentIds.length || (!showHierarchy && !isFlatFolderView) },\n )\n\n const skipFoldersByTaskFilter =\n (!taskFilters.filterString &&\n !folderFilters.filterString &&\n !taskFilters.search &&\n !folderFilters.search) ||\n !folders.length ||\n (!showHierarchy && !isFlatFolderView)\n // get folders that would be left if the filters were applied for tasks\n const {\n data: foldersByTaskFilter,\n isUninitialized,\n isLoading: isLoadingTasksFolders,\n isUninitialized: isUninitializedTasksFolders,\n refetch: refetchTasksFolders,\n } = useGetSearchFoldersQuery(\n {\n projectName,\n folderSearchRequest: {\n taskFilter: taskFilters.filter?.conditions?.length ? taskFilters.filter : undefined,\n folderFilter: folderFilters.filter?.conditions?.length ? folderFilters.filter : undefined,\n search: taskFilters.search,\n },\n },\n {\n skip: skipFoldersByTaskFilter,\n },\n )\n\n // create a list of folders that are current visible in the table\n // root folders are always visible\n // then a folder is visible if it's parent is expanded\n const visibleFolders = useMemo(() => {\n const visibleSet = new Set<string>()\n\n // Check each folder in the map\n folders.forEach((folder) => {\n // Root folders are always visible\n if (!folder.parentId) {\n visibleSet.add(folder.id)\n return\n }\n\n // Check if parent is expanded\n const parentId = folder.parentId as string\n const isSelectedInSlicer = selectedFolders.includes(folder.id as string)\n const expandedMap = expanded as Record<string, boolean>\n if (expandedMap[parentId] === true || isSelectedInSlicer) {\n visibleSet.add(folder.id)\n }\n })\n\n return visibleSet\n }, [folders, foldersByTaskFilter, skipFoldersByTaskFilter, expanded, selectedFolders])\n\n // get all links for visible folders\n const {\n data: foldersLinks = [],\n refetch: refetchFoldersLinks,\n isUninitialized: isUninitializedFoldersLinks,\n } = useGetEntityLinksQuery(\n {\n projectName,\n entityIds: Array.from(visibleFolders),\n entityType: 'folder',\n },\n { skip: skipLinks },\n )\n\n // create a map of folders by id for efficient lookups\n const foldersMap: FolderNodeMap = useMemo(() => {\n const map = new Map()\n\n const addExtraDataToFolder = (folder: FolderListItem) => {\n // add any extra data to folder\n const folderWithExtraData: MatchingFolder = {\n ...folder,\n entityId: folder.id,\n entityType: 'folder',\n links: foldersLinks?.find((link) => link.id === folder.id)?.links || [],\n }\n return folderWithExtraData\n }\n\n // If we have task filters and folders to filter\n if (!isUninitialized && foldersByTaskFilter && folders.length) {\n // Create a set for efficient lookups of filtered folder IDs\n const relevantFolderIds = new Set<string>()\n\n // First pass: Add all folders from the task filter\n for (const folderId of foldersByTaskFilter) {\n relevantFolderIds.add(folderId)\n }\n\n // Create a map of folders by ID for parentId lookups\n const foldersByIdMap = new Map<string, (typeof folders)[0]>()\n for (const folder of folders) {\n foldersByIdMap.set(folder.id as string, folder)\n }\n\n // Second pass: Add all parent folders of filtered folders\n const addParents = (folderId: string) => {\n const folder = foldersByIdMap.get(folderId)\n if (folder && folder.parentId) {\n relevantFolderIds.add(folder.parentId as string)\n addParents(folder.parentId as string)\n }\n }\n\n // In flat folder view folders are shown as top-level rows — ancestors are\n // not needed and would bring in unrelated subtrees (e.g. showing the root\n // \"assets\" node which then exposes all its children).\n // In hierarchy mode ancestors ARE needed so the tree path is navigable.\n if (!isFlatFolderView) {\n const matchedIds = [...relevantFolderIds]\n for (const folderId of matchedIds) {\n addParents(folderId)\n }\n }\n\n // Third pass: Build the final map using only relevant folders\n for (const folder of folders) {\n if (relevantFolderIds.has(folder.id as string)) {\n map.set(folder.id as string, addExtraDataToFolder(folder))\n }\n }\n } else {\n // No filtering, include all folders\n for (const folder of folders) {\n map.set(folder.id as string, addExtraDataToFolder(folder))\n }\n }\n\n // Filter by selected folders if needed\n if (selectedFolders.length) {\n const selectedPaths = selectedFolders\n .map((id) => map.get(id)?.path)\n .filter(Boolean) as string[]\n\n // Create a new map that only contains selected folders and their children\n const filteredMap = new Map()\n\n // For each folder, check if it should be included\n map.forEach((folder, folderId) => {\n const folderPath = folder.path as string\n\n // Include if it's a parent or the folder itself\n const folderPathParts = folderPath.split('/')\n let isParentOrSelf = false\n\n for (let i = 0; i < folderPathParts.length; i++) {\n const partialPath = folderPathParts.slice(0, i + 1).join('/')\n if (selectedPaths.some((p) => p === partialPath)) {\n isParentOrSelf = true\n break\n }\n }\n\n // Include if it's a child of any selected folder\n const isChild = selectedPaths.some((selectedPath) =>\n folderPath.startsWith(selectedPath + '/'),\n )\n\n if (isParentOrSelf || isChild) {\n filteredMap.set(folderId, addExtraDataToFolder(folder))\n }\n })\n\n return filteredMap\n }\n\n return map\n }, [\n folders,\n foldersByTaskFilter,\n isUninitialized,\n selectedFolders,\n foldersLinks,\n isFlatFolderView,\n ])\n\n // calculate partial loading states\n const loadingTasksForParents = useMemo(() => {\n if (isFetchingExpandedFoldersTasks) {\n return determineLoadingTaskFolders({\n expandedFoldersTasks,\n expandedParentIds,\n foldersMap,\n })\n } else return {}\n }, [isFetchingExpandedFoldersTasks, expandedFoldersTasks, expandedParentIds, foldersMap])\n\n const [tasksListCursor, setTasksListCursor] = useState('')\n\n // every time the sorting changes, reset the cursor\n useEffect(() => {\n if (tasksListCursor) setTasksListCursor('')\n }, [sorting, tasksListCursor])\n\n // Create sort params for infinite query\n const singleSort = { ...sorting[0] }\n // if task list and sorting by name, sort by path instead\n const sortByPath = singleSort?.id === 'name' && !showHierarchy\n const sortId = sortByPath ? 'path' : singleSort?.id === 'subType' ? 'taskType' : singleSort?.id\n const tasksFolderIdsParams = selectedFolders.length ? Array.from(foldersMap.keys()) : undefined\n\n // Use the new infinite query hook for tasks list with correct name\n const {\n data: tasksListInfiniteData,\n isLoading: isLoadingTasksList,\n isFetching: isFetchingTasksList,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage: isFetchingNextPageTasksList,\n isUninitialized: isUninitializedTasksList,\n refetch: refetchTasksList,\n } = useGetTasksListInfiniteInfiniteQuery(\n {\n projectName,\n filter: taskFilters.filterString,\n folderFilter: folderFilters.filterString,\n search: taskFilters.search,\n folderIds: taskIds?.length ? undefined : tasksFolderIdsParams,\n taskIds: taskIds?.length ? taskIds : undefined,\n sortBy: sortId ? sortId.replace('_', '.') : undefined,\n desc: !!singleSort?.desc,\n },\n {\n // Use flat task list when entity list provides specific task IDs, even in hierarchy mode\n skip: (showHierarchy || isFlatFolderView) && !taskIds?.length,\n initialPageParam: {\n cursor: '',\n desc: !!singleSort?.desc,\n },\n },\n )\n\n // Extract tasks from infinite query data correctly\n const tasksList = useMemo(() => {\n if (!tasksListInfiniteData?.pages) return []\n return tasksListInfiniteData.pages.flatMap((page) => page.tasks || [])\n }, [tasksListInfiniteData?.pages])\n\n const { pageCounts: groupPageCounts, incrementPageCount } = useGroupedPagination({\n groups: taskGroups,\n })\n\n // for grouped tasks, we fetch all tasks for each group\n // we do this by building a list of groups with filters for that group\n const groupByDataType = getGroupByDataType(groupBy, attribFields)\n\n // get expanded group values from the expanded state\n // group IDs are formatted as `_GROUP_<value>` so we extract the values\n const expandedGroupValues = useMemo(() => {\n return Object.entries(expanded)\n .filter(([, isExpanded]) => isExpanded)\n .filter(([id]) => isGroupId(id))\n .map(([id]) => id.slice(GROUP_BY_ID.length))\n }, [expanded])\n\n // get group queries from powerpack, filtered to only include expanded groups\n const groupQueries: GetGroupedTasksListArgs['groups'] = useMemo(() => {\n if (!groupBy) return []\n\n const allGroupQueries =\n getGroupQueries?.({\n groups: taskGroups,\n taskGroups, // deprecated, but keep for backward compatibility\n filters: taskFilters.filter,\n groupBy,\n groupPageCounts,\n }) ?? []\n\n // Only fetch tasks for groups that are expanded\n return allGroupQueries.filter((group) => expandedGroupValues.includes(group.value))\n }, [\n groupBy,\n taskGroups,\n groupPageCounts,\n groupByDataType,\n taskFilters.filter,\n getGroupQueries,\n expandedGroupValues,\n ])\n\n const {\n data: { tasks: groupTasks = [] } = {},\n isUninitialized: isUninitializedGroupedTasks,\n refetch: refetchGroupedTasks,\n } = useGetGroupedTasksListQuery(\n {\n projectName,\n groups: groupQueries,\n sortBy: sortId ? sortId.replace('_', '.') : undefined,\n desc: !!singleSort?.desc,\n search: taskFilters.search,\n folderFilter: folderFilters.filterString,\n folderIds: tasksFolderIdsParams,\n groupCount: taskGroupsCount,\n },\n {\n skip: !groupBy || !groupQueries.length || isLoadingModules,\n },\n )\n\n // Resolve which task source to use based on current mode\n // When entity list provides specific task IDs, use flat task list even in hierarchy mode\n const resolvedTasks = useMemo(() => {\n if (taskIds?.length) return tasksList\n if (showHierarchy || isFlatFolderView) return expandedFoldersTasks\n if (groupBy) return groupTasks\n return tasksList\n }, [\n taskIds,\n showHierarchy,\n isFlatFolderView,\n groupBy,\n tasksList,\n expandedFoldersTasks,\n groupTasks,\n ])\n\n // Get visible tasks for link fetching\n const visibleTasks = useMemo(() => {\n return new Set(resolvedTasks.map((task) => task.id))\n }, [resolvedTasks])\n\n // Get all links for visible tasks\n const {\n data: tasksLinks = [],\n refetch: refetchTasksLinks,\n isUninitialized: isUninitializedTasksLinks,\n } = useGetEntityLinksQuery(\n {\n projectName,\n entityIds: Array.from(visibleTasks),\n entityType: 'task',\n },\n {\n skip: visibleTasks.size === 0 || skipLinks,\n },\n )\n\n const handleFetchNextPage = (group?: string) => {\n if (groupBy) {\n if (group && group in groupPageCounts) {\n incrementPageCount(group)\n }\n } else if (hasNextPage) {\n fetchNextPage()\n }\n }\n\n // tasksMaps is a map of tasks by task ID\n // tasksByFolderMap is a map of tasks by folder ID\n const { tasksMap, tasksByFolderMap } = useMemo(() => {\n const tasksMap: TaskNodeMap = new Map()\n const tasksByFolderMap: TasksByFolderMap = new Map()\n\n const addExtraDataToTask = (task: EditorTaskNode) => ({\n ...task,\n entityId: task.id,\n entityType: 'task' as const,\n links: tasksLinks?.find((link) => link.id === task.id)?.links || [],\n })\n\n for (const task of resolvedTasks) {\n const taskId = task.id as string\n const folderId = task.folderId as string\n\n if (tasksMap.has(taskId)) {\n // merge specific data if the task already exists\n const existingTask = tasksMap.get(taskId) as EditorTaskNode\n const currentTask = addExtraDataToTask(task)\n const mergedTask = {\n ...existingTask,\n ...currentTask,\n groups: [...(existingTask.groups || []), ...(currentTask.groups || [])],\n }\n\n tasksMap.set(taskId, mergedTask)\n } else {\n tasksMap.set(taskId, addExtraDataToTask(task))\n }\n\n if (tasksByFolderMap.has(folderId)) {\n // dedup like tasksMap — resolvedTasks can contain the same task twice\n // (overlapping infinite-query pages, or a task in multiple groups)\n const folderTaskIds = tasksByFolderMap.get(folderId)!\n if (!folderTaskIds.includes(taskId)) folderTaskIds.push(taskId)\n } else {\n tasksByFolderMap.set(folderId, [taskId])\n }\n }\n\n return { tasksMap, tasksByFolderMap }\n }, [resolvedTasks, tasksLinks])\n\n // When entity list provides specific task IDs, filter folders to only those containing tasks\n const filteredFoldersMap: FolderNodeMap = useMemo(() => {\n if (!taskIds?.length || !tasksByFolderMap.size) return foldersMap\n\n const relevantFolderIds = new Set<string>()\n\n // Add all folders that contain selected tasks\n for (const folderId of tasksByFolderMap.keys()) {\n relevantFolderIds.add(folderId)\n }\n\n // Add parent folders for proper tree display\n const addParents = (folderId: string) => {\n const folder = foldersMap.get(folderId)\n if (folder && folder.parentId) {\n const parentId = folder.parentId as string\n if (!relevantFolderIds.has(parentId)) {\n relevantFolderIds.add(parentId)\n addParents(parentId)\n }\n }\n }\n\n for (const folderId of relevantFolderIds) {\n addParents(folderId)\n }\n\n const filtered = new Map() as FolderNodeMap\n for (const [id, folder] of foldersMap) {\n if (relevantFolderIds.has(id)) {\n filtered.set(id, folder)\n }\n }\n\n return filtered\n }, [foldersMap, tasksByFolderMap, taskIds])\n\n // reload all data for all queries\n const reloadTableData = () => {\n // only reload if there is data\n if (!isUninitializedFolders) refetchFolders()\n if (!isUninitializedExpandedFoldersTasks) refetchExpandedFoldersTasks()\n if (!isUninitializedTasksFolders) refetchTasksFolders()\n if (!isUninitializedTasksList) refetchTasksList()\n if (!isUninitializedGroupedTasks) refetchGroupedTasks()\n if (!isUninitializedFoldersLinks) refetchFoldersLinks()\n if (!isUninitializedTasksLinks) refetchTasksLinks()\n }\n\n return {\n foldersMap: filteredFoldersMap,\n tasksMap: tasksMap,\n tasksByFolderMap: tasksByFolderMap,\n isLoadingAll:\n isLoadingFolders || isLoadingTasksList || isLoadingTasksFolders || isLoadingModules, // these all show a full loading state\n isLoadingMore: isFetchingNextPageTasksList,\n loadingTasks: loadingTasksForParents,\n fetchNextPage: handleFetchNextPage,\n reloadTableData,\n }\n}\n"],"names":["useFetchOverviewData","projectName","selectedFolders","taskIds","taskFilters","folderFilters","sorting","groupBy","taskGroups","taskGroupsCount","expanded","showHierarchy","isFlatFolderView","attribFields","modules","skipLinks","getGroupQueries","isLoadingModules","folders","isLoadingFolders","isUninitializedFolders","refetchFolders","useProjectFoldersContext","expandedParentIds","isExpanded","id","isGroupId","expandedFoldersTasks","isFetchingExpandedFoldersTasks","refetchExpandedFoldersTasks","isUninitializedExpandedFoldersTasks","useGetOverviewTasksByFoldersQuery","skipFoldersByTaskFilter","foldersByTaskFilter","isUninitialized","isLoadingTasksFolders","isUninitializedTasksFolders","refetchTasksFolders","useGetSearchFoldersQuery","visibleFolders","useMemo","visibleSet","folder","parentId","isSelectedInSlicer","foldersLinks","refetchFoldersLinks","isUninitializedFoldersLinks","useGetEntityLinksQuery","foldersMap","map","addExtraDataToFolder","link","relevantFolderIds","folderId","foldersByIdMap","addParents","matchedIds","selectedPaths","filteredMap","folderPath","folderPathParts","isParentOrSelf","i","partialPath","p","isChild","selectedPath","loadingTasksForParents","determineLoadingTaskFolders","tasksListCursor","setTasksListCursor","useState","useEffect","singleSort","sortId","tasksFolderIdsParams","tasksListInfiniteData","isLoadingTasksList","isFetchingTasksList","fetchNextPage","hasNextPage","isFetchingNextPageTasksList","isUninitializedTasksList","refetchTasksList","useGetTasksListInfiniteInfiniteQuery","tasksList","page","groupPageCounts","incrementPageCount","useGroupedPagination","groupByDataType","getGroupByDataType","expandedGroupValues","GROUP_BY_ID","groupQueries","group","groupTasks","isUninitializedGroupedTasks","refetchGroupedTasks","useGetGroupedTasksListQuery","resolvedTasks","visibleTasks","task","tasksLinks","refetchTasksLinks","isUninitializedTasksLinks","handleFetchNextPage","tasksMap","tasksByFolderMap","addExtraDataToTask","taskId","existingTask","currentTask","mergedTask","folderTaskIds","filtered"],"mappings":"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"}
1
+ {"version":3,"file":"useFetchOverviewData.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useFetchOverviewData.ts"],"sourcesContent":["import {\n useGetGroupedTasksListQuery,\n useGetOverviewTasksByFoldersQuery,\n useGetSearchFoldersQuery,\n useGetTasksListInfiniteInfiniteQuery,\n} from '@shared/api'\nimport type { FolderListItem, GetGroupedTasksListArgs, EntityGroup, QueryFilter } from '@shared/api'\nimport { useGroupedPagination } from '@shared/hooks'\nimport { getGroupByDataType } from '@shared/util'\nimport { EditorTaskNode, FolderNodeMap, MatchingFolder, TaskNodeMap } from '../types/table'\nimport { useEffect, useMemo, useState } from 'react'\nimport { ExpandedState, SortingState } from '@tanstack/react-table'\nimport { determineLoadingTaskFolders } from '../utils/loadingUtils'\nimport { LoadingTasks } from '../types'\nimport { TasksByFolderMap } from '../utils'\nimport { TableGroupBy } from '../context'\nimport { isGroupId, GROUP_BY_ID } from '../hooks/useBuildGroupByTableData'\nimport { ProjectTableAttribute } from '../hooks/useAttributesList'\nimport { ProjectTableModulesType } from '@shared/hooks'\nimport { useGetEntityLinksQuery } from '@shared/api'\nimport { useProjectFoldersContext } from '@shared/context'\n\ntype QueryFilterParams = {\n filter: QueryFilter | undefined\n filterString?: string\n search?: string\n}\n\ntype useFetchOverviewDataData = {\n foldersMap: FolderNodeMap\n tasksMap: TaskNodeMap\n tasksByFolderMap: TasksByFolderMap\n isLoadingAll: boolean // the whole table is a loading state\n isLoadingMore: boolean // loading more tasks\n loadingTasks: LoadingTasks // show number of loading tasks per folder or root\n fetchNextPage: (value?: string) => void\n reloadTableData: () => void\n}\n\ntype Params = {\n projectName: string\n selectedFolders: string[] // folders selected in the slicer (hierarchy)\n taskIds?: string[] // specific task IDs to filter by (from entity list slicer)\n taskFilters: QueryFilterParams // filters for tasks\n folderFilters: QueryFilterParams // filters for folders\n sorting: SortingState\n groupBy: TableGroupBy | undefined\n taskGroups: EntityGroup[]\n taskGroupsCount?: number // override for number of items per group\n expanded: ExpandedState\n showHierarchy: boolean\n isFlatFolderView?: boolean\n attribFields: ProjectTableAttribute[]\n modules: ProjectTableModulesType\n skipLinks?: boolean\n}\n\nexport const useFetchOverviewData = ({\n projectName,\n selectedFolders, // comes from the slicer\n taskIds, // specific task IDs from entity list slicer\n taskFilters,\n folderFilters,\n sorting,\n groupBy,\n taskGroups = [],\n taskGroupsCount,\n expanded,\n showHierarchy,\n isFlatFolderView = false,\n attribFields,\n modules,\n skipLinks,\n}: Params): useFetchOverviewDataData => {\n const { getGroupQueries, isLoading: isLoadingModules } = modules\n\n const {\n folders,\n isLoading: isLoadingFolders,\n isUninitialized: isUninitializedFolders,\n refetch: refetchFolders,\n } = useProjectFoldersContext()\n\n const expandedParentIds = Object.entries(expanded)\n .filter(([, isExpanded]) => isExpanded)\n .filter(([id]) => !isGroupId(id)) // filter out the root folder\n .map(([id]) => id)\n\n const {\n data: expandedFoldersTasks = [],\n isFetching: isFetchingExpandedFoldersTasks,\n refetch: refetchExpandedFoldersTasks,\n isUninitialized: isUninitializedExpandedFoldersTasks,\n } = useGetOverviewTasksByFoldersQuery(\n {\n projectName,\n parentIds: expandedParentIds,\n filter: taskFilters.filterString,\n folderFilter: folderFilters.filterString,\n search: taskFilters.search,\n },\n { skip: !expandedParentIds.length || (!showHierarchy && !isFlatFolderView) },\n )\n\n const skipFoldersByTaskFilter =\n (!taskFilters.filterString &&\n !folderFilters.filterString &&\n !taskFilters.search &&\n !folderFilters.search) ||\n !folders.length ||\n (!showHierarchy && !isFlatFolderView)\n // get folders that would be left if the filters were applied for tasks\n const {\n data: foldersByTaskFilter,\n isUninitialized,\n isLoading: isLoadingTasksFolders,\n isUninitialized: isUninitializedTasksFolders,\n refetch: refetchTasksFolders,\n } = useGetSearchFoldersQuery(\n {\n projectName,\n folderSearchRequest: {\n taskFilter: taskFilters.filter?.conditions?.length ? taskFilters.filter : undefined,\n folderFilter: folderFilters.filter?.conditions?.length ? folderFilters.filter : undefined,\n search: taskFilters.search,\n },\n },\n {\n skip: skipFoldersByTaskFilter,\n },\n )\n\n // create a list of folders that are current visible in the table\n // root folders are always visible\n // then a folder is visible if it's parent is expanded\n const visibleFolders = useMemo(() => {\n const visibleSet = new Set<string>()\n\n // Check each folder in the map\n folders.forEach((folder) => {\n // Root folders are always visible\n if (!folder.parentId) {\n visibleSet.add(folder.id)\n return\n }\n\n // Check if parent is expanded\n const parentId = folder.parentId as string\n const isSelectedInSlicer = selectedFolders.includes(folder.id as string)\n const expandedMap = expanded as Record<string, boolean>\n if (expandedMap[parentId] === true || isSelectedInSlicer) {\n visibleSet.add(folder.id)\n }\n })\n\n return visibleSet\n }, [folders, foldersByTaskFilter, skipFoldersByTaskFilter, expanded, selectedFolders])\n\n // get all links for visible folders\n const {\n data: foldersLinks = [],\n refetch: refetchFoldersLinks,\n isUninitialized: isUninitializedFoldersLinks,\n } = useGetEntityLinksQuery(\n {\n projectName,\n entityIds: Array.from(visibleFolders),\n entityType: 'folder',\n },\n { skip: skipLinks },\n )\n\n // create a map of folders by id for efficient lookups\n const foldersMap: FolderNodeMap = useMemo(() => {\n const map = new Map()\n\n const addExtraDataToFolder = (folder: FolderListItem) => {\n // add any extra data to folder\n const folderWithExtraData: MatchingFolder = {\n ...folder,\n entityId: folder.id,\n entityType: 'folder',\n links: foldersLinks?.find((link) => link.id === folder.id)?.links || [],\n }\n return folderWithExtraData\n }\n\n // If we have task filters and folders to filter\n if (!isUninitialized && foldersByTaskFilter && folders.length) {\n // Create a set for efficient lookups of filtered folder IDs\n const relevantFolderIds = new Set<string>()\n\n // First pass: Add all folders from the task filter\n for (const folderId of foldersByTaskFilter) {\n relevantFolderIds.add(folderId)\n }\n\n // Create a map of folders by ID for parentId lookups\n const foldersByIdMap = new Map<string, (typeof folders)[0]>()\n for (const folder of folders) {\n foldersByIdMap.set(folder.id as string, folder)\n }\n\n // Second pass: Add all parent folders of filtered folders\n const addParents = (folderId: string) => {\n const folder = foldersByIdMap.get(folderId)\n if (folder && folder.parentId) {\n relevantFolderIds.add(folder.parentId as string)\n addParents(folder.parentId as string)\n }\n }\n\n // In flat folder view folders are shown as top-level rows — ancestors are\n // not needed and would bring in unrelated subtrees (e.g. showing the root\n // \"assets\" node which then exposes all its children).\n // In hierarchy mode ancestors ARE needed so the tree path is navigable.\n if (!isFlatFolderView) {\n const matchedIds = [...relevantFolderIds]\n for (const folderId of matchedIds) {\n addParents(folderId)\n }\n }\n\n // Third pass: Build the final map using only relevant folders\n for (const folder of folders) {\n if (relevantFolderIds.has(folder.id as string)) {\n map.set(folder.id as string, addExtraDataToFolder(folder))\n }\n }\n } else {\n // No filtering, include all folders\n for (const folder of folders) {\n map.set(folder.id as string, addExtraDataToFolder(folder))\n }\n }\n\n // Filter by selected folders if needed\n if (selectedFolders.length) {\n const selectedPaths = selectedFolders\n .map((id) => map.get(id)?.path)\n .filter(Boolean) as string[]\n\n // Create a new map that only contains selected folders and their children\n const filteredMap = new Map()\n\n // For each folder, check if it should be included\n map.forEach((folder, folderId) => {\n const folderPath = folder.path as string\n\n // Include if it's a parent or the folder itself\n const folderPathParts = folderPath.split('/')\n let isParentOrSelf = false\n\n for (let i = 0; i < folderPathParts.length; i++) {\n const partialPath = folderPathParts.slice(0, i + 1).join('/')\n if (selectedPaths.some((p) => p === partialPath)) {\n isParentOrSelf = true\n break\n }\n }\n\n // Include if it's a child of any selected folder\n const isChild = selectedPaths.some((selectedPath) =>\n folderPath.startsWith(selectedPath + '/'),\n )\n\n if (isParentOrSelf || isChild) {\n filteredMap.set(folderId, addExtraDataToFolder(folder))\n }\n })\n\n return filteredMap\n }\n\n return map\n }, [\n folders,\n foldersByTaskFilter,\n isUninitialized,\n selectedFolders,\n foldersLinks,\n isFlatFolderView,\n ])\n\n // calculate partial loading states\n const loadingTasksForParents = useMemo(() => {\n if (isFetchingExpandedFoldersTasks) {\n return determineLoadingTaskFolders({\n expandedFoldersTasks,\n expandedParentIds,\n foldersMap,\n })\n } else return {}\n }, [isFetchingExpandedFoldersTasks, expandedFoldersTasks, expandedParentIds, foldersMap])\n\n const [tasksListCursor, setTasksListCursor] = useState('')\n\n // every time the sorting changes, reset the cursor\n useEffect(() => {\n if (tasksListCursor) setTasksListCursor('')\n }, [sorting, tasksListCursor])\n\n // Create sort params for infinite query\n const singleSort = { ...sorting[0] }\n // if task list and sorting by name, sort by path instead\n const sortByPath = singleSort?.id === 'name' && !showHierarchy\n const sortId = sortByPath ? 'path' : singleSort?.id === 'subType' ? 'taskType' : singleSort?.id\n const tasksFolderIdsParams = selectedFolders.length ? Array.from(foldersMap.keys()) : undefined\n\n // Use the new infinite query hook for tasks list with correct name\n const {\n data: tasksListInfiniteData,\n isLoading: isLoadingTasksList,\n isFetching: isFetchingTasksList,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage: isFetchingNextPageTasksList,\n isUninitialized: isUninitializedTasksList,\n refetch: refetchTasksList,\n } = useGetTasksListInfiniteInfiniteQuery(\n {\n projectName,\n filter: taskFilters.filterString,\n folderFilter: folderFilters.filterString,\n search: taskFilters.search,\n folderIds: taskIds?.length ? undefined : tasksFolderIdsParams,\n taskIds: taskIds?.length ? taskIds : undefined,\n sortBy: sortId ? sortId.replace('_', '.') : undefined,\n desc: !!singleSort?.desc,\n },\n {\n // Use flat task list when entity list provides specific task IDs, even in hierarchy mode\n skip: (showHierarchy || isFlatFolderView) && !taskIds?.length,\n initialPageParam: {\n cursor: '',\n desc: !!singleSort?.desc,\n },\n },\n )\n\n // Extract tasks from infinite query data correctly\n const tasksList = useMemo(() => {\n if (!tasksListInfiniteData?.pages) return []\n return tasksListInfiniteData.pages.flatMap((page) => page.tasks || [])\n }, [tasksListInfiniteData?.pages])\n\n const { pageCounts: groupPageCounts, incrementPageCount } = useGroupedPagination({\n groups: taskGroups,\n })\n\n // for grouped tasks, we fetch all tasks for each group\n // we do this by building a list of groups with filters for that group\n const groupByDataType = getGroupByDataType(groupBy, attribFields)\n\n // get expanded group values from the expanded state\n // group IDs are formatted as `_GROUP_<value>` so we extract the values\n const expandedGroupValues = useMemo(() => {\n return Object.entries(expanded)\n .filter(([, isExpanded]) => isExpanded)\n .filter(([id]) => isGroupId(id))\n .map(([id]) => id.slice(GROUP_BY_ID.length))\n }, [expanded])\n\n // get group queries from powerpack, filtered to only include expanded groups\n const groupQueries: GetGroupedTasksListArgs['groups'] = useMemo(() => {\n if (!groupBy) return []\n\n const allGroupQueries =\n getGroupQueries?.({\n groups: taskGroups,\n taskGroups, // deprecated, but keep for backward compatibility\n filters: taskFilters.filter,\n groupBy,\n groupPageCounts,\n }) ?? []\n\n // Only fetch tasks for groups that are expanded\n return allGroupQueries.filter((group) => expandedGroupValues.includes(group.value))\n }, [\n groupBy,\n taskGroups,\n groupPageCounts,\n groupByDataType,\n taskFilters.filter,\n getGroupQueries,\n expandedGroupValues,\n ])\n\n const {\n data: { tasks: groupTasks = [] } = {},\n isUninitialized: isUninitializedGroupedTasks,\n refetch: refetchGroupedTasks,\n } = useGetGroupedTasksListQuery(\n {\n projectName,\n groups: groupQueries,\n sortBy: sortId ? sortId.replace('_', '.') : undefined,\n desc: !!singleSort?.desc,\n search: taskFilters.search,\n folderFilter: folderFilters.filterString,\n folderIds: tasksFolderIdsParams,\n groupCount: taskGroupsCount,\n },\n {\n skip: !groupBy || !groupQueries.length || isLoadingModules,\n },\n )\n\n // Resolve which task source to use based on current mode\n // When entity list provides specific task IDs, use flat task list even in hierarchy mode\n const resolvedTasks = useMemo(() => {\n if (taskIds?.length) return tasksList\n if (showHierarchy || isFlatFolderView) return expandedFoldersTasks\n if (groupBy) return groupTasks\n return tasksList\n }, [\n taskIds,\n showHierarchy,\n isFlatFolderView,\n groupBy,\n tasksList,\n expandedFoldersTasks,\n groupTasks,\n ])\n\n // Get visible tasks for link fetching\n const visibleTasks = useMemo(() => {\n return new Set(resolvedTasks.map((task) => task.id))\n }, [resolvedTasks])\n\n // Get all links for visible tasks\n const {\n data: tasksLinks = [],\n refetch: refetchTasksLinks,\n isUninitialized: isUninitializedTasksLinks,\n } = useGetEntityLinksQuery(\n {\n projectName,\n entityIds: Array.from(visibleTasks),\n entityType: 'task',\n },\n {\n skip: visibleTasks.size === 0 || skipLinks,\n },\n )\n\n const handleFetchNextPage = (group?: string) => {\n if (groupBy) {\n if (group && group in groupPageCounts) {\n incrementPageCount(group)\n }\n } else if (hasNextPage) {\n fetchNextPage()\n }\n }\n\n // tasksMaps is a map of tasks by task ID\n // tasksByFolderMap is a map of tasks by folder ID\n const { tasksMap, tasksByFolderMap } = useMemo(() => {\n const tasksMap: TaskNodeMap = new Map()\n const tasksByFolderMap: TasksByFolderMap = new Map()\n\n const addExtraDataToTask = (task: EditorTaskNode) => ({\n ...task,\n entityId: task.id,\n entityType: 'task' as const,\n links: tasksLinks?.find((link) => link.id === task.id)?.links || [],\n })\n\n for (const task of resolvedTasks) {\n const taskId = task.id as string\n const folderId = task.folderId as string\n\n if (tasksMap.has(taskId)) {\n // merge specific data if the task already exists\n const existingTask = tasksMap.get(taskId) as EditorTaskNode\n const currentTask = addExtraDataToTask(task)\n const mergedTask = {\n ...existingTask,\n ...currentTask,\n groups: [...(existingTask.groups || []), ...(currentTask.groups || [])],\n }\n\n tasksMap.set(taskId, mergedTask)\n } else {\n tasksMap.set(taskId, addExtraDataToTask(task))\n }\n\n if (tasksByFolderMap.has(folderId)) {\n // dedup like tasksMap — resolvedTasks can contain the same task twice\n // (overlapping infinite-query pages, or a task in multiple groups)\n const folderTaskIds = tasksByFolderMap.get(folderId)!\n if (!folderTaskIds.includes(taskId)) folderTaskIds.push(taskId)\n } else {\n tasksByFolderMap.set(folderId, [taskId])\n }\n }\n\n return { tasksMap, tasksByFolderMap }\n }, [resolvedTasks, tasksLinks])\n\n // When entity list provides specific task IDs, filter folders to only those containing tasks\n const filteredFoldersMap: FolderNodeMap = useMemo(() => {\n if (!taskIds?.length || !tasksByFolderMap.size) return foldersMap\n\n const relevantFolderIds = new Set<string>()\n\n // Add all folders that contain selected tasks\n for (const folderId of tasksByFolderMap.keys()) {\n relevantFolderIds.add(folderId)\n }\n\n // Add parent folders for proper tree display\n const addParents = (folderId: string) => {\n const folder = foldersMap.get(folderId)\n if (folder && folder.parentId) {\n const parentId = folder.parentId as string\n if (!relevantFolderIds.has(parentId)) {\n relevantFolderIds.add(parentId)\n addParents(parentId)\n }\n }\n }\n\n for (const folderId of relevantFolderIds) {\n addParents(folderId)\n }\n\n const filtered = new Map() as FolderNodeMap\n for (const [id, folder] of foldersMap) {\n if (relevantFolderIds.has(id)) {\n filtered.set(id, folder)\n }\n }\n\n return filtered\n }, [foldersMap, tasksByFolderMap, taskIds])\n\n // reload all data for all queries\n const reloadTableData = () => {\n // only reload if there is data\n if (!isUninitializedFolders) refetchFolders()\n if (!isUninitializedExpandedFoldersTasks) refetchExpandedFoldersTasks()\n if (!isUninitializedTasksFolders) refetchTasksFolders()\n if (!isUninitializedTasksList) refetchTasksList()\n if (!isUninitializedGroupedTasks) refetchGroupedTasks()\n if (!isUninitializedFoldersLinks) refetchFoldersLinks()\n if (!isUninitializedTasksLinks) refetchTasksLinks()\n }\n\n return {\n foldersMap: filteredFoldersMap,\n tasksMap: tasksMap,\n tasksByFolderMap: tasksByFolderMap,\n isLoadingAll:\n isLoadingFolders || isLoadingTasksList || isLoadingTasksFolders || isLoadingModules, // these all show a full loading state\n isLoadingMore: isFetchingNextPageTasksList,\n loadingTasks: loadingTasksForParents,\n fetchNextPage: handleFetchNextPage,\n reloadTableData,\n }\n}\n"],"names":["useFetchOverviewData","projectName","selectedFolders","taskIds","taskFilters","folderFilters","sorting","groupBy","taskGroups","taskGroupsCount","expanded","showHierarchy","isFlatFolderView","attribFields","modules","skipLinks","getGroupQueries","isLoadingModules","folders","isLoadingFolders","isUninitializedFolders","refetchFolders","useProjectFoldersContext","expandedParentIds","isExpanded","id","isGroupId","expandedFoldersTasks","isFetchingExpandedFoldersTasks","refetchExpandedFoldersTasks","isUninitializedExpandedFoldersTasks","useGetOverviewTasksByFoldersQuery","skipFoldersByTaskFilter","foldersByTaskFilter","isUninitialized","isLoadingTasksFolders","isUninitializedTasksFolders","refetchTasksFolders","useGetSearchFoldersQuery","visibleFolders","useMemo","visibleSet","folder","parentId","isSelectedInSlicer","foldersLinks","refetchFoldersLinks","isUninitializedFoldersLinks","useGetEntityLinksQuery","foldersMap","map","addExtraDataToFolder","link","relevantFolderIds","folderId","foldersByIdMap","addParents","matchedIds","selectedPaths","filteredMap","folderPath","folderPathParts","isParentOrSelf","i","partialPath","p","isChild","selectedPath","loadingTasksForParents","determineLoadingTaskFolders","tasksListCursor","setTasksListCursor","useState","useEffect","singleSort","sortId","tasksFolderIdsParams","tasksListInfiniteData","isLoadingTasksList","isFetchingTasksList","fetchNextPage","hasNextPage","isFetchingNextPageTasksList","isUninitializedTasksList","refetchTasksList","useGetTasksListInfiniteInfiniteQuery","tasksList","page","groupPageCounts","incrementPageCount","useGroupedPagination","groupByDataType","getGroupByDataType","expandedGroupValues","GROUP_BY_ID","groupQueries","group","groupTasks","isUninitializedGroupedTasks","refetchGroupedTasks","useGetGroupedTasksListQuery","resolvedTasks","visibleTasks","task","tasksLinks","refetchTasksLinks","isUninitializedTasksLinks","handleFetchNextPage","tasksMap","tasksByFolderMap","addExtraDataToTask","taskId","existingTask","currentTask","mergedTask","folderTaskIds","filtered"],"mappings":"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"}
@@ -50,6 +50,7 @@ import "../../../api/queries/attributes/getAttributes.es.js";
50
50
  import "../../../api/queries/attributes/updateAttributes.es.js";
51
51
  import "../../../api/queries/authentication/getAuthentication.es.js";
52
52
  import "../../../api/queries/cloud/cloud.es.js";
53
+ import "../../../api/queries/columnStats/metricTargets.es.js";
53
54
  import "../../../api/queries/config/getConfig.es.js";
54
55
  import "../../../api/queries/config/updateConfig.es.js";
55
56
  import "../../../api/queries/entities/getEntity.es.js";
@@ -124,7 +125,7 @@ import { getGroupByDataType as Ot } from "../../../util/getGroupByDataType.es.js
124
125
  import "../../../util/pubsub.es.js";
125
126
  import { determineLoadingTaskFolders as At } from "../utils/loadingUtils.es.js";
126
127
  import { isGroupId as Z, GROUP_BY_ID as _t } from "./useBuildGroupByTableData.es.js";
127
- const pe = ({
128
+ const de = ({
128
129
  projectName: g,
129
130
  selectedFolders: h,
130
131
  // comes from the slicer
@@ -408,6 +409,6 @@ const pe = ({
408
409
  };
409
410
  };
410
411
  export {
411
- pe as useFetchOverviewData
412
+ de as useFetchOverviewData
412
413
  };
413
414
  //# sourceMappingURL=useFetchOverviewData.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFetchOverviewData.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useFetchOverviewData.ts"],"sourcesContent":["import {\n useGetGroupedTasksListQuery,\n useGetOverviewTasksByFoldersQuery,\n useGetSearchFoldersQuery,\n useGetTasksListInfiniteInfiniteQuery,\n} from '@shared/api'\nimport type { FolderListItem, GetGroupedTasksListArgs, EntityGroup, QueryFilter } from '@shared/api'\nimport { useGroupedPagination } from '@shared/hooks'\nimport { getGroupByDataType } from '@shared/util'\nimport { EditorTaskNode, FolderNodeMap, MatchingFolder, TaskNodeMap } from '../types/table'\nimport { useEffect, useMemo, useState } from 'react'\nimport { ExpandedState, SortingState } from '@tanstack/react-table'\nimport { determineLoadingTaskFolders } from '../utils/loadingUtils'\nimport { LoadingTasks } from '../types'\nimport { TasksByFolderMap } from '../utils'\nimport { TableGroupBy } from '../context'\nimport { isGroupId, GROUP_BY_ID } from '../hooks/useBuildGroupByTableData'\nimport { ProjectTableAttribute } from '../hooks/useAttributesList'\nimport { ProjectTableModulesType } from '@shared/hooks'\nimport { useGetEntityLinksQuery } from '@shared/api'\nimport { useProjectFoldersContext } from '@shared/context'\n\ntype QueryFilterParams = {\n filter: QueryFilter | undefined\n filterString?: string\n search?: string\n}\n\ntype useFetchOverviewDataData = {\n foldersMap: FolderNodeMap\n tasksMap: TaskNodeMap\n tasksByFolderMap: TasksByFolderMap\n isLoadingAll: boolean // the whole table is a loading state\n isLoadingMore: boolean // loading more tasks\n loadingTasks: LoadingTasks // show number of loading tasks per folder or root\n fetchNextPage: (value?: string) => void\n reloadTableData: () => void\n}\n\ntype Params = {\n projectName: string\n selectedFolders: string[] // folders selected in the slicer (hierarchy)\n taskIds?: string[] // specific task IDs to filter by (from entity list slicer)\n taskFilters: QueryFilterParams // filters for tasks\n folderFilters: QueryFilterParams // filters for folders\n sorting: SortingState\n groupBy: TableGroupBy | undefined\n taskGroups: EntityGroup[]\n taskGroupsCount?: number // override for number of items per group\n expanded: ExpandedState\n showHierarchy: boolean\n isFlatFolderView?: boolean\n attribFields: ProjectTableAttribute[]\n modules: ProjectTableModulesType\n skipLinks?: boolean\n}\n\nexport const useFetchOverviewData = ({\n projectName,\n selectedFolders, // comes from the slicer\n taskIds, // specific task IDs from entity list slicer\n taskFilters,\n folderFilters,\n sorting,\n groupBy,\n taskGroups = [],\n taskGroupsCount,\n expanded,\n showHierarchy,\n isFlatFolderView = false,\n attribFields,\n modules,\n skipLinks,\n}: Params): useFetchOverviewDataData => {\n const { getGroupQueries, isLoading: isLoadingModules } = modules\n\n const {\n folders,\n isLoading: isLoadingFolders,\n isUninitialized: isUninitializedFolders,\n refetch: refetchFolders,\n } = useProjectFoldersContext()\n\n const expandedParentIds = Object.entries(expanded)\n .filter(([, isExpanded]) => isExpanded)\n .filter(([id]) => !isGroupId(id)) // filter out the root folder\n .map(([id]) => id)\n\n const {\n data: expandedFoldersTasks = [],\n isFetching: isFetchingExpandedFoldersTasks,\n refetch: refetchExpandedFoldersTasks,\n isUninitialized: isUninitializedExpandedFoldersTasks,\n } = useGetOverviewTasksByFoldersQuery(\n {\n projectName,\n parentIds: expandedParentIds,\n filter: taskFilters.filterString,\n folderFilter: folderFilters.filterString,\n search: taskFilters.search,\n },\n { skip: !expandedParentIds.length || (!showHierarchy && !isFlatFolderView) },\n )\n\n const skipFoldersByTaskFilter =\n (!taskFilters.filterString &&\n !folderFilters.filterString &&\n !taskFilters.search &&\n !folderFilters.search) ||\n !folders.length ||\n (!showHierarchy && !isFlatFolderView)\n // get folders that would be left if the filters were applied for tasks\n const {\n data: foldersByTaskFilter,\n isUninitialized,\n isLoading: isLoadingTasksFolders,\n isUninitialized: isUninitializedTasksFolders,\n refetch: refetchTasksFolders,\n } = useGetSearchFoldersQuery(\n {\n projectName,\n folderSearchRequest: {\n taskFilter: taskFilters.filter?.conditions?.length ? taskFilters.filter : undefined,\n folderFilter: folderFilters.filter?.conditions?.length ? folderFilters.filter : undefined,\n search: taskFilters.search,\n },\n },\n {\n skip: skipFoldersByTaskFilter,\n },\n )\n\n // create a list of folders that are current visible in the table\n // root folders are always visible\n // then a folder is visible if it's parent is expanded\n const visibleFolders = useMemo(() => {\n const visibleSet = new Set<string>()\n\n // Check each folder in the map\n folders.forEach((folder) => {\n // Root folders are always visible\n if (!folder.parentId) {\n visibleSet.add(folder.id)\n return\n }\n\n // Check if parent is expanded\n const parentId = folder.parentId as string\n const isSelectedInSlicer = selectedFolders.includes(folder.id as string)\n const expandedMap = expanded as Record<string, boolean>\n if (expandedMap[parentId] === true || isSelectedInSlicer) {\n visibleSet.add(folder.id)\n }\n })\n\n return visibleSet\n }, [folders, foldersByTaskFilter, skipFoldersByTaskFilter, expanded, selectedFolders])\n\n // get all links for visible folders\n const {\n data: foldersLinks = [],\n refetch: refetchFoldersLinks,\n isUninitialized: isUninitializedFoldersLinks,\n } = useGetEntityLinksQuery(\n {\n projectName,\n entityIds: Array.from(visibleFolders),\n entityType: 'folder',\n },\n { skip: skipLinks },\n )\n\n // create a map of folders by id for efficient lookups\n const foldersMap: FolderNodeMap = useMemo(() => {\n const map = new Map()\n\n const addExtraDataToFolder = (folder: FolderListItem) => {\n // add any extra data to folder\n const folderWithExtraData: MatchingFolder = {\n ...folder,\n entityId: folder.id,\n entityType: 'folder',\n links: foldersLinks?.find((link) => link.id === folder.id)?.links || [],\n }\n return folderWithExtraData\n }\n\n // If we have task filters and folders to filter\n if (!isUninitialized && foldersByTaskFilter && folders.length) {\n // Create a set for efficient lookups of filtered folder IDs\n const relevantFolderIds = new Set<string>()\n\n // First pass: Add all folders from the task filter\n for (const folderId of foldersByTaskFilter) {\n relevantFolderIds.add(folderId)\n }\n\n // Create a map of folders by ID for parentId lookups\n const foldersByIdMap = new Map<string, (typeof folders)[0]>()\n for (const folder of folders) {\n foldersByIdMap.set(folder.id as string, folder)\n }\n\n // Second pass: Add all parent folders of filtered folders\n const addParents = (folderId: string) => {\n const folder = foldersByIdMap.get(folderId)\n if (folder && folder.parentId) {\n relevantFolderIds.add(folder.parentId as string)\n addParents(folder.parentId as string)\n }\n }\n\n // In flat folder view folders are shown as top-level rows — ancestors are\n // not needed and would bring in unrelated subtrees (e.g. showing the root\n // \"assets\" node which then exposes all its children).\n // In hierarchy mode ancestors ARE needed so the tree path is navigable.\n if (!isFlatFolderView) {\n const matchedIds = [...relevantFolderIds]\n for (const folderId of matchedIds) {\n addParents(folderId)\n }\n }\n\n // Third pass: Build the final map using only relevant folders\n for (const folder of folders) {\n if (relevantFolderIds.has(folder.id as string)) {\n map.set(folder.id as string, addExtraDataToFolder(folder))\n }\n }\n } else {\n // No filtering, include all folders\n for (const folder of folders) {\n map.set(folder.id as string, addExtraDataToFolder(folder))\n }\n }\n\n // Filter by selected folders if needed\n if (selectedFolders.length) {\n const selectedPaths = selectedFolders\n .map((id) => map.get(id)?.path)\n .filter(Boolean) as string[]\n\n // Create a new map that only contains selected folders and their children\n const filteredMap = new Map()\n\n // For each folder, check if it should be included\n map.forEach((folder, folderId) => {\n const folderPath = folder.path as string\n\n // Include if it's a parent or the folder itself\n const folderPathParts = folderPath.split('/')\n let isParentOrSelf = false\n\n for (let i = 0; i < folderPathParts.length; i++) {\n const partialPath = folderPathParts.slice(0, i + 1).join('/')\n if (selectedPaths.some((p) => p === partialPath)) {\n isParentOrSelf = true\n break\n }\n }\n\n // Include if it's a child of any selected folder\n const isChild = selectedPaths.some((selectedPath) =>\n folderPath.startsWith(selectedPath + '/'),\n )\n\n if (isParentOrSelf || isChild) {\n filteredMap.set(folderId, addExtraDataToFolder(folder))\n }\n })\n\n return filteredMap\n }\n\n return map\n }, [\n folders,\n foldersByTaskFilter,\n isUninitialized,\n selectedFolders,\n foldersLinks,\n isFlatFolderView,\n ])\n\n // calculate partial loading states\n const loadingTasksForParents = useMemo(() => {\n if (isFetchingExpandedFoldersTasks) {\n return determineLoadingTaskFolders({\n expandedFoldersTasks,\n expandedParentIds,\n foldersMap,\n })\n } else return {}\n }, [isFetchingExpandedFoldersTasks, expandedFoldersTasks, expandedParentIds, foldersMap])\n\n const [tasksListCursor, setTasksListCursor] = useState('')\n\n // every time the sorting changes, reset the cursor\n useEffect(() => {\n if (tasksListCursor) setTasksListCursor('')\n }, [sorting, tasksListCursor])\n\n // Create sort params for infinite query\n const singleSort = { ...sorting[0] }\n // if task list and sorting by name, sort by path instead\n const sortByPath = singleSort?.id === 'name' && !showHierarchy\n const sortId = sortByPath ? 'path' : singleSort?.id === 'subType' ? 'taskType' : singleSort?.id\n const tasksFolderIdsParams = selectedFolders.length ? Array.from(foldersMap.keys()) : undefined\n\n // Use the new infinite query hook for tasks list with correct name\n const {\n data: tasksListInfiniteData,\n isLoading: isLoadingTasksList,\n isFetching: isFetchingTasksList,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage: isFetchingNextPageTasksList,\n isUninitialized: isUninitializedTasksList,\n refetch: refetchTasksList,\n } = useGetTasksListInfiniteInfiniteQuery(\n {\n projectName,\n filter: taskFilters.filterString,\n folderFilter: folderFilters.filterString,\n search: taskFilters.search,\n folderIds: taskIds?.length ? undefined : tasksFolderIdsParams,\n taskIds: taskIds?.length ? taskIds : undefined,\n sortBy: sortId ? sortId.replace('_', '.') : undefined,\n desc: !!singleSort?.desc,\n },\n {\n // Use flat task list when entity list provides specific task IDs, even in hierarchy mode\n skip: (showHierarchy || isFlatFolderView) && !taskIds?.length,\n initialPageParam: {\n cursor: '',\n desc: !!singleSort?.desc,\n },\n },\n )\n\n // Extract tasks from infinite query data correctly\n const tasksList = useMemo(() => {\n if (!tasksListInfiniteData?.pages) return []\n return tasksListInfiniteData.pages.flatMap((page) => page.tasks || [])\n }, [tasksListInfiniteData?.pages])\n\n const { pageCounts: groupPageCounts, incrementPageCount } = useGroupedPagination({\n groups: taskGroups,\n })\n\n // for grouped tasks, we fetch all tasks for each group\n // we do this by building a list of groups with filters for that group\n const groupByDataType = getGroupByDataType(groupBy, attribFields)\n\n // get expanded group values from the expanded state\n // group IDs are formatted as `_GROUP_<value>` so we extract the values\n const expandedGroupValues = useMemo(() => {\n return Object.entries(expanded)\n .filter(([, isExpanded]) => isExpanded)\n .filter(([id]) => isGroupId(id))\n .map(([id]) => id.slice(GROUP_BY_ID.length))\n }, [expanded])\n\n // get group queries from powerpack, filtered to only include expanded groups\n const groupQueries: GetGroupedTasksListArgs['groups'] = useMemo(() => {\n if (!groupBy) return []\n\n const allGroupQueries =\n getGroupQueries?.({\n groups: taskGroups,\n taskGroups, // deprecated, but keep for backward compatibility\n filters: taskFilters.filter,\n groupBy,\n groupPageCounts,\n }) ?? []\n\n // Only fetch tasks for groups that are expanded\n return allGroupQueries.filter((group) => expandedGroupValues.includes(group.value))\n }, [\n groupBy,\n taskGroups,\n groupPageCounts,\n groupByDataType,\n taskFilters.filter,\n getGroupQueries,\n expandedGroupValues,\n ])\n\n const {\n data: { tasks: groupTasks = [] } = {},\n isUninitialized: isUninitializedGroupedTasks,\n refetch: refetchGroupedTasks,\n } = useGetGroupedTasksListQuery(\n {\n projectName,\n groups: groupQueries,\n sortBy: sortId ? sortId.replace('_', '.') : undefined,\n desc: !!singleSort?.desc,\n search: taskFilters.search,\n folderFilter: folderFilters.filterString,\n folderIds: tasksFolderIdsParams,\n groupCount: taskGroupsCount,\n },\n {\n skip: !groupBy || !groupQueries.length || isLoadingModules,\n },\n )\n\n // Resolve which task source to use based on current mode\n // When entity list provides specific task IDs, use flat task list even in hierarchy mode\n const resolvedTasks = useMemo(() => {\n if (taskIds?.length) return tasksList\n if (showHierarchy || isFlatFolderView) return expandedFoldersTasks\n if (groupBy) return groupTasks\n return tasksList\n }, [\n taskIds,\n showHierarchy,\n isFlatFolderView,\n groupBy,\n tasksList,\n expandedFoldersTasks,\n groupTasks,\n ])\n\n // Get visible tasks for link fetching\n const visibleTasks = useMemo(() => {\n return new Set(resolvedTasks.map((task) => task.id))\n }, [resolvedTasks])\n\n // Get all links for visible tasks\n const {\n data: tasksLinks = [],\n refetch: refetchTasksLinks,\n isUninitialized: isUninitializedTasksLinks,\n } = useGetEntityLinksQuery(\n {\n projectName,\n entityIds: Array.from(visibleTasks),\n entityType: 'task',\n },\n {\n skip: visibleTasks.size === 0 || skipLinks,\n },\n )\n\n const handleFetchNextPage = (group?: string) => {\n if (groupBy) {\n if (group && group in groupPageCounts) {\n incrementPageCount(group)\n }\n } else if (hasNextPage) {\n fetchNextPage()\n }\n }\n\n // tasksMaps is a map of tasks by task ID\n // tasksByFolderMap is a map of tasks by folder ID\n const { tasksMap, tasksByFolderMap } = useMemo(() => {\n const tasksMap: TaskNodeMap = new Map()\n const tasksByFolderMap: TasksByFolderMap = new Map()\n\n const addExtraDataToTask = (task: EditorTaskNode) => ({\n ...task,\n entityId: task.id,\n entityType: 'task' as const,\n links: tasksLinks?.find((link) => link.id === task.id)?.links || [],\n })\n\n for (const task of resolvedTasks) {\n const taskId = task.id as string\n const folderId = task.folderId as string\n\n if (tasksMap.has(taskId)) {\n // merge specific data if the task already exists\n const existingTask = tasksMap.get(taskId) as EditorTaskNode\n const currentTask = addExtraDataToTask(task)\n const mergedTask = {\n ...existingTask,\n ...currentTask,\n groups: [...(existingTask.groups || []), ...(currentTask.groups || [])],\n }\n\n tasksMap.set(taskId, mergedTask)\n } else {\n tasksMap.set(taskId, addExtraDataToTask(task))\n }\n\n if (tasksByFolderMap.has(folderId)) {\n // dedup like tasksMap — resolvedTasks can contain the same task twice\n // (overlapping infinite-query pages, or a task in multiple groups)\n const folderTaskIds = tasksByFolderMap.get(folderId)!\n if (!folderTaskIds.includes(taskId)) folderTaskIds.push(taskId)\n } else {\n tasksByFolderMap.set(folderId, [taskId])\n }\n }\n\n return { tasksMap, tasksByFolderMap }\n }, [resolvedTasks, tasksLinks])\n\n // When entity list provides specific task IDs, filter folders to only those containing tasks\n const filteredFoldersMap: FolderNodeMap = useMemo(() => {\n if (!taskIds?.length || !tasksByFolderMap.size) return foldersMap\n\n const relevantFolderIds = new Set<string>()\n\n // Add all folders that contain selected tasks\n for (const folderId of tasksByFolderMap.keys()) {\n relevantFolderIds.add(folderId)\n }\n\n // Add parent folders for proper tree display\n const addParents = (folderId: string) => {\n const folder = foldersMap.get(folderId)\n if (folder && folder.parentId) {\n const parentId = folder.parentId as string\n if (!relevantFolderIds.has(parentId)) {\n relevantFolderIds.add(parentId)\n addParents(parentId)\n }\n }\n }\n\n for (const folderId of relevantFolderIds) {\n addParents(folderId)\n }\n\n const filtered = new Map() as FolderNodeMap\n for (const [id, folder] of foldersMap) {\n if (relevantFolderIds.has(id)) {\n filtered.set(id, folder)\n }\n }\n\n return filtered\n }, [foldersMap, tasksByFolderMap, taskIds])\n\n // reload all data for all queries\n const reloadTableData = () => {\n // only reload if there is data\n if (!isUninitializedFolders) refetchFolders()\n if (!isUninitializedExpandedFoldersTasks) refetchExpandedFoldersTasks()\n if (!isUninitializedTasksFolders) refetchTasksFolders()\n if (!isUninitializedTasksList) refetchTasksList()\n if (!isUninitializedGroupedTasks) refetchGroupedTasks()\n if (!isUninitializedFoldersLinks) refetchFoldersLinks()\n if (!isUninitializedTasksLinks) refetchTasksLinks()\n }\n\n return {\n foldersMap: filteredFoldersMap,\n tasksMap: tasksMap,\n tasksByFolderMap: tasksByFolderMap,\n isLoadingAll:\n isLoadingFolders || isLoadingTasksList || isLoadingTasksFolders || isLoadingModules, // these all show a full loading state\n isLoadingMore: isFetchingNextPageTasksList,\n loadingTasks: loadingTasksForParents,\n fetchNextPage: handleFetchNextPage,\n reloadTableData,\n }\n}\n"],"names":["useFetchOverviewData","projectName","selectedFolders","taskIds","taskFilters","folderFilters","sorting","groupBy","taskGroups","taskGroupsCount","expanded","showHierarchy","isFlatFolderView","attribFields","modules","skipLinks","getGroupQueries","isLoadingModules","folders","isLoadingFolders","isUninitializedFolders","refetchFolders","useProjectFoldersContext","expandedParentIds","isExpanded","id","isGroupId","expandedFoldersTasks","isFetchingExpandedFoldersTasks","refetchExpandedFoldersTasks","isUninitializedExpandedFoldersTasks","useGetOverviewTasksByFoldersQuery","skipFoldersByTaskFilter","foldersByTaskFilter","isUninitialized","isLoadingTasksFolders","isUninitializedTasksFolders","refetchTasksFolders","useGetSearchFoldersQuery","visibleFolders","useMemo","visibleSet","folder","parentId","isSelectedInSlicer","foldersLinks","refetchFoldersLinks","isUninitializedFoldersLinks","useGetEntityLinksQuery","foldersMap","map","addExtraDataToFolder","link","relevantFolderIds","folderId","foldersByIdMap","addParents","matchedIds","selectedPaths","filteredMap","folderPath","folderPathParts","isParentOrSelf","i","partialPath","p","isChild","selectedPath","loadingTasksForParents","determineLoadingTaskFolders","tasksListCursor","setTasksListCursor","useState","useEffect","singleSort","sortId","tasksFolderIdsParams","tasksListInfiniteData","isLoadingTasksList","isFetchingTasksList","fetchNextPage","hasNextPage","isFetchingNextPageTasksList","isUninitializedTasksList","refetchTasksList","useGetTasksListInfiniteInfiniteQuery","tasksList","page","groupPageCounts","incrementPageCount","useGroupedPagination","groupByDataType","getGroupByDataType","expandedGroupValues","GROUP_BY_ID","groupQueries","group","groupTasks","isUninitializedGroupedTasks","refetchGroupedTasks","useGetGroupedTasksListQuery","resolvedTasks","visibleTasks","task","tasksLinks","refetchTasksLinks","isUninitializedTasksLinks","handleFetchNextPage","tasksMap","tasksByFolderMap","addExtraDataToTask","taskId","existingTask","currentTask","mergedTask","folderTaskIds","filtered"],"mappings":"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"}
1
+ {"version":3,"file":"useFetchOverviewData.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useFetchOverviewData.ts"],"sourcesContent":["import {\n useGetGroupedTasksListQuery,\n useGetOverviewTasksByFoldersQuery,\n useGetSearchFoldersQuery,\n useGetTasksListInfiniteInfiniteQuery,\n} from '@shared/api'\nimport type { FolderListItem, GetGroupedTasksListArgs, EntityGroup, QueryFilter } from '@shared/api'\nimport { useGroupedPagination } from '@shared/hooks'\nimport { getGroupByDataType } from '@shared/util'\nimport { EditorTaskNode, FolderNodeMap, MatchingFolder, TaskNodeMap } from '../types/table'\nimport { useEffect, useMemo, useState } from 'react'\nimport { ExpandedState, SortingState } from '@tanstack/react-table'\nimport { determineLoadingTaskFolders } from '../utils/loadingUtils'\nimport { LoadingTasks } from '../types'\nimport { TasksByFolderMap } from '../utils'\nimport { TableGroupBy } from '../context'\nimport { isGroupId, GROUP_BY_ID } from '../hooks/useBuildGroupByTableData'\nimport { ProjectTableAttribute } from '../hooks/useAttributesList'\nimport { ProjectTableModulesType } from '@shared/hooks'\nimport { useGetEntityLinksQuery } from '@shared/api'\nimport { useProjectFoldersContext } from '@shared/context'\n\ntype QueryFilterParams = {\n filter: QueryFilter | undefined\n filterString?: string\n search?: string\n}\n\ntype useFetchOverviewDataData = {\n foldersMap: FolderNodeMap\n tasksMap: TaskNodeMap\n tasksByFolderMap: TasksByFolderMap\n isLoadingAll: boolean // the whole table is a loading state\n isLoadingMore: boolean // loading more tasks\n loadingTasks: LoadingTasks // show number of loading tasks per folder or root\n fetchNextPage: (value?: string) => void\n reloadTableData: () => void\n}\n\ntype Params = {\n projectName: string\n selectedFolders: string[] // folders selected in the slicer (hierarchy)\n taskIds?: string[] // specific task IDs to filter by (from entity list slicer)\n taskFilters: QueryFilterParams // filters for tasks\n folderFilters: QueryFilterParams // filters for folders\n sorting: SortingState\n groupBy: TableGroupBy | undefined\n taskGroups: EntityGroup[]\n taskGroupsCount?: number // override for number of items per group\n expanded: ExpandedState\n showHierarchy: boolean\n isFlatFolderView?: boolean\n attribFields: ProjectTableAttribute[]\n modules: ProjectTableModulesType\n skipLinks?: boolean\n}\n\nexport const useFetchOverviewData = ({\n projectName,\n selectedFolders, // comes from the slicer\n taskIds, // specific task IDs from entity list slicer\n taskFilters,\n folderFilters,\n sorting,\n groupBy,\n taskGroups = [],\n taskGroupsCount,\n expanded,\n showHierarchy,\n isFlatFolderView = false,\n attribFields,\n modules,\n skipLinks,\n}: Params): useFetchOverviewDataData => {\n const { getGroupQueries, isLoading: isLoadingModules } = modules\n\n const {\n folders,\n isLoading: isLoadingFolders,\n isUninitialized: isUninitializedFolders,\n refetch: refetchFolders,\n } = useProjectFoldersContext()\n\n const expandedParentIds = Object.entries(expanded)\n .filter(([, isExpanded]) => isExpanded)\n .filter(([id]) => !isGroupId(id)) // filter out the root folder\n .map(([id]) => id)\n\n const {\n data: expandedFoldersTasks = [],\n isFetching: isFetchingExpandedFoldersTasks,\n refetch: refetchExpandedFoldersTasks,\n isUninitialized: isUninitializedExpandedFoldersTasks,\n } = useGetOverviewTasksByFoldersQuery(\n {\n projectName,\n parentIds: expandedParentIds,\n filter: taskFilters.filterString,\n folderFilter: folderFilters.filterString,\n search: taskFilters.search,\n },\n { skip: !expandedParentIds.length || (!showHierarchy && !isFlatFolderView) },\n )\n\n const skipFoldersByTaskFilter =\n (!taskFilters.filterString &&\n !folderFilters.filterString &&\n !taskFilters.search &&\n !folderFilters.search) ||\n !folders.length ||\n (!showHierarchy && !isFlatFolderView)\n // get folders that would be left if the filters were applied for tasks\n const {\n data: foldersByTaskFilter,\n isUninitialized,\n isLoading: isLoadingTasksFolders,\n isUninitialized: isUninitializedTasksFolders,\n refetch: refetchTasksFolders,\n } = useGetSearchFoldersQuery(\n {\n projectName,\n folderSearchRequest: {\n taskFilter: taskFilters.filter?.conditions?.length ? taskFilters.filter : undefined,\n folderFilter: folderFilters.filter?.conditions?.length ? folderFilters.filter : undefined,\n search: taskFilters.search,\n },\n },\n {\n skip: skipFoldersByTaskFilter,\n },\n )\n\n // create a list of folders that are current visible in the table\n // root folders are always visible\n // then a folder is visible if it's parent is expanded\n const visibleFolders = useMemo(() => {\n const visibleSet = new Set<string>()\n\n // Check each folder in the map\n folders.forEach((folder) => {\n // Root folders are always visible\n if (!folder.parentId) {\n visibleSet.add(folder.id)\n return\n }\n\n // Check if parent is expanded\n const parentId = folder.parentId as string\n const isSelectedInSlicer = selectedFolders.includes(folder.id as string)\n const expandedMap = expanded as Record<string, boolean>\n if (expandedMap[parentId] === true || isSelectedInSlicer) {\n visibleSet.add(folder.id)\n }\n })\n\n return visibleSet\n }, [folders, foldersByTaskFilter, skipFoldersByTaskFilter, expanded, selectedFolders])\n\n // get all links for visible folders\n const {\n data: foldersLinks = [],\n refetch: refetchFoldersLinks,\n isUninitialized: isUninitializedFoldersLinks,\n } = useGetEntityLinksQuery(\n {\n projectName,\n entityIds: Array.from(visibleFolders),\n entityType: 'folder',\n },\n { skip: skipLinks },\n )\n\n // create a map of folders by id for efficient lookups\n const foldersMap: FolderNodeMap = useMemo(() => {\n const map = new Map()\n\n const addExtraDataToFolder = (folder: FolderListItem) => {\n // add any extra data to folder\n const folderWithExtraData: MatchingFolder = {\n ...folder,\n entityId: folder.id,\n entityType: 'folder',\n links: foldersLinks?.find((link) => link.id === folder.id)?.links || [],\n }\n return folderWithExtraData\n }\n\n // If we have task filters and folders to filter\n if (!isUninitialized && foldersByTaskFilter && folders.length) {\n // Create a set for efficient lookups of filtered folder IDs\n const relevantFolderIds = new Set<string>()\n\n // First pass: Add all folders from the task filter\n for (const folderId of foldersByTaskFilter) {\n relevantFolderIds.add(folderId)\n }\n\n // Create a map of folders by ID for parentId lookups\n const foldersByIdMap = new Map<string, (typeof folders)[0]>()\n for (const folder of folders) {\n foldersByIdMap.set(folder.id as string, folder)\n }\n\n // Second pass: Add all parent folders of filtered folders\n const addParents = (folderId: string) => {\n const folder = foldersByIdMap.get(folderId)\n if (folder && folder.parentId) {\n relevantFolderIds.add(folder.parentId as string)\n addParents(folder.parentId as string)\n }\n }\n\n // In flat folder view folders are shown as top-level rows — ancestors are\n // not needed and would bring in unrelated subtrees (e.g. showing the root\n // \"assets\" node which then exposes all its children).\n // In hierarchy mode ancestors ARE needed so the tree path is navigable.\n if (!isFlatFolderView) {\n const matchedIds = [...relevantFolderIds]\n for (const folderId of matchedIds) {\n addParents(folderId)\n }\n }\n\n // Third pass: Build the final map using only relevant folders\n for (const folder of folders) {\n if (relevantFolderIds.has(folder.id as string)) {\n map.set(folder.id as string, addExtraDataToFolder(folder))\n }\n }\n } else {\n // No filtering, include all folders\n for (const folder of folders) {\n map.set(folder.id as string, addExtraDataToFolder(folder))\n }\n }\n\n // Filter by selected folders if needed\n if (selectedFolders.length) {\n const selectedPaths = selectedFolders\n .map((id) => map.get(id)?.path)\n .filter(Boolean) as string[]\n\n // Create a new map that only contains selected folders and their children\n const filteredMap = new Map()\n\n // For each folder, check if it should be included\n map.forEach((folder, folderId) => {\n const folderPath = folder.path as string\n\n // Include if it's a parent or the folder itself\n const folderPathParts = folderPath.split('/')\n let isParentOrSelf = false\n\n for (let i = 0; i < folderPathParts.length; i++) {\n const partialPath = folderPathParts.slice(0, i + 1).join('/')\n if (selectedPaths.some((p) => p === partialPath)) {\n isParentOrSelf = true\n break\n }\n }\n\n // Include if it's a child of any selected folder\n const isChild = selectedPaths.some((selectedPath) =>\n folderPath.startsWith(selectedPath + '/'),\n )\n\n if (isParentOrSelf || isChild) {\n filteredMap.set(folderId, addExtraDataToFolder(folder))\n }\n })\n\n return filteredMap\n }\n\n return map\n }, [\n folders,\n foldersByTaskFilter,\n isUninitialized,\n selectedFolders,\n foldersLinks,\n isFlatFolderView,\n ])\n\n // calculate partial loading states\n const loadingTasksForParents = useMemo(() => {\n if (isFetchingExpandedFoldersTasks) {\n return determineLoadingTaskFolders({\n expandedFoldersTasks,\n expandedParentIds,\n foldersMap,\n })\n } else return {}\n }, [isFetchingExpandedFoldersTasks, expandedFoldersTasks, expandedParentIds, foldersMap])\n\n const [tasksListCursor, setTasksListCursor] = useState('')\n\n // every time the sorting changes, reset the cursor\n useEffect(() => {\n if (tasksListCursor) setTasksListCursor('')\n }, [sorting, tasksListCursor])\n\n // Create sort params for infinite query\n const singleSort = { ...sorting[0] }\n // if task list and sorting by name, sort by path instead\n const sortByPath = singleSort?.id === 'name' && !showHierarchy\n const sortId = sortByPath ? 'path' : singleSort?.id === 'subType' ? 'taskType' : singleSort?.id\n const tasksFolderIdsParams = selectedFolders.length ? Array.from(foldersMap.keys()) : undefined\n\n // Use the new infinite query hook for tasks list with correct name\n const {\n data: tasksListInfiniteData,\n isLoading: isLoadingTasksList,\n isFetching: isFetchingTasksList,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage: isFetchingNextPageTasksList,\n isUninitialized: isUninitializedTasksList,\n refetch: refetchTasksList,\n } = useGetTasksListInfiniteInfiniteQuery(\n {\n projectName,\n filter: taskFilters.filterString,\n folderFilter: folderFilters.filterString,\n search: taskFilters.search,\n folderIds: taskIds?.length ? undefined : tasksFolderIdsParams,\n taskIds: taskIds?.length ? taskIds : undefined,\n sortBy: sortId ? sortId.replace('_', '.') : undefined,\n desc: !!singleSort?.desc,\n },\n {\n // Use flat task list when entity list provides specific task IDs, even in hierarchy mode\n skip: (showHierarchy || isFlatFolderView) && !taskIds?.length,\n initialPageParam: {\n cursor: '',\n desc: !!singleSort?.desc,\n },\n },\n )\n\n // Extract tasks from infinite query data correctly\n const tasksList = useMemo(() => {\n if (!tasksListInfiniteData?.pages) return []\n return tasksListInfiniteData.pages.flatMap((page) => page.tasks || [])\n }, [tasksListInfiniteData?.pages])\n\n const { pageCounts: groupPageCounts, incrementPageCount } = useGroupedPagination({\n groups: taskGroups,\n })\n\n // for grouped tasks, we fetch all tasks for each group\n // we do this by building a list of groups with filters for that group\n const groupByDataType = getGroupByDataType(groupBy, attribFields)\n\n // get expanded group values from the expanded state\n // group IDs are formatted as `_GROUP_<value>` so we extract the values\n const expandedGroupValues = useMemo(() => {\n return Object.entries(expanded)\n .filter(([, isExpanded]) => isExpanded)\n .filter(([id]) => isGroupId(id))\n .map(([id]) => id.slice(GROUP_BY_ID.length))\n }, [expanded])\n\n // get group queries from powerpack, filtered to only include expanded groups\n const groupQueries: GetGroupedTasksListArgs['groups'] = useMemo(() => {\n if (!groupBy) return []\n\n const allGroupQueries =\n getGroupQueries?.({\n groups: taskGroups,\n taskGroups, // deprecated, but keep for backward compatibility\n filters: taskFilters.filter,\n groupBy,\n groupPageCounts,\n }) ?? []\n\n // Only fetch tasks for groups that are expanded\n return allGroupQueries.filter((group) => expandedGroupValues.includes(group.value))\n }, [\n groupBy,\n taskGroups,\n groupPageCounts,\n groupByDataType,\n taskFilters.filter,\n getGroupQueries,\n expandedGroupValues,\n ])\n\n const {\n data: { tasks: groupTasks = [] } = {},\n isUninitialized: isUninitializedGroupedTasks,\n refetch: refetchGroupedTasks,\n } = useGetGroupedTasksListQuery(\n {\n projectName,\n groups: groupQueries,\n sortBy: sortId ? sortId.replace('_', '.') : undefined,\n desc: !!singleSort?.desc,\n search: taskFilters.search,\n folderFilter: folderFilters.filterString,\n folderIds: tasksFolderIdsParams,\n groupCount: taskGroupsCount,\n },\n {\n skip: !groupBy || !groupQueries.length || isLoadingModules,\n },\n )\n\n // Resolve which task source to use based on current mode\n // When entity list provides specific task IDs, use flat task list even in hierarchy mode\n const resolvedTasks = useMemo(() => {\n if (taskIds?.length) return tasksList\n if (showHierarchy || isFlatFolderView) return expandedFoldersTasks\n if (groupBy) return groupTasks\n return tasksList\n }, [\n taskIds,\n showHierarchy,\n isFlatFolderView,\n groupBy,\n tasksList,\n expandedFoldersTasks,\n groupTasks,\n ])\n\n // Get visible tasks for link fetching\n const visibleTasks = useMemo(() => {\n return new Set(resolvedTasks.map((task) => task.id))\n }, [resolvedTasks])\n\n // Get all links for visible tasks\n const {\n data: tasksLinks = [],\n refetch: refetchTasksLinks,\n isUninitialized: isUninitializedTasksLinks,\n } = useGetEntityLinksQuery(\n {\n projectName,\n entityIds: Array.from(visibleTasks),\n entityType: 'task',\n },\n {\n skip: visibleTasks.size === 0 || skipLinks,\n },\n )\n\n const handleFetchNextPage = (group?: string) => {\n if (groupBy) {\n if (group && group in groupPageCounts) {\n incrementPageCount(group)\n }\n } else if (hasNextPage) {\n fetchNextPage()\n }\n }\n\n // tasksMaps is a map of tasks by task ID\n // tasksByFolderMap is a map of tasks by folder ID\n const { tasksMap, tasksByFolderMap } = useMemo(() => {\n const tasksMap: TaskNodeMap = new Map()\n const tasksByFolderMap: TasksByFolderMap = new Map()\n\n const addExtraDataToTask = (task: EditorTaskNode) => ({\n ...task,\n entityId: task.id,\n entityType: 'task' as const,\n links: tasksLinks?.find((link) => link.id === task.id)?.links || [],\n })\n\n for (const task of resolvedTasks) {\n const taskId = task.id as string\n const folderId = task.folderId as string\n\n if (tasksMap.has(taskId)) {\n // merge specific data if the task already exists\n const existingTask = tasksMap.get(taskId) as EditorTaskNode\n const currentTask = addExtraDataToTask(task)\n const mergedTask = {\n ...existingTask,\n ...currentTask,\n groups: [...(existingTask.groups || []), ...(currentTask.groups || [])],\n }\n\n tasksMap.set(taskId, mergedTask)\n } else {\n tasksMap.set(taskId, addExtraDataToTask(task))\n }\n\n if (tasksByFolderMap.has(folderId)) {\n // dedup like tasksMap — resolvedTasks can contain the same task twice\n // (overlapping infinite-query pages, or a task in multiple groups)\n const folderTaskIds = tasksByFolderMap.get(folderId)!\n if (!folderTaskIds.includes(taskId)) folderTaskIds.push(taskId)\n } else {\n tasksByFolderMap.set(folderId, [taskId])\n }\n }\n\n return { tasksMap, tasksByFolderMap }\n }, [resolvedTasks, tasksLinks])\n\n // When entity list provides specific task IDs, filter folders to only those containing tasks\n const filteredFoldersMap: FolderNodeMap = useMemo(() => {\n if (!taskIds?.length || !tasksByFolderMap.size) return foldersMap\n\n const relevantFolderIds = new Set<string>()\n\n // Add all folders that contain selected tasks\n for (const folderId of tasksByFolderMap.keys()) {\n relevantFolderIds.add(folderId)\n }\n\n // Add parent folders for proper tree display\n const addParents = (folderId: string) => {\n const folder = foldersMap.get(folderId)\n if (folder && folder.parentId) {\n const parentId = folder.parentId as string\n if (!relevantFolderIds.has(parentId)) {\n relevantFolderIds.add(parentId)\n addParents(parentId)\n }\n }\n }\n\n for (const folderId of relevantFolderIds) {\n addParents(folderId)\n }\n\n const filtered = new Map() as FolderNodeMap\n for (const [id, folder] of foldersMap) {\n if (relevantFolderIds.has(id)) {\n filtered.set(id, folder)\n }\n }\n\n return filtered\n }, [foldersMap, tasksByFolderMap, taskIds])\n\n // reload all data for all queries\n const reloadTableData = () => {\n // only reload if there is data\n if (!isUninitializedFolders) refetchFolders()\n if (!isUninitializedExpandedFoldersTasks) refetchExpandedFoldersTasks()\n if (!isUninitializedTasksFolders) refetchTasksFolders()\n if (!isUninitializedTasksList) refetchTasksList()\n if (!isUninitializedGroupedTasks) refetchGroupedTasks()\n if (!isUninitializedFoldersLinks) refetchFoldersLinks()\n if (!isUninitializedTasksLinks) refetchTasksLinks()\n }\n\n return {\n foldersMap: filteredFoldersMap,\n tasksMap: tasksMap,\n tasksByFolderMap: tasksByFolderMap,\n isLoadingAll:\n isLoadingFolders || isLoadingTasksList || isLoadingTasksFolders || isLoadingModules, // these all show a full loading state\n isLoadingMore: isFetchingNextPageTasksList,\n loadingTasks: loadingTasksForParents,\n fetchNextPage: handleFetchNextPage,\n reloadTableData,\n }\n}\n"],"names":["useFetchOverviewData","projectName","selectedFolders","taskIds","taskFilters","folderFilters","sorting","groupBy","taskGroups","taskGroupsCount","expanded","showHierarchy","isFlatFolderView","attribFields","modules","skipLinks","getGroupQueries","isLoadingModules","folders","isLoadingFolders","isUninitializedFolders","refetchFolders","useProjectFoldersContext","expandedParentIds","isExpanded","id","isGroupId","expandedFoldersTasks","isFetchingExpandedFoldersTasks","refetchExpandedFoldersTasks","isUninitializedExpandedFoldersTasks","useGetOverviewTasksByFoldersQuery","skipFoldersByTaskFilter","foldersByTaskFilter","isUninitialized","isLoadingTasksFolders","isUninitializedTasksFolders","refetchTasksFolders","useGetSearchFoldersQuery","visibleFolders","useMemo","visibleSet","folder","parentId","isSelectedInSlicer","foldersLinks","refetchFoldersLinks","isUninitializedFoldersLinks","useGetEntityLinksQuery","foldersMap","map","addExtraDataToFolder","link","relevantFolderIds","folderId","foldersByIdMap","addParents","matchedIds","selectedPaths","filteredMap","folderPath","folderPathParts","isParentOrSelf","i","partialPath","p","isChild","selectedPath","loadingTasksForParents","determineLoadingTaskFolders","tasksListCursor","setTasksListCursor","useState","useEffect","singleSort","sortId","tasksFolderIdsParams","tasksListInfiniteData","isLoadingTasksList","isFetchingTasksList","fetchNextPage","hasNextPage","isFetchingNextPageTasksList","isUninitializedTasksList","refetchTasksList","useGetTasksListInfiniteInfiniteQuery","tasksList","page","groupPageCounts","incrementPageCount","useGroupedPagination","groupByDataType","getGroupByDataType","expandedGroupValues","GROUP_BY_ID","groupQueries","group","groupTasks","isUninitializedGroupedTasks","refetchGroupedTasks","useGetGroupedTasksListQuery","resolvedTasks","visibleTasks","task","tasksLinks","refetchTasksLinks","isUninitializedTasksLinks","handleFetchNextPage","tasksMap","tasksByFolderMap","addExtraDataToTask","taskId","existingTask","currentTask","mergedTask","folderTaskIds","filtered"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFolderRelationships.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useFolderRelationships.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport {\n EditorTaskNode,\n EMapResult,\n EntitiesMap,\n FolderNodeMap,\n MatchingFolder,\n TaskNodeMap,\n} from '../types/table'\nimport { ProjectAttribModel2 } from '../types/project'\nimport { ProjectTableAttribute } from '../types'\nimport { getEntityDataById } from '../utils/cellUtils'\n\nexport interface InheritedDependent {\n entityId: string\n entityType: 'task' | 'folder'\n attrib: Record<string, any> // all attribs that are inherited from the parent and their new value\n}\nexport type GetInheritedDependents = (entities: InheritedDependent[]) => InheritedDependent[]\nexport type FindInheritedValueFromAncestors = (\n entityId: string,\n entityType: 'folder' | 'task',\n attribName: string,\n) => any\nexport type FindNonInheritedValues = (\n folderId: string | undefined,\n attribNames: string[],\n) => Record<string, any>\nexport type GetAncestorsOf = (id: string) => string[]\ninterface UseFolderRelationshipsProps {\n tasksMap?: TaskNodeMap\n entitiesMap?: EntitiesMap\n tasksByFolderMap?: Map<string, string[]>\n getEntityById: (id: string, field?: string) => any\n projectAttrib: ProjectAttribModel2 | undefined\n attribFields: ProjectTableAttribute[] | undefined\n}\n\nexport default function useFolderRelationships({\n tasksMap,\n entitiesMap,\n tasksByFolderMap,\n getEntityById,\n projectAttrib,\n attribFields,\n}: UseFolderRelationshipsProps) {\n // Pre-compute folder-children relationships\n const folderChildrenMap = useMemo(() => {\n const map = new Map<string, string[]>()\n if (!entitiesMap) return map\n for (const folder of entitiesMap.values()) {\n // Skip if not a folder\n if (folder.entityType !== 'folder') continue\n const parentId = folder.parentId\n if (!parentId) continue\n\n if (!map.has(parentId)) {\n map.set(parentId, [])\n }\n map.get(parentId)!.push(folder.id)\n }\n return map\n }, [entitiesMap])\n\n const getChildrenEntities = useCallback(\n (id: string) => {\n const descendants: (MatchingFolder | EditorTaskNode)[] = []\n const queue: string[] = [id]\n const visited = new Set<string>()\n\n while (queue.length > 0) {\n const currentId = queue.shift()!\n\n if (visited.has(currentId)) continue\n visited.add(currentId)\n\n // Skip adding the root folder to descendants\n if (currentId !== id && entitiesMap) {\n const folder = getEntityDataById<'folder'>(currentId, entitiesMap)\n if (folder) descendants.push({ ...folder, entityType: 'folder' })\n }\n\n // Add tasks efficiently with a single lookup\n const taskIds = tasksByFolderMap?.get(currentId)\n if (taskIds?.length && entitiesMap) {\n for (const taskId of taskIds) {\n const task = getEntityDataById<'task'>(taskId, entitiesMap)\n if (task) descendants.push({ ...task, entityType: 'task' })\n }\n }\n\n // Add folder children to queue\n const childFolderIds = folderChildrenMap.get(currentId)\n if (childFolderIds?.length) {\n queue.push(...childFolderIds)\n }\n }\n\n return descendants\n },\n [entitiesMap, tasksByFolderMap, entitiesMap, folderChildrenMap],\n )\n\n // Helper function to get ancestors of a folder\n const getAncestorsOf: GetAncestorsOf = useCallback(\n (id) => {\n const ancestors: string[] = []\n let currentId = id\n\n while (true) {\n const entity = entitiesMap && getEntityDataById<'folder'>(currentId, entitiesMap)\n if (!entity || !entity.parentId) break\n\n ancestors.push(entity.parentId)\n currentId = entity.parentId\n }\n\n return ancestors\n },\n [entitiesMap],\n )\n\n // Helper function to get all folder ancestors of a task\n const getTaskAncestors = useCallback(\n (taskId: string): string[] => {\n const task = tasksMap?.get(taskId) as EMapResult<'task'>\n if (!task || !task.folderId) return []\n\n // Start with the direct parent folder\n const ancestors = [task.folderId]\n\n // Add all ancestors of the parent folder\n const folderAncestors = getAncestorsOf(task.folderId)\n ancestors.push(...folderAncestors)\n\n return ancestors\n },\n [tasksMap, getAncestorsOf],\n )\n\n // Helper function to find non-inherited values for multiple attributes from ancestors\n const findNonInheritedValues: FindNonInheritedValues = useCallback(\n (folderId, attribNames) => {\n if (!attribNames.length) return {}\n\n const result: Record<string, any> = {}\n const pendingAttribs = new Set(attribNames)\n\n // Start with the provided folder and traverse upward\n let currentId = folderId\n\n // Traverse up the folder hierarchy until we've found values for all attributes\n // or we've reached the root folder\n while (pendingAttribs.size > 0) {\n const folder = getEntityById(currentId || '')\n if (!folder || !currentId) {\n // use the project attrib\n for (const attribName of pendingAttribs) {\n if (projectAttrib && attribName in projectAttrib) {\n // @ts-ignore\n result[attribName] = projectAttrib[attribName]\n pendingAttribs.delete(attribName)\n }\n }\n\n // end search\n break\n }\n\n // Check if this folder has non-inherited values for any of our pending attributes\n for (const attribName of Array.from(pendingAttribs)) {\n if (\n folder.ownAttrib?.includes(attribName) &&\n folder.attrib &&\n attribName in folder.attrib\n ) {\n // Found a non-inherited value, add to result and remove from pending\n result[attribName] = folder.attrib[attribName]\n pendingAttribs.delete(attribName)\n }\n }\n\n // Move up to the parent folder\n currentId = folder.parentId\n }\n\n // For any attributes without non-inherited values found, set to null\n for (const attribName of pendingAttribs) {\n result[attribName] = null\n }\n\n return result\n },\n [getEntityById],\n )\n\n // Optimized implementation of getInheritedDependents\n const getInheritedDependents: GetInheritedDependents = useCallback(\n (entities) => {\n // console.time('getInheritedDependents') // 40ms - TODO improve this\n if (!entities.length) return []\n\n // Process all entities in one batch for efficiency\n const result: InheritedDependent[] = []\n\n // Track attributes that are owned (not inherited) to block inheritance\n const blockedInheritanceMap = new Map<string, Set<string>>()\n\n for (const entity of entities) {\n // check entity is folder\n if (entity.entityType !== 'folder') continue\n\n const attribEntries = Object.entries(entity.attrib)\n if (!attribEntries.length) continue\n\n const children = getChildrenEntities(entity.entityId)\n\n // filter out children that are in entities as they are already processed\n const filteredChildren = children.filter(\n (child) => !entities.find((e) => e.entityId === child.id),\n )\n\n if (!filteredChildren.length) continue\n\n for (const child of filteredChildren) {\n // Find which attributes would be inherited by this child\n const inheritedAttribs = attribEntries.filter(\n ([attribName]) =>\n !child.ownAttrib?.includes(attribName) &&\n attribFields?.find((a) => a.name === attribName)?.data?.inherit,\n )\n\n // Record attributes that child owns (has its own value for)\n const ownedAttribs = attribEntries.filter(([attribName]) =>\n child.ownAttrib?.includes(attribName),\n )\n\n // If the child has its own value for some attributes, block inheritance for its descendants\n if (ownedAttribs.length) {\n if (!blockedInheritanceMap.has(child.id)) {\n blockedInheritanceMap.set(child.id, new Set())\n }\n ownedAttribs.forEach(([attribName]) => {\n blockedInheritanceMap.get(child.id)!.add(attribName)\n })\n }\n\n // Filter out attributes blocked by ancestors\n const filteredInheritedAttribs = inheritedAttribs.filter(([attribName]) => {\n // Get ancestors based on entity type\n const ancestors =\n child.entityType === 'task' ? getTaskAncestors(child.id) : getAncestorsOf(child.id)\n\n // Check if any ancestor blocks this attribute\n for (const ancestor of ancestors) {\n if (\n blockedInheritanceMap.has(ancestor) &&\n blockedInheritanceMap.get(ancestor)!.has(attribName)\n ) {\n return false\n }\n }\n return true\n })\n\n if (filteredInheritedAttribs.length) {\n // Check if entity already exists in the result\n const existingEntityIndex = result.findIndex((item) => item.entityId === child.id)\n\n if (existingEntityIndex !== -1) {\n // Merge attributes with existing entry\n result[existingEntityIndex].attrib = {\n ...result[existingEntityIndex].attrib,\n ...Object.fromEntries(filteredInheritedAttribs),\n }\n } else {\n // Add new entity\n result.push({\n entityId: child.id,\n entityType: child.entityType || ('parentId' in child ? 'folder' : 'task'),\n attrib: Object.fromEntries(filteredInheritedAttribs),\n })\n }\n }\n }\n }\n\n // console.timeEnd('getInheritedDependents')\n\n return result\n },\n [getChildrenEntities, tasksMap, getTaskAncestors, getAncestorsOf],\n )\n\n // Helper function to find the inherited value for an attribute from ancestors\n const findInheritedValueFromAncestors = useCallback<FindInheritedValueFromAncestors>(\n (entityId, entityType, attribName) => {\n const entity = getEntityById(entityId)\n if (!entity) return null\n\n // For tasks, start with their parent folder\n let currentId = entityType === 'task' ? entity.folderId : entity.parentId\n\n // Traverse up the folder hierarchy\n while (currentId) {\n const ancestor = getEntityById(currentId)\n if (!ancestor) break\n\n // If the ancestor has its own value for this attribute, return it\n if (\n ancestor.ownAttrib?.includes(attribName) &&\n ancestor.attrib &&\n attribName in ancestor.attrib\n ) {\n return ancestor.attrib[attribName]\n }\n\n // Move up to the next parent\n currentId = ancestor.parentId\n }\n\n // If no ancestor has its own value, return null (will use the default)\n return null\n },\n [getEntityById],\n )\n\n return {\n folderChildrenMap,\n getChildrenEntities,\n getInheritedDependents,\n findInheritedValueFromAncestors,\n findNonInheritedValues,\n getAncestorsOf,\n }\n}\n"],"names":["useFolderRelationships","tasksMap","entitiesMap","tasksByFolderMap","getEntityById","projectAttrib","attribFields","folderChildrenMap","useMemo","map","folder","parentId","getChildrenEntities","useCallback","id","descendants","queue","visited","currentId","getEntityDataById","taskIds","taskId","task","childFolderIds","getAncestorsOf","ancestors","entity","getTaskAncestors","folderAncestors","findNonInheritedValues","folderId","attribNames","result","pendingAttribs","attribName","getInheritedDependents","entities","blockedInheritanceMap","attribEntries","filteredChildren","child","e","inheritedAttribs","a","ownedAttribs","filteredInheritedAttribs","ancestor","existingEntityIndex","item","findInheritedValueFromAncestors","entityId","entityType"],"mappings":"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"}
1
+ {"version":3,"file":"useFolderRelationships.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useFolderRelationships.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport {\n EditorTaskNode,\n EMapResult,\n EntitiesMap,\n MatchingFolder,\n TaskNodeMap,\n} from '../types/table'\nimport { ProjectAttribModel2 } from '../types/project'\nimport { ProjectTableAttribute } from '../types'\nimport { getEntityDataById } from '../utils/cellUtils'\n\nexport interface InheritedDependent {\n entityId: string\n entityType: 'task' | 'folder'\n attrib: Record<string, any> // all attribs that are inherited from the parent and their new value\n}\nexport type GetInheritedDependents = (entities: InheritedDependent[]) => InheritedDependent[]\nexport type FindInheritedValueFromAncestors = (\n entityId: string,\n entityType: 'folder' | 'task',\n attribName: string,\n) => any\nexport type FindNonInheritedValues = (\n folderId: string | undefined,\n attribNames: string[],\n) => Record<string, any>\nexport type GetAncestorsOf = (id: string) => string[]\ninterface UseFolderRelationshipsProps {\n tasksMap?: TaskNodeMap\n entitiesMap?: EntitiesMap\n tasksByFolderMap?: Map<string, string[]>\n getEntityById: (id: string, field?: string) => any\n projectAttrib: ProjectAttribModel2 | undefined\n attribFields: ProjectTableAttribute[] | undefined\n}\n\nexport default function useFolderRelationships({\n tasksMap,\n entitiesMap,\n tasksByFolderMap,\n getEntityById,\n projectAttrib,\n attribFields,\n}: UseFolderRelationshipsProps) {\n // Pre-compute folder-children relationships\n const folderChildrenMap = useMemo(() => {\n const map = new Map<string, string[]>()\n if (!entitiesMap) return map\n for (const folder of entitiesMap.values()) {\n // Skip if not a folder\n if (folder.entityType !== 'folder') continue\n const parentId = folder.parentId\n if (!parentId) continue\n\n if (!map.has(parentId)) {\n map.set(parentId, [])\n }\n map.get(parentId)!.push(folder.id)\n }\n return map\n }, [entitiesMap])\n\n const getChildrenEntities = useCallback(\n (id: string) => {\n const descendants: (MatchingFolder | EditorTaskNode)[] = []\n const queue: string[] = [id]\n const visited = new Set<string>()\n\n while (queue.length > 0) {\n const currentId = queue.shift()!\n\n if (visited.has(currentId)) continue\n visited.add(currentId)\n\n // Skip adding the root folder to descendants\n if (currentId !== id && entitiesMap) {\n const folder = getEntityDataById<'folder'>(currentId, entitiesMap)\n if (folder) descendants.push({ ...folder, entityType: 'folder' })\n }\n\n // Add tasks efficiently with a single lookup\n const taskIds = tasksByFolderMap?.get(currentId)\n if (taskIds?.length && entitiesMap) {\n for (const taskId of taskIds) {\n const task = getEntityDataById<'task'>(taskId, entitiesMap)\n if (task) descendants.push({ ...task, entityType: 'task' })\n }\n }\n\n // Add folder children to queue\n const childFolderIds = folderChildrenMap.get(currentId)\n if (childFolderIds?.length) {\n queue.push(...childFolderIds)\n }\n }\n\n return descendants\n },\n [entitiesMap, tasksByFolderMap, entitiesMap, folderChildrenMap],\n )\n\n // Helper function to get ancestors of a folder\n const getAncestorsOf: GetAncestorsOf = useCallback(\n (id) => {\n const ancestors: string[] = []\n let currentId = id\n\n while (true) {\n const entity = entitiesMap && getEntityDataById<'folder'>(currentId, entitiesMap)\n if (!entity || !entity.parentId) break\n\n ancestors.push(entity.parentId)\n currentId = entity.parentId\n }\n\n return ancestors\n },\n [entitiesMap],\n )\n\n // Helper function to get all folder ancestors of a task\n const getTaskAncestors = useCallback(\n (taskId: string): string[] => {\n const task = tasksMap?.get(taskId) as EMapResult<'task'>\n if (!task || !task.folderId) return []\n\n // Start with the direct parent folder\n const ancestors = [task.folderId]\n\n // Add all ancestors of the parent folder\n const folderAncestors = getAncestorsOf(task.folderId)\n ancestors.push(...folderAncestors)\n\n return ancestors\n },\n [tasksMap, getAncestorsOf],\n )\n\n // Helper function to find non-inherited values for multiple attributes from ancestors\n const findNonInheritedValues: FindNonInheritedValues = useCallback(\n (folderId, attribNames) => {\n if (!attribNames.length) return {}\n\n const result: Record<string, any> = {}\n const pendingAttribs = new Set(attribNames)\n\n // Start with the provided folder and traverse upward\n let currentId = folderId\n\n // Traverse up the folder hierarchy until we've found values for all attributes\n // or we've reached the root folder\n while (pendingAttribs.size > 0) {\n const folder = getEntityById(currentId || '')\n if (!folder || !currentId) {\n // use the project attrib\n for (const attribName of pendingAttribs) {\n if (projectAttrib && attribName in projectAttrib) {\n // @ts-ignore\n result[attribName] = projectAttrib[attribName]\n pendingAttribs.delete(attribName)\n }\n }\n\n // end search\n break\n }\n\n // Check if this folder has non-inherited values for any of our pending attributes\n for (const attribName of Array.from(pendingAttribs)) {\n if (\n folder.ownAttrib?.includes(attribName) &&\n folder.attrib &&\n attribName in folder.attrib\n ) {\n // Found a non-inherited value, add to result and remove from pending\n result[attribName] = folder.attrib[attribName]\n pendingAttribs.delete(attribName)\n }\n }\n\n // Move up to the parent folder\n currentId = folder.parentId\n }\n\n // For any attributes without non-inherited values found, set to null\n for (const attribName of pendingAttribs) {\n result[attribName] = null\n }\n\n return result\n },\n [getEntityById],\n )\n\n // Optimized implementation of getInheritedDependents\n const getInheritedDependents: GetInheritedDependents = useCallback(\n (entities) => {\n // console.time('getInheritedDependents') // 40ms - TODO improve this\n if (!entities.length) return []\n\n // Process all entities in one batch for efficiency\n const result: InheritedDependent[] = []\n\n // Track attributes that are owned (not inherited) to block inheritance\n const blockedInheritanceMap = new Map<string, Set<string>>()\n\n for (const entity of entities) {\n // check entity is folder\n if (entity.entityType !== 'folder') continue\n\n const attribEntries = Object.entries(entity.attrib)\n if (!attribEntries.length) continue\n\n const children = getChildrenEntities(entity.entityId)\n\n // filter out children that are in entities as they are already processed\n const filteredChildren = children.filter(\n (child) => !entities.find((e) => e.entityId === child.id),\n )\n\n if (!filteredChildren.length) continue\n\n for (const child of filteredChildren) {\n // Find which attributes would be inherited by this child\n const inheritedAttribs = attribEntries.filter(\n ([attribName]) =>\n !child.ownAttrib?.includes(attribName) &&\n attribFields?.find((a) => a.name === attribName)?.data?.inherit,\n )\n\n // Record attributes that child owns (has its own value for)\n const ownedAttribs = attribEntries.filter(([attribName]) =>\n child.ownAttrib?.includes(attribName),\n )\n\n // If the child has its own value for some attributes, block inheritance for its descendants\n if (ownedAttribs.length) {\n if (!blockedInheritanceMap.has(child.id)) {\n blockedInheritanceMap.set(child.id, new Set())\n }\n ownedAttribs.forEach(([attribName]) => {\n blockedInheritanceMap.get(child.id)!.add(attribName)\n })\n }\n\n // Filter out attributes blocked by ancestors\n const filteredInheritedAttribs = inheritedAttribs.filter(([attribName]) => {\n // Get ancestors based on entity type\n const ancestors =\n child.entityType === 'task' ? getTaskAncestors(child.id) : getAncestorsOf(child.id)\n\n // Check if any ancestor blocks this attribute\n for (const ancestor of ancestors) {\n if (\n blockedInheritanceMap.has(ancestor) &&\n blockedInheritanceMap.get(ancestor)!.has(attribName)\n ) {\n return false\n }\n }\n return true\n })\n\n if (filteredInheritedAttribs.length) {\n // Check if entity already exists in the result\n const existingEntityIndex = result.findIndex((item) => item.entityId === child.id)\n\n if (existingEntityIndex !== -1) {\n // Merge attributes with existing entry\n result[existingEntityIndex].attrib = {\n ...result[existingEntityIndex].attrib,\n ...Object.fromEntries(filteredInheritedAttribs),\n }\n } else {\n // Add new entity\n result.push({\n entityId: child.id,\n entityType: child.entityType || ('parentId' in child ? 'folder' : 'task'),\n attrib: Object.fromEntries(filteredInheritedAttribs),\n })\n }\n }\n }\n }\n\n // console.timeEnd('getInheritedDependents')\n\n return result\n },\n [getChildrenEntities, tasksMap, getTaskAncestors, getAncestorsOf],\n )\n\n // Helper function to find the inherited value for an attribute from ancestors\n const findInheritedValueFromAncestors = useCallback<FindInheritedValueFromAncestors>(\n (entityId, entityType, attribName) => {\n const entity = getEntityById(entityId)\n if (!entity) return null\n\n // For tasks, start with their parent folder\n let currentId = entityType === 'task' ? entity.folderId : entity.parentId\n\n // Traverse up the folder hierarchy\n while (currentId) {\n const ancestor = getEntityById(currentId)\n if (!ancestor) break\n\n // If the ancestor has its own value for this attribute, return it\n if (\n ancestor.ownAttrib?.includes(attribName) &&\n ancestor.attrib &&\n attribName in ancestor.attrib\n ) {\n return ancestor.attrib[attribName]\n }\n\n // Move up to the next parent\n currentId = ancestor.parentId\n }\n\n // If no ancestor has its own value, return null (will use the default)\n return null\n },\n [getEntityById],\n )\n\n return {\n folderChildrenMap,\n getChildrenEntities,\n getInheritedDependents,\n findInheritedValueFromAncestors,\n findNonInheritedValues,\n getAncestorsOf,\n }\n}\n"],"names":["useFolderRelationships","tasksMap","entitiesMap","tasksByFolderMap","getEntityById","projectAttrib","attribFields","folderChildrenMap","useMemo","map","folder","parentId","getChildrenEntities","useCallback","id","descendants","queue","visited","currentId","getEntityDataById","taskIds","taskId","task","childFolderIds","getAncestorsOf","ancestors","entity","getTaskAncestors","folderAncestors","findNonInheritedValues","folderId","attribNames","result","pendingAttribs","attribName","getInheritedDependents","entities","blockedInheritanceMap","attribEntries","filteredChildren","child","e","inheritedAttribs","a","ownedAttribs","filteredInheritedAttribs","ancestor","existingEntityIndex","item","findInheritedValueFromAncestors","entityId","entityType"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFolderRelationships.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useFolderRelationships.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport {\n EditorTaskNode,\n EMapResult,\n EntitiesMap,\n FolderNodeMap,\n MatchingFolder,\n TaskNodeMap,\n} from '../types/table'\nimport { ProjectAttribModel2 } from '../types/project'\nimport { ProjectTableAttribute } from '../types'\nimport { getEntityDataById } from '../utils/cellUtils'\n\nexport interface InheritedDependent {\n entityId: string\n entityType: 'task' | 'folder'\n attrib: Record<string, any> // all attribs that are inherited from the parent and their new value\n}\nexport type GetInheritedDependents = (entities: InheritedDependent[]) => InheritedDependent[]\nexport type FindInheritedValueFromAncestors = (\n entityId: string,\n entityType: 'folder' | 'task',\n attribName: string,\n) => any\nexport type FindNonInheritedValues = (\n folderId: string | undefined,\n attribNames: string[],\n) => Record<string, any>\nexport type GetAncestorsOf = (id: string) => string[]\ninterface UseFolderRelationshipsProps {\n tasksMap?: TaskNodeMap\n entitiesMap?: EntitiesMap\n tasksByFolderMap?: Map<string, string[]>\n getEntityById: (id: string, field?: string) => any\n projectAttrib: ProjectAttribModel2 | undefined\n attribFields: ProjectTableAttribute[] | undefined\n}\n\nexport default function useFolderRelationships({\n tasksMap,\n entitiesMap,\n tasksByFolderMap,\n getEntityById,\n projectAttrib,\n attribFields,\n}: UseFolderRelationshipsProps) {\n // Pre-compute folder-children relationships\n const folderChildrenMap = useMemo(() => {\n const map = new Map<string, string[]>()\n if (!entitiesMap) return map\n for (const folder of entitiesMap.values()) {\n // Skip if not a folder\n if (folder.entityType !== 'folder') continue\n const parentId = folder.parentId\n if (!parentId) continue\n\n if (!map.has(parentId)) {\n map.set(parentId, [])\n }\n map.get(parentId)!.push(folder.id)\n }\n return map\n }, [entitiesMap])\n\n const getChildrenEntities = useCallback(\n (id: string) => {\n const descendants: (MatchingFolder | EditorTaskNode)[] = []\n const queue: string[] = [id]\n const visited = new Set<string>()\n\n while (queue.length > 0) {\n const currentId = queue.shift()!\n\n if (visited.has(currentId)) continue\n visited.add(currentId)\n\n // Skip adding the root folder to descendants\n if (currentId !== id && entitiesMap) {\n const folder = getEntityDataById<'folder'>(currentId, entitiesMap)\n if (folder) descendants.push({ ...folder, entityType: 'folder' })\n }\n\n // Add tasks efficiently with a single lookup\n const taskIds = tasksByFolderMap?.get(currentId)\n if (taskIds?.length && entitiesMap) {\n for (const taskId of taskIds) {\n const task = getEntityDataById<'task'>(taskId, entitiesMap)\n if (task) descendants.push({ ...task, entityType: 'task' })\n }\n }\n\n // Add folder children to queue\n const childFolderIds = folderChildrenMap.get(currentId)\n if (childFolderIds?.length) {\n queue.push(...childFolderIds)\n }\n }\n\n return descendants\n },\n [entitiesMap, tasksByFolderMap, entitiesMap, folderChildrenMap],\n )\n\n // Helper function to get ancestors of a folder\n const getAncestorsOf: GetAncestorsOf = useCallback(\n (id) => {\n const ancestors: string[] = []\n let currentId = id\n\n while (true) {\n const entity = entitiesMap && getEntityDataById<'folder'>(currentId, entitiesMap)\n if (!entity || !entity.parentId) break\n\n ancestors.push(entity.parentId)\n currentId = entity.parentId\n }\n\n return ancestors\n },\n [entitiesMap],\n )\n\n // Helper function to get all folder ancestors of a task\n const getTaskAncestors = useCallback(\n (taskId: string): string[] => {\n const task = tasksMap?.get(taskId) as EMapResult<'task'>\n if (!task || !task.folderId) return []\n\n // Start with the direct parent folder\n const ancestors = [task.folderId]\n\n // Add all ancestors of the parent folder\n const folderAncestors = getAncestorsOf(task.folderId)\n ancestors.push(...folderAncestors)\n\n return ancestors\n },\n [tasksMap, getAncestorsOf],\n )\n\n // Helper function to find non-inherited values for multiple attributes from ancestors\n const findNonInheritedValues: FindNonInheritedValues = useCallback(\n (folderId, attribNames) => {\n if (!attribNames.length) return {}\n\n const result: Record<string, any> = {}\n const pendingAttribs = new Set(attribNames)\n\n // Start with the provided folder and traverse upward\n let currentId = folderId\n\n // Traverse up the folder hierarchy until we've found values for all attributes\n // or we've reached the root folder\n while (pendingAttribs.size > 0) {\n const folder = getEntityById(currentId || '')\n if (!folder || !currentId) {\n // use the project attrib\n for (const attribName of pendingAttribs) {\n if (projectAttrib && attribName in projectAttrib) {\n // @ts-ignore\n result[attribName] = projectAttrib[attribName]\n pendingAttribs.delete(attribName)\n }\n }\n\n // end search\n break\n }\n\n // Check if this folder has non-inherited values for any of our pending attributes\n for (const attribName of Array.from(pendingAttribs)) {\n if (\n folder.ownAttrib?.includes(attribName) &&\n folder.attrib &&\n attribName in folder.attrib\n ) {\n // Found a non-inherited value, add to result and remove from pending\n result[attribName] = folder.attrib[attribName]\n pendingAttribs.delete(attribName)\n }\n }\n\n // Move up to the parent folder\n currentId = folder.parentId\n }\n\n // For any attributes without non-inherited values found, set to null\n for (const attribName of pendingAttribs) {\n result[attribName] = null\n }\n\n return result\n },\n [getEntityById],\n )\n\n // Optimized implementation of getInheritedDependents\n const getInheritedDependents: GetInheritedDependents = useCallback(\n (entities) => {\n // console.time('getInheritedDependents') // 40ms - TODO improve this\n if (!entities.length) return []\n\n // Process all entities in one batch for efficiency\n const result: InheritedDependent[] = []\n\n // Track attributes that are owned (not inherited) to block inheritance\n const blockedInheritanceMap = new Map<string, Set<string>>()\n\n for (const entity of entities) {\n // check entity is folder\n if (entity.entityType !== 'folder') continue\n\n const attribEntries = Object.entries(entity.attrib)\n if (!attribEntries.length) continue\n\n const children = getChildrenEntities(entity.entityId)\n\n // filter out children that are in entities as they are already processed\n const filteredChildren = children.filter(\n (child) => !entities.find((e) => e.entityId === child.id),\n )\n\n if (!filteredChildren.length) continue\n\n for (const child of filteredChildren) {\n // Find which attributes would be inherited by this child\n const inheritedAttribs = attribEntries.filter(\n ([attribName]) =>\n !child.ownAttrib?.includes(attribName) &&\n attribFields?.find((a) => a.name === attribName)?.data?.inherit,\n )\n\n // Record attributes that child owns (has its own value for)\n const ownedAttribs = attribEntries.filter(([attribName]) =>\n child.ownAttrib?.includes(attribName),\n )\n\n // If the child has its own value for some attributes, block inheritance for its descendants\n if (ownedAttribs.length) {\n if (!blockedInheritanceMap.has(child.id)) {\n blockedInheritanceMap.set(child.id, new Set())\n }\n ownedAttribs.forEach(([attribName]) => {\n blockedInheritanceMap.get(child.id)!.add(attribName)\n })\n }\n\n // Filter out attributes blocked by ancestors\n const filteredInheritedAttribs = inheritedAttribs.filter(([attribName]) => {\n // Get ancestors based on entity type\n const ancestors =\n child.entityType === 'task' ? getTaskAncestors(child.id) : getAncestorsOf(child.id)\n\n // Check if any ancestor blocks this attribute\n for (const ancestor of ancestors) {\n if (\n blockedInheritanceMap.has(ancestor) &&\n blockedInheritanceMap.get(ancestor)!.has(attribName)\n ) {\n return false\n }\n }\n return true\n })\n\n if (filteredInheritedAttribs.length) {\n // Check if entity already exists in the result\n const existingEntityIndex = result.findIndex((item) => item.entityId === child.id)\n\n if (existingEntityIndex !== -1) {\n // Merge attributes with existing entry\n result[existingEntityIndex].attrib = {\n ...result[existingEntityIndex].attrib,\n ...Object.fromEntries(filteredInheritedAttribs),\n }\n } else {\n // Add new entity\n result.push({\n entityId: child.id,\n entityType: child.entityType || ('parentId' in child ? 'folder' : 'task'),\n attrib: Object.fromEntries(filteredInheritedAttribs),\n })\n }\n }\n }\n }\n\n // console.timeEnd('getInheritedDependents')\n\n return result\n },\n [getChildrenEntities, tasksMap, getTaskAncestors, getAncestorsOf],\n )\n\n // Helper function to find the inherited value for an attribute from ancestors\n const findInheritedValueFromAncestors = useCallback<FindInheritedValueFromAncestors>(\n (entityId, entityType, attribName) => {\n const entity = getEntityById(entityId)\n if (!entity) return null\n\n // For tasks, start with their parent folder\n let currentId = entityType === 'task' ? entity.folderId : entity.parentId\n\n // Traverse up the folder hierarchy\n while (currentId) {\n const ancestor = getEntityById(currentId)\n if (!ancestor) break\n\n // If the ancestor has its own value for this attribute, return it\n if (\n ancestor.ownAttrib?.includes(attribName) &&\n ancestor.attrib &&\n attribName in ancestor.attrib\n ) {\n return ancestor.attrib[attribName]\n }\n\n // Move up to the next parent\n currentId = ancestor.parentId\n }\n\n // If no ancestor has its own value, return null (will use the default)\n return null\n },\n [getEntityById],\n )\n\n return {\n folderChildrenMap,\n getChildrenEntities,\n getInheritedDependents,\n findInheritedValueFromAncestors,\n findNonInheritedValues,\n getAncestorsOf,\n }\n}\n"],"names":["useFolderRelationships","tasksMap","entitiesMap","tasksByFolderMap","getEntityById","projectAttrib","attribFields","folderChildrenMap","useMemo","map","folder","parentId","getChildrenEntities","useCallback","id","descendants","queue","visited","currentId","getEntityDataById","taskIds","taskId","task","childFolderIds","getAncestorsOf","ancestors","entity","getTaskAncestors","folderAncestors","findNonInheritedValues","folderId","attribNames","result","pendingAttribs","attribName","getInheritedDependents","entities","blockedInheritanceMap","attribEntries","filteredChildren","child","e","inheritedAttribs","a","ownedAttribs","filteredInheritedAttribs","ancestor","existingEntityIndex","item","findInheritedValueFromAncestors","entityId","entityType"],"mappings":"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"}
1
+ {"version":3,"file":"useFolderRelationships.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useFolderRelationships.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport {\n EditorTaskNode,\n EMapResult,\n EntitiesMap,\n MatchingFolder,\n TaskNodeMap,\n} from '../types/table'\nimport { ProjectAttribModel2 } from '../types/project'\nimport { ProjectTableAttribute } from '../types'\nimport { getEntityDataById } from '../utils/cellUtils'\n\nexport interface InheritedDependent {\n entityId: string\n entityType: 'task' | 'folder'\n attrib: Record<string, any> // all attribs that are inherited from the parent and their new value\n}\nexport type GetInheritedDependents = (entities: InheritedDependent[]) => InheritedDependent[]\nexport type FindInheritedValueFromAncestors = (\n entityId: string,\n entityType: 'folder' | 'task',\n attribName: string,\n) => any\nexport type FindNonInheritedValues = (\n folderId: string | undefined,\n attribNames: string[],\n) => Record<string, any>\nexport type GetAncestorsOf = (id: string) => string[]\ninterface UseFolderRelationshipsProps {\n tasksMap?: TaskNodeMap\n entitiesMap?: EntitiesMap\n tasksByFolderMap?: Map<string, string[]>\n getEntityById: (id: string, field?: string) => any\n projectAttrib: ProjectAttribModel2 | undefined\n attribFields: ProjectTableAttribute[] | undefined\n}\n\nexport default function useFolderRelationships({\n tasksMap,\n entitiesMap,\n tasksByFolderMap,\n getEntityById,\n projectAttrib,\n attribFields,\n}: UseFolderRelationshipsProps) {\n // Pre-compute folder-children relationships\n const folderChildrenMap = useMemo(() => {\n const map = new Map<string, string[]>()\n if (!entitiesMap) return map\n for (const folder of entitiesMap.values()) {\n // Skip if not a folder\n if (folder.entityType !== 'folder') continue\n const parentId = folder.parentId\n if (!parentId) continue\n\n if (!map.has(parentId)) {\n map.set(parentId, [])\n }\n map.get(parentId)!.push(folder.id)\n }\n return map\n }, [entitiesMap])\n\n const getChildrenEntities = useCallback(\n (id: string) => {\n const descendants: (MatchingFolder | EditorTaskNode)[] = []\n const queue: string[] = [id]\n const visited = new Set<string>()\n\n while (queue.length > 0) {\n const currentId = queue.shift()!\n\n if (visited.has(currentId)) continue\n visited.add(currentId)\n\n // Skip adding the root folder to descendants\n if (currentId !== id && entitiesMap) {\n const folder = getEntityDataById<'folder'>(currentId, entitiesMap)\n if (folder) descendants.push({ ...folder, entityType: 'folder' })\n }\n\n // Add tasks efficiently with a single lookup\n const taskIds = tasksByFolderMap?.get(currentId)\n if (taskIds?.length && entitiesMap) {\n for (const taskId of taskIds) {\n const task = getEntityDataById<'task'>(taskId, entitiesMap)\n if (task) descendants.push({ ...task, entityType: 'task' })\n }\n }\n\n // Add folder children to queue\n const childFolderIds = folderChildrenMap.get(currentId)\n if (childFolderIds?.length) {\n queue.push(...childFolderIds)\n }\n }\n\n return descendants\n },\n [entitiesMap, tasksByFolderMap, entitiesMap, folderChildrenMap],\n )\n\n // Helper function to get ancestors of a folder\n const getAncestorsOf: GetAncestorsOf = useCallback(\n (id) => {\n const ancestors: string[] = []\n let currentId = id\n\n while (true) {\n const entity = entitiesMap && getEntityDataById<'folder'>(currentId, entitiesMap)\n if (!entity || !entity.parentId) break\n\n ancestors.push(entity.parentId)\n currentId = entity.parentId\n }\n\n return ancestors\n },\n [entitiesMap],\n )\n\n // Helper function to get all folder ancestors of a task\n const getTaskAncestors = useCallback(\n (taskId: string): string[] => {\n const task = tasksMap?.get(taskId) as EMapResult<'task'>\n if (!task || !task.folderId) return []\n\n // Start with the direct parent folder\n const ancestors = [task.folderId]\n\n // Add all ancestors of the parent folder\n const folderAncestors = getAncestorsOf(task.folderId)\n ancestors.push(...folderAncestors)\n\n return ancestors\n },\n [tasksMap, getAncestorsOf],\n )\n\n // Helper function to find non-inherited values for multiple attributes from ancestors\n const findNonInheritedValues: FindNonInheritedValues = useCallback(\n (folderId, attribNames) => {\n if (!attribNames.length) return {}\n\n const result: Record<string, any> = {}\n const pendingAttribs = new Set(attribNames)\n\n // Start with the provided folder and traverse upward\n let currentId = folderId\n\n // Traverse up the folder hierarchy until we've found values for all attributes\n // or we've reached the root folder\n while (pendingAttribs.size > 0) {\n const folder = getEntityById(currentId || '')\n if (!folder || !currentId) {\n // use the project attrib\n for (const attribName of pendingAttribs) {\n if (projectAttrib && attribName in projectAttrib) {\n // @ts-ignore\n result[attribName] = projectAttrib[attribName]\n pendingAttribs.delete(attribName)\n }\n }\n\n // end search\n break\n }\n\n // Check if this folder has non-inherited values for any of our pending attributes\n for (const attribName of Array.from(pendingAttribs)) {\n if (\n folder.ownAttrib?.includes(attribName) &&\n folder.attrib &&\n attribName in folder.attrib\n ) {\n // Found a non-inherited value, add to result and remove from pending\n result[attribName] = folder.attrib[attribName]\n pendingAttribs.delete(attribName)\n }\n }\n\n // Move up to the parent folder\n currentId = folder.parentId\n }\n\n // For any attributes without non-inherited values found, set to null\n for (const attribName of pendingAttribs) {\n result[attribName] = null\n }\n\n return result\n },\n [getEntityById],\n )\n\n // Optimized implementation of getInheritedDependents\n const getInheritedDependents: GetInheritedDependents = useCallback(\n (entities) => {\n // console.time('getInheritedDependents') // 40ms - TODO improve this\n if (!entities.length) return []\n\n // Process all entities in one batch for efficiency\n const result: InheritedDependent[] = []\n\n // Track attributes that are owned (not inherited) to block inheritance\n const blockedInheritanceMap = new Map<string, Set<string>>()\n\n for (const entity of entities) {\n // check entity is folder\n if (entity.entityType !== 'folder') continue\n\n const attribEntries = Object.entries(entity.attrib)\n if (!attribEntries.length) continue\n\n const children = getChildrenEntities(entity.entityId)\n\n // filter out children that are in entities as they are already processed\n const filteredChildren = children.filter(\n (child) => !entities.find((e) => e.entityId === child.id),\n )\n\n if (!filteredChildren.length) continue\n\n for (const child of filteredChildren) {\n // Find which attributes would be inherited by this child\n const inheritedAttribs = attribEntries.filter(\n ([attribName]) =>\n !child.ownAttrib?.includes(attribName) &&\n attribFields?.find((a) => a.name === attribName)?.data?.inherit,\n )\n\n // Record attributes that child owns (has its own value for)\n const ownedAttribs = attribEntries.filter(([attribName]) =>\n child.ownAttrib?.includes(attribName),\n )\n\n // If the child has its own value for some attributes, block inheritance for its descendants\n if (ownedAttribs.length) {\n if (!blockedInheritanceMap.has(child.id)) {\n blockedInheritanceMap.set(child.id, new Set())\n }\n ownedAttribs.forEach(([attribName]) => {\n blockedInheritanceMap.get(child.id)!.add(attribName)\n })\n }\n\n // Filter out attributes blocked by ancestors\n const filteredInheritedAttribs = inheritedAttribs.filter(([attribName]) => {\n // Get ancestors based on entity type\n const ancestors =\n child.entityType === 'task' ? getTaskAncestors(child.id) : getAncestorsOf(child.id)\n\n // Check if any ancestor blocks this attribute\n for (const ancestor of ancestors) {\n if (\n blockedInheritanceMap.has(ancestor) &&\n blockedInheritanceMap.get(ancestor)!.has(attribName)\n ) {\n return false\n }\n }\n return true\n })\n\n if (filteredInheritedAttribs.length) {\n // Check if entity already exists in the result\n const existingEntityIndex = result.findIndex((item) => item.entityId === child.id)\n\n if (existingEntityIndex !== -1) {\n // Merge attributes with existing entry\n result[existingEntityIndex].attrib = {\n ...result[existingEntityIndex].attrib,\n ...Object.fromEntries(filteredInheritedAttribs),\n }\n } else {\n // Add new entity\n result.push({\n entityId: child.id,\n entityType: child.entityType || ('parentId' in child ? 'folder' : 'task'),\n attrib: Object.fromEntries(filteredInheritedAttribs),\n })\n }\n }\n }\n }\n\n // console.timeEnd('getInheritedDependents')\n\n return result\n },\n [getChildrenEntities, tasksMap, getTaskAncestors, getAncestorsOf],\n )\n\n // Helper function to find the inherited value for an attribute from ancestors\n const findInheritedValueFromAncestors = useCallback<FindInheritedValueFromAncestors>(\n (entityId, entityType, attribName) => {\n const entity = getEntityById(entityId)\n if (!entity) return null\n\n // For tasks, start with their parent folder\n let currentId = entityType === 'task' ? entity.folderId : entity.parentId\n\n // Traverse up the folder hierarchy\n while (currentId) {\n const ancestor = getEntityById(currentId)\n if (!ancestor) break\n\n // If the ancestor has its own value for this attribute, return it\n if (\n ancestor.ownAttrib?.includes(attribName) &&\n ancestor.attrib &&\n attribName in ancestor.attrib\n ) {\n return ancestor.attrib[attribName]\n }\n\n // Move up to the next parent\n currentId = ancestor.parentId\n }\n\n // If no ancestor has its own value, return null (will use the default)\n return null\n },\n [getEntityById],\n )\n\n return {\n folderChildrenMap,\n getChildrenEntities,\n getInheritedDependents,\n findInheritedValueFromAncestors,\n findNonInheritedValues,\n getAncestorsOf,\n }\n}\n"],"names":["useFolderRelationships","tasksMap","entitiesMap","tasksByFolderMap","getEntityById","projectAttrib","attribFields","folderChildrenMap","useMemo","map","folder","parentId","getChildrenEntities","useCallback","id","descendants","queue","visited","currentId","getEntityDataById","taskIds","taskId","task","childFolderIds","getAncestorsOf","ancestors","entity","getTaskAncestors","folderAncestors","findNonInheritedValues","folderId","attribNames","result","pendingAttribs","attribName","getInheritedDependents","entities","blockedInheritanceMap","attribEntries","filteredChildren","child","e","inheritedAttribs","a","ownedAttribs","filteredInheritedAttribs","ancestor","existingEntityIndex","item","findInheritedValueFromAncestors","entityId","entityType"],"mappings":";;AAqCA,SAAwBA,EAAuB;AAAA,EAC7C,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AACF,GAAgC;AAE9B,QAAMC,IAAoBC,EAAQ,MAAM;AACtC,UAAMC,wBAAU,IAAA;AAChB,QAAI,CAACP,EAAa,QAAOO;AACzB,eAAWC,KAAUR,EAAY,UAAU;AAEzC,UAAIQ,EAAO,eAAe,SAAU;AACpC,YAAMC,IAAWD,EAAO;AACxB,MAAKC,MAEAF,EAAI,IAAIE,CAAQ,KACnBF,EAAI,IAAIE,GAAU,EAAE,GAEtBF,EAAI,IAAIE,CAAQ,EAAG,KAAKD,EAAO,EAAE;AAAA,IACnC;AACA,WAAOD;AAAA,EACT,GAAG,CAACP,CAAW,CAAC,GAEVU,IAAsBC;AAAA,IAC1B,CAACC,MAAe;AACd,YAAMC,IAAmD,CAAA,GACnDC,IAAkB,CAACF,CAAE,GACrBG,wBAAc,IAAA;AAEpB,aAAOD,EAAM,SAAS,KAAG;AACvB,cAAME,IAAYF,EAAM,MAAA;AAExB,YAAIC,EAAQ,IAAIC,CAAS,EAAG;AAI5B,YAHAD,EAAQ,IAAIC,CAAS,GAGjBA,MAAcJ,KAAMZ,GAAa;AACnC,gBAAMQ,IAASS,EAA4BD,GAAWhB,CAAW;AACjE,UAAIQ,OAAoB,KAAK,EAAE,GAAGA,GAAQ,YAAY,UAAU;AAAA,QAClE;AAGA,cAAMU,IAAUjB,GAAkB,IAAIe,CAAS;AAC/C,YAAIE,GAAS,UAAUlB;AACrB,qBAAWmB,KAAUD,GAAS;AAC5B,kBAAME,IAAOH,EAA0BE,GAAQnB,CAAW;AAC1D,YAAIoB,OAAkB,KAAK,EAAE,GAAGA,GAAM,YAAY,QAAQ;AAAA,UAC5D;AAIF,cAAMC,IAAiBhB,EAAkB,IAAIW,CAAS;AACtD,QAAIK,GAAgB,UAClBP,EAAM,KAAK,GAAGO,CAAc;AAAA,MAEhC;AAEA,aAAOR;AAAA,IACT;AAAA,IACA,CAACb,GAAaC,GAAkBD,GAAaK,CAAiB;AAAA,EAAA,GAI1DiB,IAAiCX;AAAA,IACrC,CAACC,MAAO;AACN,YAAMW,IAAsB,CAAA;AAC5B,UAAIP,IAAYJ;AAEhB,iBAAa;AACX,cAAMY,IAASxB,KAAeiB,EAA4BD,GAAWhB,CAAW;AAChF,YAAI,CAACwB,KAAU,CAACA,EAAO,SAAU;AAEjC,QAAAD,EAAU,KAAKC,EAAO,QAAQ,GAC9BR,IAAYQ,EAAO;AAAA,MACrB;AAEA,aAAOD;AAAA,IACT;AAAA,IACA,CAACvB,CAAW;AAAA,EAAA,GAIRyB,IAAmBd;AAAA,IACvB,CAACQ,MAA6B;AAC5B,YAAMC,IAAOrB,GAAU,IAAIoB,CAAM;AACjC,UAAI,CAACC,KAAQ,CAACA,EAAK,iBAAiB,CAAA;AAGpC,YAAMG,IAAY,CAACH,EAAK,QAAQ,GAG1BM,IAAkBJ,EAAeF,EAAK,QAAQ;AACpD,aAAAG,EAAU,KAAK,GAAGG,CAAe,GAE1BH;AAAA,IACT;AAAA,IACA,CAACxB,GAAUuB,CAAc;AAAA,EAAA,GAIrBK,IAAiDhB;AAAA,IACrD,CAACiB,GAAUC,MAAgB;AACzB,UAAI,CAACA,EAAY,OAAQ,QAAO,CAAA;AAEhC,YAAMC,IAA8B,CAAA,GAC9BC,IAAiB,IAAI,IAAIF,CAAW;AAG1C,UAAIb,IAAYY;AAIhB,aAAOG,EAAe,OAAO,KAAG;AAC9B,cAAMvB,IAASN,EAAcc,KAAa,EAAE;AAC5C,YAAI,CAACR,KAAU,CAACQ,GAAW;AAEzB,qBAAWgB,KAAcD;AACvB,YAAI5B,KAAiB6B,KAAc7B,MAEjC2B,EAAOE,CAAU,IAAI7B,EAAc6B,CAAU,GAC7CD,EAAe,OAAOC,CAAU;AAKpC;AAAA,QACF;AAGA,mBAAWA,KAAc,MAAM,KAAKD,CAAc;AAChD,UACEvB,EAAO,WAAW,SAASwB,CAAU,KACrCxB,EAAO,UACPwB,KAAcxB,EAAO,WAGrBsB,EAAOE,CAAU,IAAIxB,EAAO,OAAOwB,CAAU,GAC7CD,EAAe,OAAOC,CAAU;AAKpC,QAAAhB,IAAYR,EAAO;AAAA,MACrB;AAGA,iBAAWwB,KAAcD;AACvB,QAAAD,EAAOE,CAAU,IAAI;AAGvB,aAAOF;AAAA,IACT;AAAA,IACA,CAAC5B,CAAa;AAAA,EAAA,GAIV+B,IAAiDtB;AAAA,IACrD,CAACuB,MAAa;AAEZ,UAAI,CAACA,EAAS,OAAQ,QAAO,CAAA;AAG7B,YAAMJ,IAA+B,CAAA,GAG/BK,wBAA4B,IAAA;AAElC,iBAAWX,KAAUU,GAAU;AAE7B,YAAIV,EAAO,eAAe,SAAU;AAEpC,cAAMY,IAAgB,OAAO,QAAQZ,EAAO,MAAM;AAClD,YAAI,CAACY,EAAc,OAAQ;AAK3B,cAAMC,IAHW3B,EAAoBc,EAAO,QAAQ,EAGlB;AAAA,UAChC,CAACc,MAAU,CAACJ,EAAS,KAAK,CAACK,MAAMA,EAAE,aAAaD,EAAM,EAAE;AAAA,QAAA;AAG1D,YAAKD,EAAiB;AAEtB,qBAAWC,KAASD,GAAkB;AAEpC,kBAAMG,IAAmBJ,EAAc;AAAA,cACrC,CAAC,CAACJ,CAAU,MACV,CAACM,EAAM,WAAW,SAASN,CAAU,KACrC5B,GAAc,KAAK,CAACqC,MAAMA,EAAE,SAAST,CAAU,GAAG,MAAM;AAAA,YAAA,GAItDU,IAAeN,EAAc;AAAA,cAAO,CAAC,CAACJ,CAAU,MACpDM,EAAM,WAAW,SAASN,CAAU;AAAA,YAAA;AAItC,YAAIU,EAAa,WACVP,EAAsB,IAAIG,EAAM,EAAE,KACrCH,EAAsB,IAAIG,EAAM,IAAI,oBAAI,KAAK,GAE/CI,EAAa,QAAQ,CAAC,CAACV,CAAU,MAAM;AACrC,cAAAG,EAAsB,IAAIG,EAAM,EAAE,EAAG,IAAIN,CAAU;AAAA,YACrD,CAAC;AAIH,kBAAMW,IAA2BH,EAAiB,OAAO,CAAC,CAACR,CAAU,MAAM;AAEzE,oBAAMT,IACJe,EAAM,eAAe,SAASb,EAAiBa,EAAM,EAAE,IAAIhB,EAAegB,EAAM,EAAE;AAGpF,yBAAWM,KAAYrB;AACrB,oBACEY,EAAsB,IAAIS,CAAQ,KAClCT,EAAsB,IAAIS,CAAQ,EAAG,IAAIZ,CAAU;AAEnD,yBAAO;AAGX,qBAAO;AAAA,YACT,CAAC;AAED,gBAAIW,EAAyB,QAAQ;AAEnC,oBAAME,IAAsBf,EAAO,UAAU,CAACgB,MAASA,EAAK,aAAaR,EAAM,EAAE;AAEjF,cAAIO,MAAwB,KAE1Bf,EAAOe,CAAmB,EAAE,SAAS;AAAA,gBACnC,GAAGf,EAAOe,CAAmB,EAAE;AAAA,gBAC/B,GAAG,OAAO,YAAYF,CAAwB;AAAA,cAAA,IAIhDb,EAAO,KAAK;AAAA,gBACV,UAAUQ,EAAM;AAAA,gBAChB,YAAYA,EAAM,eAAe,cAAcA,IAAQ,WAAW;AAAA,gBAClE,QAAQ,OAAO,YAAYK,CAAwB;AAAA,cAAA,CACpD;AAAA,YAEL;AAAA,UACF;AAAA,MACF;AAIA,aAAOb;AAAA,IACT;AAAA,IACA,CAACpB,GAAqBX,GAAU0B,GAAkBH,CAAc;AAAA,EAAA,GAI5DyB,IAAkCpC;AAAA,IACtC,CAACqC,GAAUC,GAAYjB,MAAe;AACpC,YAAMR,IAAStB,EAAc8C,CAAQ;AACrC,UAAI,CAACxB,EAAQ,QAAO;AAGpB,UAAIR,IAAYiC,MAAe,SAASzB,EAAO,WAAWA,EAAO;AAGjE,aAAOR,KAAW;AAChB,cAAM4B,IAAW1C,EAAcc,CAAS;AACxC,YAAI,CAAC4B,EAAU;AAGf,YACEA,EAAS,WAAW,SAASZ,CAAU,KACvCY,EAAS,UACTZ,KAAcY,EAAS;AAEvB,iBAAOA,EAAS,OAAOZ,CAAU;AAInC,QAAAhB,IAAY4B,EAAS;AAAA,MACvB;AAGA,aAAO;AAAA,IACT;AAAA,IACA,CAAC1C,CAAa;AAAA,EAAA;AAGhB,SAAO;AAAA,IACL,mBAAAG;AAAA,IACA,qBAAAK;AAAA,IACA,wBAAAuB;AAAA,IACA,iCAAAc;AAAA,IACA,wBAAApB;AAAA,IACA,gBAAAL;AAAA,EAAA;AAEJ;"}