@ynput/ayon-frontend-shared 0.3.42 → 0.3.43

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 (970) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +22 -23
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +218 -219
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/Slicer.cjs.js +1 -1
  8. package/dist/Slicer.es.js +18 -21
  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.cjs6.js +1 -1
  14. package/dist/_virtual/index.cjs8.js +1 -1
  15. package/dist/_virtual/index.es22.js +3 -3
  16. package/dist/_virtual/index.es23.js +5 -5
  17. package/dist/_virtual/index.es24.js +5 -5
  18. package/dist/_virtual/index.es6.js +2 -2
  19. package/dist/_virtual/index.es8.js +2 -2
  20. package/dist/api.cjs.js +1 -1
  21. package/dist/api.es.js +183 -182
  22. package/dist/api.es.js.map +1 -1
  23. package/dist/hooks.cjs.js +1 -1
  24. package/dist/hooks.es.js +34 -30
  25. package/dist/hooks.es.js.map +1 -1
  26. package/dist/index.cjs.js +1 -1
  27. package/dist/index.es.js +9 -10
  28. package/dist/index.es.js.map +1 -1
  29. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  30. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  31. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  32. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  33. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  34. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  35. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  36. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  37. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  38. package/dist/node_modules/remove-accents/index.es.js +1 -1
  39. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  40. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  41. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  42. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  43. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  44. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  45. package/dist/shared/src/api/generated/graphql.cjs.js +15 -10
  46. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  47. package/dist/shared/src/api/generated/graphql.es.js +76 -214
  48. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  49. package/dist/shared/src/api/generated/graphqlLinks.cjs.js +12 -12
  50. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  51. package/dist/shared/src/api/generated/graphqlLinks.es.js +28 -78
  52. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  53. package/dist/shared/src/api/queries/activities/getActivities.cjs.js +1 -1
  54. package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
  55. package/dist/shared/src/api/queries/activities/getActivities.es.js +176 -73
  56. package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
  57. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js.map +1 -1
  58. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js +8 -1
  59. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js.map +1 -1
  60. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
  61. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
  62. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +26 -26
  63. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
  64. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js +1 -1
  65. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js.map +1 -1
  66. package/dist/shared/src/api/queries/columnStats/columnStats.es.js +32 -28
  67. package/dist/shared/src/api/queries/columnStats/columnStats.es.js.map +1 -1
  68. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
  69. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  70. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +3 -4
  71. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  72. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  73. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  74. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  75. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  76. package/dist/shared/src/api/queries/entityLists/getLists.es.js +12 -13
  77. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  78. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js +1 -1
  79. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js.map +1 -1
  80. package/dist/shared/src/api/queries/entityLists/listFolders.es.js +8 -9
  81. package/dist/shared/src/api/queries/entityLists/listFolders.es.js.map +1 -1
  82. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -1
  83. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  84. package/dist/shared/src/api/queries/folders/getFolders.es.js +3 -4
  85. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  86. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +1 -1
  87. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -1
  88. package/dist/shared/src/api/queries/links/getEntityLinks.es.js +2 -3
  89. package/dist/shared/src/api/queries/links/getEntityLinks.es.js.map +1 -1
  90. package/dist/shared/src/api/queries/links/getLinks.cjs.js +1 -1
  91. package/dist/shared/src/api/queries/links/getLinks.cjs.js.map +1 -1
  92. package/dist/shared/src/api/queries/links/getLinks.es.js +60 -119
  93. package/dist/shared/src/api/queries/links/getLinks.es.js.map +1 -1
  94. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  95. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  96. package/dist/shared/src/api/queries/overview/getOverview.es.js +166 -162
  97. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  98. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  99. package/dist/shared/src/api/queries/overview/updateOverview.es.js +1 -3
  100. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  101. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js +1 -1
  102. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js.map +1 -1
  103. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js +12 -13
  104. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js.map +1 -1
  105. package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -1
  106. package/dist/shared/src/api/queries/review/getReview.cjs.js.map +1 -1
  107. package/dist/shared/src/api/queries/review/getReview.es.js +78 -133
  108. package/dist/shared/src/api/queries/review/getReview.es.js.map +1 -1
  109. package/dist/shared/src/api/queries/review/updateReview.cjs.js +1 -1
  110. package/dist/shared/src/api/queries/review/updateReview.cjs.js.map +1 -1
  111. package/dist/shared/src/api/queries/review/updateReview.es.js +1 -1
  112. package/dist/shared/src/api/queries/review/updateReview.es.js.map +1 -1
  113. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  114. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  115. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +6 -7
  116. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  117. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  118. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  119. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +111 -110
  120. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  121. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js +1 -1
  122. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js.map +1 -1
  123. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js +8 -9
  124. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js.map +1 -1
  125. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +1 -1
  126. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
  127. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +2 -3
  128. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
  129. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +1 -1
  130. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  131. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +2 -3
  132. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  133. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +1 -1
  134. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
  135. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +2 -3
  136. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
  137. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  138. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  139. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +2 -3
  140. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  141. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  142. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  143. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +2 -3
  144. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  145. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +1 -1
  146. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  147. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +2 -3
  148. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  149. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js +1 -1
  150. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js.map +1 -1
  151. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js +2 -3
  152. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js.map +1 -1
  153. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js +1 -1
  154. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js.map +1 -1
  155. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js +2 -3
  156. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js.map +1 -1
  157. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  158. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  159. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +2 -3
  160. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  161. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js +1 -1
  162. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js.map +1 -1
  163. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js +2 -3
  164. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js.map +1 -1
  165. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js +1 -1
  166. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js.map +1 -1
  167. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js +2 -3
  168. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js.map +1 -1
  169. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
  170. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
  171. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +2 -3
  172. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
  173. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  174. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  175. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +2 -3
  176. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  177. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  178. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  179. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +2 -3
  180. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  181. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  182. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  183. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +2 -3
  184. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  185. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  186. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  187. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +4 -5
  188. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  189. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  190. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  191. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +2 -3
  192. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  193. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
  194. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  195. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +2 -3
  196. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  197. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  198. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  199. package/dist/shared/src/components/LinksManager/LinksManager.es.js +2 -3
  200. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  201. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  202. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  203. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +2 -3
  204. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  205. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  206. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  207. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +2 -3
  208. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  209. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
  210. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
  211. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +2 -3
  212. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
  213. package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
  214. package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
  215. package/dist/shared/src/components/Menu/Menu.es.js +2 -3
  216. package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
  217. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  218. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  219. package/dist/shared/src/components/Menu/MenuItem.es.js +0 -1
  220. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  221. package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
  222. package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
  223. package/dist/shared/src/components/Menu/MenuList.es.js +2 -3
  224. package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
  225. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +1 -1
  226. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  227. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +2 -3
  228. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  229. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  230. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  231. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +2 -3
  232. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  233. package/dist/shared/src/components/Powerpack/useFreeTrialLink.cjs.js +1 -1
  234. package/dist/shared/src/components/Powerpack/useFreeTrialLink.cjs.js.map +1 -1
  235. package/dist/shared/src/components/Powerpack/useFreeTrialLink.es.js +2 -3
  236. package/dist/shared/src/components/Powerpack/useFreeTrialLink.es.js.map +1 -1
  237. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +1 -1
  238. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  239. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +2 -3
  240. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  241. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  242. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  243. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +4 -5
  244. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  245. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  246. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  247. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +2 -3
  248. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  249. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  250. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  251. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +2 -3
  252. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  253. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  254. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  255. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +2 -3
  256. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  257. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  258. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  259. package/dist/shared/src/components/RenameForm/RenameForm.es.js +2 -3
  260. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  261. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +1 -1
  262. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  263. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +2 -3
  264. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  265. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  266. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  267. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +2 -3
  268. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  269. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  270. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  271. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +3 -4
  272. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  273. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  274. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  275. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +2 -3
  276. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  277. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
  278. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  279. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +2 -3
  280. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  281. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  282. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  283. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +2 -3
  284. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  285. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  286. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  287. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +6 -7
  288. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  289. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +1 -1
  290. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  291. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +2 -3
  292. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  293. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
  294. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  295. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +4 -5
  296. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  297. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  298. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  299. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +2 -3
  300. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  301. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
  302. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
  303. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +2 -3
  304. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
  305. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +1 -1
  306. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  307. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +2 -3
  308. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  309. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js +1 -1
  310. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js.map +1 -1
  311. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js +2 -3
  312. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js.map +1 -1
  313. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js +1 -1
  314. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js.map +1 -1
  315. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js +2 -3
  316. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js.map +1 -1
  317. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  318. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  319. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +2 -3
  320. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  321. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  322. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  323. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +6 -7
  324. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  325. package/dist/shared/src/components/Watchers/Watchers.cjs.js +1 -1
  326. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  327. package/dist/shared/src/components/Watchers/Watchers.es.js +2 -3
  328. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  329. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  330. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  331. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +2 -3
  332. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  333. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  334. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  335. package/dist/shared/src/containers/Actions/Actions.es.js +2 -3
  336. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  337. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  338. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  339. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +2 -3
  340. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  341. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  342. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  343. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +2 -3
  344. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  345. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  346. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  347. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +2 -3
  348. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  349. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  350. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  351. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +2 -3
  352. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  353. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  354. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  355. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +2 -3
  356. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  357. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js +1 -1
  358. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js.map +1 -1
  359. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js +2 -3
  360. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js.map +1 -1
  361. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  362. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  363. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +2 -3
  364. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  365. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js +2 -2
  366. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js.map +1 -1
  367. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js +2 -3
  368. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js.map +1 -1
  369. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  370. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  371. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +2 -3
  372. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  373. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  374. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  375. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +2 -3
  376. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  377. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  378. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  379. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +16 -17
  380. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  381. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  382. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  383. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +2 -3
  384. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  385. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  386. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  387. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +2 -3
  388. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  389. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  390. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  391. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +2 -3
  392. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  393. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js +1 -1
  394. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js.map +1 -1
  395. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js +2 -3
  396. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js.map +1 -1
  397. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  398. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  399. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +2 -3
  400. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  401. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  402. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  403. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +2 -3
  404. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  405. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  406. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  407. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +2 -3
  408. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  409. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  410. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  411. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +2 -3
  412. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  413. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  414. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  415. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +2 -3
  416. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  417. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js +1 -1
  418. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js.map +1 -1
  419. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js +2 -3
  420. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js.map +1 -1
  421. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  422. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  423. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +2 -3
  424. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  425. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js +1 -1
  426. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js.map +1 -1
  427. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js +4 -5
  428. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js.map +1 -1
  429. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  430. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  431. package/dist/shared/src/containers/Feed/Feed.es.js +3 -4
  432. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  433. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  434. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  435. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +2 -3
  436. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  437. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  438. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  439. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +2 -3
  440. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  441. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  442. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  443. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +2 -3
  444. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  445. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js +1 -1
  446. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js.map +1 -1
  447. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js +2 -3
  448. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js.map +1 -1
  449. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js +1 -1
  450. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js.map +1 -1
  451. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js +4 -5
  452. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js.map +1 -1
  453. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  454. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  455. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +2 -3
  456. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  457. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
  458. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  459. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +2 -3
  460. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  461. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  462. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  463. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +6 -7
  464. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  465. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  466. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  467. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +2 -3
  468. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  469. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js +1 -1
  470. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js.map +1 -1
  471. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js +2 -3
  472. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js.map +1 -1
  473. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  474. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  475. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +2 -3
  476. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  477. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +1 -1
  478. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -1
  479. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +2 -3
  480. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -1
  481. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  482. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  483. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +2 -3
  484. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  485. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  486. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  487. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +2 -3
  488. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  489. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.cjs.js +1 -1
  490. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.cjs.js.map +1 -1
  491. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.es.js +2 -3
  492. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.es.js.map +1 -1
  493. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  494. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  495. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +9 -10
  496. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  497. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js +1 -1
  498. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js.map +1 -1
  499. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js +2 -3
  500. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js.map +1 -1
  501. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js +1 -1
  502. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
  503. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js +2 -3
  504. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js.map +1 -1
  505. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +1 -1
  506. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  507. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +2 -3
  508. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  509. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js +1 -1
  510. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js.map +1 -1
  511. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js +2 -3
  512. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js.map +1 -1
  513. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js +1 -1
  514. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js.map +1 -1
  515. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js +2 -3
  516. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js.map +1 -1
  517. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js +1 -1
  518. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js.map +1 -1
  519. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js +2 -3
  520. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js.map +1 -1
  521. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  522. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  523. package/dist/shared/src/containers/ListTable/ListTable.es.js +2 -3
  524. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  525. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  526. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  527. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +2 -3
  528. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  529. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  530. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  531. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +2 -3
  532. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  533. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  534. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  535. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +523 -526
  536. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  537. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  538. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  539. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +65 -66
  540. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  541. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  542. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  543. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +2 -3
  544. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  545. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  546. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  547. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +2 -3
  548. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  549. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  550. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  551. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +2 -3
  552. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  553. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js +24 -5
  554. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js.map +1 -1
  555. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js +183 -41
  556. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js.map +1 -1
  557. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  558. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  559. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +2 -3
  560. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  561. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +5 -5
  562. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  563. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +116 -113
  564. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  565. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  566. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  567. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +2 -3
  568. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  569. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  570. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  571. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +4 -5
  572. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  573. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +1 -1
  574. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -1
  575. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +2 -3
  576. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -1
  577. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  578. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  579. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +2 -3
  580. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  581. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js +1 -1
  582. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js.map +1 -1
  583. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js +2 -3
  584. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js.map +1 -1
  585. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  586. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  587. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +2 -3
  588. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  589. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  590. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  591. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +5 -6
  592. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  593. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  594. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  595. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +64 -62
  596. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  597. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  598. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  599. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +2 -3
  600. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  601. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  602. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  603. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +2 -3
  604. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  605. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  606. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  607. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +2 -3
  608. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  609. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  610. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  611. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +2 -3
  612. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  613. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  614. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  615. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +176 -189
  616. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  617. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  618. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  619. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +2 -3
  620. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  621. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  622. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  623. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +2 -3
  624. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  625. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  626. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  627. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +2 -3
  628. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  629. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  630. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  631. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +2 -3
  632. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  633. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  634. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  635. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +2 -3
  636. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  637. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  638. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  639. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +2 -3
  640. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  641. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.cjs.js +1 -1
  642. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.cjs.js.map +1 -1
  643. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.es.js +8 -8
  644. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.es.js.map +1 -1
  645. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  646. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  647. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +2 -3
  648. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  649. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  650. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  651. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +2 -3
  652. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  653. package/dist/shared/src/containers/ProjectTreeTable/types/summaryTypes.cjs.js.map +1 -1
  654. package/dist/shared/src/containers/ProjectTreeTable/types/summaryTypes.es.js.map +1 -1
  655. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  656. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  657. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +13 -14
  658. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  659. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +1 -1
  660. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  661. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +2 -3
  662. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  663. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
  664. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  665. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +3 -4
  666. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  667. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +1 -1
  668. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
  669. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +2 -3
  670. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
  671. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  672. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  673. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +4 -5
  674. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  675. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +1 -1
  676. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
  677. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +2 -3
  678. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
  679. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  680. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  681. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +2 -3
  682. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  683. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  684. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  685. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +2 -3
  686. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  687. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +1 -1
  688. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
  689. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +2 -3
  690. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
  691. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +1 -1
  692. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  693. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +2 -3
  694. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  695. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +1 -1
  696. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  697. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +2 -3
  698. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  699. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  700. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  701. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +2 -3
  702. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  703. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  704. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  705. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +2 -3
  706. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  707. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -2
  708. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -1
  709. package/dist/shared/src/containers/Slicer/components/Slicer.es.js +22 -22
  710. package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -1
  711. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +1 -1
  712. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
  713. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +2 -3
  714. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
  715. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  716. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  717. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +2 -3
  718. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  719. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  720. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  721. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +86 -237
  722. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  723. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
  724. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
  725. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +2 -3
  726. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
  727. package/dist/shared/src/containers/Slicer/hooks/useFiltersWithHierarchy.cjs.js +1 -1
  728. package/dist/shared/src/containers/Slicer/hooks/useFiltersWithHierarchy.cjs.js.map +1 -1
  729. package/dist/shared/src/containers/Slicer/hooks/useFiltersWithHierarchy.es.js +11 -14
  730. package/dist/shared/src/containers/Slicer/hooks/useFiltersWithHierarchy.es.js.map +1 -1
  731. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
  732. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
  733. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +2 -3
  734. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
  735. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js +1 -1
  736. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js.map +1 -1
  737. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js +39 -50
  738. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js.map +1 -1
  739. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
  740. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
  741. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +2 -3
  742. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
  743. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js +1 -1
  744. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js.map +1 -1
  745. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js +2 -3
  746. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js.map +1 -1
  747. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js +1 -1
  748. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js.map +1 -1
  749. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js +26 -43
  750. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js.map +1 -1
  751. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js +1 -1
  752. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js.map +1 -1
  753. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js +4 -5
  754. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js.map +1 -1
  755. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  756. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  757. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +2 -3
  758. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  759. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js +1 -1
  760. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -1
  761. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js +2 -3
  762. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -1
  763. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.cjs.js +1 -1
  764. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.cjs.js.map +1 -1
  765. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.es.js +7 -7
  766. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.es.js.map +1 -1
  767. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js +1 -1
  768. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js.map +1 -1
  769. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js +2 -3
  770. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js.map +1 -1
  771. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  772. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  773. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +2 -3
  774. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  775. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  776. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  777. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +2 -3
  778. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  779. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +1 -1
  780. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  781. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +2 -3
  782. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  783. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  784. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  785. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +4 -5
  786. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  787. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js +1 -1
  788. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js.map +1 -1
  789. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js +2 -3
  790. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js.map +1 -1
  791. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
  792. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  793. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +2 -3
  794. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  795. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
  796. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
  797. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +2 -3
  798. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
  799. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  800. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  801. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +5 -6
  802. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  803. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +1 -1
  804. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -1
  805. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +2 -3
  806. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -1
  807. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +1 -1
  808. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  809. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +2 -3
  810. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  811. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  812. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  813. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +2 -3
  814. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  815. package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
  816. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  817. package/dist/shared/src/context/AddonProjectContext.es.js +4 -5
  818. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  819. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  820. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  821. package/dist/shared/src/context/DetailsPanelContext.es.js +26 -26
  822. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  823. package/dist/shared/src/context/GlobalContext.cjs.js +1 -1
  824. package/dist/shared/src/context/GlobalContext.cjs.js.map +1 -1
  825. package/dist/shared/src/context/GlobalContext.es.js +4 -5
  826. package/dist/shared/src/context/GlobalContext.es.js.map +1 -1
  827. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  828. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  829. package/dist/shared/src/context/PowerpackContext.es.js +6 -7
  830. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  831. package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
  832. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
  833. package/dist/shared/src/context/ProjectContext.es.js +4 -5
  834. package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
  835. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  836. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  837. package/dist/shared/src/context/ProjectFoldersContext.es.js +4 -5
  838. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  839. package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
  840. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  841. package/dist/shared/src/context/RemoteModulesContext.es.js +4 -5
  842. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  843. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  844. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  845. package/dist/shared/src/context/SubtasksModulesContext.es.js +4 -5
  846. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  847. package/dist/shared/src/context/UriContext.cjs.js +1 -1
  848. package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
  849. package/dist/shared/src/context/UriContext.es.js +5 -6
  850. package/dist/shared/src/context/UriContext.es.js.map +1 -1
  851. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  852. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  853. package/dist/shared/src/context/WebsocketContext.es.js +38 -36
  854. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  855. package/dist/shared/src/hooks/useActionTriggers.cjs.js +1 -1
  856. package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
  857. package/dist/shared/src/hooks/useActionTriggers.es.js +2 -3
  858. package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
  859. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  860. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  861. package/dist/shared/src/hooks/useEntityUpdate.es.js +2 -3
  862. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  863. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js +1 -1
  864. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js.map +1 -1
  865. package/dist/shared/src/hooks/useGetEntityGroups.es.js +2 -3
  866. package/dist/shared/src/hooks/useGetEntityGroups.es.js.map +1 -1
  867. package/dist/shared/src/hooks/useGetProductionAddon.cjs.js +1 -1
  868. package/dist/shared/src/hooks/useGetProductionAddon.cjs.js.map +1 -1
  869. package/dist/shared/src/hooks/useGetProductionAddon.es.js +2 -3
  870. package/dist/shared/src/hooks/useGetProductionAddon.es.js.map +1 -1
  871. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  872. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  873. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +2 -3
  874. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  875. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
  876. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
  877. package/dist/shared/src/hooks/useHierarchyTable.es.js +2 -3
  878. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
  879. package/dist/shared/src/hooks/useLocalStorage.cjs.js +1 -1
  880. package/dist/shared/src/hooks/useLocalStorage.cjs.js.map +1 -1
  881. package/dist/shared/src/hooks/useLocalStorage.es.js +3 -1
  882. package/dist/shared/src/hooks/useLocalStorage.es.js.map +1 -1
  883. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js +1 -1
  884. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js.map +1 -1
  885. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js +2 -3
  886. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js.map +1 -1
  887. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +1 -1
  888. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  889. package/dist/shared/src/hooks/useScopedStatuses.es.js +4 -5
  890. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  891. package/dist/shared/src/hooks/useScopedTypes.cjs.js +1 -1
  892. package/dist/shared/src/hooks/useScopedTypes.cjs.js.map +1 -1
  893. package/dist/shared/src/hooks/useScopedTypes.es.js +2 -3
  894. package/dist/shared/src/hooks/useScopedTypes.es.js.map +1 -1
  895. package/dist/shared/src/hooks/useSessionStorage.cjs.js +2 -0
  896. package/dist/shared/src/hooks/useSessionStorage.cjs.js.map +1 -0
  897. package/dist/shared/src/hooks/useSessionStorage.es.js +60 -0
  898. package/dist/shared/src/hooks/useSessionStorage.es.js.map +1 -0
  899. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  900. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  901. package/dist/shared/src/hooks/useUserProjectConfig.es.js +2 -3
  902. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  903. package/dist/shared/src/util/checkName.cjs.js.map +1 -1
  904. package/dist/shared/src/util/checkName.es.js.map +1 -1
  905. package/dist/shared/src/util/getAttributeIcon.cjs.js.map +1 -1
  906. package/dist/shared/src/util/getAttributeIcon.es.js.map +1 -1
  907. package/dist/shared/src/util/getBundleMode.cjs.js +1 -1
  908. package/dist/shared/src/util/getBundleMode.cjs.js.map +1 -1
  909. package/dist/shared/src/util/getBundleMode.es.js +3 -4
  910. package/dist/shared/src/util/getBundleMode.es.js.map +1 -1
  911. package/dist/shared/src/util/getGroupByDataType.cjs.js.map +1 -1
  912. package/dist/shared/src/util/getGroupByDataType.es.js.map +1 -1
  913. package/dist/shared/src/util/getPriorityOptions.cjs.js.map +1 -1
  914. package/dist/shared/src/util/getPriorityOptions.es.js.map +1 -1
  915. package/dist/shared/src/util/iconUtils.cjs.js.map +1 -1
  916. package/dist/shared/src/util/iconUtils.es.js.map +1 -1
  917. package/dist/types/api/generated/graphql.d.ts +208 -273
  918. package/dist/types/api/generated/graphqlLinks.d.ts +11 -7
  919. package/dist/types/api/queries/activities/getActivities.d.ts +2297 -1448
  920. package/dist/types/api/queries/activities/index.d.ts +0 -1
  921. package/dist/types/api/queries/activities/util/activityRealtimeHandler.d.ts +21 -1
  922. package/dist/types/api/queries/columnStats/columnStats.d.ts +1 -0
  923. package/dist/types/api/queries/entities/getEntity.d.ts +295 -290
  924. package/dist/types/api/queries/entities/getEntityPanel.d.ts +231 -226
  925. package/dist/types/api/queries/entities/updateEntity.d.ts +231 -226
  926. package/dist/types/api/queries/entityLists/getLists.d.ts +1495 -1490
  927. package/dist/types/api/queries/entityLists/listItemsColumnStats.d.ts +96 -96
  928. package/dist/types/api/queries/folders/getFolderDeleteInfo.d.ts +65 -65
  929. package/dist/types/api/queries/overview/getOverview.d.ts +858 -771
  930. package/dist/types/api/queries/products/getFolderProducts.d.ts +32 -32
  931. package/dist/types/api/queries/project/getProject.d.ts +471 -466
  932. package/dist/types/api/queries/review/getReview.d.ts +2 -2
  933. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +343 -338
  934. package/dist/types/api/queries/users/getUsers.d.ts +425 -420
  935. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +1006 -996
  936. package/dist/types/api/queries/versions/updateVersions.d.ts +32 -32
  937. package/dist/types/containers/Feed/hooks/useGetFeedActivitiesData.d.ts +36 -36
  938. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +2 -1
  939. package/dist/types/containers/ProjectTreeTable/components/TableFooterRow.d.ts +1 -0
  940. package/dist/types/containers/ProjectTreeTable/hooks/useSelectedFolders.d.ts +2 -4
  941. package/dist/types/containers/ProjectTreeTable/types/summaryTypes.d.ts +0 -29
  942. package/dist/types/containers/Slicer/context/SlicerContext.d.ts +3 -4
  943. package/dist/types/containers/Slicer/hooks/useFiltersWithHierarchy.d.ts +2 -2
  944. package/dist/types/containers/Slicer/hooks/useSlicerRowSelection.d.ts +1 -3
  945. package/dist/types/containers/Slicer/types.d.ts +0 -10
  946. package/dist/types/containers/Slicer/util/createFilterFromSlicer.d.ts +3 -2
  947. package/dist/types/containers/Slicer/util/getSelectionDataState.d.ts +1 -1
  948. package/dist/types/containers/Slicer/util/index.d.ts +0 -1
  949. package/dist/types/hooks/index.d.ts +1 -0
  950. package/dist/types/hooks/useSessionStorage.d.ts +4 -0
  951. package/dist/types/util/checkName.d.ts +1 -1
  952. package/dist/types/util/getAttributeIcon.d.ts +1 -1
  953. package/dist/types/util/getGroupByDataType.d.ts +1 -1
  954. package/dist/types/util/getPriorityOptions.d.ts +2 -1
  955. package/dist/types/util/iconUtils.d.ts +1 -1
  956. package/package.json +1 -1
  957. package/dist/shared/src/api/queries/activities/updateActivities.cjs.js +0 -2
  958. package/dist/shared/src/api/queries/activities/updateActivities.cjs.js.map +0 -1
  959. package/dist/shared/src/api/queries/activities/updateActivities.es.js +0 -108
  960. package/dist/shared/src/api/queries/activities/updateActivities.es.js.map +0 -1
  961. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePrefetchFolderTasks.cjs.js +0 -2
  962. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePrefetchFolderTasks.cjs.js.map +0 -1
  963. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePrefetchFolderTasks.es.js +0 -27
  964. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePrefetchFolderTasks.es.js.map +0 -1
  965. package/dist/shared/src/containers/Slicer/util/getSelectionDataState.cjs.js +0 -2
  966. package/dist/shared/src/containers/Slicer/util/getSelectionDataState.cjs.js.map +0 -1
  967. package/dist/shared/src/containers/Slicer/util/getSelectionDataState.es.js +0 -8
  968. package/dist/shared/src/containers/Slicer/util/getSelectionDataState.es.js.map +0 -1
  969. package/dist/types/api/queries/activities/updateActivities.d.ts +0 -1336
  970. package/dist/types/containers/ProjectTreeTable/hooks/usePrefetchFolderTasks.d.ts +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"activitiesHelpers.cjs.js","sources":["../../../../../../../src/api/queries/activities/util/activitiesHelpers.ts"],"sourcesContent":["import type {\n ActivityFragmentFragment,\n GetEntitiesChecklistsQuery,\n PageInfo,\n} from '@shared/api/generated'\nimport { ChecklistCount, FeedActivity, FeedActivityData } from '../types'\nimport { BaseTypes, EntityTooltipQuery, TaskTypes, VersionTypes } from '../activityQueries'\nimport { FeedFilter } from '@shared/context'\n\n// Helper function to get a nested property of an object using a string path\nconst getNestedProperty = <T extends Record<string, any>, R = any>(\n obj: T,\n path: string,\n): R | undefined =>\n path.split('.').reduce<any>((o, p) => (o && o[p] !== undefined ? o[p] : undefined), obj)\n\n// Helper function to delete a nested property of an object using a string path\nconst deleteNestedProperty = <T extends Record<string, any>>(obj: T, path: string): void => {\n const pathParts = path.split('.')\n const lastPart = pathParts.pop()\n const target = pathParts.reduce<any>((o, p) => (o && o[p] !== undefined ? o[p] : undefined), obj)\n if (target && lastPart) {\n delete target[lastPart]\n }\n}\n\nfunction remapNestedProperties<T extends Record<string, any>>(\n object: T,\n remappingItems: Record<string, string>,\n): T {\n const transformedObject = { ...object }\n\n for (const [key, newKey] of Object.entries(remappingItems)) {\n const value = getNestedProperty(transformedObject, key)\n if (value !== undefined) {\n // Get deeply nested value from key using \".\" notation\n // @ts-expect-error\n transformedObject[newKey] = value\n // Delete the old key from the object\n deleteNestedProperty(transformedObject, key)\n }\n }\n\n return transformedObject\n}\n\nexport type ActivitiesResult = { activities: FeedActivity[]; pageInfo: PageInfo }\n\ntype TransFormActivityData = (\n edges: { node: ActivityFragmentFragment }[],\n pageInfo: PageInfo,\n) => ActivitiesResult\n\n// we flatten the activity object a little bit\nexport const transformActivityData: TransFormActivityData = (edges = [], pageInfo) => {\n const activities: FeedActivity[] = []\n\n // loop over each activity and remap the nested properties\n edges.forEach((edge) => {\n // remapping keys are the fields path in the object\n // and the values are the new keys to assign the values to\n const data = edge.node\n\n if (!data) {\n return\n }\n\n const activityNode = data\n\n // remapping of nested properties to flat properties\n const remappingItems = {\n 'author.name': 'authorName',\n 'author.attrib.fullName': 'authorFullName',\n 'author.attrib.avatarUrl': 'authorAvatarUrl',\n }\n\n const transformedActivity = remapNestedProperties(\n activityNode,\n remappingItems,\n ) as unknown as FeedActivity\n\n // parse activityData if it's a JSON string\n if (typeof activityNode.activityData === 'string') {\n try {\n transformedActivity.activityData = JSON.parse(activityNode.activityData) as FeedActivityData\n } catch (e) {\n console.error('Error parsing JSON field activityData', activityNode.activityData)\n }\n }\n\n activities.push(transformedActivity)\n })\n\n // when there are no activities and hasPreviousPage is false, add an \"createdAt\" activity as the last activity\n // if (pageInfo.hasPreviousPage === false) {\n // activities.push({ hasPreviousPage: false, activityType: 'end', activityId: 'end' })\n // }\n\n return { activities, pageInfo }\n}\n\nexport type EntityTooltip = {\n id: string\n name: string\n title: string\n type: string\n subTitle: string\n status?: string\n thumbnailId?: string\n thumbnailHash?: string\n updatedAt?: string\n taskType?: string\n users?: { name: string; avatarUrl: string }[]\n path?: string\n}\ntype TransformTaskTooltip = (data: BaseTypes & TaskTypes) => EntityTooltip\n\nconst transformTaskTooltip: TransformTaskTooltip = (data) => {\n const {\n id,\n label,\n name,\n status,\n thumbnailId,\n thumbnailHash,\n assignees,\n taskType,\n updatedAt,\n folder,\n } = data || {}\n const tooltip = {\n id,\n name,\n title: label || name,\n type: 'task',\n subTitle: folder?.label || folder?.name || '',\n status,\n thumbnailId,\n thumbnailHash,\n updatedAt,\n taskType,\n users: assignees?.map((name) => ({ name, avatarUrl: `/api/users/${name}/avatar` })) || [],\n path: folder?.path.split('/').splice(-2, 1).join(''),\n }\n\n return tooltip\n}\n\ntype TransformVersionTooltip = (data: BaseTypes & VersionTypes) => EntityTooltip\n\nconst transformVersionTooltip: TransformVersionTooltip = (data) => {\n const { id, name, status, thumbnailId, author, updatedAt, product } = data\n const tooltip = {\n id,\n type: 'version',\n name: name,\n title: name,\n subTitle: product?.name || '',\n status,\n thumbnailId,\n updatedAt,\n users: [{ name: author || '', avatarUrl: `/api/users/${author}/avatar` }],\n productType: product?.productType,\n path: product?.folder?.path?.split('/').pop(),\n }\n\n return tooltip\n}\n\n// different types have different tooltip data, we need to create a single data model\nexport const transformTooltipData = (data: EntityTooltipQuery['data']['project'], type: string) => {\n switch (type) {\n case 'task':\n // @ts-ignore\n return transformTaskTooltip(data.task)\n case 'version':\n // @ts-ignore\n return transformVersionTooltip(data.version)\n default:\n return {}\n }\n}\n\ntype CountCheckLists = (data: GetEntitiesChecklistsQuery) => ChecklistCount\n\nexport const countChecklists: CountCheckLists = (data) => {\n const activities = data?.project?.activities?.edges?.map((edge) => edge?.node)\n // get all bodies from each activity\n const bodies = activities.map((a) => a.body)\n const ids = activities.map((a) => a.activityId)\n\n // count how many checklists are in each body\n\n // count unchecked * [ ] items\n const unChecked = bodies.reduce((acc, body) => {\n if (!body) return acc\n const matches = body.match(/\\*\\s\\[\\s\\]/g)\n return acc + (matches ? matches.length : 0)\n }, 0)\n\n // count checked * [x] items\n const checked = bodies.reduce((acc, body) => {\n if (!body) return acc\n const matches = body.match(/\\*\\s\\[x\\]/g)\n return acc + (matches ? matches.length : 0)\n }, 0)\n\n return { total: unChecked + checked, checked, unChecked, ids }\n}\n\ntype Task = { id: string }\n\nexport const taskProvideTags = (result: Task[], type = 'task', entityType = 'task') =>\n result?.length\n ? [\n ...result.map(({ id }: Task) => ({ type, id })),\n { type, id: entityType.toUpperCase() + 'S' },\n {\n type: `kanBan${entityType.charAt(0).toUpperCase() + entityType.slice(1)}`,\n id: entityType.toUpperCase() + 'S',\n },\n ]\n : [{ type, id: entityType.toUpperCase() + 'S' }]\n\nexport const filterKey = (filter: any): string => {\n if (typeof filter === 'string') return filter\n try {\n return JSON.stringify(filter) ?? ''\n } catch {\n return ''\n }\n}\n\nexport const filterActivityTypes: Record<string, string[]> = {\n activity: ['comment', 'version.publish', 'status.change', 'assignee.add', 'assignee.remove', 'version.review'],\n comments: ['comment'],\n versions: ['version.publish'],\n updates: ['status.change', 'assignee.add', 'assignee.remove'],\n checklists: ['checklist'],\n}\n\nexport const getFilterActivityTypes = (filter: any): string[] | null => {\n // If it's a string, it's one of the legacy pre-set filters\n if (typeof filter === 'string') {\n if (filter in filterActivityTypes) {\n return filterActivityTypes[filter]\n }\n return null\n }\n\n // Handle QueryFilter object\n if (filter && typeof filter === 'object' && filter.conditions) {\n const activeTypes: string[] = []\n let hasExplicitTypeFilter = false\n\n filter.conditions.forEach((condition: any) => {\n // Check if it's a simple condition for one of our known activity types\n if (condition && condition.key && condition.value === true) {\n if (condition.key in filterActivityTypes) {\n activeTypes.push(...filterActivityTypes[condition.key])\n hasExplicitTypeFilter = true\n }\n }\n })\n\n // If no specific activity type filters are selected, return \"activity\" (all)\n if (!hasExplicitTypeFilter) {\n return filterActivityTypes.activity\n }\n\n // Return unique set of activity types\n return Array.from(new Set(activeTypes))\n }\n\n // fallback to all activity\n return filterActivityTypes.activity\n}\n"],"names":["getNestedProperty","obj","path","o","p","deleteNestedProperty","pathParts","lastPart","target","remapNestedProperties","object","remappingItems","transformedObject","key","newKey","value","transformActivityData","edges","pageInfo","activities","edge","data","activityNode","transformedActivity","transformTaskTooltip","id","label","name","status","thumbnailId","thumbnailHash","assignees","taskType","updatedAt","folder","transformVersionTooltip","author","product","transformTooltipData","type","countChecklists","bodies","a","ids","unChecked","acc","body","matches","checked","taskProvideTags","result","entityType","filterKey","filter","filterActivityTypes","getFilterActivityTypes","activeTypes","hasExplicitTypeFilter","condition"],"mappings":"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"}
1
+ {"version":3,"file":"activitiesHelpers.cjs.js","sources":["../../../../../../../src/api/queries/activities/util/activitiesHelpers.ts"],"sourcesContent":["import type {\n ActivityFragmentFragment,\n GetEntitiesChecklistsQuery,\n PageInfo,\n} from '@shared/api/generated'\nimport { ChecklistCount, FeedActivity, FeedActivityData } from '../types'\nimport { BaseTypes, EntityTooltipQuery, TaskTypes, VersionTypes } from '../activityQueries'\n\n// Helper function to get a nested property of an object using a string path\nconst getNestedProperty = <T extends Record<string, any>, R = any>(\n obj: T,\n path: string,\n): R | undefined =>\n path.split('.').reduce<any>((o, p) => (o && o[p] !== undefined ? o[p] : undefined), obj)\n\n// Helper function to delete a nested property of an object using a string path\nconst deleteNestedProperty = <T extends Record<string, any>>(obj: T, path: string): void => {\n const pathParts = path.split('.')\n const lastPart = pathParts.pop()\n const target = pathParts.reduce<any>((o, p) => (o && o[p] !== undefined ? o[p] : undefined), obj)\n if (target && lastPart) {\n delete target[lastPart]\n }\n}\n\nfunction remapNestedProperties<T extends Record<string, any>>(\n object: T,\n remappingItems: Record<string, string>,\n): T {\n const transformedObject = { ...object }\n\n for (const [key, newKey] of Object.entries(remappingItems)) {\n const value = getNestedProperty(transformedObject, key)\n if (value !== undefined) {\n // Get deeply nested value from key using \".\" notation\n // @ts-expect-error\n transformedObject[newKey] = value\n // Delete the old key from the object\n deleteNestedProperty(transformedObject, key)\n }\n }\n\n return transformedObject\n}\n\nexport type ActivitiesResult = { activities: FeedActivity[]; pageInfo: PageInfo }\n\ntype TransFormActivityData = (\n edges: { node: ActivityFragmentFragment }[],\n pageInfo: PageInfo,\n) => ActivitiesResult\n\n// we flatten the activity object a little bit\nexport const transformActivityData: TransFormActivityData = (edges = [], pageInfo) => {\n const activities: FeedActivity[] = []\n\n // loop over each activity and remap the nested properties\n edges.forEach((edge) => {\n // remapping keys are the fields path in the object\n // and the values are the new keys to assign the values to\n const data = edge.node\n\n if (!data) {\n return\n }\n\n const activityNode = data\n\n // remapping of nested properties to flat properties\n const remappingItems = {\n 'author.name': 'authorName',\n 'author.attrib.fullName': 'authorFullName',\n 'author.attrib.avatarUrl': 'authorAvatarUrl',\n }\n\n const transformedActivity = remapNestedProperties(\n activityNode,\n remappingItems,\n ) as unknown as FeedActivity\n\n // parse activityData if it's a JSON string\n if (typeof activityNode.activityData === 'string') {\n try {\n transformedActivity.activityData = JSON.parse(activityNode.activityData) as FeedActivityData\n } catch (e) {\n console.error('Error parsing JSON field activityData', activityNode.activityData)\n }\n }\n\n activities.push(transformedActivity)\n })\n\n // when there are no activities and hasPreviousPage is false, add an \"createdAt\" activity as the last activity\n // if (pageInfo.hasPreviousPage === false) {\n // activities.push({ hasPreviousPage: false, activityType: 'end', activityId: 'end' })\n // }\n\n return { activities, pageInfo }\n}\n\nexport type EntityTooltip = {\n id: string\n name: string\n title: string\n type: string\n subTitle: string\n status?: string\n thumbnailId?: string\n thumbnailHash?: string\n updatedAt?: string\n taskType?: string\n users?: { name: string; avatarUrl: string }[]\n path?: string\n}\ntype TransformTaskTooltip = (data: BaseTypes & TaskTypes) => EntityTooltip\n\nconst transformTaskTooltip: TransformTaskTooltip = (data) => {\n const {\n id,\n label,\n name,\n status,\n thumbnailId,\n thumbnailHash,\n assignees,\n taskType,\n updatedAt,\n folder,\n } = data || {}\n const tooltip = {\n id,\n name,\n title: label || name,\n type: 'task',\n subTitle: folder?.label || folder?.name || '',\n status,\n thumbnailId,\n thumbnailHash,\n updatedAt,\n taskType,\n users: assignees?.map((name) => ({ name, avatarUrl: `/api/users/${name}/avatar` })) || [],\n path: folder?.path.split('/').splice(-2, 1).join(''),\n }\n\n return tooltip\n}\n\ntype TransformVersionTooltip = (data: BaseTypes & VersionTypes) => EntityTooltip\n\nconst transformVersionTooltip: TransformVersionTooltip = (data) => {\n const { id, name, status, thumbnailId, author, updatedAt, product } = data\n const tooltip = {\n id,\n type: 'version',\n name: name,\n title: name,\n subTitle: product?.name || '',\n status,\n thumbnailId,\n updatedAt,\n users: [{ name: author || '', avatarUrl: `/api/users/${author}/avatar` }],\n productType: product?.productType,\n path: product?.folder?.path?.split('/').pop(),\n }\n\n return tooltip\n}\n\n// different types have different tooltip data, we need to create a single data model\nexport const transformTooltipData = (data: EntityTooltipQuery['data']['project'], type: string) => {\n switch (type) {\n case 'task':\n // @ts-ignore\n return transformTaskTooltip(data.task)\n case 'version':\n // @ts-ignore\n return transformVersionTooltip(data.version)\n default:\n return {}\n }\n}\n\ntype CountCheckLists = (data: GetEntitiesChecklistsQuery) => ChecklistCount\n\nexport const countChecklists: CountCheckLists = (data) => {\n const activities = data?.project?.activities?.edges?.map((edge) => edge?.node)\n // get all bodies from each activity\n const bodies = activities.map((a) => a.body)\n const ids = activities.map((a) => a.activityId)\n\n // count how many checklists are in each body\n\n // count unchecked * [ ] items\n const unChecked = bodies.reduce((acc, body) => {\n if (!body) return acc\n const matches = body.match(/\\*\\s\\[\\s\\]/g)\n return acc + (matches ? matches.length : 0)\n }, 0)\n\n // count checked * [x] items\n const checked = bodies.reduce((acc, body) => {\n if (!body) return acc\n const matches = body.match(/\\*\\s\\[x\\]/g)\n return acc + (matches ? matches.length : 0)\n }, 0)\n\n return { total: unChecked + checked, checked, unChecked, ids }\n}\n\ntype Task = { id: string }\n\nexport const taskProvideTags = (result: Task[], type = 'task', entityType = 'task') =>\n result?.length\n ? [\n ...result.map(({ id }: Task) => ({ type, id })),\n { type, id: entityType.toUpperCase() + 'S' },\n {\n type: `kanBan${entityType.charAt(0).toUpperCase() + entityType.slice(1)}`,\n id: entityType.toUpperCase() + 'S',\n },\n ]\n : [{ type, id: entityType.toUpperCase() + 'S' }]\n\nexport const filterKey = (filter: any): string => {\n if (typeof filter === 'string') return filter\n try {\n return JSON.stringify(filter) ?? ''\n } catch {\n return ''\n }\n}\n\nexport const filterActivityTypes: Record<string, string[]> = {\n activity: [\n 'comment',\n 'version.publish',\n 'status.change',\n 'assignee.add',\n 'assignee.remove',\n 'version.review',\n ],\n comments: ['comment'],\n versions: ['version.publish'],\n updates: ['status.change', 'assignee.add', 'assignee.remove'],\n checklists: ['checklist'],\n}\n\nexport const getFilterActivityTypes = (filter: any): string[] | null => {\n // If it's a string, it's one of the legacy pre-set filters\n if (typeof filter === 'string') {\n if (filter in filterActivityTypes) {\n return filterActivityTypes[filter]\n }\n return null\n }\n\n // Handle QueryFilter object\n if (filter && typeof filter === 'object' && filter.conditions) {\n const activeTypes: string[] = []\n let hasExplicitTypeFilter = false\n\n filter.conditions.forEach((condition: any) => {\n // Check if it's a simple condition for one of our known activity types\n if (condition && condition.key && condition.value === true) {\n if (condition.key in filterActivityTypes) {\n activeTypes.push(...filterActivityTypes[condition.key])\n hasExplicitTypeFilter = true\n }\n }\n })\n\n // If no specific activity type filters are selected, return \"activity\" (all)\n if (!hasExplicitTypeFilter) {\n return filterActivityTypes.activity\n }\n\n // Return unique set of activity types\n return Array.from(new Set(activeTypes))\n }\n\n // fallback to all activity\n return filterActivityTypes.activity\n}\n"],"names":["getNestedProperty","obj","path","o","p","deleteNestedProperty","pathParts","lastPart","target","remapNestedProperties","object","remappingItems","transformedObject","key","newKey","value","transformActivityData","edges","pageInfo","activities","edge","data","activityNode","transformedActivity","transformTaskTooltip","id","label","name","status","thumbnailId","thumbnailHash","assignees","taskType","updatedAt","folder","transformVersionTooltip","author","product","transformTooltipData","type","countChecklists","bodies","a","ids","unChecked","acc","body","matches","checked","taskProvideTags","result","entityType","filterKey","filter","filterActivityTypes","getFilterActivityTypes","activeTypes","hasExplicitTypeFilter","condition"],"mappings":"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"}
@@ -109,7 +109,14 @@ const k = (t = [], a) => {
109
109
  return "";
110
110
  }
111
111
  }, p = {
112
- activity: ["comment", "version.publish", "status.change", "assignee.add", "assignee.remove", "version.review"],
112
+ activity: [
113
+ "comment",
114
+ "version.publish",
115
+ "status.change",
116
+ "assignee.add",
117
+ "assignee.remove",
118
+ "version.review"
119
+ ],
113
120
  comments: ["comment"],
114
121
  versions: ["version.publish"],
115
122
  updates: ["status.change", "assignee.add", "assignee.remove"],
@@ -1 +1 @@
1
- {"version":3,"file":"activitiesHelpers.es.js","sources":["../../../../../../../src/api/queries/activities/util/activitiesHelpers.ts"],"sourcesContent":["import type {\n ActivityFragmentFragment,\n GetEntitiesChecklistsQuery,\n PageInfo,\n} from '@shared/api/generated'\nimport { ChecklistCount, FeedActivity, FeedActivityData } from '../types'\nimport { BaseTypes, EntityTooltipQuery, TaskTypes, VersionTypes } from '../activityQueries'\nimport { FeedFilter } from '@shared/context'\n\n// Helper function to get a nested property of an object using a string path\nconst getNestedProperty = <T extends Record<string, any>, R = any>(\n obj: T,\n path: string,\n): R | undefined =>\n path.split('.').reduce<any>((o, p) => (o && o[p] !== undefined ? o[p] : undefined), obj)\n\n// Helper function to delete a nested property of an object using a string path\nconst deleteNestedProperty = <T extends Record<string, any>>(obj: T, path: string): void => {\n const pathParts = path.split('.')\n const lastPart = pathParts.pop()\n const target = pathParts.reduce<any>((o, p) => (o && o[p] !== undefined ? o[p] : undefined), obj)\n if (target && lastPart) {\n delete target[lastPart]\n }\n}\n\nfunction remapNestedProperties<T extends Record<string, any>>(\n object: T,\n remappingItems: Record<string, string>,\n): T {\n const transformedObject = { ...object }\n\n for (const [key, newKey] of Object.entries(remappingItems)) {\n const value = getNestedProperty(transformedObject, key)\n if (value !== undefined) {\n // Get deeply nested value from key using \".\" notation\n // @ts-expect-error\n transformedObject[newKey] = value\n // Delete the old key from the object\n deleteNestedProperty(transformedObject, key)\n }\n }\n\n return transformedObject\n}\n\nexport type ActivitiesResult = { activities: FeedActivity[]; pageInfo: PageInfo }\n\ntype TransFormActivityData = (\n edges: { node: ActivityFragmentFragment }[],\n pageInfo: PageInfo,\n) => ActivitiesResult\n\n// we flatten the activity object a little bit\nexport const transformActivityData: TransFormActivityData = (edges = [], pageInfo) => {\n const activities: FeedActivity[] = []\n\n // loop over each activity and remap the nested properties\n edges.forEach((edge) => {\n // remapping keys are the fields path in the object\n // and the values are the new keys to assign the values to\n const data = edge.node\n\n if (!data) {\n return\n }\n\n const activityNode = data\n\n // remapping of nested properties to flat properties\n const remappingItems = {\n 'author.name': 'authorName',\n 'author.attrib.fullName': 'authorFullName',\n 'author.attrib.avatarUrl': 'authorAvatarUrl',\n }\n\n const transformedActivity = remapNestedProperties(\n activityNode,\n remappingItems,\n ) as unknown as FeedActivity\n\n // parse activityData if it's a JSON string\n if (typeof activityNode.activityData === 'string') {\n try {\n transformedActivity.activityData = JSON.parse(activityNode.activityData) as FeedActivityData\n } catch (e) {\n console.error('Error parsing JSON field activityData', activityNode.activityData)\n }\n }\n\n activities.push(transformedActivity)\n })\n\n // when there are no activities and hasPreviousPage is false, add an \"createdAt\" activity as the last activity\n // if (pageInfo.hasPreviousPage === false) {\n // activities.push({ hasPreviousPage: false, activityType: 'end', activityId: 'end' })\n // }\n\n return { activities, pageInfo }\n}\n\nexport type EntityTooltip = {\n id: string\n name: string\n title: string\n type: string\n subTitle: string\n status?: string\n thumbnailId?: string\n thumbnailHash?: string\n updatedAt?: string\n taskType?: string\n users?: { name: string; avatarUrl: string }[]\n path?: string\n}\ntype TransformTaskTooltip = (data: BaseTypes & TaskTypes) => EntityTooltip\n\nconst transformTaskTooltip: TransformTaskTooltip = (data) => {\n const {\n id,\n label,\n name,\n status,\n thumbnailId,\n thumbnailHash,\n assignees,\n taskType,\n updatedAt,\n folder,\n } = data || {}\n const tooltip = {\n id,\n name,\n title: label || name,\n type: 'task',\n subTitle: folder?.label || folder?.name || '',\n status,\n thumbnailId,\n thumbnailHash,\n updatedAt,\n taskType,\n users: assignees?.map((name) => ({ name, avatarUrl: `/api/users/${name}/avatar` })) || [],\n path: folder?.path.split('/').splice(-2, 1).join(''),\n }\n\n return tooltip\n}\n\ntype TransformVersionTooltip = (data: BaseTypes & VersionTypes) => EntityTooltip\n\nconst transformVersionTooltip: TransformVersionTooltip = (data) => {\n const { id, name, status, thumbnailId, author, updatedAt, product } = data\n const tooltip = {\n id,\n type: 'version',\n name: name,\n title: name,\n subTitle: product?.name || '',\n status,\n thumbnailId,\n updatedAt,\n users: [{ name: author || '', avatarUrl: `/api/users/${author}/avatar` }],\n productType: product?.productType,\n path: product?.folder?.path?.split('/').pop(),\n }\n\n return tooltip\n}\n\n// different types have different tooltip data, we need to create a single data model\nexport const transformTooltipData = (data: EntityTooltipQuery['data']['project'], type: string) => {\n switch (type) {\n case 'task':\n // @ts-ignore\n return transformTaskTooltip(data.task)\n case 'version':\n // @ts-ignore\n return transformVersionTooltip(data.version)\n default:\n return {}\n }\n}\n\ntype CountCheckLists = (data: GetEntitiesChecklistsQuery) => ChecklistCount\n\nexport const countChecklists: CountCheckLists = (data) => {\n const activities = data?.project?.activities?.edges?.map((edge) => edge?.node)\n // get all bodies from each activity\n const bodies = activities.map((a) => a.body)\n const ids = activities.map((a) => a.activityId)\n\n // count how many checklists are in each body\n\n // count unchecked * [ ] items\n const unChecked = bodies.reduce((acc, body) => {\n if (!body) return acc\n const matches = body.match(/\\*\\s\\[\\s\\]/g)\n return acc + (matches ? matches.length : 0)\n }, 0)\n\n // count checked * [x] items\n const checked = bodies.reduce((acc, body) => {\n if (!body) return acc\n const matches = body.match(/\\*\\s\\[x\\]/g)\n return acc + (matches ? matches.length : 0)\n }, 0)\n\n return { total: unChecked + checked, checked, unChecked, ids }\n}\n\ntype Task = { id: string }\n\nexport const taskProvideTags = (result: Task[], type = 'task', entityType = 'task') =>\n result?.length\n ? [\n ...result.map(({ id }: Task) => ({ type, id })),\n { type, id: entityType.toUpperCase() + 'S' },\n {\n type: `kanBan${entityType.charAt(0).toUpperCase() + entityType.slice(1)}`,\n id: entityType.toUpperCase() + 'S',\n },\n ]\n : [{ type, id: entityType.toUpperCase() + 'S' }]\n\nexport const filterKey = (filter: any): string => {\n if (typeof filter === 'string') return filter\n try {\n return JSON.stringify(filter) ?? ''\n } catch {\n return ''\n }\n}\n\nexport const filterActivityTypes: Record<string, string[]> = {\n activity: ['comment', 'version.publish', 'status.change', 'assignee.add', 'assignee.remove', 'version.review'],\n comments: ['comment'],\n versions: ['version.publish'],\n updates: ['status.change', 'assignee.add', 'assignee.remove'],\n checklists: ['checklist'],\n}\n\nexport const getFilterActivityTypes = (filter: any): string[] | null => {\n // If it's a string, it's one of the legacy pre-set filters\n if (typeof filter === 'string') {\n if (filter in filterActivityTypes) {\n return filterActivityTypes[filter]\n }\n return null\n }\n\n // Handle QueryFilter object\n if (filter && typeof filter === 'object' && filter.conditions) {\n const activeTypes: string[] = []\n let hasExplicitTypeFilter = false\n\n filter.conditions.forEach((condition: any) => {\n // Check if it's a simple condition for one of our known activity types\n if (condition && condition.key && condition.value === true) {\n if (condition.key in filterActivityTypes) {\n activeTypes.push(...filterActivityTypes[condition.key])\n hasExplicitTypeFilter = true\n }\n }\n })\n\n // If no specific activity type filters are selected, return \"activity\" (all)\n if (!hasExplicitTypeFilter) {\n return filterActivityTypes.activity\n }\n\n // Return unique set of activity types\n return Array.from(new Set(activeTypes))\n }\n\n // fallback to all activity\n return filterActivityTypes.activity\n}\n"],"names":["getNestedProperty","obj","path","o","p","deleteNestedProperty","pathParts","lastPart","target","remapNestedProperties","object","remappingItems","transformedObject","key","newKey","value","transformActivityData","edges","pageInfo","activities","edge","data","activityNode","transformedActivity","transformTaskTooltip","id","label","name","status","thumbnailId","thumbnailHash","assignees","taskType","updatedAt","folder","transformVersionTooltip","author","product","transformTooltipData","type","countChecklists","bodies","a","ids","unChecked","acc","body","matches","checked","taskProvideTags","result","entityType","filterKey","filter","filterActivityTypes","getFilterActivityTypes","activeTypes","hasExplicitTypeFilter","condition"],"mappings":"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"}
1
+ {"version":3,"file":"activitiesHelpers.es.js","sources":["../../../../../../../src/api/queries/activities/util/activitiesHelpers.ts"],"sourcesContent":["import type {\n ActivityFragmentFragment,\n GetEntitiesChecklistsQuery,\n PageInfo,\n} from '@shared/api/generated'\nimport { ChecklistCount, FeedActivity, FeedActivityData } from '../types'\nimport { BaseTypes, EntityTooltipQuery, TaskTypes, VersionTypes } from '../activityQueries'\n\n// Helper function to get a nested property of an object using a string path\nconst getNestedProperty = <T extends Record<string, any>, R = any>(\n obj: T,\n path: string,\n): R | undefined =>\n path.split('.').reduce<any>((o, p) => (o && o[p] !== undefined ? o[p] : undefined), obj)\n\n// Helper function to delete a nested property of an object using a string path\nconst deleteNestedProperty = <T extends Record<string, any>>(obj: T, path: string): void => {\n const pathParts = path.split('.')\n const lastPart = pathParts.pop()\n const target = pathParts.reduce<any>((o, p) => (o && o[p] !== undefined ? o[p] : undefined), obj)\n if (target && lastPart) {\n delete target[lastPart]\n }\n}\n\nfunction remapNestedProperties<T extends Record<string, any>>(\n object: T,\n remappingItems: Record<string, string>,\n): T {\n const transformedObject = { ...object }\n\n for (const [key, newKey] of Object.entries(remappingItems)) {\n const value = getNestedProperty(transformedObject, key)\n if (value !== undefined) {\n // Get deeply nested value from key using \".\" notation\n // @ts-expect-error\n transformedObject[newKey] = value\n // Delete the old key from the object\n deleteNestedProperty(transformedObject, key)\n }\n }\n\n return transformedObject\n}\n\nexport type ActivitiesResult = { activities: FeedActivity[]; pageInfo: PageInfo }\n\ntype TransFormActivityData = (\n edges: { node: ActivityFragmentFragment }[],\n pageInfo: PageInfo,\n) => ActivitiesResult\n\n// we flatten the activity object a little bit\nexport const transformActivityData: TransFormActivityData = (edges = [], pageInfo) => {\n const activities: FeedActivity[] = []\n\n // loop over each activity and remap the nested properties\n edges.forEach((edge) => {\n // remapping keys are the fields path in the object\n // and the values are the new keys to assign the values to\n const data = edge.node\n\n if (!data) {\n return\n }\n\n const activityNode = data\n\n // remapping of nested properties to flat properties\n const remappingItems = {\n 'author.name': 'authorName',\n 'author.attrib.fullName': 'authorFullName',\n 'author.attrib.avatarUrl': 'authorAvatarUrl',\n }\n\n const transformedActivity = remapNestedProperties(\n activityNode,\n remappingItems,\n ) as unknown as FeedActivity\n\n // parse activityData if it's a JSON string\n if (typeof activityNode.activityData === 'string') {\n try {\n transformedActivity.activityData = JSON.parse(activityNode.activityData) as FeedActivityData\n } catch (e) {\n console.error('Error parsing JSON field activityData', activityNode.activityData)\n }\n }\n\n activities.push(transformedActivity)\n })\n\n // when there are no activities and hasPreviousPage is false, add an \"createdAt\" activity as the last activity\n // if (pageInfo.hasPreviousPage === false) {\n // activities.push({ hasPreviousPage: false, activityType: 'end', activityId: 'end' })\n // }\n\n return { activities, pageInfo }\n}\n\nexport type EntityTooltip = {\n id: string\n name: string\n title: string\n type: string\n subTitle: string\n status?: string\n thumbnailId?: string\n thumbnailHash?: string\n updatedAt?: string\n taskType?: string\n users?: { name: string; avatarUrl: string }[]\n path?: string\n}\ntype TransformTaskTooltip = (data: BaseTypes & TaskTypes) => EntityTooltip\n\nconst transformTaskTooltip: TransformTaskTooltip = (data) => {\n const {\n id,\n label,\n name,\n status,\n thumbnailId,\n thumbnailHash,\n assignees,\n taskType,\n updatedAt,\n folder,\n } = data || {}\n const tooltip = {\n id,\n name,\n title: label || name,\n type: 'task',\n subTitle: folder?.label || folder?.name || '',\n status,\n thumbnailId,\n thumbnailHash,\n updatedAt,\n taskType,\n users: assignees?.map((name) => ({ name, avatarUrl: `/api/users/${name}/avatar` })) || [],\n path: folder?.path.split('/').splice(-2, 1).join(''),\n }\n\n return tooltip\n}\n\ntype TransformVersionTooltip = (data: BaseTypes & VersionTypes) => EntityTooltip\n\nconst transformVersionTooltip: TransformVersionTooltip = (data) => {\n const { id, name, status, thumbnailId, author, updatedAt, product } = data\n const tooltip = {\n id,\n type: 'version',\n name: name,\n title: name,\n subTitle: product?.name || '',\n status,\n thumbnailId,\n updatedAt,\n users: [{ name: author || '', avatarUrl: `/api/users/${author}/avatar` }],\n productType: product?.productType,\n path: product?.folder?.path?.split('/').pop(),\n }\n\n return tooltip\n}\n\n// different types have different tooltip data, we need to create a single data model\nexport const transformTooltipData = (data: EntityTooltipQuery['data']['project'], type: string) => {\n switch (type) {\n case 'task':\n // @ts-ignore\n return transformTaskTooltip(data.task)\n case 'version':\n // @ts-ignore\n return transformVersionTooltip(data.version)\n default:\n return {}\n }\n}\n\ntype CountCheckLists = (data: GetEntitiesChecklistsQuery) => ChecklistCount\n\nexport const countChecklists: CountCheckLists = (data) => {\n const activities = data?.project?.activities?.edges?.map((edge) => edge?.node)\n // get all bodies from each activity\n const bodies = activities.map((a) => a.body)\n const ids = activities.map((a) => a.activityId)\n\n // count how many checklists are in each body\n\n // count unchecked * [ ] items\n const unChecked = bodies.reduce((acc, body) => {\n if (!body) return acc\n const matches = body.match(/\\*\\s\\[\\s\\]/g)\n return acc + (matches ? matches.length : 0)\n }, 0)\n\n // count checked * [x] items\n const checked = bodies.reduce((acc, body) => {\n if (!body) return acc\n const matches = body.match(/\\*\\s\\[x\\]/g)\n return acc + (matches ? matches.length : 0)\n }, 0)\n\n return { total: unChecked + checked, checked, unChecked, ids }\n}\n\ntype Task = { id: string }\n\nexport const taskProvideTags = (result: Task[], type = 'task', entityType = 'task') =>\n result?.length\n ? [\n ...result.map(({ id }: Task) => ({ type, id })),\n { type, id: entityType.toUpperCase() + 'S' },\n {\n type: `kanBan${entityType.charAt(0).toUpperCase() + entityType.slice(1)}`,\n id: entityType.toUpperCase() + 'S',\n },\n ]\n : [{ type, id: entityType.toUpperCase() + 'S' }]\n\nexport const filterKey = (filter: any): string => {\n if (typeof filter === 'string') return filter\n try {\n return JSON.stringify(filter) ?? ''\n } catch {\n return ''\n }\n}\n\nexport const filterActivityTypes: Record<string, string[]> = {\n activity: [\n 'comment',\n 'version.publish',\n 'status.change',\n 'assignee.add',\n 'assignee.remove',\n 'version.review',\n ],\n comments: ['comment'],\n versions: ['version.publish'],\n updates: ['status.change', 'assignee.add', 'assignee.remove'],\n checklists: ['checklist'],\n}\n\nexport const getFilterActivityTypes = (filter: any): string[] | null => {\n // If it's a string, it's one of the legacy pre-set filters\n if (typeof filter === 'string') {\n if (filter in filterActivityTypes) {\n return filterActivityTypes[filter]\n }\n return null\n }\n\n // Handle QueryFilter object\n if (filter && typeof filter === 'object' && filter.conditions) {\n const activeTypes: string[] = []\n let hasExplicitTypeFilter = false\n\n filter.conditions.forEach((condition: any) => {\n // Check if it's a simple condition for one of our known activity types\n if (condition && condition.key && condition.value === true) {\n if (condition.key in filterActivityTypes) {\n activeTypes.push(...filterActivityTypes[condition.key])\n hasExplicitTypeFilter = true\n }\n }\n })\n\n // If no specific activity type filters are selected, return \"activity\" (all)\n if (!hasExplicitTypeFilter) {\n return filterActivityTypes.activity\n }\n\n // Return unique set of activity types\n return Array.from(new Set(activeTypes))\n }\n\n // fallback to all activity\n return filterActivityTypes.activity\n}\n"],"names":["getNestedProperty","obj","path","o","p","deleteNestedProperty","pathParts","lastPart","target","remapNestedProperties","object","remappingItems","transformedObject","key","newKey","value","transformActivityData","edges","pageInfo","activities","edge","data","activityNode","transformedActivity","transformTaskTooltip","id","label","name","status","thumbnailId","thumbnailHash","assignees","taskType","updatedAt","folder","transformVersionTooltip","author","product","transformTooltipData","type","countChecklists","bodies","a","ids","unChecked","acc","body","matches","checked","taskProvideTags","result","entityType","filterKey","filter","filterActivityTypes","getFilterActivityTypes","activeTypes","hasExplicitTypeFilter","condition"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("lodash");require("react-toastify");require("uuid");const D=require("../../../../util/thumbnailWebsocket.cjs.js");require("../../../base/client.cjs.js");require("../../../generated/graphql.cjs.js");require("../../../generated/graphqlLinks.cjs.js");require("../../../generated/access.cjs.js");require("../../../generated/actions.cjs.js");require("../../../generated/activityFeed.cjs.js");require("../../../generated/addons.cjs.js");require("../../../generated/anatomy.cjs.js");require("../../../generated/attributes.cjs.js");require("../../../generated/authentication.cjs.js");require("../../../generated/bundles.cjs.js");require("../../../generated/configuration.cjs.js");require("../../../generated/dataImport.cjs.js");require("../../../generated/desktop.cjs.js");require("../../../generated/entityLists.cjs.js");require("../../../generated/events.cjs.js");require("../../../generated/files.cjs.js");require("../../../generated/folders.cjs.js");require("../../../generated/inbox.cjs.js");require("../../../generated/links.cjs.js");require("../../../generated/market.cjs.js");require("../../../generated/onboarding.cjs.js");require("../../../generated/operations.cjs.js");require("../../../generated/products.cjs.js");require("../../../generated/projectDashboard.cjs.js");require("../../../generated/projects.cjs.js");require("../../../generated/projectFolders.cjs.js");require("../../../generated/reviewables.cjs.js");require("../../../generated/services.cjs.js");require("../../../generated/system.cjs.js");require("../../../generated/tasks.cjs.js");require("../../../generated/teams.cjs.js");require("../../../generated/thumbnails.cjs.js");require("../../../generated/uRIs.cjs.js");require("../../../generated/users.cjs.js");require("../../../generated/versions.cjs.js");require("../../../generated/workfiles.cjs.js");require("../../../generated/ynputCloud.cjs.js");require("../../../generated/grouping.cjs.js");require("../../../generated/views.cjs.js");require("../../actions/getActions.cjs.js");const E=require("../getActivities.cjs.js");require("../updateActivities.cjs.js");require("../updateReaction.cjs.js");require("../getMentions.cjs.js");require("../getCategories.cjs.js");require("../../addons/getAddons.cjs.js");require("../../addons/updateAddons.cjs.js");require("../../attributes/getAttributes.cjs.js");require("../../attributes/updateAttributes.cjs.js");require("../../authentication/getAuthentication.cjs.js");require("../../cloud/cloud.cjs.js");require("../../columnStats/metricTargets.cjs.js");require("../../config/getConfig.cjs.js");require("../../config/updateConfig.cjs.js");require("../../entities/getEntity.cjs.js");require("../../entities/getEntityPanel.cjs.js");require("../../overview/getOverview.cjs.js");require("../../overview/updateOverview.cjs.js");require("../../versions/getVersionsProducts.cjs.js");require("../../links/getEntityLinks.cjs.js");require("../../entities/updateEntity.cjs.js");require("../../entityLists/getLists.cjs.js");require("../../entityLists/updateLists.cjs.js");require("../../entityLists/getListsAttributes.cjs.js");require("../../entityLists/listItemsColumnStats.cjs.js");require("../../entityLists/updateListsAttributes.cjs.js");require("../../entityLists/listFolders.cjs.js");require("../../folders/getFolders.cjs.js");require("../../folders/getFolderDeleteInfo.cjs.js");require("../../grouping/getGrouping.cjs.js");require("../../links/updateLinks.cjs.js");require("../../links/getLinks.cjs.js");require("../../permissions/getPermissions.cjs.js");require("../../products/createProduct.cjs.js");require("../../products/getFolderProducts.cjs.js");require("../../project/getProject.cjs.js");require("../../project/updateProject.cjs.js");require("../../projectFolders/projectFolders.cjs.js");require("../../review/getReview.cjs.js");require("../../review/updateReview.cjs.js");require("../../share/share.cjs.js");require("../../system/getSystem.cjs.js");require("../../tasks/getTasks.cjs.js");require("../../tasks/updateTasks.cjs.js");require("../../teams/getTeams.cjs.js");require("../../userDashboard/getUserDashboard.cjs.js");require("../../users/getUsers.cjs.js");require("../../users/updateUsers.cjs.js");require("../../users/guests.cjs.js");require("../../versions/updateVersions.cjs.js");require("../../views/getViews.cjs.js");require("../../views/updateViews.cjs.js");require("../../watchers/getWatchers.cjs.js");require("../../uris/getUris.cjs.js");const x=require("../../../../util/pubsub.cjs.js"),G=n=>n?n.includes("* [ ]")||n.includes("* [x]"):!1,S=async(n,{updateCachedData:f,cacheDataLoaded:_,cacheEntryRemoved:H,dispatch:b,getCacheEntry:j})=>{let d,p;try{await _,p=D.subscribeToThumbnailUpdates(y=>{if(!j().data?.pages?.length)return;const i=y.reduce((u,s)=>(s.summary.entityType==="version"&&(u[s.summary.entityId]=s.summary.thumbnailHash||""),u),{});Object.keys(i).length!==0&&f(u=>{!u||!u.pages||u.pages.forEach(s=>{s.activities?.forEach(e=>{e.referenceType==="version"&&e.referenceId&&i[e.referenceId]!==void 0&&(e.version||(e.version={}),e.version.thumbnailHash=i[e.referenceId]),e.origin.type==="version"&&e.origin.id&&i[e.origin.id]!==void 0&&(e.version||(e.version={}),e.version.thumbnailHash=i[e.origin.id])})})})},["version"]);const h=async(y,o)=>{const i=o.summary?.activity_id;if(!i){console.warn("[Activity RT] Activity message missing activity_id",o);return}const u=o.project,s=o.summary?.references||[],e=["origin","mention","relation"],g=s.filter(r=>e.includes(r.reference_type)).map(r=>r.entity_id),T=Array.isArray(n.entityIds)?n.entityIds:[n.entityIds];if(!T.some(r=>g.includes(r))&&T.length>0)return;const m=o.summary?.activity_type;if(m){if(y==="activity.deleted"){f(r=>{if(!r||!r.pages){console.warn("[Activity RT] No draft or pages found for deletion");return}let c=!1;for(const A of r.pages){const a=A.activities?.findIndex(q=>q.activityId===i);a!==-1&&(A.activities.splice(a,1),c=!0)}});return}try{const r=await b(E.getActivitiesGQLApi.endpoints.GetActivitiesById.initiate({projectName:u,activityIds:[i],entityIds:g},{forceRefetch:!0}));if("error"in r&&r.error)throw console.error("[Activity RT] Error fetching activity:",r.error),new Error("Failed to fetch activity");const a=r.data?.activities||[];if(a.length===0){console.warn("[Activity RT] No activities found for activity_id",i);return}const q=a[0],I=[m];if(m==="comment"){const t=q?.body;G(t||"")&&I.push("checklist")}const l=n.activityTypes,R=Array.isArray(l)?l:l?[l]:[];if(!(R.length===0||R.some(t=>I.includes(t))))return;f(t=>{if(!t||!t.pages){console.warn("[Activity RT] No draft or pages found for update");return}let v=!1;for(const w of t.pages){const k=w.activities?.findIndex(N=>N.activityId===i);if(k!==-1){w.activities[k]=q,v=!0;break}}!v&&y==="activity.created"&&(t.pages.length>0&&t.pages[0].activities?t.pages[0].activities.unshift(q):console.warn("[Activity RT] Cannot add activity: no pages or activities array"))})}catch(r){console.error("[Activity RT] Error fetching activity data for real-time update:",r),b(E.getActivitiesGQLApi.util.invalidateTags(g.map(c=>({type:"entityActivities",id:c}))))}}};d=x.subscribe(["activity"],h)}catch(h){console.error("[Activity RT] Error in activity real-time handler setup:",h)}await H,d&&x.unsubscribe(d),p&&p()};exports.handleActivityRealtimeUpdates=S;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("lodash");require("react-toastify");require("uuid");const D=require("../../../../util/thumbnailWebsocket.cjs.js");require("../../../base/client.cjs.js");require("../../../generated/graphql.cjs.js");require("../../../generated/graphqlLinks.cjs.js");require("../../../generated/access.cjs.js");require("../../../generated/actions.cjs.js");require("../../../generated/activityFeed.cjs.js");require("../../../generated/addons.cjs.js");require("../../../generated/anatomy.cjs.js");require("../../../generated/attributes.cjs.js");require("../../../generated/authentication.cjs.js");require("../../../generated/bundles.cjs.js");require("../../../generated/configuration.cjs.js");require("../../../generated/dataImport.cjs.js");require("../../../generated/desktop.cjs.js");require("../../../generated/entityLists.cjs.js");require("../../../generated/events.cjs.js");require("../../../generated/files.cjs.js");require("../../../generated/folders.cjs.js");require("../../../generated/inbox.cjs.js");require("../../../generated/links.cjs.js");require("../../../generated/market.cjs.js");require("../../../generated/onboarding.cjs.js");require("../../../generated/operations.cjs.js");require("../../../generated/products.cjs.js");require("../../../generated/projectDashboard.cjs.js");require("../../../generated/projects.cjs.js");require("../../../generated/projectFolders.cjs.js");require("../../../generated/reviewables.cjs.js");require("../../../generated/services.cjs.js");require("../../../generated/system.cjs.js");require("../../../generated/tasks.cjs.js");require("../../../generated/teams.cjs.js");require("../../../generated/thumbnails.cjs.js");require("../../../generated/uRIs.cjs.js");require("../../../generated/users.cjs.js");require("../../../generated/versions.cjs.js");require("../../../generated/workfiles.cjs.js");require("../../../generated/ynputCloud.cjs.js");require("../../../generated/grouping.cjs.js");require("../../../generated/views.cjs.js");require("../../actions/getActions.cjs.js");require("../getActivities.cjs.js");require("../updateReaction.cjs.js");require("../getMentions.cjs.js");require("../getCategories.cjs.js");require("../../addons/getAddons.cjs.js");require("../../addons/updateAddons.cjs.js");require("../../attributes/getAttributes.cjs.js");require("../../attributes/updateAttributes.cjs.js");require("../../authentication/getAuthentication.cjs.js");require("../../cloud/cloud.cjs.js");require("../../columnStats/metricTargets.cjs.js");require("../../config/getConfig.cjs.js");require("../../config/updateConfig.cjs.js");require("../../entities/getEntity.cjs.js");require("../../entities/getEntityPanel.cjs.js");require("../../overview/getOverview.cjs.js");require("../../overview/updateOverview.cjs.js");require("../../versions/getVersionsProducts.cjs.js");require("../../links/getEntityLinks.cjs.js");require("../../entities/updateEntity.cjs.js");require("../../entityLists/getLists.cjs.js");require("../../entityLists/updateLists.cjs.js");require("../../entityLists/getListsAttributes.cjs.js");require("../../entityLists/listItemsColumnStats.cjs.js");require("../../entityLists/updateListsAttributes.cjs.js");require("../../entityLists/listFolders.cjs.js");require("../../folders/getFolders.cjs.js");require("../../folders/getFolderDeleteInfo.cjs.js");require("../../grouping/getGrouping.cjs.js");require("../../links/updateLinks.cjs.js");require("../../links/getLinks.cjs.js");require("../../permissions/getPermissions.cjs.js");require("../../products/createProduct.cjs.js");require("../../products/getFolderProducts.cjs.js");require("../../project/getProject.cjs.js");require("../../project/updateProject.cjs.js");require("../../projectFolders/projectFolders.cjs.js");require("../../review/getReview.cjs.js");require("../../review/updateReview.cjs.js");require("../../share/share.cjs.js");require("../../system/getSystem.cjs.js");require("../../tasks/getTasks.cjs.js");require("../../tasks/updateTasks.cjs.js");require("../../teams/getTeams.cjs.js");require("../../userDashboard/getUserDashboard.cjs.js");require("../../users/getUsers.cjs.js");require("../../users/updateUsers.cjs.js");require("../../users/guests.cjs.js");require("../../versions/updateVersions.cjs.js");require("../../views/getViews.cjs.js");require("../../views/updateViews.cjs.js");require("../../watchers/getWatchers.cjs.js");require("../../uris/getUris.cjs.js");const x=require("../../../../util/pubsub.cjs.js"),S=n=>n?n.includes("* [ ]")||n.includes("* [x]"):!1,U=async(n,{updateCachedData:d,cacheDataLoaded:_,cacheEntryRemoved:H,dispatch:T,getCacheEntry:j,gqlApi:A})=>{let v,p;try{await _,p=D.subscribeToThumbnailUpdates(y=>{if(!j().data?.pages?.length)return;const i=y.reduce((u,s)=>(s.summary.entityType==="version"&&(u[s.summary.entityId]=s.summary.thumbnailHash||""),u),{});Object.keys(i).length!==0&&d(u=>{!u||!u.pages||u.pages.forEach(s=>{s.activities?.forEach(e=>{e.referenceType==="version"&&e.referenceId&&i[e.referenceId]!==void 0&&(e.version||(e.version={}),e.version.thumbnailHash=i[e.referenceId]),e.origin.type==="version"&&e.origin.id&&i[e.origin.id]!==void 0&&(e.version||(e.version={}),e.version.thumbnailHash=i[e.origin.id])})})})},["version"]);const h=async(y,o)=>{const i=o.summary?.activity_id;if(!i){console.warn("[Activity RT] Activity message missing activity_id",o);return}const u=o.project,s=o.summary?.references||[],e=["origin","mention","relation"],m=s.filter(r=>e.includes(r.reference_type)).map(r=>r.entity_id),I=Array.isArray(n.entityIds)?n.entityIds:[n.entityIds];if(!I.some(r=>m.includes(r))&&I.length>0)return;const b=o.summary?.activity_type;if(b){if(y==="activity.deleted"){d(r=>{if(!r||!r.pages){console.warn("[Activity RT] No draft or pages found for deletion");return}let c=!1;for(const g of r.pages){const a=g.activities?.findIndex(q=>q.activityId===i);a!==-1&&(g.activities.splice(a,1),c=!0)}});return}try{const r=await T(A.endpoints.GetActivitiesById.initiate({projectName:u,activityIds:[i],entityIds:m},{forceRefetch:!0}));if("error"in r&&r.error)throw console.error("[Activity RT] Error fetching activity:",r.error),new Error("Failed to fetch activity");const a=r.data?.activities||[];if(a.length===0){console.warn("[Activity RT] No activities found for activity_id",i);return}const q=a[0],R=[b];if(b==="comment"){const t=q?.body;S(t||"")&&R.push("checklist")}const l=n.activityTypes,w=Array.isArray(l)?l:l?[l]:[];if(!(w.length===0||w.some(t=>R.includes(t))))return;d(t=>{if(!t||!t.pages){console.warn("[Activity RT] No draft or pages found for update");return}let f=!1;for(const k of t.pages){const E=k.activities?.findIndex(N=>N.activityId===i);if(E!==-1){k.activities[E]=q,f=!0;break}}!f&&y==="activity.created"&&(t.pages.length>0&&t.pages[0].activities?t.pages[0].activities.unshift(q):console.warn("[Activity RT] Cannot add activity: no pages or activities array"))})}catch(r){console.error("[Activity RT] Error fetching activity data for real-time update:",r),T(A.util.invalidateTags(m.map(c=>({type:"entityActivities",id:c}))))}}};v=x.subscribe(["activity"],h)}catch(h){console.error("[Activity RT] Error in activity real-time handler setup:",h)}await H,v&&x.unsubscribe(v),p&&p()};exports.handleActivityRealtimeUpdates=U;
2
2
  //# sourceMappingURL=activityRealtimeHandler.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"activityRealtimeHandler.cjs.js","sources":["../../../../../../../src/api/queries/activities/util/activityRealtimeHandler.ts"],"sourcesContent":["import { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport { ActivitiesResult } from './activitiesHelpers'\nimport type { GetActivitiesQueryVariables } from '@shared/api'\nimport { getActivitiesGQLApi as gqlApi } from '../getActivities'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { FeedActivity } from '../types'\n\nexport type ActivityMessage = {\n topic: string\n project: string\n user: string\n createdAt: string\n updatedAt: string\n id: string\n status: string\n summary?: {\n activity_id: string\n activity_type: string\n references: {\n entity_id: string\n entity_type: string\n reference_type: string\n }[]\n }\n}\n\ntype InfiniteDataDraft = {\n pages: ActivitiesResult[]\n}\n\ntype CacheLifecycleApi = {\n updateCachedData: (updateRecipe: (draft: InfiniteDataDraft) => void) => void\n cacheDataLoaded: Promise<unknown>\n cacheEntryRemoved: Promise<void>\n dispatch: ThunkDispatch<unknown, unknown, UnknownAction>\n getCacheEntry: () => { data?: InfiniteDataDraft }\n}\n\n/**\n * Checks if a comment body contains a checklist\n */\nconst bodyHasChecklist = (body: string): boolean => {\n if (!body) return false\n return body.includes('* [ ]') || body.includes('* [x]')\n}\n\n/**\n * Handles real-time activity updates for the infinite query cache\n */\nexport const handleActivityRealtimeUpdates = async (\n queryArg: Omit<GetActivitiesQueryVariables, 'last' | 'first' | 'cursor'> & { filter?: any },\n {\n updateCachedData,\n cacheDataLoaded,\n cacheEntryRemoved,\n dispatch,\n getCacheEntry,\n }: CacheLifecycleApi,\n) => {\n let token: string | undefined\n let unsubscribeThumbnails: (() => void) | undefined\n\n try {\n // Wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const draftData = getCacheEntry().data\n if (!draftData?.pages?.length) return\n\n // Map version ids/entity ids to their new thumbnail hashes\n const versionHashesData = messages.reduce((acc, message) => {\n if (message.summary.entityType === 'version') {\n acc[message.summary.entityId] = message.summary.thumbnailHash || '' // Use empty string if undefined\n }\n return acc\n }, {} as Record<string, string>)\n\n if (Object.keys(versionHashesData).length === 0) return\n\n updateCachedData((draft) => {\n if (!draft || !draft.pages) return\n draft.pages.forEach((page) => {\n page.activities?.forEach((activity) => {\n // Version hashes in activities exist when Activity is on a version.\n // Or the referenceId points to the version entity.\n if (\n activity.referenceType === 'version' &&\n activity.referenceId &&\n versionHashesData[activity.referenceId] !== undefined\n ) {\n if (!activity.version) {\n activity.version = {} as any\n }\n activity.version!.thumbnailHash = versionHashesData[activity.referenceId]\n }\n // Add check for entityId as well\n if (\n activity.origin.type === 'version' &&\n activity.origin.id &&\n versionHashesData[activity.origin.id] !== undefined\n ) {\n if (!activity.version) {\n activity.version = {} as any\n }\n activity.version!.thumbnailHash = versionHashesData[activity.origin.id]\n }\n })\n })\n })\n },\n ['version'],\n )\n\n const handlePubSub = async (topic: string, message: ActivityMessage) => {\n const activityId = message.summary?.activity_id\n if (!activityId) {\n console.warn('[Activity RT] Activity message missing activity_id', message)\n return\n }\n\n const projectName = message.project\n const references = message.summary?.references || []\n const relevantReferenceTypes = ['origin', 'mention', 'relation']\n const entityIds = references\n .filter((reference) => relevantReferenceTypes.includes(reference.reference_type))\n .map((reference) => reference.entity_id)\n\n // Check if this activity is relevant to the current cache\n const queryEntityIds = Array.isArray(queryArg.entityIds)\n ? queryArg.entityIds\n : [queryArg.entityIds]\n\n const isRelevant = queryEntityIds.some((qId) => entityIds.includes(qId))\n\n if (!isRelevant && queryEntityIds.length > 0) {\n return\n }\n\n const activityType = message.summary?.activity_type\n if (!activityType) {\n return\n }\n\n // Handle deletion\n if (topic === 'activity.deleted') {\n updateCachedData((draft) => {\n if (!draft || !draft.pages) {\n console.warn('[Activity RT] No draft or pages found for deletion')\n return\n }\n\n let deleted = false\n for (const page of draft.pages) {\n const index = page.activities?.findIndex(\n (activity) => activity.activityId === activityId,\n )\n if (index !== -1) {\n page.activities.splice(index, 1)\n deleted = true\n }\n }\n\n if (deleted) {\n } else {\n }\n })\n return\n }\n\n // Handle creation and updates\n try {\n // Fetch the updated activity data using the enhanced endpoint\n // The GetActivitiesById endpoint is enhanced to return ActivitiesResult via transformResponse\n const result = await dispatch(\n gqlApi.endpoints.GetActivitiesById.initiate(\n {\n projectName,\n activityIds: [activityId],\n entityIds,\n },\n {\n forceRefetch: true, // Always fetch fresh data\n },\n ),\n )\n\n // Check if we have an error\n if ('error' in result && result.error) {\n console.error('[Activity RT] Error fetching activity:', result.error)\n throw new Error('Failed to fetch activity')\n }\n\n // The transformResponse in enhanceActivitiesApi converts GetActivitiesByIdQuery to ActivitiesResult\n // TypeScript doesn't see this transformation, so we cast through unknown\n const unknownData: unknown = result.data\n const res = unknownData as ActivitiesResult\n const newActivities = res?.activities || []\n\n if (newActivities.length === 0) {\n console.warn('[Activity RT] No activities found for activity_id', activityId)\n return\n }\n\n const newActivity: FeedActivity = newActivities[0]\n\n // Determine activity types to check against\n const activityTypes = [activityType]\n if (activityType === 'comment') {\n const body = newActivity?.body\n const hasChecklist = bodyHasChecklist(body || '')\n if (hasChecklist) {\n activityTypes.push('checklist')\n }\n }\n\n // Check if this activity type is relevant to the query\n const queryActivityTypes = queryArg.activityTypes\n const queryActivityTypesArray = Array.isArray(queryActivityTypes)\n ? queryActivityTypes\n : queryActivityTypes\n ? [queryActivityTypes]\n : []\n const isActivityTypeRelevant =\n queryActivityTypesArray.length === 0 ||\n queryActivityTypesArray.some((type: string) => activityTypes.includes(type))\n\n if (!isActivityTypeRelevant) {\n return\n }\n\n // Update the cache\n updateCachedData((draft) => {\n if (!draft || !draft.pages) {\n console.warn('[Activity RT] No draft or pages found for update')\n return\n }\n\n // Check if activity already exists in any page\n let existingActivityFound = false\n for (const page of draft.pages) {\n const index = page.activities?.findIndex(\n (activity) => activity.activityId === activityId,\n )\n if (index !== -1) {\n // Update existing activity\n page.activities[index] = newActivity\n existingActivityFound = true\n break\n }\n }\n\n // If it's a new activity (topic is 'activity.created'), add it to the first page\n if (!existingActivityFound && topic === 'activity.created') {\n if (draft.pages.length > 0 && draft.pages[0].activities) {\n // Add to the beginning of the first page (most recent activities first)\n // Since we're using reverse chronological order (last: N), prepend to the beginning\n draft.pages[0].activities.unshift(newActivity)\n } else {\n console.warn('[Activity RT] Cannot add activity: no pages or activities array')\n }\n } else if (!existingActivityFound) {\n } else {\n }\n })\n } catch (error) {\n console.error('[Activity RT] Error fetching activity data for real-time update:', error)\n\n // Invalidate the cache for these entities to trigger a refetch\n dispatch(\n gqlApi.util.invalidateTags(\n entityIds.map((entityId) => ({ type: 'entityActivities', id: entityId })),\n ),\n )\n }\n }\n\n // Subscribe to activity topic\n token = PubSub.subscribe(['activity'], handlePubSub)\n } catch (error) {\n console.error('[Activity RT] Error in activity real-time handler setup:', error)\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`\n }\n\n // Wait for cache entry to be removed\n await cacheEntryRemoved\n\n // Cleanup: unsubscribe from PubSub\n if (token) {\n PubSub.unsubscribe(token)\n }\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n}\n"],"names":["bodyHasChecklist","body","handleActivityRealtimeUpdates","queryArg","updateCachedData","cacheDataLoaded","cacheEntryRemoved","dispatch","getCacheEntry","token","unsubscribeThumbnails","subscribeToThumbnailUpdates","messages","versionHashesData","acc","message","draft","page","activity","handlePubSub","topic","activityId","projectName","references","relevantReferenceTypes","entityIds","reference","queryEntityIds","qId","activityType","deleted","index","result","gqlApi","newActivities","newActivity","activityTypes","queryActivityTypes","queryActivityTypesArray","type","existingActivityFound","error","entityId","PubSub"],"mappings":"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"}
1
+ {"version":3,"file":"activityRealtimeHandler.cjs.js","sources":["../../../../../../../src/api/queries/activities/util/activityRealtimeHandler.ts"],"sourcesContent":["import { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport { ActivitiesResult } from './activitiesHelpers'\nimport type { GetActivitiesQueryVariables } from '@shared/api'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { FeedActivity } from '../types'\n\ntype ActivitiesGqlApi = {\n endpoints: {\n GetActivitiesById: {\n initiate: (\n args: { projectName: string; activityIds: string[]; entityIds: string | string[] },\n options?: { forceRefetch?: boolean },\n ) => any\n }\n }\n util: {\n invalidateTags: (tags: { type: string; id: string }[]) => any\n }\n}\n\nexport type ActivityMessage = {\n topic: string\n project: string\n user: string\n createdAt: string\n updatedAt: string\n id: string\n status: string\n summary?: {\n activity_id: string\n activity_type: string\n references: {\n entity_id: string\n entity_type: string\n reference_type: string\n }[]\n }\n}\n\ntype InfiniteDataDraft = {\n pages: ActivitiesResult[]\n}\n\ntype CacheLifecycleApi = {\n updateCachedData: (updateRecipe: (draft: InfiniteDataDraft) => void) => void\n cacheDataLoaded: Promise<unknown>\n cacheEntryRemoved: Promise<void>\n dispatch: ThunkDispatch<unknown, unknown, UnknownAction>\n getCacheEntry: () => { data?: InfiniteDataDraft }\n gqlApi: ActivitiesGqlApi\n}\n\n/**\n * Checks if a comment body contains a checklist\n */\nconst bodyHasChecklist = (body: string): boolean => {\n if (!body) return false\n return body.includes('* [ ]') || body.includes('* [x]')\n}\n\n/**\n * Handles real-time activity updates for the infinite query cache\n */\nexport const handleActivityRealtimeUpdates = async (\n queryArg: Omit<GetActivitiesQueryVariables, 'last' | 'first' | 'cursor'> & { filter?: any },\n {\n updateCachedData,\n cacheDataLoaded,\n cacheEntryRemoved,\n dispatch,\n getCacheEntry,\n gqlApi,\n }: CacheLifecycleApi,\n) => {\n let token: string | undefined\n let unsubscribeThumbnails: (() => void) | undefined\n\n try {\n // Wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const draftData = getCacheEntry().data\n if (!draftData?.pages?.length) return\n\n // Map version ids/entity ids to their new thumbnail hashes\n const versionHashesData = messages.reduce((acc, message) => {\n if (message.summary.entityType === 'version') {\n acc[message.summary.entityId] = message.summary.thumbnailHash || '' // Use empty string if undefined\n }\n return acc\n }, {} as Record<string, string>)\n\n if (Object.keys(versionHashesData).length === 0) return\n\n updateCachedData((draft) => {\n if (!draft || !draft.pages) return\n draft.pages.forEach((page) => {\n page.activities?.forEach((activity) => {\n // Version hashes in activities exist when Activity is on a version.\n // Or the referenceId points to the version entity.\n if (\n activity.referenceType === 'version' &&\n activity.referenceId &&\n versionHashesData[activity.referenceId] !== undefined\n ) {\n if (!activity.version) {\n activity.version = {} as any\n }\n activity.version!.thumbnailHash = versionHashesData[activity.referenceId]\n }\n // Add check for entityId as well\n if (\n activity.origin.type === 'version' &&\n activity.origin.id &&\n versionHashesData[activity.origin.id] !== undefined\n ) {\n if (!activity.version) {\n activity.version = {} as any\n }\n activity.version!.thumbnailHash = versionHashesData[activity.origin.id]\n }\n })\n })\n })\n },\n ['version'],\n )\n\n const handlePubSub = async (topic: string, message: ActivityMessage) => {\n const activityId = message.summary?.activity_id\n if (!activityId) {\n console.warn('[Activity RT] Activity message missing activity_id', message)\n return\n }\n\n const projectName = message.project\n const references = message.summary?.references || []\n const relevantReferenceTypes = ['origin', 'mention', 'relation']\n const entityIds = references\n .filter((reference) => relevantReferenceTypes.includes(reference.reference_type))\n .map((reference) => reference.entity_id)\n\n // Check if this activity is relevant to the current cache\n const queryEntityIds = Array.isArray(queryArg.entityIds)\n ? queryArg.entityIds\n : [queryArg.entityIds]\n\n const isRelevant = queryEntityIds.some((qId) => entityIds.includes(qId))\n\n if (!isRelevant && queryEntityIds.length > 0) {\n return\n }\n\n const activityType = message.summary?.activity_type\n if (!activityType) {\n return\n }\n\n // Handle deletion\n if (topic === 'activity.deleted') {\n updateCachedData((draft) => {\n if (!draft || !draft.pages) {\n console.warn('[Activity RT] No draft or pages found for deletion')\n return\n }\n\n let deleted = false\n for (const page of draft.pages) {\n const index = page.activities?.findIndex(\n (activity) => activity.activityId === activityId,\n )\n if (index !== -1) {\n page.activities.splice(index, 1)\n deleted = true\n }\n }\n\n if (deleted) {\n } else {\n }\n })\n return\n }\n\n // Handle creation and updates\n try {\n // Fetch the updated activity data using the enhanced endpoint\n // The GetActivitiesById endpoint is enhanced to return ActivitiesResult via transformResponse\n const result = await dispatch(\n gqlApi.endpoints.GetActivitiesById.initiate(\n {\n projectName,\n activityIds: [activityId],\n entityIds,\n },\n {\n forceRefetch: true, // Always fetch fresh data\n },\n ),\n )\n\n // Check if we have an error\n if ('error' in result && result.error) {\n console.error('[Activity RT] Error fetching activity:', result.error)\n throw new Error('Failed to fetch activity')\n }\n\n // The transformResponse in enhanceActivitiesApi converts GetActivitiesByIdQuery to ActivitiesResult\n // TypeScript doesn't see this transformation, so we cast through unknown\n const unknownData: unknown = result.data\n const res = unknownData as ActivitiesResult\n const newActivities = res?.activities || []\n\n if (newActivities.length === 0) {\n console.warn('[Activity RT] No activities found for activity_id', activityId)\n return\n }\n\n const newActivity: FeedActivity = newActivities[0]\n\n // Determine activity types to check against\n const activityTypes = [activityType]\n if (activityType === 'comment') {\n const body = newActivity?.body\n const hasChecklist = bodyHasChecklist(body || '')\n if (hasChecklist) {\n activityTypes.push('checklist')\n }\n }\n\n // Check if this activity type is relevant to the query\n const queryActivityTypes = queryArg.activityTypes\n const queryActivityTypesArray = Array.isArray(queryActivityTypes)\n ? queryActivityTypes\n : queryActivityTypes\n ? [queryActivityTypes]\n : []\n const isActivityTypeRelevant =\n queryActivityTypesArray.length === 0 ||\n queryActivityTypesArray.some((type: string) => activityTypes.includes(type))\n\n if (!isActivityTypeRelevant) {\n return\n }\n\n // Update the cache\n updateCachedData((draft) => {\n if (!draft || !draft.pages) {\n console.warn('[Activity RT] No draft or pages found for update')\n return\n }\n\n // Check if activity already exists in any page\n let existingActivityFound = false\n for (const page of draft.pages) {\n const index = page.activities?.findIndex(\n (activity) => activity.activityId === activityId,\n )\n if (index !== -1) {\n // Update existing activity\n page.activities[index] = newActivity\n existingActivityFound = true\n break\n }\n }\n\n // If it's a new activity (topic is 'activity.created'), add it to the first page\n if (!existingActivityFound && topic === 'activity.created') {\n if (draft.pages.length > 0 && draft.pages[0].activities) {\n // Add to the beginning of the first page (most recent activities first)\n // Since we're using reverse chronological order (last: N), prepend to the beginning\n draft.pages[0].activities.unshift(newActivity)\n } else {\n console.warn('[Activity RT] Cannot add activity: no pages or activities array')\n }\n } else if (!existingActivityFound) {\n } else {\n }\n })\n } catch (error) {\n console.error('[Activity RT] Error fetching activity data for real-time update:', error)\n\n // Invalidate the cache for these entities to trigger a refetch\n dispatch(\n gqlApi.util.invalidateTags(\n entityIds.map((entityId) => ({ type: 'entityActivities', id: entityId })),\n ),\n )\n }\n }\n\n // Subscribe to activity topic\n token = PubSub.subscribe(['activity'], handlePubSub)\n } catch (error) {\n console.error('[Activity RT] Error in activity real-time handler setup:', error)\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`\n }\n\n // Wait for cache entry to be removed\n await cacheEntryRemoved\n\n // Cleanup: unsubscribe from PubSub\n if (token) {\n PubSub.unsubscribe(token)\n }\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n}\n"],"names":["bodyHasChecklist","body","handleActivityRealtimeUpdates","queryArg","updateCachedData","cacheDataLoaded","cacheEntryRemoved","dispatch","getCacheEntry","gqlApi","token","unsubscribeThumbnails","subscribeToThumbnailUpdates","messages","versionHashesData","acc","message","draft","page","activity","handlePubSub","topic","activityId","projectName","references","relevantReferenceTypes","entityIds","reference","queryEntityIds","qId","activityType","deleted","index","result","newActivities","newActivity","activityTypes","queryActivityTypes","queryActivityTypesArray","type","existingActivityFound","error","entityId","PubSub"],"mappings":"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"}
@@ -43,8 +43,7 @@ import "../../../generated/ynputCloud.es.js";
43
43
  import "../../../generated/grouping.es.js";
44
44
  import "../../../generated/views.es.js";
45
45
  import "../../actions/getActions.es.js";
46
- import { getActivitiesGQLApi as E } from "../getActivities.es.js";
47
- import "../updateActivities.es.js";
46
+ import "../getActivities.es.js";
48
47
  import "../updateReaction.es.js";
49
48
  import "../getMentions.es.js";
50
49
  import "../getCategories.es.js";
@@ -98,12 +97,13 @@ import "../../views/updateViews.es.js";
98
97
  import "../../watchers/getWatchers.es.js";
99
98
  import "../../uris/getUris.es.js";
100
99
  import _ from "../../../../util/pubsub.es.js";
101
- const F = (o) => o ? o.includes("* [ ]") || o.includes("* [x]") : !1, Ht = async (o, {
100
+ const F = (o) => o ? o.includes("* [ ]") || o.includes("* [x]") : !1, _t = async (o, {
102
101
  updateCachedData: u,
103
102
  cacheDataLoaded: H,
104
103
  cacheEntryRemoved: N,
105
- dispatch: b,
106
- getCacheEntry: j
104
+ dispatch: A,
105
+ getCacheEntry: j,
106
+ gqlApi: I
107
107
  }) => {
108
108
  let v, d;
109
109
  try {
@@ -127,11 +127,11 @@ const F = (o) => o ? o.includes("* [ ]") || o.includes("* [x]") : !1, Ht = async
127
127
  console.warn("[Activity RT] Activity message missing activity_id", p);
128
128
  return;
129
129
  }
130
- const n = p.project, s = p.summary?.references || [], i = ["origin", "mention", "relation"], g = s.filter((t) => i.includes(t.reference_type)).map((t) => t.entity_id), I = Array.isArray(o.entityIds) ? o.entityIds : [o.entityIds];
131
- if (!I.some((t) => g.includes(t)) && I.length > 0)
130
+ const n = p.project, s = p.summary?.references || [], i = ["origin", "mention", "relation"], g = s.filter((t) => i.includes(t.reference_type)).map((t) => t.entity_id), R = Array.isArray(o.entityIds) ? o.entityIds : [o.entityIds];
131
+ if (!R.some((t) => g.includes(t)) && R.length > 0)
132
132
  return;
133
- const A = p.summary?.activity_type;
134
- if (A) {
133
+ const T = p.summary?.activity_type;
134
+ if (T) {
135
135
  if (y === "activity.deleted") {
136
136
  u((t) => {
137
137
  if (!t || !t.pages) {
@@ -139,18 +139,18 @@ const F = (o) => o ? o.includes("* [ ]") || o.includes("* [x]") : !1, Ht = async
139
139
  return;
140
140
  }
141
141
  let m = !1;
142
- for (const T of t.pages) {
143
- const c = T.activities?.findIndex(
142
+ for (const b of t.pages) {
143
+ const c = b.activities?.findIndex(
144
144
  (a) => a.activityId === r
145
145
  );
146
- c !== -1 && (T.activities.splice(c, 1), m = !0);
146
+ c !== -1 && (b.activities.splice(c, 1), m = !0);
147
147
  }
148
148
  });
149
149
  return;
150
150
  }
151
151
  try {
152
- const t = await b(
153
- E.endpoints.GetActivitiesById.initiate(
152
+ const t = await A(
153
+ I.endpoints.GetActivitiesById.initiate(
154
154
  {
155
155
  projectName: n,
156
156
  activityIds: [r],
@@ -169,13 +169,13 @@ const F = (o) => o ? o.includes("* [ ]") || o.includes("* [x]") : !1, Ht = async
169
169
  console.warn("[Activity RT] No activities found for activity_id", r);
170
170
  return;
171
171
  }
172
- const a = c[0], R = [A];
173
- if (A === "comment") {
172
+ const a = c[0], w = [T];
173
+ if (T === "comment") {
174
174
  const e = a?.body;
175
- F(e || "") && R.push("checklist");
175
+ F(e || "") && w.push("checklist");
176
176
  }
177
- const l = o.activityTypes, w = Array.isArray(l) ? l : l ? [l] : [];
178
- if (!(w.length === 0 || w.some((e) => R.includes(e))))
177
+ const l = o.activityTypes, k = Array.isArray(l) ? l : l ? [l] : [];
178
+ if (!(k.length === 0 || k.some((e) => w.includes(e))))
179
179
  return;
180
180
  u((e) => {
181
181
  if (!e || !e.pages) {
@@ -183,20 +183,20 @@ const F = (o) => o ? o.includes("* [ ]") || o.includes("* [x]") : !1, Ht = async
183
183
  return;
184
184
  }
185
185
  let f = !1;
186
- for (const k of e.pages) {
187
- const x = k.activities?.findIndex(
186
+ for (const x of e.pages) {
187
+ const E = x.activities?.findIndex(
188
188
  (D) => D.activityId === r
189
189
  );
190
- if (x !== -1) {
191
- k.activities[x] = a, f = !0;
190
+ if (E !== -1) {
191
+ x.activities[E] = a, f = !0;
192
192
  break;
193
193
  }
194
194
  }
195
195
  !f && y === "activity.created" && (e.pages.length > 0 && e.pages[0].activities ? e.pages[0].activities.unshift(a) : console.warn("[Activity RT] Cannot add activity: no pages or activities array"));
196
196
  });
197
197
  } catch (t) {
198
- console.error("[Activity RT] Error fetching activity data for real-time update:", t), b(
199
- E.util.invalidateTags(
198
+ console.error("[Activity RT] Error fetching activity data for real-time update:", t), A(
199
+ I.util.invalidateTags(
200
200
  g.map((m) => ({ type: "entityActivities", id: m }))
201
201
  )
202
202
  );
@@ -210,6 +210,6 @@ const F = (o) => o ? o.includes("* [ ]") || o.includes("* [x]") : !1, Ht = async
210
210
  await N, v && _.unsubscribe(v), d && d();
211
211
  };
212
212
  export {
213
- Ht as handleActivityRealtimeUpdates
213
+ _t as handleActivityRealtimeUpdates
214
214
  };
215
215
  //# sourceMappingURL=activityRealtimeHandler.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"activityRealtimeHandler.es.js","sources":["../../../../../../../src/api/queries/activities/util/activityRealtimeHandler.ts"],"sourcesContent":["import { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport { ActivitiesResult } from './activitiesHelpers'\nimport type { GetActivitiesQueryVariables } from '@shared/api'\nimport { getActivitiesGQLApi as gqlApi } from '../getActivities'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { FeedActivity } from '../types'\n\nexport type ActivityMessage = {\n topic: string\n project: string\n user: string\n createdAt: string\n updatedAt: string\n id: string\n status: string\n summary?: {\n activity_id: string\n activity_type: string\n references: {\n entity_id: string\n entity_type: string\n reference_type: string\n }[]\n }\n}\n\ntype InfiniteDataDraft = {\n pages: ActivitiesResult[]\n}\n\ntype CacheLifecycleApi = {\n updateCachedData: (updateRecipe: (draft: InfiniteDataDraft) => void) => void\n cacheDataLoaded: Promise<unknown>\n cacheEntryRemoved: Promise<void>\n dispatch: ThunkDispatch<unknown, unknown, UnknownAction>\n getCacheEntry: () => { data?: InfiniteDataDraft }\n}\n\n/**\n * Checks if a comment body contains a checklist\n */\nconst bodyHasChecklist = (body: string): boolean => {\n if (!body) return false\n return body.includes('* [ ]') || body.includes('* [x]')\n}\n\n/**\n * Handles real-time activity updates for the infinite query cache\n */\nexport const handleActivityRealtimeUpdates = async (\n queryArg: Omit<GetActivitiesQueryVariables, 'last' | 'first' | 'cursor'> & { filter?: any },\n {\n updateCachedData,\n cacheDataLoaded,\n cacheEntryRemoved,\n dispatch,\n getCacheEntry,\n }: CacheLifecycleApi,\n) => {\n let token: string | undefined\n let unsubscribeThumbnails: (() => void) | undefined\n\n try {\n // Wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const draftData = getCacheEntry().data\n if (!draftData?.pages?.length) return\n\n // Map version ids/entity ids to their new thumbnail hashes\n const versionHashesData = messages.reduce((acc, message) => {\n if (message.summary.entityType === 'version') {\n acc[message.summary.entityId] = message.summary.thumbnailHash || '' // Use empty string if undefined\n }\n return acc\n }, {} as Record<string, string>)\n\n if (Object.keys(versionHashesData).length === 0) return\n\n updateCachedData((draft) => {\n if (!draft || !draft.pages) return\n draft.pages.forEach((page) => {\n page.activities?.forEach((activity) => {\n // Version hashes in activities exist when Activity is on a version.\n // Or the referenceId points to the version entity.\n if (\n activity.referenceType === 'version' &&\n activity.referenceId &&\n versionHashesData[activity.referenceId] !== undefined\n ) {\n if (!activity.version) {\n activity.version = {} as any\n }\n activity.version!.thumbnailHash = versionHashesData[activity.referenceId]\n }\n // Add check for entityId as well\n if (\n activity.origin.type === 'version' &&\n activity.origin.id &&\n versionHashesData[activity.origin.id] !== undefined\n ) {\n if (!activity.version) {\n activity.version = {} as any\n }\n activity.version!.thumbnailHash = versionHashesData[activity.origin.id]\n }\n })\n })\n })\n },\n ['version'],\n )\n\n const handlePubSub = async (topic: string, message: ActivityMessage) => {\n const activityId = message.summary?.activity_id\n if (!activityId) {\n console.warn('[Activity RT] Activity message missing activity_id', message)\n return\n }\n\n const projectName = message.project\n const references = message.summary?.references || []\n const relevantReferenceTypes = ['origin', 'mention', 'relation']\n const entityIds = references\n .filter((reference) => relevantReferenceTypes.includes(reference.reference_type))\n .map((reference) => reference.entity_id)\n\n // Check if this activity is relevant to the current cache\n const queryEntityIds = Array.isArray(queryArg.entityIds)\n ? queryArg.entityIds\n : [queryArg.entityIds]\n\n const isRelevant = queryEntityIds.some((qId) => entityIds.includes(qId))\n\n if (!isRelevant && queryEntityIds.length > 0) {\n return\n }\n\n const activityType = message.summary?.activity_type\n if (!activityType) {\n return\n }\n\n // Handle deletion\n if (topic === 'activity.deleted') {\n updateCachedData((draft) => {\n if (!draft || !draft.pages) {\n console.warn('[Activity RT] No draft or pages found for deletion')\n return\n }\n\n let deleted = false\n for (const page of draft.pages) {\n const index = page.activities?.findIndex(\n (activity) => activity.activityId === activityId,\n )\n if (index !== -1) {\n page.activities.splice(index, 1)\n deleted = true\n }\n }\n\n if (deleted) {\n } else {\n }\n })\n return\n }\n\n // Handle creation and updates\n try {\n // Fetch the updated activity data using the enhanced endpoint\n // The GetActivitiesById endpoint is enhanced to return ActivitiesResult via transformResponse\n const result = await dispatch(\n gqlApi.endpoints.GetActivitiesById.initiate(\n {\n projectName,\n activityIds: [activityId],\n entityIds,\n },\n {\n forceRefetch: true, // Always fetch fresh data\n },\n ),\n )\n\n // Check if we have an error\n if ('error' in result && result.error) {\n console.error('[Activity RT] Error fetching activity:', result.error)\n throw new Error('Failed to fetch activity')\n }\n\n // The transformResponse in enhanceActivitiesApi converts GetActivitiesByIdQuery to ActivitiesResult\n // TypeScript doesn't see this transformation, so we cast through unknown\n const unknownData: unknown = result.data\n const res = unknownData as ActivitiesResult\n const newActivities = res?.activities || []\n\n if (newActivities.length === 0) {\n console.warn('[Activity RT] No activities found for activity_id', activityId)\n return\n }\n\n const newActivity: FeedActivity = newActivities[0]\n\n // Determine activity types to check against\n const activityTypes = [activityType]\n if (activityType === 'comment') {\n const body = newActivity?.body\n const hasChecklist = bodyHasChecklist(body || '')\n if (hasChecklist) {\n activityTypes.push('checklist')\n }\n }\n\n // Check if this activity type is relevant to the query\n const queryActivityTypes = queryArg.activityTypes\n const queryActivityTypesArray = Array.isArray(queryActivityTypes)\n ? queryActivityTypes\n : queryActivityTypes\n ? [queryActivityTypes]\n : []\n const isActivityTypeRelevant =\n queryActivityTypesArray.length === 0 ||\n queryActivityTypesArray.some((type: string) => activityTypes.includes(type))\n\n if (!isActivityTypeRelevant) {\n return\n }\n\n // Update the cache\n updateCachedData((draft) => {\n if (!draft || !draft.pages) {\n console.warn('[Activity RT] No draft or pages found for update')\n return\n }\n\n // Check if activity already exists in any page\n let existingActivityFound = false\n for (const page of draft.pages) {\n const index = page.activities?.findIndex(\n (activity) => activity.activityId === activityId,\n )\n if (index !== -1) {\n // Update existing activity\n page.activities[index] = newActivity\n existingActivityFound = true\n break\n }\n }\n\n // If it's a new activity (topic is 'activity.created'), add it to the first page\n if (!existingActivityFound && topic === 'activity.created') {\n if (draft.pages.length > 0 && draft.pages[0].activities) {\n // Add to the beginning of the first page (most recent activities first)\n // Since we're using reverse chronological order (last: N), prepend to the beginning\n draft.pages[0].activities.unshift(newActivity)\n } else {\n console.warn('[Activity RT] Cannot add activity: no pages or activities array')\n }\n } else if (!existingActivityFound) {\n } else {\n }\n })\n } catch (error) {\n console.error('[Activity RT] Error fetching activity data for real-time update:', error)\n\n // Invalidate the cache for these entities to trigger a refetch\n dispatch(\n gqlApi.util.invalidateTags(\n entityIds.map((entityId) => ({ type: 'entityActivities', id: entityId })),\n ),\n )\n }\n }\n\n // Subscribe to activity topic\n token = PubSub.subscribe(['activity'], handlePubSub)\n } catch (error) {\n console.error('[Activity RT] Error in activity real-time handler setup:', error)\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`\n }\n\n // Wait for cache entry to be removed\n await cacheEntryRemoved\n\n // Cleanup: unsubscribe from PubSub\n if (token) {\n PubSub.unsubscribe(token)\n }\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n}\n"],"names":["bodyHasChecklist","body","handleActivityRealtimeUpdates","queryArg","updateCachedData","cacheDataLoaded","cacheEntryRemoved","dispatch","getCacheEntry","token","unsubscribeThumbnails","subscribeToThumbnailUpdates","messages","versionHashesData","acc","message","draft","page","activity","handlePubSub","topic","activityId","projectName","references","relevantReferenceTypes","entityIds","reference","queryEntityIds","qId","activityType","deleted","index","result","gqlApi","newActivities","newActivity","activityTypes","queryActivityTypes","queryActivityTypesArray","type","existingActivityFound","error","entityId","PubSub"],"mappings":"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"}
1
+ {"version":3,"file":"activityRealtimeHandler.es.js","sources":["../../../../../../../src/api/queries/activities/util/activityRealtimeHandler.ts"],"sourcesContent":["import { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport { ActivitiesResult } from './activitiesHelpers'\nimport type { GetActivitiesQueryVariables } from '@shared/api'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { FeedActivity } from '../types'\n\ntype ActivitiesGqlApi = {\n endpoints: {\n GetActivitiesById: {\n initiate: (\n args: { projectName: string; activityIds: string[]; entityIds: string | string[] },\n options?: { forceRefetch?: boolean },\n ) => any\n }\n }\n util: {\n invalidateTags: (tags: { type: string; id: string }[]) => any\n }\n}\n\nexport type ActivityMessage = {\n topic: string\n project: string\n user: string\n createdAt: string\n updatedAt: string\n id: string\n status: string\n summary?: {\n activity_id: string\n activity_type: string\n references: {\n entity_id: string\n entity_type: string\n reference_type: string\n }[]\n }\n}\n\ntype InfiniteDataDraft = {\n pages: ActivitiesResult[]\n}\n\ntype CacheLifecycleApi = {\n updateCachedData: (updateRecipe: (draft: InfiniteDataDraft) => void) => void\n cacheDataLoaded: Promise<unknown>\n cacheEntryRemoved: Promise<void>\n dispatch: ThunkDispatch<unknown, unknown, UnknownAction>\n getCacheEntry: () => { data?: InfiniteDataDraft }\n gqlApi: ActivitiesGqlApi\n}\n\n/**\n * Checks if a comment body contains a checklist\n */\nconst bodyHasChecklist = (body: string): boolean => {\n if (!body) return false\n return body.includes('* [ ]') || body.includes('* [x]')\n}\n\n/**\n * Handles real-time activity updates for the infinite query cache\n */\nexport const handleActivityRealtimeUpdates = async (\n queryArg: Omit<GetActivitiesQueryVariables, 'last' | 'first' | 'cursor'> & { filter?: any },\n {\n updateCachedData,\n cacheDataLoaded,\n cacheEntryRemoved,\n dispatch,\n getCacheEntry,\n gqlApi,\n }: CacheLifecycleApi,\n) => {\n let token: string | undefined\n let unsubscribeThumbnails: (() => void) | undefined\n\n try {\n // Wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const draftData = getCacheEntry().data\n if (!draftData?.pages?.length) return\n\n // Map version ids/entity ids to their new thumbnail hashes\n const versionHashesData = messages.reduce((acc, message) => {\n if (message.summary.entityType === 'version') {\n acc[message.summary.entityId] = message.summary.thumbnailHash || '' // Use empty string if undefined\n }\n return acc\n }, {} as Record<string, string>)\n\n if (Object.keys(versionHashesData).length === 0) return\n\n updateCachedData((draft) => {\n if (!draft || !draft.pages) return\n draft.pages.forEach((page) => {\n page.activities?.forEach((activity) => {\n // Version hashes in activities exist when Activity is on a version.\n // Or the referenceId points to the version entity.\n if (\n activity.referenceType === 'version' &&\n activity.referenceId &&\n versionHashesData[activity.referenceId] !== undefined\n ) {\n if (!activity.version) {\n activity.version = {} as any\n }\n activity.version!.thumbnailHash = versionHashesData[activity.referenceId]\n }\n // Add check for entityId as well\n if (\n activity.origin.type === 'version' &&\n activity.origin.id &&\n versionHashesData[activity.origin.id] !== undefined\n ) {\n if (!activity.version) {\n activity.version = {} as any\n }\n activity.version!.thumbnailHash = versionHashesData[activity.origin.id]\n }\n })\n })\n })\n },\n ['version'],\n )\n\n const handlePubSub = async (topic: string, message: ActivityMessage) => {\n const activityId = message.summary?.activity_id\n if (!activityId) {\n console.warn('[Activity RT] Activity message missing activity_id', message)\n return\n }\n\n const projectName = message.project\n const references = message.summary?.references || []\n const relevantReferenceTypes = ['origin', 'mention', 'relation']\n const entityIds = references\n .filter((reference) => relevantReferenceTypes.includes(reference.reference_type))\n .map((reference) => reference.entity_id)\n\n // Check if this activity is relevant to the current cache\n const queryEntityIds = Array.isArray(queryArg.entityIds)\n ? queryArg.entityIds\n : [queryArg.entityIds]\n\n const isRelevant = queryEntityIds.some((qId) => entityIds.includes(qId))\n\n if (!isRelevant && queryEntityIds.length > 0) {\n return\n }\n\n const activityType = message.summary?.activity_type\n if (!activityType) {\n return\n }\n\n // Handle deletion\n if (topic === 'activity.deleted') {\n updateCachedData((draft) => {\n if (!draft || !draft.pages) {\n console.warn('[Activity RT] No draft or pages found for deletion')\n return\n }\n\n let deleted = false\n for (const page of draft.pages) {\n const index = page.activities?.findIndex(\n (activity) => activity.activityId === activityId,\n )\n if (index !== -1) {\n page.activities.splice(index, 1)\n deleted = true\n }\n }\n\n if (deleted) {\n } else {\n }\n })\n return\n }\n\n // Handle creation and updates\n try {\n // Fetch the updated activity data using the enhanced endpoint\n // The GetActivitiesById endpoint is enhanced to return ActivitiesResult via transformResponse\n const result = await dispatch(\n gqlApi.endpoints.GetActivitiesById.initiate(\n {\n projectName,\n activityIds: [activityId],\n entityIds,\n },\n {\n forceRefetch: true, // Always fetch fresh data\n },\n ),\n )\n\n // Check if we have an error\n if ('error' in result && result.error) {\n console.error('[Activity RT] Error fetching activity:', result.error)\n throw new Error('Failed to fetch activity')\n }\n\n // The transformResponse in enhanceActivitiesApi converts GetActivitiesByIdQuery to ActivitiesResult\n // TypeScript doesn't see this transformation, so we cast through unknown\n const unknownData: unknown = result.data\n const res = unknownData as ActivitiesResult\n const newActivities = res?.activities || []\n\n if (newActivities.length === 0) {\n console.warn('[Activity RT] No activities found for activity_id', activityId)\n return\n }\n\n const newActivity: FeedActivity = newActivities[0]\n\n // Determine activity types to check against\n const activityTypes = [activityType]\n if (activityType === 'comment') {\n const body = newActivity?.body\n const hasChecklist = bodyHasChecklist(body || '')\n if (hasChecklist) {\n activityTypes.push('checklist')\n }\n }\n\n // Check if this activity type is relevant to the query\n const queryActivityTypes = queryArg.activityTypes\n const queryActivityTypesArray = Array.isArray(queryActivityTypes)\n ? queryActivityTypes\n : queryActivityTypes\n ? [queryActivityTypes]\n : []\n const isActivityTypeRelevant =\n queryActivityTypesArray.length === 0 ||\n queryActivityTypesArray.some((type: string) => activityTypes.includes(type))\n\n if (!isActivityTypeRelevant) {\n return\n }\n\n // Update the cache\n updateCachedData((draft) => {\n if (!draft || !draft.pages) {\n console.warn('[Activity RT] No draft or pages found for update')\n return\n }\n\n // Check if activity already exists in any page\n let existingActivityFound = false\n for (const page of draft.pages) {\n const index = page.activities?.findIndex(\n (activity) => activity.activityId === activityId,\n )\n if (index !== -1) {\n // Update existing activity\n page.activities[index] = newActivity\n existingActivityFound = true\n break\n }\n }\n\n // If it's a new activity (topic is 'activity.created'), add it to the first page\n if (!existingActivityFound && topic === 'activity.created') {\n if (draft.pages.length > 0 && draft.pages[0].activities) {\n // Add to the beginning of the first page (most recent activities first)\n // Since we're using reverse chronological order (last: N), prepend to the beginning\n draft.pages[0].activities.unshift(newActivity)\n } else {\n console.warn('[Activity RT] Cannot add activity: no pages or activities array')\n }\n } else if (!existingActivityFound) {\n } else {\n }\n })\n } catch (error) {\n console.error('[Activity RT] Error fetching activity data for real-time update:', error)\n\n // Invalidate the cache for these entities to trigger a refetch\n dispatch(\n gqlApi.util.invalidateTags(\n entityIds.map((entityId) => ({ type: 'entityActivities', id: entityId })),\n ),\n )\n }\n }\n\n // Subscribe to activity topic\n token = PubSub.subscribe(['activity'], handlePubSub)\n } catch (error) {\n console.error('[Activity RT] Error in activity real-time handler setup:', error)\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`\n }\n\n // Wait for cache entry to be removed\n await cacheEntryRemoved\n\n // Cleanup: unsubscribe from PubSub\n if (token) {\n PubSub.unsubscribe(token)\n }\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n}\n"],"names":["bodyHasChecklist","body","handleActivityRealtimeUpdates","queryArg","updateCachedData","cacheDataLoaded","cacheEntryRemoved","dispatch","getCacheEntry","gqlApi","token","unsubscribeThumbnails","subscribeToThumbnailUpdates","messages","versionHashesData","acc","message","draft","page","activity","handlePubSub","topic","activityId","projectName","references","relevantReferenceTypes","entityIds","reference","queryEntityIds","qId","activityType","deleted","index","result","newActivities","newActivity","activityTypes","queryActivityTypes","queryActivityTypesArray","type","existingActivityFound","error","entityId","PubSub"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=t=>t.replace(/_([a-z0-9])/g,(e,o)=>o.toUpperCase()),f={task_type:"subType",folder_type:"subType",product_type:"subType"},a=t=>t in f?f[t]:t.startsWith("project_attributes_")?"attrib_"+t.slice(19):t.startsWith("inherited_attributes_")?"attrib_"+t.slice(21):t.startsWith("attrib_")?t:C(t),g=t=>{if(t==null)return;let e=t;if(typeof e=="string")try{e=JSON.parse(e)}catch{return}if(Array.isArray(e)){const o=new Map;for(const n of e){if(!n||n.value==null)continue;const l=Array.isArray(n.value)?n.value:[n.value];for(const i of l){const u=String(i),c=o.get(u);o.set(u,{...n,value:u,count:(c?.count??0)+(Number(n.count)||0)})}}return[...o.values()]}if(typeof e=="object")return Object.entries(e).map(([o,n])=>({value:o,count:Number(n)||0}))},d=(t,e)=>t==null&&e==null?void 0:(t??0)+(e??0),p=(t,e)=>t==null?e??void 0:e==null||t<e?t:e,h=(t,e)=>t==null?e??void 0:e==null||t>e?t:e,v=(t,e)=>t!=null&&e!=null&&t+e>0?Math.round(t/(t+e)*1e4)/100:void 0,y=(t,e)=>{const o=d(t.valueFilledCount,e.valueFilledCount),n=d(t.valueNotFilledCount,e.valueNotFilledCount),l=d(t.checkedCount,e.checkedCount),i=d(t.notCheckedCount,e.notCheckedCount);let u;if(t.avg!=null&&e.avg!=null){const r=t.valueFilledCount,s=e.valueFilledCount;u=r!=null&&s!=null&&r+s>0?(t.avg*r+e.avg*s)/(r+s):(t.avg+e.avg)/2,u=Math.round(u*100)/100}else u=t.avg??e.avg??void 0;let c;if(t.distribution?.length||e.distribution?.length){const r=new Map;for(const s of[...t.distribution??[],...e.distribution??[]]){const m=r.get(s.value);r.set(s.value,m?{...m,count:m.count+s.count}:{...s})}c=[...r.values()]}return{columnName:t.columnName,min:p(t.min,e.min),max:h(t.max,e.max),avg:u,sum:d(t.sum,e.sum),valueFilledCount:o,valueNotFilledCount:n,percentageFilled:v(o,n),percentageNotFilled:v(n,o),checkedCount:l,notCheckedCount:i,checkedPercentage:v(l,i),notCheckedPercentage:v(i,l),distribution:c,primaryCount:t.primaryCount??e.primaryCount,secondaryCount:t.secondaryCount??e.secondaryCount}},F=t=>t.map(e=>({...e,columnName:a(e.columnName),distribution:g(e.distribution)})),N=(t=[],e=[])=>{const o=new Map;for(const n of e)o.set(a(n.columnName),{...n});for(const n of t){const l=a(n.columnName),i={...o.get(l)||{columnName:n.columnName}};for(const[u,c]of Object.entries(n))c!=null&&(i[u]=c);o.set(l,i)}return[...o.values()]},_=t=>t.reduce((e,o)=>Math.max(e,(o.valueFilledCount??0)+(o.valueNotFilledCount??0)),0),S=(t,e=[])=>{const o=new Map;for(const l of t)o.set(a(l.columnName),l);const n=new Map(o);for(const l of e){const i=a(l.columnName),u=o.get(i);n.set(i,u?y(u,l):l)}return[...n.values()]};exports.canonicalColumnId=a;exports.combineFieldStats=S;exports.mergeFieldStats=N;exports.normalizeFieldStats=F;exports.totalRowsFromStats=_;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=t=>t.replace(/_([a-z0-9])/g,(e,o)=>o.toUpperCase()),f={task_type:"subType",folder_type:"subType",product_type:"subType"},a=t=>t in f?f[t]:t.startsWith("project_attributes_")?"attrib_"+t.slice(19):t.startsWith("inherited_attributes_")?"attrib_"+t.slice(21):t.startsWith("attrib_")?t:g(t),C=t=>{if(t==null)return;let e=t;if(typeof e=="string")try{e=JSON.parse(e)}catch{return}if(Array.isArray(e)){const o=new Map;for(const n of e){if(!n||n.value==null)continue;const l=Array.isArray(n.value)?n.value:[n.value];for(const r of l){const u=String(r),i=o.get(u);o.set(u,{...n,value:u,count:(i?.count??0)+(Number(n.count)||0)})}}return[...o.values()]}if(typeof e=="object")return Object.entries(e).map(([o,n])=>({value:o,count:Number(n)||0}))},d=(t,e)=>t==null&&e==null?void 0:(t??0)+(e??0),p=(t,e)=>t==null?e??void 0:e==null||t<e?t:e,h=(t,e)=>t==null?e??void 0:e==null||t>e?t:e,m=(t,e)=>t!=null&&e!=null&&t+e>0?Math.round(t/(t+e)*1e4)/100:void 0,y=(t,e)=>{const o=d(t.valueFilledCount,e.valueFilledCount),n=d(t.valueNotFilledCount,e.valueNotFilledCount),l=d(t.checkedCount,e.checkedCount),r=d(t.notCheckedCount,e.notCheckedCount);let u;if(t.avg!=null&&e.avg!=null){const c=t.valueFilledCount,s=e.valueFilledCount;u=c!=null&&s!=null&&c+s>0?(t.avg*c+e.avg*s)/(c+s):(t.avg+e.avg)/2,u=Math.round(u*100)/100}else u=t.avg??e.avg??void 0;let i;if(t.distribution?.length||e.distribution?.length){const c=new Map;for(const s of[...t.distribution??[],...e.distribution??[]]){const v=c.get(s.value);c.set(s.value,v?{...v,count:v.count+s.count}:{...s})}i=[...c.values()]}return{columnName:t.columnName,min:p(t.min,e.min),max:h(t.max,e.max),avg:u,sum:d(t.sum,e.sum),valueFilledCount:o,valueNotFilledCount:n,percentageFilled:m(o,n),percentageNotFilled:m(n,o),checkedCount:l,notCheckedCount:r,checkedPercentage:m(l,r),notCheckedPercentage:m(r,l),distribution:i,primaryCount:t.primaryCount??e.primaryCount,secondaryCount:t.secondaryCount??e.secondaryCount}},F=t=>t.map(e=>({...e,columnName:a(e.columnName),distribution:C(e.distribution)})),N=(t=[],e=[])=>{const o=new Map;for(const n of e)o.set(a(n.columnName),{...n});for(const n of t){const l=a(n.columnName),r={...o.get(l)||{columnName:n.columnName}};for(const[u,i]of Object.entries(n))i!=null&&(r[u]=i);o.set(l,r)}return[...o.values()]},_=t=>t.reduce((e,o)=>Math.max(e,(o.valueFilledCount??0)+(o.valueNotFilledCount??0)),0),S=(t,e=[])=>{const o=new Map;for(const l of t)o.set(a(l.columnName),l);const n=new Map(o);for(const l of e){const r=a(l.columnName),u=o.get(r);n.set(r,u?y(u,l):l)}return[...n.values()]},k=(t,e)=>{const o=t?.message??"Unknown stats error";return console.error(`Error fetching ${e} stats:`,t),o};exports.canonicalColumnId=a;exports.combineFieldStats=S;exports.mergeFieldStats=N;exports.normalizeFieldStats=F;exports.totalRowsFromStats=_;exports.transformStatsError=k;
2
2
  //# sourceMappingURL=columnStats.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"columnStats.cjs.js","sources":["../../../../../../src/api/queries/columnStats/columnStats.ts"],"sourcesContent":["import { ColumnStats } from '@shared/api/generated'\n// Shape of the backend GraphQL `ColumnStats` (connection.fieldStats).\n// `sum` and `distribution` are typed ahead of backend support so wiring them is a no-op.\nexport interface FieldStats extends ColumnStats {\n primaryCount?: number | null\n secondaryCount?: number | null\n}\n\nconst snakeToCamel = (s: string): string => s.replace(/_([a-z0-9])/g, (_, c) => c.toUpperCase())\n\n// Per-entity \"type\" columns all map to the unified `subType` column in the table.\n// (`product_base_type` is a separate column — productBaseType — so not aliased.)\nconst COLUMN_ALIASES: Record<string, string> = {\n task_type: 'subType',\n folder_type: 'subType',\n product_type: 'subType',\n}\n\n// Canonical frontend column id for a backend column name. Attribute columns keep\n// their `attrib_` form; everything else is snake_case on the backend but camelCase\n// in the table (product_base_type → productBaseType, created_at → createdAt).\nexport const canonicalColumnId = (name: string): string => {\n if (name in COLUMN_ALIASES) return COLUMN_ALIASES[name]\n if (name.startsWith('project_attributes_')) {\n return 'attrib_' + name.slice('project_attributes_'.length)\n }\n if (name.startsWith('inherited_attributes_')) {\n return 'attrib_' + name.slice('inherited_attributes_'.length)\n }\n if (name.startsWith('attrib_')) return name\n return snakeToCamel(name)\n}\n\nconst normalizeDistribution = (raw: unknown): FieldStats['distribution'] => {\n if (raw == null) return undefined\n let value = raw\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value)\n } catch {\n return undefined\n }\n }\n if (Array.isArray(value)) {\n // dedupe by value; array buckets (tags/assignees combos) unnest per value\n const byValue = new Map<string, { value: string; count: number }>()\n for (const d of value) {\n if (!d || d.value == null) continue\n const vals = Array.isArray(d.value) ? d.value : [d.value]\n for (const raw of vals) {\n const v = String(raw)\n const prev = byValue.get(v)\n byValue.set(v, { ...d, value: v, count: (prev?.count ?? 0) + (Number(d.count) || 0) })\n }\n }\n return [...byValue.values()]\n }\n if (typeof value === 'object') {\n return Object.entries(value as Record<string, unknown>).map(([v, count]) => ({\n value: v,\n count: Number(count) || 0,\n }))\n }\n return undefined\n}\n\nconst sumN = (a?: number | null, b?: number | null): number | undefined =>\n a == null && b == null ? undefined : (a ?? 0) + (b ?? 0)\nconst lowest = <T>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a < b ? a : b\nconst highest = <T>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a > b ? a : b\nconst pct = (part?: number, rest?: number): number | undefined =>\n part != null && rest != null && part + rest > 0\n ? Math.round((part / (part + rest)) * 10000) / 100\n : undefined\n\n// Additive combine of one column's stats from two entity sets (e.g. folder +\n// task). Counts sum, min/max widen, percentages recompute, avg is weighted by\n// filled counts when available.\nconst combineTwo = (a: FieldStats, b: FieldStats): FieldStats => {\n const filled = sumN(a.valueFilledCount, b.valueFilledCount)\n const notFilled = sumN(a.valueNotFilledCount, b.valueNotFilledCount)\n const checked = sumN(a.checkedCount, b.checkedCount)\n const notChecked = sumN(a.notCheckedCount, b.notCheckedCount)\n\n let avg: number | undefined\n if (a.avg != null && b.avg != null) {\n const wa = a.valueFilledCount\n const wb = b.valueFilledCount\n avg =\n wa != null && wb != null && wa + wb > 0\n ? (a.avg * wa + b.avg * wb) / (wa + wb)\n : (a.avg + b.avg) / 2\n avg = Math.round(avg * 100) / 100\n } else {\n avg = a.avg ?? b.avg ?? undefined\n }\n\n let distribution: FieldStats['distribution']\n if (a.distribution?.length || b.distribution?.length) {\n const byValue = new Map<string, NonNullable<FieldStats['distribution']>[number]>()\n for (const d of [...(a.distribution ?? []), ...(b.distribution ?? [])]) {\n const prev = byValue.get(d.value)\n byValue.set(d.value, prev ? { ...prev, count: prev.count + d.count } : { ...d })\n }\n distribution = [...byValue.values()]\n }\n\n return {\n columnName: a.columnName,\n min: lowest(a.min, b.min),\n max: highest(a.max, b.max),\n avg,\n sum: sumN(a.sum, b.sum),\n valueFilledCount: filled,\n valueNotFilledCount: notFilled,\n percentageFilled: pct(filled, notFilled),\n percentageNotFilled: pct(notFilled, filled),\n checkedCount: checked,\n notCheckedCount: notChecked,\n checkedPercentage: pct(checked, notChecked),\n notCheckedPercentage: pct(notChecked, checked),\n distribution,\n primaryCount: a.primaryCount ?? b.primaryCount,\n secondaryCount: a.secondaryCount ?? b.secondaryCount,\n }\n}\n\n// Normalize a raw fieldStats response (apply in transformResponse).\nexport const normalizeFieldStats = (stats: FieldStats[]): FieldStats[] =>\n stats.map((s) => ({\n ...s,\n columnName: canonicalColumnId(s.columnName),\n distribution: normalizeDistribution(s.distribution),\n }))\n\n// Merge stats lists by canonical column id, field-wise: overlay's non-null values\n// win, base fills the gaps. A single list also dedupes its own repeated columns.\nexport const mergeFieldStats = (\n overlay: FieldStats[] = [],\n base: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of base) byId.set(canonicalColumnId(s.columnName), { ...s })\n for (const s of overlay) {\n const id = canonicalColumnId(s.columnName)\n const merged: FieldStats = { ...(byId.get(id) || { columnName: s.columnName }) }\n for (const [k, v] of Object.entries(s)) {\n if (v !== null && v !== undefined) (merged as any)[k] = v\n }\n byId.set(id, merged)\n }\n return [...byId.values()]\n}\n\n// Total row count for an entity set = max(filled + not-filled) across its\n// stat columns. Feeds the main folders/tasks count cell.\nexport const totalRowsFromStats = (stats: FieldStats[]): number =>\n stats.reduce(\n (max, s) => Math.max(max, (s.valueFilledCount ?? 0) + (s.valueNotFilledCount ?? 0)),\n 0,\n )\n\n// Combine primary-entity stats (tasks/versions) with group-entity stats\n// (folders/products) for the \"include groups & folders\" row scope.\nexport const combineFieldStats = (\n primary: FieldStats[],\n group: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of primary) byId.set(canonicalColumnId(s.columnName), s)\n const out = new Map(byId)\n for (const g of group) {\n const id = canonicalColumnId(g.columnName)\n const p = byId.get(id)\n out.set(id, p ? combineTwo(p, g) : g)\n }\n return [...out.values()]\n}\n"],"names":["snakeToCamel","s","_","c","COLUMN_ALIASES","canonicalColumnId","name","normalizeDistribution","raw","value","byValue","d","vals","v","prev","count","sumN","a","b","lowest","highest","pct","part","rest","combineTwo","filled","notFilled","checked","notChecked","avg","wa","wb","distribution","normalizeFieldStats","stats","mergeFieldStats","overlay","base","byId","id","merged","k","totalRowsFromStats","max","combineFieldStats","primary","group","out","g","p"],"mappings":"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"}
1
+ {"version":3,"file":"columnStats.cjs.js","sources":["../../../../../../src/api/queries/columnStats/columnStats.ts"],"sourcesContent":["import { ColumnStats } from '@shared/api/generated'\n// Shape of the backend GraphQL `ColumnStats` (connection.fieldStats).\n// `sum` and `distribution` are typed ahead of backend support so wiring them is a no-op.\nexport interface FieldStats extends ColumnStats {\n primaryCount?: number | null\n secondaryCount?: number | null\n}\n\nconst snakeToCamel = (s: string): string => s.replace(/_([a-z0-9])/g, (_, c) => c.toUpperCase())\n\n// Per-entity \"type\" columns all map to the unified `subType` column in the table.\n// (`product_base_type` is a separate column — productBaseType — so not aliased.)\nconst COLUMN_ALIASES: Record<string, string> = {\n task_type: 'subType',\n folder_type: 'subType',\n product_type: 'subType',\n}\n\n// Canonical frontend column id for a backend column name. Attribute columns keep\n// their `attrib_` form; everything else is snake_case on the backend but camelCase\n// in the table (product_base_type → productBaseType, created_at → createdAt).\nexport const canonicalColumnId = (name: string): string => {\n if (name in COLUMN_ALIASES) return COLUMN_ALIASES[name]\n if (name.startsWith('project_attributes_')) {\n return 'attrib_' + name.slice('project_attributes_'.length)\n }\n if (name.startsWith('inherited_attributes_')) {\n return 'attrib_' + name.slice('inherited_attributes_'.length)\n }\n if (name.startsWith('attrib_')) return name\n return snakeToCamel(name)\n}\n\nconst normalizeDistribution = (raw: unknown): FieldStats['distribution'] => {\n if (raw == null) return undefined\n let value = raw\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value)\n } catch {\n return undefined\n }\n }\n if (Array.isArray(value)) {\n // dedupe by value; array buckets (tags/assignees combos) unnest per value\n const byValue = new Map<string, { value: string; count: number }>()\n for (const d of value) {\n if (!d || d.value == null) continue\n const vals = Array.isArray(d.value) ? d.value : [d.value]\n for (const raw of vals) {\n const v = String(raw)\n const prev = byValue.get(v)\n byValue.set(v, { ...d, value: v, count: (prev?.count ?? 0) + (Number(d.count) || 0) })\n }\n }\n return [...byValue.values()]\n }\n if (typeof value === 'object') {\n return Object.entries(value as Record<string, unknown>).map(([v, count]) => ({\n value: v,\n count: Number(count) || 0,\n }))\n }\n return undefined\n}\n\nconst sumN = (a?: number | null, b?: number | null): number | undefined =>\n a == null && b == null ? undefined : (a ?? 0) + (b ?? 0)\nconst lowest = <T>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a < b ? a : b\nconst highest = <T>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a > b ? a : b\nconst pct = (part?: number, rest?: number): number | undefined =>\n part != null && rest != null && part + rest > 0\n ? Math.round((part / (part + rest)) * 10000) / 100\n : undefined\n\n// Additive combine of one column's stats from two entity sets (e.g. folder +\n// task). Counts sum, min/max widen, percentages recompute, avg is weighted by\n// filled counts when available.\nconst combineTwo = (a: FieldStats, b: FieldStats): FieldStats => {\n const filled = sumN(a.valueFilledCount, b.valueFilledCount)\n const notFilled = sumN(a.valueNotFilledCount, b.valueNotFilledCount)\n const checked = sumN(a.checkedCount, b.checkedCount)\n const notChecked = sumN(a.notCheckedCount, b.notCheckedCount)\n\n let avg: number | undefined\n if (a.avg != null && b.avg != null) {\n const wa = a.valueFilledCount\n const wb = b.valueFilledCount\n avg =\n wa != null && wb != null && wa + wb > 0\n ? (a.avg * wa + b.avg * wb) / (wa + wb)\n : (a.avg + b.avg) / 2\n avg = Math.round(avg * 100) / 100\n } else {\n avg = a.avg ?? b.avg ?? undefined\n }\n\n let distribution: FieldStats['distribution']\n if (a.distribution?.length || b.distribution?.length) {\n const byValue = new Map<string, NonNullable<FieldStats['distribution']>[number]>()\n for (const d of [...(a.distribution ?? []), ...(b.distribution ?? [])]) {\n const prev = byValue.get(d.value)\n byValue.set(d.value, prev ? { ...prev, count: prev.count + d.count } : { ...d })\n }\n distribution = [...byValue.values()]\n }\n\n return {\n columnName: a.columnName,\n min: lowest(a.min, b.min),\n max: highest(a.max, b.max),\n avg,\n sum: sumN(a.sum, b.sum),\n valueFilledCount: filled,\n valueNotFilledCount: notFilled,\n percentageFilled: pct(filled, notFilled),\n percentageNotFilled: pct(notFilled, filled),\n checkedCount: checked,\n notCheckedCount: notChecked,\n checkedPercentage: pct(checked, notChecked),\n notCheckedPercentage: pct(notChecked, checked),\n distribution,\n primaryCount: a.primaryCount ?? b.primaryCount,\n secondaryCount: a.secondaryCount ?? b.secondaryCount,\n }\n}\n\n// Normalize a raw fieldStats response (apply in transformResponse).\nexport const normalizeFieldStats = (stats: FieldStats[]): FieldStats[] =>\n stats.map((s) => ({\n ...s,\n columnName: canonicalColumnId(s.columnName),\n distribution: normalizeDistribution(s.distribution),\n }))\n\n// Merge stats lists by canonical column id, field-wise: overlay's non-null values\n// win, base fills the gaps. A single list also dedupes its own repeated columns.\nexport const mergeFieldStats = (\n overlay: FieldStats[] = [],\n base: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of base) byId.set(canonicalColumnId(s.columnName), { ...s })\n for (const s of overlay) {\n const id = canonicalColumnId(s.columnName)\n const merged: FieldStats = { ...(byId.get(id) || { columnName: s.columnName }) }\n for (const [k, v] of Object.entries(s)) {\n if (v !== null && v !== undefined) (merged as any)[k] = v\n }\n byId.set(id, merged)\n }\n return [...byId.values()]\n}\n\n// Total row count for an entity set = max(filled + not-filled) across its\n// stat columns. Feeds the main folders/tasks count cell.\nexport const totalRowsFromStats = (stats: FieldStats[]): number =>\n stats.reduce(\n (max, s) => Math.max(max, (s.valueFilledCount ?? 0) + (s.valueNotFilledCount ?? 0)),\n 0,\n )\n\n// Combine primary-entity stats (tasks/versions) with group-entity stats\n// (folders/products) for the \"include groups & folders\" row scope.\nexport const combineFieldStats = (\n primary: FieldStats[],\n group: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of primary) byId.set(canonicalColumnId(s.columnName), s)\n const out = new Map(byId)\n for (const g of group) {\n const id = canonicalColumnId(g.columnName)\n const p = byId.get(id)\n out.set(id, p ? combineTwo(p, g) : g)\n }\n return [...out.values()]\n}\n\nexport const transformStatsError = (error: any, entityType: string): string => {\n const message = error?.message ?? 'Unknown stats error'\n console.error(`Error fetching ${entityType} stats:`, error)\n return message\n}\n"],"names":["snakeToCamel","s","_","c","COLUMN_ALIASES","canonicalColumnId","name","normalizeDistribution","raw","value","byValue","d","vals","v","prev","count","sumN","a","b","lowest","highest","pct","part","rest","combineTwo","filled","notFilled","checked","notChecked","avg","wa","wb","distribution","normalizeFieldStats","stats","mergeFieldStats","overlay","base","byId","id","merged","k","totalRowsFromStats","max","combineFieldStats","primary","group","out","g","p","transformStatsError","error","entityType","message"],"mappings":"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"}