@ynput/ayon-frontend-shared 0.4.1 → 0.4.2

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 (1096) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +37 -201
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +248 -512
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/Slicer.cjs.js +1 -1
  8. package/dist/Slicer.es.js +31 -233
  9. package/dist/Slicer.es.js.map +1 -1
  10. package/dist/components.cjs.js +1 -1
  11. package/dist/components.es.js +83 -82
  12. package/dist/components.es.js.map +1 -1
  13. package/dist/index.cjs.js +1 -1
  14. package/dist/index.es.js +32 -130
  15. package/dist/index.es.js.map +1 -1
  16. package/dist/shared/src/api/generated/graphql.cjs.js +8 -7
  17. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  18. package/dist/shared/src/api/generated/graphql.es.js +18 -17
  19. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  20. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  21. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  22. package/dist/shared/src/api/queries/actions/getActions.cjs.js.map +1 -1
  23. package/dist/shared/src/api/queries/actions/getActions.es.js.map +1 -1
  24. package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
  25. package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
  26. package/dist/shared/src/api/queries/activities/getCategories.cjs.js.map +1 -1
  27. package/dist/shared/src/api/queries/activities/getCategories.es.js.map +1 -1
  28. package/dist/shared/src/api/queries/activities/patchTableLatestComments.cjs.js.map +1 -1
  29. package/dist/shared/src/api/queries/activities/patchTableLatestComments.es.js.map +1 -1
  30. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js.map +1 -1
  31. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js.map +1 -1
  32. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
  33. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
  34. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +55 -151
  35. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
  36. package/dist/shared/src/api/queries/addons/updateAddons.cjs.js.map +1 -1
  37. package/dist/shared/src/api/queries/addons/updateAddons.es.js.map +1 -1
  38. package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js.map +1 -1
  39. package/dist/shared/src/api/queries/attributes/getAttributes.es.js.map +1 -1
  40. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js.map +1 -1
  41. package/dist/shared/src/api/queries/columnStats/columnStats.es.js.map +1 -1
  42. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -1
  43. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -1
  44. package/dist/shared/src/api/queries/entities/getEntity.cjs.js.map +1 -1
  45. package/dist/shared/src/api/queries/entities/getEntity.es.js.map +1 -1
  46. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
  47. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  48. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +58 -113
  49. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  50. package/dist/shared/src/api/queries/entities/patchDetailsPanel.cjs.js.map +1 -1
  51. package/dist/shared/src/api/queries/entities/patchDetailsPanel.es.js.map +1 -1
  52. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  53. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  54. package/dist/shared/src/api/queries/entityLists/getLists.es.js +67 -118
  55. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  56. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js +1 -1
  57. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js.map +1 -1
  58. package/dist/shared/src/api/queries/entityLists/listFolders.es.js +40 -95
  59. package/dist/shared/src/api/queries/entityLists/listFolders.es.js.map +1 -1
  60. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
  61. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
  62. package/dist/shared/src/api/queries/folders/getFolderDeleteInfo.cjs.js.map +1 -1
  63. package/dist/shared/src/api/queries/folders/getFolderDeleteInfo.es.js.map +1 -1
  64. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -1
  65. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  66. package/dist/shared/src/api/queries/folders/getFolders.es.js +68 -119
  67. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  68. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +1 -1
  69. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -1
  70. package/dist/shared/src/api/queries/links/getEntityLinks.es.js +73 -128
  71. package/dist/shared/src/api/queries/links/getEntityLinks.es.js.map +1 -1
  72. package/dist/shared/src/api/queries/links/updateLinks.cjs.js.map +1 -1
  73. package/dist/shared/src/api/queries/links/updateLinks.es.js.map +1 -1
  74. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  75. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  76. package/dist/shared/src/api/queries/overview/getOverview.es.js +229 -282
  77. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  78. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  79. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  80. package/dist/shared/src/api/queries/products/getFolderProducts.cjs.js.map +1 -1
  81. package/dist/shared/src/api/queries/products/getFolderProducts.es.js.map +1 -1
  82. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js +1 -1
  83. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js.map +1 -1
  84. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js +80 -134
  85. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js.map +1 -1
  86. package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -1
  87. package/dist/shared/src/api/queries/review/getReview.cjs.js.map +1 -1
  88. package/dist/shared/src/api/queries/review/getReview.es.js +95 -152
  89. package/dist/shared/src/api/queries/review/getReview.es.js.map +1 -1
  90. package/dist/shared/src/api/queries/share/share.cjs.js.map +1 -1
  91. package/dist/shared/src/api/queries/share/share.es.js.map +1 -1
  92. package/dist/shared/src/api/queries/system/getSystem.cjs.js.map +1 -1
  93. package/dist/shared/src/api/queries/system/getSystem.es.js.map +1 -1
  94. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  95. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  96. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +88 -141
  97. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  98. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  99. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  100. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  101. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  102. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +30 -80
  103. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  104. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.cjs.js.map +1 -1
  105. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.es.js.map +1 -1
  106. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -1
  107. package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -1
  108. package/dist/shared/src/api/queries/views/getViews.cjs.js.map +1 -1
  109. package/dist/shared/src/api/queries/views/getViews.es.js.map +1 -1
  110. package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
  111. package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
  112. package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js.map +1 -1
  113. package/dist/shared/src/api/queries/watchers/getWatchers.es.js.map +1 -1
  114. package/dist/shared/src/components/AccessSearchInput/AccessSearchInput.cjs.js.map +1 -1
  115. package/dist/shared/src/components/AccessSearchInput/AccessSearchInput.es.js.map +1 -1
  116. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +1 -1
  117. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
  118. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +28 -30
  119. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
  120. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js +1 -1
  121. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js.map +1 -1
  122. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js +29 -125
  123. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js.map +1 -1
  124. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +3 -3
  125. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
  126. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +16 -310
  127. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
  128. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js +5 -5
  129. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js.map +1 -1
  130. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.es.js +49 -145
  131. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.es.js.map +1 -1
  132. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +5 -5
  133. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
  134. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +45 -141
  135. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
  136. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  137. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  138. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +26 -182
  139. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  140. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  141. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  142. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +9 -195
  143. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  144. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +2 -2
  145. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  146. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +5 -200
  147. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  148. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js +4 -4
  149. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js.map +1 -1
  150. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js +18 -114
  151. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js.map +1 -1
  152. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js +2 -2
  153. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js.map +1 -1
  154. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js +13 -109
  155. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js.map +1 -1
  156. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  157. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  158. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +11 -316
  159. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  160. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js +1 -1
  161. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js.map +1 -1
  162. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js +23 -119
  163. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js.map +1 -1
  164. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js +1 -1
  165. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js.map +1 -1
  166. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js +0 -111
  167. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js.map +1 -1
  168. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.cjs.js +1 -1
  169. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.cjs.js.map +1 -1
  170. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.es.js +1 -1
  171. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.es.js.map +1 -1
  172. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
  173. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
  174. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +12 -314
  175. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
  176. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  177. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  178. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +86 -273
  179. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  180. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  181. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  182. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +34 -335
  183. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  184. package/dist/shared/src/components/EntityPath/EntityPath.cjs.js.map +1 -1
  185. package/dist/shared/src/components/EntityPath/EntityPath.es.js.map +1 -1
  186. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  187. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  188. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +15 -310
  189. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  190. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.cjs.js.map +1 -1
  191. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.es.js.map +1 -1
  192. package/dist/shared/src/components/EnumEditor/EnumEditorItem.cjs.js.map +1 -1
  193. package/dist/shared/src/components/EnumEditor/EnumEditorItem.es.js.map +1 -1
  194. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  195. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  196. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +89 -293
  197. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  198. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.cjs.js +2 -2
  199. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.cjs.js.map +1 -1
  200. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.es.js +10 -106
  201. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.es.js.map +1 -1
  202. package/dist/shared/src/components/InfoMessage/InfoMessage.cjs.js +1 -1
  203. package/dist/shared/src/components/InfoMessage/InfoMessage.cjs.js.map +1 -1
  204. package/dist/shared/src/components/InfoMessage/InfoMessage.es.js +6 -5
  205. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  206. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  207. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  208. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  209. package/dist/shared/src/components/LinksManager/LinksManager.es.js +51 -346
  210. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  211. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  212. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  213. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +7 -212
  214. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  215. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  216. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  217. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +2 -205
  218. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  219. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
  220. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
  221. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +4 -185
  222. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
  223. package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
  224. package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
  225. package/dist/shared/src/components/Menu/Menu.es.js +48 -343
  226. package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
  227. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  228. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  229. package/dist/shared/src/components/Menu/MenuItem.es.js +20 -316
  230. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  231. package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
  232. package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
  233. package/dist/shared/src/components/Menu/MenuList.es.js +74 -373
  234. package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
  235. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +2 -2
  236. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  237. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +16 -315
  238. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  239. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  240. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  241. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +48 -346
  242. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  243. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +2 -2
  244. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  245. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +134 -304
  246. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  247. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
  248. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  249. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +74 -367
  250. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  251. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  252. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  253. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +3 -299
  254. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  255. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  256. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  257. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +34 -334
  258. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  259. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  260. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  261. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +30 -331
  262. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  263. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +5 -5
  264. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  265. package/dist/shared/src/components/RenameForm/RenameForm.es.js +77 -372
  266. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  267. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  268. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  269. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +114 -309
  270. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  271. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  272. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  273. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +66 -365
  274. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  275. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  276. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  277. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +14 -316
  278. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  279. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
  280. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  281. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +70 -72
  282. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  283. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  284. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  285. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +24 -326
  286. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  287. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.cjs.js.map +1 -1
  288. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.es.js.map +1 -1
  289. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  290. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  291. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +335 -534
  292. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  293. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +7 -7
  294. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  295. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +29 -329
  296. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  297. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +4 -4
  298. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  299. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +53 -355
  300. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  301. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +2 -2
  302. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  303. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +95 -394
  304. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  305. package/dist/shared/src/components/SyncButton/SyncButton.cjs.js +2 -2
  306. package/dist/shared/src/components/SyncButton/SyncButton.cjs.js.map +1 -1
  307. package/dist/shared/src/components/SyncButton/SyncButton.es.js +52 -165
  308. package/dist/shared/src/components/SyncButton/SyncButton.es.js.map +1 -1
  309. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +3 -3
  310. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  311. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +35 -334
  312. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  313. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js +1 -1
  314. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js.map +1 -1
  315. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js +26 -122
  316. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js.map +1 -1
  317. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js +3 -3
  318. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js.map +1 -1
  319. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js +22 -118
  320. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js.map +1 -1
  321. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +13 -13
  322. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  323. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +99 -300
  324. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  325. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  326. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  327. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +61 -262
  328. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  329. package/dist/shared/src/config/plannerFeatures.cjs.js.map +1 -1
  330. package/dist/shared/src/config/plannerFeatures.es.js.map +1 -1
  331. package/dist/shared/src/config/powerpackFeatures.cjs.js.map +1 -1
  332. package/dist/shared/src/config/powerpackFeatures.es.js.map +1 -1
  333. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  334. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  335. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +6 -210
  336. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  337. package/dist/shared/src/containers/Actions/ActionIcon.cjs.js.map +1 -1
  338. package/dist/shared/src/containers/Actions/ActionIcon.es.js.map +1 -1
  339. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  340. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  341. package/dist/shared/src/containers/Actions/Actions.es.js +51 -250
  342. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  343. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
  344. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
  345. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  346. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  347. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +20 -323
  348. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  349. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.cjs.js.map +1 -1
  350. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.es.js.map +1 -1
  351. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.cjs.js.map +1 -1
  352. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.es.js.map +1 -1
  353. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  354. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  355. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +143 -327
  356. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  357. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +3 -3
  358. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  359. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +27 -329
  360. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  361. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  362. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  363. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +39 -236
  364. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  365. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  366. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  367. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +65 -255
  368. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  369. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js +1 -1
  370. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js.map +1 -1
  371. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js +16 -317
  372. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js.map +1 -1
  373. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  374. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  375. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +61 -354
  376. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  377. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js +5 -5
  378. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js.map +1 -1
  379. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js +20 -116
  380. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js.map +1 -1
  381. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  382. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  383. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +2 -306
  384. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  385. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.cjs.js +1 -1
  386. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.cjs.js.map +1 -1
  387. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.es.js +51 -147
  388. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.es.js.map +1 -1
  389. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  390. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  391. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +2 -202
  392. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  393. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.cjs.js.map +1 -1
  394. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.es.js.map +1 -1
  395. package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js.map +1 -1
  396. package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.es.js.map +1 -1
  397. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.cjs.js.map +1 -1
  398. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.es.js.map +1 -1
  399. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +9 -9
  400. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  401. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +18 -320
  402. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  403. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  404. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  405. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +13 -217
  406. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  407. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  408. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  409. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +22 -323
  410. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  411. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  412. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  413. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +27 -307
  414. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  415. package/dist/shared/src/containers/DetailsPanel/helpers/buildDetailsPanelTitles.cjs.js.map +1 -1
  416. package/dist/shared/src/containers/DetailsPanel/helpers/buildDetailsPanelTitles.es.js.map +1 -1
  417. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.cjs.js.map +1 -1
  418. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.es.js.map +1 -1
  419. package/dist/shared/src/containers/DetailsPanel/helpers/getAllProjectsStatuses.cjs.js.map +1 -1
  420. package/dist/shared/src/containers/DetailsPanel/helpers/getAllProjectsStatuses.es.js.map +1 -1
  421. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.cjs.js.map +1 -1
  422. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.es.js.map +1 -1
  423. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js +1 -1
  424. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js.map +1 -1
  425. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js +10 -106
  426. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js.map +1 -1
  427. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.cjs.js.map +1 -1
  428. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.es.js.map +1 -1
  429. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  430. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  431. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +2 -209
  432. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  433. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +2 -2
  434. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  435. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +74 -373
  436. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  437. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  438. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  439. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +20 -324
  440. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  441. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +6 -6
  442. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  443. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +32 -338
  444. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  445. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +3 -3
  446. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  447. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +12 -318
  448. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  449. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js +1 -1
  450. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js.map +1 -1
  451. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js +11 -107
  452. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js.map +1 -1
  453. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  454. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  455. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +23 -228
  456. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  457. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js +1 -1
  458. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js.map +1 -1
  459. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js +27 -123
  460. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js.map +1 -1
  461. package/dist/shared/src/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.cjs.js.map +1 -1
  462. package/dist/shared/src/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.es.js.map +1 -1
  463. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  464. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  465. package/dist/shared/src/containers/Feed/Feed.es.js +65 -245
  466. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  467. package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js.map +1 -1
  468. package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.es.js.map +1 -1
  469. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  470. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  471. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +8 -309
  472. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  473. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  474. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  475. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +145 -421
  476. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  477. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  478. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  479. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +18 -317
  480. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  481. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js +1 -1
  482. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js.map +1 -1
  483. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js +24 -120
  484. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js.map +1 -1
  485. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  486. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  487. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +42 -331
  488. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  489. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js.map +1 -1
  490. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.styled.es.js.map +1 -1
  491. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  492. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  493. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +227 -372
  494. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  495. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.cjs.js.map +1 -1
  496. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.es.js.map +1 -1
  497. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  498. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  499. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +38 -341
  500. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  501. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  502. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  503. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +22 -324
  504. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  505. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js +1 -1
  506. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js.map +1 -1
  507. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js +9 -105
  508. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js.map +1 -1
  509. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  510. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  511. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +21 -324
  512. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  513. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.cjs.js +1 -1
  514. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.cjs.js.map +1 -1
  515. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.es.js +16 -26
  516. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.es.js.map +1 -1
  517. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.cjs.js +2 -0
  518. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.cjs.js.map +1 -0
  519. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.es.js +14 -0
  520. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.es.js.map +1 -0
  521. package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js +1 -1
  522. package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js.map +1 -1
  523. package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js +2 -15
  524. package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js.map +1 -1
  525. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +2 -2
  526. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -1
  527. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +62 -361
  528. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -1
  529. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  530. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  531. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +57 -356
  532. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  533. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  534. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  535. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +14 -310
  536. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  537. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  538. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  539. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +34 -238
  540. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  541. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js +1 -1
  542. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
  543. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js +67 -163
  544. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js.map +1 -1
  545. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js.map +1 -1
  546. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js +18 -8
  547. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js.map +1 -1
  548. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js +1 -1
  549. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js.map +1 -1
  550. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js +10 -106
  551. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js.map +1 -1
  552. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionUsers.cjs.js.map +1 -1
  553. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionUsers.es.js.map +1 -1
  554. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js +1 -1
  555. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js.map +1 -1
  556. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js +13 -109
  557. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js.map +1 -1
  558. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  559. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  560. package/dist/shared/src/containers/ListTable/ListTable.es.js +115 -284
  561. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  562. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  563. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  564. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +44 -177
  565. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  566. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  567. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  568. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +46 -343
  569. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  570. package/dist/shared/src/containers/ListTable/ListTableWidgets.cjs.js.map +1 -1
  571. package/dist/shared/src/containers/ListTable/ListTableWidgets.es.js.map +1 -1
  572. package/dist/shared/src/containers/MoveEntityDialog/MoveEntityDialog.cjs.js.map +1 -1
  573. package/dist/shared/src/containers/MoveEntityDialog/MoveEntityDialog.es.js.map +1 -1
  574. package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js +3 -3
  575. package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js.map +1 -1
  576. package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js +170 -459
  577. package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js.map +1 -1
  578. package/dist/shared/src/containers/NewEntity/components/TypeEditor.cjs.js.map +1 -1
  579. package/dist/shared/src/containers/NewEntity/components/TypeEditor.es.js.map +1 -1
  580. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js +1 -1
  581. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js.map +1 -1
  582. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js +117 -314
  583. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js.map +1 -1
  584. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  585. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  586. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +590 -859
  587. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  588. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  589. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  590. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +245 -391
  591. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  592. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  593. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  594. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +75 -375
  595. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  596. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  597. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  598. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +32 -204
  599. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  600. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  601. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  602. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +27 -124
  603. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  604. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js +7 -7
  605. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js.map +1 -1
  606. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js +35 -131
  607. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js.map +1 -1
  608. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  609. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  610. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +97 -292
  611. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  612. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +4 -4
  613. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  614. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +243 -441
  615. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  616. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  617. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  618. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +156 -330
  619. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  620. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  621. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  622. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +4 -208
  623. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  624. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +1 -1
  625. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  626. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +120 -420
  627. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  628. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  629. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  630. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +71 -245
  631. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  632. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.cjs.js.map +1 -1
  633. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.es.js +3 -3
  634. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.es.js.map +1 -1
  635. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.cjs.js.map +1 -1
  636. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.es.js.map +1 -1
  637. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.cjs.js.map +1 -1
  638. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.es.js.map +1 -1
  639. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js +1 -1
  640. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js.map +1 -1
  641. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js +83 -179
  642. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js.map +1 -1
  643. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  644. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  645. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +13 -317
  646. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  647. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  648. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  649. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +59 -233
  650. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  651. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  652. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  653. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +74 -248
  654. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  655. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  656. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  657. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +147 -439
  658. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  659. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  660. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  661. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +23 -197
  662. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  663. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  664. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  665. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +32 -206
  666. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  667. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  668. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  669. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +32 -332
  670. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  671. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  672. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  673. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +135 -335
  674. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  675. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js.map +1 -1
  676. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js.map +1 -1
  677. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  678. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  679. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +29 -203
  680. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  681. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  682. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  683. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +36 -204
  684. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  685. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  686. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  687. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +78 -282
  688. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  689. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  690. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  691. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +31 -232
  692. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  693. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  694. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  695. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +24 -198
  696. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  697. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  698. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  699. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +29 -203
  700. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  701. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  702. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  703. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +167 -467
  704. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  705. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  706. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  707. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +41 -215
  708. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  709. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js.map +1 -1
  710. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js.map +1 -1
  711. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.cjs.js.map +1 -1
  712. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.es.js.map +1 -1
  713. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.cjs.js.map +1 -1
  714. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.es.js.map +1 -1
  715. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js.map +1 -1
  716. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js.map +1 -1
  717. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.cjs.js.map +1 -1
  718. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.es.js.map +1 -1
  719. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.cjs.js.map +1 -1
  720. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.es.js.map +1 -1
  721. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.cjs.js.map +1 -1
  722. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.es.js.map +1 -1
  723. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js.map +1 -1
  724. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js.map +1 -1
  725. package/dist/shared/src/containers/ProjectTreeTable/utils/sanitizeQueryFilter.cjs.js.map +1 -1
  726. package/dist/shared/src/containers/ProjectTreeTable/utils/sanitizeQueryFilter.es.js.map +1 -1
  727. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.cjs.js.map +1 -1
  728. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.es.js.map +1 -1
  729. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +2 -2
  730. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  731. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +14 -315
  732. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  733. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
  734. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  735. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +113 -398
  736. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  737. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +5 -5
  738. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
  739. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +40 -332
  740. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
  741. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  742. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  743. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.cjs.js +1 -1
  744. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.cjs.js.map +1 -1
  745. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.es.js +22 -194
  746. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.es.js.map +1 -1
  747. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
  748. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
  749. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  750. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  751. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +3 -3
  752. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  753. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +52 -348
  754. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  755. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +5 -5
  756. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
  757. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +77 -364
  758. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
  759. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  760. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  761. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +28 -202
  762. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  763. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  764. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  765. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +36 -333
  766. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  767. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +5 -5
  768. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
  769. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +130 -424
  770. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
  771. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +4 -4
  772. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  773. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +80 -176
  774. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  775. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +5 -5
  776. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  777. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +12 -108
  778. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  779. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  780. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  781. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +20 -217
  782. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  783. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  784. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  785. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +231 -527
  786. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  787. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -2
  788. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -1
  789. package/dist/shared/src/containers/Slicer/components/Slicer.es.js +69 -367
  790. package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -1
  791. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +2 -2
  792. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
  793. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +18 -318
  794. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
  795. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +2 -2
  796. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  797. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +24 -328
  798. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  799. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  800. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  801. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +69 -370
  802. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  803. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
  804. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
  805. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +27 -228
  806. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
  807. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js +1 -1
  808. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js.map +1 -1
  809. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js +34 -236
  810. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js.map +1 -1
  811. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
  812. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
  813. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +5 -309
  814. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
  815. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
  816. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
  817. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +7 -311
  818. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
  819. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js +1 -1
  820. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js.map +1 -1
  821. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js +11 -314
  822. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js.map +1 -1
  823. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js +1 -1
  824. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js.map +1 -1
  825. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js +13 -316
  826. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js.map +1 -1
  827. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js +1 -1
  828. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js.map +1 -1
  829. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js +34 -338
  830. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js.map +1 -1
  831. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js +1 -1
  832. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js.map +1 -1
  833. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js +11 -316
  834. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js.map +1 -1
  835. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  836. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  837. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +72 -368
  838. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  839. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -1
  840. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -1
  841. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.cjs.js.map +1 -1
  842. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.es.js.map +1 -1
  843. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js +1 -1
  844. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js.map +1 -1
  845. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js +24 -120
  846. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js.map +1 -1
  847. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js.map +1 -1
  848. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js.map +1 -1
  849. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  850. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  851. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +35 -336
  852. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  853. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  854. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  855. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +55 -354
  856. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  857. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
  858. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  859. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +40 -335
  860. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  861. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  862. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  863. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +59 -262
  864. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  865. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js +1 -1
  866. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js.map +1 -1
  867. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js +17 -113
  868. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js.map +1 -1
  869. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
  870. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  871. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +45 -141
  872. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  873. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.cjs.js.map +1 -1
  874. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.es.js.map +1 -1
  875. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  876. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  877. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +22 -216
  878. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  879. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
  880. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
  881. package/dist/shared/src/containers/Views/types.cjs.js.map +1 -1
  882. package/dist/shared/src/containers/Views/types.es.js.map +1 -1
  883. package/dist/shared/src/containers/Views/utils/generateWorkingView.cjs.js.map +1 -1
  884. package/dist/shared/src/containers/Views/utils/generateWorkingView.es.js.map +1 -1
  885. package/dist/shared/src/context/AddonContext.cjs.js.map +1 -1
  886. package/dist/shared/src/context/AddonContext.es.js.map +1 -1
  887. package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
  888. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  889. package/dist/shared/src/context/AddonProjectContext.es.js +19 -115
  890. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  891. package/dist/shared/src/context/DeleteEntitiesContext.cjs.js +1 -1
  892. package/dist/shared/src/context/DeleteEntitiesContext.cjs.js.map +1 -1
  893. package/dist/shared/src/context/DeleteEntitiesContext.es.js +1 -1
  894. package/dist/shared/src/context/DeleteEntitiesContext.es.js.map +1 -1
  895. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  896. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  897. package/dist/shared/src/context/DetailsPanelContext.es.js +66 -362
  898. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  899. package/dist/shared/src/context/EntityUpdatesContext.cjs.js +1 -1
  900. package/dist/shared/src/context/EntityUpdatesContext.cjs.js.map +1 -1
  901. package/dist/shared/src/context/EntityUpdatesContext.es.js +61 -358
  902. package/dist/shared/src/context/EntityUpdatesContext.es.js.map +1 -1
  903. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  904. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  905. package/dist/shared/src/context/PowerpackContext.es.js +42 -344
  906. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  907. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  908. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  909. package/dist/shared/src/context/ProjectFoldersContext.es.js +26 -231
  910. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  911. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  912. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  913. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  914. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  915. package/dist/shared/src/context/SubtasksModulesContext.es.js +23 -324
  916. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  917. package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js +1 -1
  918. package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js.map +1 -1
  919. package/dist/shared/src/context/ThumbnailUploaderContext.es.js +17 -21
  920. package/dist/shared/src/context/ThumbnailUploaderContext.es.js.map +1 -1
  921. package/dist/shared/src/context/UriContext.cjs.js +1 -1
  922. package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
  923. package/dist/shared/src/context/UriContext.es.js +2 -2
  924. package/dist/shared/src/context/UriContext.es.js.map +1 -1
  925. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  926. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  927. package/dist/shared/src/context/WebsocketContext.es.js +28 -229
  928. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  929. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  930. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  931. package/dist/shared/src/hooks/useEntityUpdate.es.js +2 -208
  932. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  933. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  934. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  935. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +11 -314
  936. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  937. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
  938. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
  939. package/dist/shared/src/hooks/useHierarchyTable.es.js +30 -333
  940. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
  941. package/dist/shared/src/hooks/useLoadModules.cjs.js.map +1 -1
  942. package/dist/shared/src/hooks/useLoadModules.es.js.map +1 -1
  943. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js +1 -1
  944. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js.map +1 -1
  945. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js +19 -115
  946. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js.map +1 -1
  947. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  948. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  949. package/dist/shared/src/hooks/useUserProjectConfig.es.js +6 -212
  950. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  951. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js.map +1 -1
  952. package/dist/shared/src/util/buildHierarchicalTableRows.es.js.map +1 -1
  953. package/dist/shared/src/util/checkName.cjs.js.map +1 -1
  954. package/dist/shared/src/util/checkName.es.js.map +1 -1
  955. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
  956. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
  957. package/dist/shared/src/util/getAttributeIcon.cjs.js.map +1 -1
  958. package/dist/shared/src/util/getAttributeIcon.es.js.map +1 -1
  959. package/dist/shared/src/util/getBundleMode.cjs.js +1 -1
  960. package/dist/shared/src/util/getBundleMode.cjs.js.map +1 -1
  961. package/dist/shared/src/util/getBundleMode.es.js +16 -112
  962. package/dist/shared/src/util/getBundleMode.es.js.map +1 -1
  963. package/dist/shared/src/util/getGroupByDataType.cjs.js.map +1 -1
  964. package/dist/shared/src/util/getGroupByDataType.es.js.map +1 -1
  965. package/dist/shared/src/util/getPriorityOptions.cjs.js.map +1 -1
  966. package/dist/shared/src/util/getPriorityOptions.es.js.map +1 -1
  967. package/dist/shared/src/util/iconUtils.cjs.js.map +1 -1
  968. package/dist/shared/src/util/iconUtils.es.js.map +1 -1
  969. package/dist/shared/src/util/mentionTypeOptions.cjs.js +2 -0
  970. package/dist/shared/src/util/mentionTypeOptions.cjs.js.map +1 -0
  971. package/dist/shared/src/util/mentionTypeOptions.es.js +16 -0
  972. package/dist/shared/src/util/mentionTypeOptions.es.js.map +1 -0
  973. package/dist/shared/src/util/parseFilename.cjs.js +2 -0
  974. package/dist/shared/src/util/parseFilename.cjs.js.map +1 -0
  975. package/dist/shared/src/util/parseFilename.es.js +8 -0
  976. package/dist/shared/src/util/parseFilename.es.js.map +1 -0
  977. package/dist/shared/src/util/uriUtils.cjs.js.map +1 -1
  978. package/dist/shared/src/util/uriUtils.es.js.map +1 -1
  979. package/dist/types/api/base/index.d.ts +1 -1
  980. package/dist/types/api/generated/graphql.d.ts +5 -2
  981. package/dist/types/api/generated/graphqlLinks.d.ts +1 -0
  982. package/dist/types/api/queries/activities/getActivities.d.ts +4 -2
  983. package/dist/types/api/queries/activities/getCategories.d.ts +1 -1
  984. package/dist/types/api/queries/activities/util/activityRealtimeHandler.d.ts +1 -1
  985. package/dist/types/api/queries/entities/getEntity.d.ts +2 -1
  986. package/dist/types/api/queries/entities/getEntityPanel.d.ts +2 -1
  987. package/dist/types/api/queries/entities/updateEntity.d.ts +2 -1
  988. package/dist/types/api/queries/entityLists/getLists.d.ts +305 -305
  989. package/dist/types/api/queries/overview/getOverview.d.ts +35 -18
  990. package/dist/types/api/queries/project/getProject.d.ts +62 -61
  991. package/dist/types/api/queries/system/getSystem.d.ts +1 -1
  992. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +2 -1
  993. package/dist/types/api/queries/users/getUsers.d.ts +2 -1
  994. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +4 -2
  995. package/dist/types/api/queries/views/getViews.d.ts +1 -1
  996. package/dist/types/components/DetailsPanelDetails/DetailsSection.d.ts +1 -1
  997. package/dist/types/components/Menu/Menu.d.ts +1 -1
  998. package/dist/types/components/Menu/MenuList.d.ts +1 -1
  999. package/dist/types/components/Powerpack/PowerpackButton.d.ts +1 -1
  1000. package/dist/types/components/ProjectTableSettings/ColumnsSettings.d.ts +1 -1
  1001. package/dist/types/components/ProjectTableSettings/ProjectTableSettings.d.ts +2 -2
  1002. package/dist/types/components/ProjectTableSettings/TableSettingsFallback.d.ts +1 -1
  1003. package/dist/types/components/RemotePage/ProjectPageRemote.d.ts +1 -1
  1004. package/dist/types/components/RemotePage/RemotePageWrapper.d.ts +4 -2
  1005. package/dist/types/components/RenameForm/RenameForm.d.ts +1 -1
  1006. package/dist/types/components/ReviewablesList/SortableReviewableCard.d.ts +1 -1
  1007. package/dist/types/components/ReviewablesList/useReviewablesUpload.d.ts +2 -2
  1008. package/dist/types/components/ReviewablesSelector/Card.d.ts +1 -1
  1009. package/dist/types/components/SearchFilter/filterScopeRegistry.d.ts +1 -1
  1010. package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +1 -1
  1011. package/dist/types/components/SettingsPanel/SettingsPanel.d.ts +1 -1
  1012. package/dist/types/components/SyncButton/SyncButton.d.ts +1 -1
  1013. package/dist/types/components/Thumbnail/StackedThumbnails.d.ts +1 -2
  1014. package/dist/types/config/plannerFeatures.d.ts +1 -1
  1015. package/dist/types/config/powerpackFeatures.d.ts +1 -1
  1016. package/dist/types/containers/Actions/Actions.d.ts +2 -2
  1017. package/dist/types/containers/ContextMenu/ContextMenuItem.d.ts +1 -1
  1018. package/dist/types/containers/ContextMenu/useCreateContextMenu.d.ts +1 -1
  1019. package/dist/types/containers/DetailsPanel/DetailsPanel.d.ts +1 -1
  1020. package/dist/types/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.d.ts +2 -2
  1021. package/dist/types/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.d.ts +1 -1
  1022. package/dist/types/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.d.ts +2 -2
  1023. package/dist/types/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.d.ts +1 -1
  1024. package/dist/types/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.d.ts +3 -3
  1025. package/dist/types/containers/DetailsPanel/containers/DetailsPanelSubtasks.d.ts +1 -1
  1026. package/dist/types/containers/DetailsPanel/helpers/buildEntityTypeIcons.d.ts +1 -1
  1027. package/dist/types/containers/DetailsPanel/helpers/getEntityPathData.d.ts +1 -1
  1028. package/dist/types/containers/DetailsPanel/helpers/mergeProjectInfo.d.ts +1 -1
  1029. package/dist/types/containers/DetailsPanel/hooks/useGetEntityPath.d.ts +1 -1
  1030. package/dist/types/containers/EntityPickerDialog/components/EntityTypeTable.d.ts +1 -1
  1031. package/dist/types/containers/EntityPickerDialog/hooks/useGetEntityPickerData.d.ts +1 -1
  1032. package/dist/types/containers/EntityPickerDialog/util/buildEntityPickerTableData.d.ts +1 -1
  1033. package/dist/types/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.d.ts +1 -1
  1034. package/dist/types/containers/Feed/components/ActivityReference/ActivityReference.styled.d.ts +2 -2
  1035. package/dist/types/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.d.ts +1 -1
  1036. package/dist/types/containers/Feed/components/ActivityVersions/ActivityVersions.styled.d.ts +1 -1
  1037. package/dist/types/containers/Feed/components/CommentInput/modules/index.d.ts +1 -1
  1038. package/dist/types/containers/Feed/components/CommentInput/quillFormats.d.ts +1 -0
  1039. package/dist/types/containers/Feed/components/CommentInput/types.d.ts +1 -12
  1040. package/dist/types/containers/Feed/components/FileUploadCard/FileUploadCard.d.ts +1 -1
  1041. package/dist/types/containers/Feed/context/FeedContext.d.ts +1 -1
  1042. package/dist/types/containers/Feed/hooks/useLastVersionReview.d.ts +1 -1
  1043. package/dist/types/containers/Feed/mentionHelpers/getMentionTasks.d.ts +1 -1
  1044. package/dist/types/containers/Feed/mentionHelpers/getMentionUsers.d.ts +1 -1
  1045. package/dist/types/containers/Feed/mentionHelpers/getMentionVersions.d.ts +2 -2
  1046. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +1 -1
  1047. package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +1 -1
  1048. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +4 -3
  1049. package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +1 -1
  1050. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +4 -5
  1051. package/dist/types/containers/ProjectTreeTable/hooks/useFolderRelationships.d.ts +1 -1
  1052. package/dist/types/containers/ProjectTreeTable/hooks/useGetEntityTypeData.d.ts +2 -2
  1053. package/dist/types/containers/ProjectTreeTable/hooks/useMoveEntities.d.ts +1 -1
  1054. package/dist/types/containers/ProjectTreeTable/hooks/usePasteLinks.d.ts +1 -1
  1055. package/dist/types/containers/ProjectTreeTable/hooks/useQueryFilters.d.ts +1 -1
  1056. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +6 -5
  1057. package/dist/types/containers/ProjectTreeTable/utils/getEntityViewerIds.d.ts +1 -1
  1058. package/dist/types/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.d.ts +1 -1
  1059. package/dist/types/containers/ProjectTreeTable/utils/linksToTableData.d.ts +1 -1
  1060. package/dist/types/containers/ProjectTreeTable/utils/sanitizeQueryFilter.d.ts +1 -1
  1061. package/dist/types/containers/ProjectTreeTable/widgets/LinksWidget.d.ts +1 -1
  1062. package/dist/types/containers/ProjectTreeTable/widgets/NameWidget.d.ts +1 -1
  1063. package/dist/types/containers/ProjectTreeTable/widgets/TextWidget.d.ts +2 -1
  1064. package/dist/types/containers/Slicer/components/Slicer.d.ts +2 -2
  1065. package/dist/types/containers/Slicer/components/SlicerDropdownFallback.d.ts +1 -1
  1066. package/dist/types/containers/Slicer/context/SlicerContext.d.ts +3 -4
  1067. package/dist/types/containers/Slicer/hooks/useEntityListsSlice.d.ts +1 -1
  1068. package/dist/types/containers/Slicer/hooks/useHierarchyContextMenuItems.d.ts +3 -3
  1069. package/dist/types/containers/Slicer/hooks/useProjectAnatomySlices.d.ts +1 -1
  1070. package/dist/types/containers/Slicer/hooks/useSlicerCounts.d.ts +1 -1
  1071. package/dist/types/containers/Slicer/hooks/useUsersTable.d.ts +1 -1
  1072. package/dist/types/containers/Slicer/types.d.ts +1 -1
  1073. package/dist/types/containers/Views/hooks/pages/useListsViewSettings.d.ts +1 -1
  1074. package/dist/types/containers/Views/hooks/pages/useOverviewViewSettings.d.ts +1 -1
  1075. package/dist/types/containers/Views/types.d.ts +1 -1
  1076. package/dist/types/context/AddonContext.d.ts +1 -1
  1077. package/dist/types/context/AddonProjectContext.d.ts +2 -2
  1078. package/dist/types/context/DetailsPanelContext.d.ts +2 -2
  1079. package/dist/types/context/SubtasksModulesContext.d.ts +1 -1
  1080. package/dist/types/hooks/useHierarchyTable.d.ts +1 -1
  1081. package/dist/types/util/buildHierarchicalTableRows.d.ts +1 -1
  1082. package/dist/types/util/columnConfigConverter.d.ts +1 -1
  1083. package/dist/types/util/getBundleMode.d.ts +1 -1
  1084. package/dist/types/util/getGroupByDataType.d.ts +1 -1
  1085. package/dist/types/util/index.d.ts +2 -0
  1086. package/dist/types/util/mentionTypeOptions.d.ts +12 -0
  1087. package/dist/types/util/parseFilename.d.ts +1 -0
  1088. package/dist/types/util/uriUtils.d.ts +1 -1
  1089. package/dist/util.cjs.js +1 -1
  1090. package/dist/util.es.js +24 -20
  1091. package/dist/util.es.js.map +1 -1
  1092. package/package.json +1 -1
  1093. package/dist/shared/src/components/ThumbnailSimple/index.cjs.js +0 -2
  1094. package/dist/shared/src/components/ThumbnailSimple/index.cjs.js.map +0 -1
  1095. package/dist/shared/src/components/ThumbnailSimple/index.es.js +0 -6
  1096. package/dist/shared/src/components/ThumbnailSimple/index.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"getOverview.es.js","sources":["../../../../../../src/api/queries/overview/getOverview.ts"],"sourcesContent":["import {\n gqlApi,\n GetTasksByParentQuery,\n GetTasksListQuery,\n GetFolderColumnStatsQuery,\n GetTaskColumnStatsQuery,\n foldersApi,\n SearchFoldersApiArg,\n GetTasksListQueryVariables,\n} from '@shared/api/generated'\nimport PubSub from '@shared/util/pubsub'\nimport {\n createRealtimeBatcher,\n getSupportedEntityPatch,\n REALTIME_REST_CALL_LIMIT,\n REALTIME_TASK_SUPPORTED_VALUE_FIELDS,\n RealtimeBatchProcessor,\n subscribeToThumbnailUpdates,\n SupportedTaskField,\n ThumbnailUpdateMessage,\n waitForRealtimeJitter,\n} from '@shared/util'\nimport { EditorTaskNode } from '@shared/containers/ProjectTreeTable'\nimport type { FieldStats } from '../columnStats'\nimport {\n normalizeFieldStats,\n mergeFieldStats,\n hasNewTargetFields,\n transformStatsError,\n} from '../columnStats'\nimport {\n DefinitionsFromApi,\n FetchBaseQueryError,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\n\nconst CACHE_TIME = 10 // seconds\n\n// parse attribs JSON string to object\nexport const parseJSONField = (allAttrib: string | null | undefined): Record<string, any> => {\n if (!allAttrib) return {}\n try {\n const parsed: unknown = JSON.parse(allAttrib)\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed)\n ? (parsed as Record<string, any>)\n : {}\n } catch (e) {\n return {}\n }\n}\n// backwards compatibility for old API\nexport const parseAllAttribs = parseJSONField\n\nconst transformFilteredEntitiesByParent = (response: GetTasksByParentQuery): EditorTaskNode[] => {\n if (!response.project) {\n return []\n }\n\n const tasks: EditorTaskNode[] = []\n for (const { node: taskNode } of response.project.tasks.edges) {\n tasks.push({\n ...taskNode,\n folderId: taskNode.folderId || 'root',\n attrib: parseJSONField(taskNode.allAttrib),\n data: parseJSONField(taskNode.data),\n entityId: taskNode.id,\n entityType: 'task',\n links: [],\n })\n }\n\n return tasks\n}\n\nconst getOverviewTaskTags = (\n result: EditorTaskNode[] | undefined = [],\n projectName: string,\n parentIds?: string | string[],\n) => {\n const taskTags = result?.map((task) => ({ type: 'overviewTask', id: task.id })) || []\n\n const parentTags = parentIds\n ? (Array.isArray(parentIds) ? parentIds : [parentIds]).map((id) => ({\n type: 'overviewTask',\n id,\n }))\n : []\n\n return [\n ...taskTags,\n ...parentTags,\n { type: 'overviewTask', id: projectName },\n { type: 'overviewTask', id: 'LIST' },\n ]\n}\n\nexport type GetTasksListResult = {\n pageInfo: GetTasksListQuery['project']['tasks']['pageInfo']\n tasks: EditorTaskNode[]\n}\nexport type GetTasksByParentResult = {\n pageInfo: GetTasksByParentQuery['project']['tasks']['pageInfo']\n tasks: EditorTaskNode[]\n}\n\nexport type GetTasksListArgs = {\n projectName: string\n filter?: string\n folderFilter?: string\n search?: string\n folderIds?: string[]\n taskIds?: string[]\n desc?: boolean\n sortBy?: string\n showComments?: boolean\n includeFolderChildren?: boolean\n}\n\nexport type GetGroupedTasksListResult = {\n tasks: EditorTaskNode[]\n}\n\nexport type GetGroupedTasksListArgs = {\n projectName: string\n groups: { filter: string; count: number; value: string }[]\n search?: string\n folderFilter?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n groupCount?: number // optional override for all groups\n showComments?: boolean\n}\n\n// Define the page param type for infinite query\ntype TasksListPageParam = {\n cursor: string\n desc?: boolean\n}\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\ntype UpdatedDefinitions = Omit<Definitions, 'GetFilteredEntities'> & {\n GetTasksByParent: OverrideResultType<Definitions['GetTasksByParent'], GetTasksByParentResult>\n GetTasksList: OverrideResultType<Definitions['GetTasksList'], GetTasksListResult>\n GetFolderColumnStats: OverrideResultType<Definitions['GetFolderColumnStats'], FieldStats[]>\n GetTaskColumnStats: OverrideResultType<Definitions['GetTaskColumnStats'], FieldStats[]>\n}\n\n// GRAPHQL API\nconst enhancedApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // This gets tasks for all parent folders provided\n // But in this case it will only ever receive one parent folder from the getOverviewTasksByFolders query\n // It is only used by getOverviewTasksByFolders in this file\n GetTasksByParent: {\n transformResponse: (res: GetTasksByParentQuery) => ({\n pageInfo: res?.project?.tasks?.pageInfo ?? { hasNextPage: false, endCursor: null },\n tasks: transformFilteredEntitiesByParent(res),\n }),\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result?.tasks || [], projectName, parentIds),\n keepUnusedDataFor: CACHE_TIME,\n },\n GetTasksList: {\n transformResponse: (result: GetTasksListQuery) => ({\n tasks: transformFilteredEntitiesByParent(result),\n pageInfo: result.project.tasks.pageInfo,\n }),\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks || [], projectName),\n keepUnusedDataFor: CACHE_TIME,\n },\n // footer stats: `targets` excluded from cache key + responses merged,\n // so column toggles reuse cache and only added targets refetch\n GetFolderColumnStats: {\n transformResponse: (res: GetFolderColumnStatsQuery) =>\n normalizeFieldStats(res?.project?.folders?.fieldStats ?? []),\n transformErrorResponse: (error: any) => transformStatsError(error, 'folder'),\n serializeQueryArgs: ({ queryArgs: { targets: _t, ...rest } }) => rest,\n merge: (cache, incoming) => mergeFieldStats(incoming, cache),\n forceRefetch: ({ currentArg, previousArg }) => hasNewTargetFields(currentArg, previousArg),\n providesTags: (_r, _e, { projectName }) => [{ type: 'folderColumnStats', id: projectName }],\n keepUnusedDataFor: CACHE_TIME,\n },\n GetTaskColumnStats: {\n transformResponse: (res: GetTaskColumnStatsQuery) =>\n normalizeFieldStats(res?.project?.tasks?.fieldStats ?? []),\n transformErrorResponse: (error: any) => transformStatsError(error, 'task'),\n serializeQueryArgs: ({ queryArgs: { targets: _t, ...rest } }) => rest,\n merge: (cache, incoming) => mergeFieldStats(incoming, cache),\n forceRefetch: ({ currentArg, previousArg }) => hasNewTargetFields(currentArg, previousArg),\n providesTags: (_r, _e, { projectName }) => [{ type: 'taskColumnStats', id: projectName }],\n keepUnusedDataFor: CACHE_TIME,\n },\n },\n})\n\n// REST FOLDERS API\nconst foldersApiEnhanced = foldersApi.enhanceEndpoints({\n endpoints: {\n searchFolders: {},\n },\n})\n\nexport const TASKS_INFINITE_QUERY_COUNT = 100 // Number of items to fetch per page\n\n// --- TRACKING REGISTRY FOR EMPTY FOLDERS (FILTER-AWARE) ---\nconst queriedFoldersRegistry: Record<string, Set<string>> = {}\n\nconst getCacheKey = (\n projectName: string,\n filter?: string,\n folderFilter?: string,\n search?: string,\n showComments?: boolean,\n) => {\n return JSON.stringify({ projectName, filter, folderFilter, search, showComments })\n}\n\nconst markFoldersAsQueried = (cacheKey: string, folderIds: string[]) => {\n if (!queriedFoldersRegistry[cacheKey]) {\n queriedFoldersRegistry[cacheKey] = new Set()\n }\n folderIds.forEach((id) => queriedFoldersRegistry[cacheKey].add(id))\n}\n\nconst getQueriedFolders = (cacheKey: string): Set<string> => {\n return queriedFoldersRegistry[cacheKey] || new Set()\n}\n\nconst injectedApi = enhancedApi.injectEndpoints({\n endpoints: (build) => ({\n // Each project has one cache for all the tasks of the expanded folders\n // Changing the expanded folders will trigger a refetch but not a new cache\n // Each expanded folder has it's own query that is looped over here\n // When new folders are expanded, the new tasks are fetched and we use the cache for the rest\n // This also solves the pagination issue of getting all tasks in one query, splitting it up in multiple queries to avoid pagination limits\n getOverviewTasksByFolders: build.query<\n EditorTaskNode[],\n {\n projectName: string\n parentIds: string[]\n filter?: string\n folderFilter?: string\n search?: string\n showComments?: boolean\n }\n >({\n async queryFn(\n { projectName, parentIds, filter, folderFilter, search, showComments },\n { dispatch, getState, forced },\n ) {\n try {\n const state = getState()\n const cacheArgs = { projectName, filter, folderFilter, search, showComments }\n\n // Select current flat cache state\n const currentCache = (injectedApi.endpoints as any).getOverviewTasksByFolders.select(\n cacheArgs,\n )(state)\n const cacheData: EditorTaskNode[] = currentCache?.data || []\n\n // 1. Generate a stable cache key matching RTK Query's serialization\n const cacheKey = getCacheKey(projectName, filter, folderFilter, search, showComments)\n\n // 2. Fetch our registry specific to THIS combination of search/filters\n const alreadyQueriedFolders = getQueriedFolders(cacheKey)\n\n // 3. Diffing: Only request folders that haven't hit the network under these specific filters\n // If forced, we ignore the registry and fetch all folders again, like a refresh\n const newFolderIds = forced\n ? parentIds\n : parentIds.filter((id) => !alreadyQueriedFolders.has(id))\n\n // Short-circuit if all expanded folders have been evaluated for this filter setup\n if (newFolderIds.length === 0) {\n return { data: cacheData }\n }\n\n const allNewTasks: EditorTaskNode[] = []\n const BATCH_SIZE = 100\n const TASK_PER_FOLDER = 20\n const MAX_PAGES_PER_BATCH = 10\n const MAX_FOLDERS = 1000\n const TASKS_PER_PAGE = BATCH_SIZE * TASK_PER_FOLDER\n\n if (newFolderIds.length > MAX_FOLDERS) {\n throw new Error(\n `Exceeded maximum folders count limit ${MAX_FOLDERS} (${newFolderIds.length}). Please reduce the number of expanded folders.`,\n )\n }\n\n // 5. Batch folder IDs into groups and process them sequentially\n for (let i = 0; i < newFolderIds.length; i += BATCH_SIZE) {\n const batchFolderIds = newFolderIds.slice(i, i + BATCH_SIZE)\n\n let hasNextPage = true\n let cursor: string | undefined = undefined\n let pageCount = 0\n\n while (hasNextPage && pageCount < MAX_PAGES_PER_BATCH) {\n pageCount++\n\n if (pageCount === MAX_PAGES_PER_BATCH) {\n throw new Error(\n `Exceeded maximum tasks count limit ${MAX_PAGES_PER_BATCH * TASKS_PER_PAGE}.`,\n )\n }\n\n const result = await dispatch(\n enhancedApi.endpoints.GetTasksByParent.initiate(\n {\n projectName,\n parentIds: batchFolderIds,\n filter,\n folderFilter,\n search,\n showComments: !!showComments,\n first: TASKS_PER_PAGE,\n after: cursor,\n },\n { forceRefetch: true },\n ),\n )\n\n if (result.error) throw result.error\n const data = result.data as GetTasksByParentResult\n\n const fetchedTasks = data?.tasks || []\n allNewTasks.push(...fetchedTasks)\n\n const pageInfo = data?.pageInfo\n hasNextPage = pageInfo?.hasNextPage || false\n cursor = pageInfo?.endCursor || undefined\n }\n }\n\n // 4. Only mark folders as queried if the network loops complete successfully\n markFoldersAsQueried(cacheKey, newFolderIds)\n\n // 5. Append new tasks to the existing flat array cache with task ID deduplication\n const finalTasks = [...cacheData, ...allNewTasks]\n const uniqueTasksMap = new Map(finalTasks.map((task) => [task.id, task]))\n\n return {\n data: Array.from(uniqueTasksMap.values()),\n }\n } catch (e: any) {\n console.error(e)\n const errorMessage =\n e.message || e.data?.message || JSON.stringify(e) || 'Unknown Fetch Error'\n return { error: { status: 'FETCH_ERROR', error: errorMessage } as FetchBaseQueryError }\n }\n },\n // keep one cache per project\n serializeQueryArgs: ({ queryArgs: { parentIds, ...rest } }) => ({\n ...rest,\n }),\n // Refetch when the page arg changes\n forceRefetch({ currentArg, previousArg }) {\n return JSON.stringify(currentArg) !== JSON.stringify(previousArg)\n },\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n async onCacheEntryAdded(\n { projectName, parentIds, filter, folderFilter, search, showComments },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch, getCacheEntry },\n ) {\n let token: any\n const batchProcessMessages: RealtimeBatchProcessor<any> = async (messages, isActive) => {\n const queriedFolders = getQueriedFolders(\n getCacheKey(projectName, filter, folderFilter, search, showComments),\n )\n const cachedTaskIds = new Set(\n (getCacheEntry().data as EditorTaskNode[] | undefined)?.map((task) => task.id) || [],\n )\n const batchIds = new Set<string>()\n const patches: {\n taskId: string\n field: SupportedTaskField\n value: string | string[]\n }[] = []\n\n messages\n .filter((message) => message.project === projectName)\n .filter((message) => queriedFolders.has(message.summary?.parentId))\n .forEach((message) => {\n const taskId = message.summary?.entityId\n if (!taskId || !cachedTaskIds.has(taskId)) return\n\n const field = message.topic?.split('.')[2]?.replace('_changed', '')\n const patch = getSupportedEntityPatch(\n field,\n message.summary,\n REALTIME_TASK_SUPPORTED_VALUE_FIELDS,\n )\n if (patch)\n patches.push({\n taskId,\n field: patch.field as SupportedTaskField,\n value: patch.value,\n })\n else batchIds.add(taskId)\n })\n\n if (patches.length) {\n updateCachedData((draft: EditorTaskNode[]) => {\n patches.forEach(({ taskId, field, value }) => {\n const task = draft.find((item) => item.id === taskId)\n if (!task) return\n Object.assign(task, { [field === 'type' ? 'taskType' : field]: value })\n })\n })\n }\n\n const idsToFetch = Array.from(batchIds)\n if (!idsToFetch.length || idsToFetch.length > REALTIME_REST_CALL_LIMIT) return\n\n try {\n await waitForRealtimeJitter()\n const res = await dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(\n {\n projectName,\n taskIds: idsToFetch,\n showComments: !!showComments,\n } as any,\n { forceRefetch: true },\n ),\n ).unwrap()\n const returned = res.tasks || []\n if (!isActive()) return\n const returnedMap = new Map(returned.map((t: EditorTaskNode) => [t.id, t]))\n\n updateCachedData((draft: EditorTaskNode[]) => {\n // update or add\n for (const task of returned) {\n const idx = draft.findIndex((t) => t.id === task.id)\n if (idx > -1) draft[idx] = task\n else draft.push(task)\n }\n // remove missing\n for (const id of idsToFetch) {\n if (!returnedMap.has(id)) {\n const idx = draft.findIndex((t) => t.id === id)\n if (idx > -1) draft.splice(idx, 1)\n }\n }\n })\n } catch (err) {\n console.error('Realtime overview batch update failed', err)\n }\n }\n const batcher = createRealtimeBatcher(\n batchProcessMessages,\n (message: any) =>\n `${message.project ?? projectName}:${message.summary?.entityId}:${message.topic}`,\n )\n let unsubscribeThumbnails: (() => void) | undefined\n try {\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: EditorTaskNode[]) => {\n messages.forEach((message) => {\n if (message.summary.entityType === 'task' && message.summary.thumbnailHash) {\n const idx = draft.findIndex((t) => t.id === message.summary.entityId)\n if (idx > -1) {\n draft[idx].thumbnailHash = message.summary.thumbnailHash\n }\n }\n })\n })\n },\n ['task'],\n )\n\n const handlePubSub = (_topic: string, message: any) => {\n const taskId = message?.summary?.entityId\n const parentId = message?.summary?.parentId\n if (!taskId || !parentId) return\n batcher.add({ ...message, topic: _topic })\n }\n\n // Subscribe to task entity updates\n // NOTE: backend emits topics like 'entity.task.assignees_changed'.\n // Assuming PubSub supports prefix matching when subscribing without the suffix.\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (e) {\n // cache entry removed before loaded - ignore\n }\n\n await cacheEntryRemoved\n batcher.clear()\n\n // Evict tracking map memory entry completely when this RTK Query cache entry expires\n const deadCacheKey = getCacheKey(projectName, filter, folderFilter, search, showComments)\n delete queriedFoldersRegistry[deadCacheKey]\n\n if (token) PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) unsubscribeThumbnails()\n },\n keepUnusedDataFor: CACHE_TIME,\n }),\n // searchFolders is a post so it's a bit annoying to consume\n // we wrap it in a queryFn to make it easier to consume as a query hook\n getSearchFolders: build.query<string[], SearchFoldersApiArg>({\n async queryFn({ projectName, folderSearchRequest }, { dispatch }) {\n try {\n const result = await dispatch(\n foldersApiEnhanced.endpoints.searchFolders.initiate({\n projectName,\n folderSearchRequest,\n }),\n )\n\n const data = result.data?.folderIds || []\n\n return { data }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n providesTags: (_r, _e, { projectName }) => [{ type: 'tasksFolder', id: projectName }],\n keepUnusedDataFor: CACHE_TIME,\n }),\n // Add new infinite query endpoint for tasks list\n getTasksListInfinite: build.infiniteQuery<\n GetTasksListResult,\n GetTasksListArgs,\n TasksListPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '', desc: false },\n // Calculate the next page param based on current page response and params\n getNextPageParam: (lastPage, _allPages, lastPageParam, _allPageParams) => {\n // Use the endCursor from the query as the next page param\n const pageInfo = lastPage.pageInfo\n const desc = lastPageParam.desc\n const hasNextPage = desc ? pageInfo.hasPreviousPage : pageInfo.hasNextPage\n\n if (!hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n desc: lastPageParam.desc,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const {\n projectName,\n filter,\n folderFilter,\n search,\n folderIds,\n taskIds,\n sortBy,\n desc,\n showComments,\n includeFolderChildren,\n } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetTasksList\n const queryParams: any = {\n projectName,\n filter,\n folderFilter,\n search,\n folderIds,\n taskIds,\n showComments: !!showComments,\n includeFolderChildren: includeFolderChildren !== false, // default to true\n }\n\n // Add cursor-based pagination\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.last = TASKS_INFINITE_QUERY_COUNT\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n\n // Call the existing GetTasksList endpoint\n const result = await api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n const fallback = {\n tasks: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n }\n\n // Return the tasks directly as required by the infinite query format\n return {\n data: result.data || fallback,\n }\n } catch (e: any) {\n console.error('Error in getTasksListInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.pages.flatMap((p) => p.tasks) || [], projectName),\n async onCacheEntryAdded(\n arg,\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch, getCacheEntry },\n ) {\n let token: any\n const batchProcessMessages: RealtimeBatchProcessor<any> = async (messages, isActive) => {\n const cachedTaskIds = new Set(\n (getCacheEntry().data?.pages || []).flatMap((page) =>\n page.tasks.map((task: EditorTaskNode) => task.id),\n ),\n )\n const batchIds = new Set<string>()\n const patches: {\n taskId: string\n field: SupportedTaskField\n value: string | string[]\n }[] = []\n\n messages\n .filter((message) => message.project === arg.projectName)\n .forEach((message) => {\n const taskId = message.summary?.entityId\n if (!taskId || !cachedTaskIds.has(taskId)) return\n\n const field = message.topic?.split('.')[2]?.replace('_changed', '')\n const patch = getSupportedEntityPatch(\n field,\n message.summary,\n REALTIME_TASK_SUPPORTED_VALUE_FIELDS,\n )\n if (patch)\n patches.push({\n taskId,\n field: patch.field as SupportedTaskField,\n value: patch.value,\n })\n else batchIds.add(taskId)\n })\n\n if (patches.length) {\n updateCachedData((draft: { pages: GetTasksListResult[]; pageParams: any[] }) => {\n patches.forEach(({ taskId, field, value }) => {\n for (const page of draft.pages) {\n const task = page.tasks.find((item) => item.id === taskId)\n if (!task) continue\n Object.assign(task, { [field === 'type' ? 'taskType' : field]: value })\n break\n }\n })\n })\n }\n\n const idsToFetch = Array.from(batchIds)\n if (!idsToFetch.length || idsToFetch.length > REALTIME_REST_CALL_LIMIT) return\n\n try {\n await waitForRealtimeJitter()\n const res = await dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(\n {\n projectName: arg.projectName,\n taskIds: idsToFetch,\n folderIds: arg.folderIds,\n showComments: !!arg.showComments,\n } as any,\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const returned = res.tasks || []\n if (!isActive()) return\n const returnedMap = new Map(returned.map((t: EditorTaskNode) => [t.id, t]))\n\n updateCachedData((draft: { pages: GetTasksListResult[]; pageParams: any[] }) => {\n // update/insert\n for (const task of returned) {\n let located = false\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === task.id)\n if (idx !== -1) {\n page.tasks[idx] = task\n located = true\n break\n }\n }\n if (!located) {\n if (draft.pages.length) draft.pages[0].tasks.unshift(task)\n else\n draft.pages.push({\n tasks: [task],\n pageInfo: {\n startCursor: null,\n endCursor: null,\n hasNextPage: false,\n hasPreviousPage: false,\n },\n })\n }\n }\n // remove any requested but missing tasks\n for (const id of idsToFetch) {\n if (returnedMap.has(id)) continue\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === id)\n if (idx !== -1) {\n page.tasks.splice(idx, 1)\n break\n }\n }\n }\n })\n } catch (err) {\n console.error('Realtime infinite tasks batch update failed', err)\n }\n }\n const batcher = createRealtimeBatcher(\n batchProcessMessages,\n (message: any) => `${message.project}:${message.summary?.entityId}:${message.topic}`,\n )\n let unsubscribeThumbnails: (() => void) | undefined\n try {\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: { pages: GetTasksListResult[]; pageParams: any[] }) => {\n messages.forEach((message) => {\n if (message.summary.entityType === 'task' && message.summary.thumbnailHash) {\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === message.summary.entityId)\n if (idx > -1) {\n page.tasks[idx].thumbnailHash = message.summary.thumbnailHash\n break\n }\n }\n }\n })\n })\n },\n ['task'],\n )\n\n const handlePubSub = (_topic: string, message: any) => {\n const taskId = message?.summary?.entityId\n if (!taskId) return\n batcher.add({ ...message, topic: _topic })\n }\n\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (_) {\n // ignore\n }\n await cacheEntryRemoved\n batcher.clear()\n if (token) PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) unsubscribeThumbnails()\n },\n keepUnusedDataFor: CACHE_TIME,\n }),\n getGroupedTasksList: build.query<GetGroupedTasksListResult, GetGroupedTasksListArgs>({\n queryFn: async (\n {\n projectName,\n groups,\n search,\n folderFilter,\n folderIds,\n desc,\n sortBy,\n groupCount,\n showComments,\n },\n api,\n ) => {\n try {\n let promises = []\n // Folder-level filter keys that must go in folderFilter, not task filter\n const folderFilterKeys = new Set(['folderType'])\n\n for (const group of groups) {\n // Determine count for this group - use argument override, else group count, else default\n const count = groupCount || group.count || 500\n\n // Separate folder-level conditions from task-level conditions in the group filter\n let taskFilter: string | undefined = group.filter\n let mergedFolderFilter = folderFilter\n if (group.filter) {\n try {\n const parsed = JSON.parse(group.filter)\n const conditions = parsed.conditions || []\n const taskConditions = conditions.filter((c: any) => !folderFilterKeys.has(c.key))\n const folderConditions = conditions.filter((c: any) => folderFilterKeys.has(c.key))\n\n if (folderConditions.length > 0) {\n taskFilter = taskConditions.length\n ? JSON.stringify({ ...parsed, conditions: taskConditions })\n : undefined\n // Merge folder conditions with existing folderFilter, preserving metadata\n const existingFolderFilter = folderFilter ? JSON.parse(folderFilter) : null\n const existingConditions =\n existingFolderFilter && Array.isArray(existingFolderFilter.conditions)\n ? existingFolderFilter.conditions\n : []\n const allFolderConditions = [...existingConditions, ...folderConditions]\n mergedFolderFilter = JSON.stringify(\n existingFolderFilter\n ? { ...existingFolderFilter, conditions: allFolderConditions }\n : { conditions: allFolderConditions },\n )\n }\n } catch {\n // If parsing fails, use the original filter as-is\n }\n }\n\n const queryParams: GetTasksListQueryVariables = {\n projectName,\n filter: taskFilter,\n folderFilter: mergedFolderFilter,\n search,\n folderIds,\n sortBy: sortBy,\n showComments: !!showComments,\n // @ts-expect-error - we know group does not exist on query variables but we need it for later\n group: group.value,\n }\n if (desc) {\n queryParams.last = count\n } else {\n queryParams.first = count\n }\n\n const promise = api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n promises.push(promise)\n }\n\n const result = await Promise.all(promises)\n const tasks: EditorTaskNode[] = []\n for (const res of result) {\n if (res.error) throw res.error\n // get group value\n // @ts-expect-error - we know group does exist on res.originalArgs from line 319\n const groupValue = res.originalArgs?.group as string\n\n const hasNextPage =\n res.data?.pageInfo?.hasNextPage || res.data?.pageInfo?.hasPreviousPage || false\n const groupTasks =\n res.data?.tasks.map((task, i, a) => ({\n ...task,\n groups: [\n {\n value: groupValue,\n hasNextPage: i === a.length - 1 && hasNextPage ? groupValue : undefined, // Only add hasNextPage to the last task in the group\n },\n ],\n })) || []\n\n tasks.push(...groupTasks)\n }\n\n // Return the tasks directly as required by the query format\n return {\n data: {\n tasks,\n },\n }\n } catch (error: any) {\n console.error('Error in getGroupedTasksList queryFn:', error)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks, projectName),\n keepUnusedDataFor: CACHE_TIME,\n }),\n }),\n})\n\nexport const {\n useGetOverviewTasksByFoldersQuery,\n useGetSearchFoldersQuery,\n useGetTasksListQuery,\n useGetTasksListInfiniteInfiniteQuery,\n useLazyGetTasksByParentQuery,\n useGetGroupedTasksListQuery,\n useGetFolderColumnStatsQuery,\n useGetTaskColumnStatsQuery,\n} = injectedApi\nexport default injectedApi\n"],"names":["CACHE_TIME","parseJSONField","allAttrib","parsed","parseAllAttribs","transformFilteredEntitiesByParent","response","tasks","taskNode","getOverviewTaskTags","result","projectName","parentIds","taskTags","task","parentTags","id","enhancedApi","gqlApi","res","_e","normalizeFieldStats","error","transformStatsError","_t","rest","cache","incoming","mergeFieldStats","currentArg","previousArg","hasNewTargetFields","_r","foldersApiEnhanced","foldersApi","TASKS_INFINITE_QUERY_COUNT","queriedFoldersRegistry","getCacheKey","filter","folderFilter","search","showComments","markFoldersAsQueried","cacheKey","folderIds","getQueriedFolders","injectedApi","build","dispatch","getState","forced","state","cacheArgs","cacheData","alreadyQueriedFolders","newFolderIds","allNewTasks","BATCH_SIZE","TASK_PER_FOLDER","MAX_PAGES_PER_BATCH","MAX_FOLDERS","TASKS_PER_PAGE","i","batchFolderIds","hasNextPage","cursor","pageCount","data","fetchedTasks","pageInfo","finalTasks","uniqueTasksMap","e","cacheDataLoaded","cacheEntryRemoved","updateCachedData","getCacheEntry","token","batcher","createRealtimeBatcher","messages","isActive","queriedFolders","cachedTaskIds","batchIds","patches","message","taskId","field","patch","getSupportedEntityPatch","REALTIME_TASK_SUPPORTED_VALUE_FIELDS","draft","value","item","idsToFetch","REALTIME_REST_CALL_LIMIT","waitForRealtimeJitter","returned","returnedMap","t","idx","err","unsubscribeThumbnails","subscribeToThumbnailUpdates","handlePubSub","_topic","parentId","PubSub","deadCacheKey","folderSearchRequest","lastPage","_allPages","lastPageParam","_allPageParams","queryArg","pageParam","api","taskIds","sortBy","desc","includeFolderChildren","queryParams","fallback","p","arg","page","located","groups","groupCount","promises","folderFilterKeys","group","count","taskFilter","mergedFolderFilter","conditions","taskConditions","folderConditions","existingFolderFilter","allFolderConditions","promise","groupValue","groupTasks","a","useGetOverviewTasksByFoldersQuery","useGetSearchFoldersQuery","useGetTasksListQuery","useGetTasksListInfiniteInfiniteQuery","useLazyGetTasksByParentQuery","useGetGroupedTasksListQuery","useGetFolderColumnStatsQuery","useGetTaskColumnStatsQuery"],"mappings":"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"}
1
+ {"version":3,"file":"getOverview.es.js","sources":["../../../../../../src/api/queries/overview/getOverview.ts"],"sourcesContent":["import {\n gqlApi,\n GetTasksByParentQuery,\n GetTasksListQuery,\n GetFolderColumnStatsQuery,\n GetTaskColumnStatsQuery,\n foldersApi,\n SearchFoldersApiArg,\n GetTasksListQueryVariables,\n} from '@shared/api/generated'\nimport PubSub from '@shared/util/pubsub'\nimport {\n createRealtimeBatcher,\n getSupportedEntityPatch,\n REALTIME_REST_CALL_LIMIT,\n REALTIME_TASK_SUPPORTED_VALUE_FIELDS,\n RealtimeBatchProcessor,\n subscribeToThumbnailUpdates,\n SupportedTaskField,\n ThumbnailUpdateMessage,\n waitForRealtimeJitter,\n} from '@shared/util'\nimport type { EditorTaskNode } from '@shared/containers/ProjectTreeTable/types/table'\nimport type { FieldStats } from '../columnStats'\nimport {\n normalizeFieldStats,\n mergeFieldStats,\n hasNewTargetFields,\n transformStatsError,\n} from '../columnStats'\nimport {\n DefinitionsFromApi,\n FetchBaseQueryError,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\n\nconst CACHE_TIME = 10 // seconds\n\n// parse attribs JSON string to object\nexport const parseJSONField = (allAttrib: string | null | undefined): Record<string, any> => {\n if (!allAttrib) return {}\n try {\n const parsed: unknown = JSON.parse(allAttrib)\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed)\n ? (parsed as Record<string, any>)\n : {}\n } catch (e) {\n return {}\n }\n}\n// backwards compatibility for old API\nexport const parseAllAttribs = parseJSONField\n\nconst transformFilteredEntitiesByParent = (response: GetTasksByParentQuery): EditorTaskNode[] => {\n if (!response.project) {\n return []\n }\n\n const tasks: EditorTaskNode[] = []\n for (const { node: taskNode } of response.project.tasks.edges) {\n tasks.push({\n ...taskNode,\n folderId: taskNode.folderId || 'root',\n attrib: parseJSONField(taskNode.allAttrib),\n data: parseJSONField(taskNode.data),\n entityId: taskNode.id,\n entityType: 'task',\n links: [],\n })\n }\n\n return tasks\n}\n\nconst getOverviewTaskTags = (\n result: EditorTaskNode[] | undefined = [],\n projectName: string,\n parentIds?: string | string[],\n) => {\n const taskTags = result?.map((task) => ({ type: 'overviewTask', id: task.id })) || []\n\n const parentTags = parentIds\n ? (Array.isArray(parentIds) ? parentIds : [parentIds]).map((id) => ({\n type: 'overviewTask',\n id,\n }))\n : []\n\n return [\n ...taskTags,\n ...parentTags,\n { type: 'overviewTask', id: projectName },\n { type: 'overviewTask', id: 'LIST' },\n ]\n}\n\nexport type GetTasksListResult = {\n pageInfo: GetTasksListQuery['project']['tasks']['pageInfo']\n tasks: EditorTaskNode[]\n}\nexport type GetTasksByParentResult = {\n pageInfo: GetTasksByParentQuery['project']['tasks']['pageInfo']\n tasks: EditorTaskNode[]\n}\n\nexport type GetTasksListArgs = {\n projectName: string\n filter?: string\n folderFilter?: string\n search?: string\n folderIds?: string[]\n taskIds?: string[]\n desc?: boolean\n sortBy?: string\n showComments?: boolean\n includeFolderChildren?: boolean\n}\n\nexport type GetGroupedTasksListResult = {\n tasks: EditorTaskNode[]\n}\n\nexport type GetGroupedTasksListArgs = {\n projectName: string\n groups: { filter: string; count: number; value: string }[]\n search?: string\n folderFilter?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n groupCount?: number // optional override for all groups\n showComments?: boolean\n}\n\n// Define the page param type for infinite query\ntype TasksListPageParam = {\n cursor: string\n desc?: boolean\n}\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\ntype UpdatedDefinitions = Omit<Definitions, 'GetFilteredEntities'> & {\n GetTasksByParent: OverrideResultType<Definitions['GetTasksByParent'], GetTasksByParentResult>\n GetTasksList: OverrideResultType<Definitions['GetTasksList'], GetTasksListResult>\n GetFolderColumnStats: OverrideResultType<Definitions['GetFolderColumnStats'], FieldStats[]>\n GetTaskColumnStats: OverrideResultType<Definitions['GetTaskColumnStats'], FieldStats[]>\n}\n\n// GRAPHQL API\nconst enhancedApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // This gets tasks for all parent folders provided\n // But in this case it will only ever receive one parent folder from the getOverviewTasksByFolders query\n // It is only used by getOverviewTasksByFolders in this file\n GetTasksByParent: {\n transformResponse: (res: GetTasksByParentQuery) => ({\n pageInfo: res?.project?.tasks?.pageInfo ?? { hasNextPage: false, endCursor: null },\n tasks: transformFilteredEntitiesByParent(res),\n }),\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result?.tasks || [], projectName, parentIds),\n keepUnusedDataFor: CACHE_TIME,\n },\n GetTasksList: {\n transformResponse: (result: GetTasksListQuery) => ({\n tasks: transformFilteredEntitiesByParent(result),\n pageInfo: result.project.tasks.pageInfo,\n }),\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks || [], projectName),\n keepUnusedDataFor: CACHE_TIME,\n },\n // footer stats: `targets` excluded from cache key + responses merged,\n // so column toggles reuse cache and only added targets refetch\n GetFolderColumnStats: {\n transformResponse: (res: GetFolderColumnStatsQuery) =>\n normalizeFieldStats(res?.project?.folders?.fieldStats ?? []),\n transformErrorResponse: (error: any) => transformStatsError(error, 'folder'),\n serializeQueryArgs: ({ queryArgs: { targets: _t, ...rest } }) => rest,\n merge: (cache, incoming) => mergeFieldStats(incoming, cache),\n forceRefetch: ({ currentArg, previousArg }) => hasNewTargetFields(currentArg, previousArg),\n providesTags: (_r, _e, { projectName }) => [{ type: 'folderColumnStats', id: projectName }],\n keepUnusedDataFor: CACHE_TIME,\n },\n GetTaskColumnStats: {\n transformResponse: (res: GetTaskColumnStatsQuery) =>\n normalizeFieldStats(res?.project?.tasks?.fieldStats ?? []),\n transformErrorResponse: (error: any) => transformStatsError(error, 'task'),\n serializeQueryArgs: ({ queryArgs: { targets: _t, ...rest } }) => rest,\n merge: (cache, incoming) => mergeFieldStats(incoming, cache),\n forceRefetch: ({ currentArg, previousArg }) => hasNewTargetFields(currentArg, previousArg),\n providesTags: (_r, _e, { projectName }) => [{ type: 'taskColumnStats', id: projectName }],\n keepUnusedDataFor: CACHE_TIME,\n },\n },\n})\n\n// REST FOLDERS API\nconst foldersApiEnhanced = foldersApi.enhanceEndpoints({\n endpoints: {\n searchFolders: {},\n },\n})\n\nexport const TASKS_INFINITE_QUERY_COUNT = 100 // Number of items to fetch per page\n\n// --- TRACKING REGISTRY FOR EMPTY FOLDERS (FILTER-AWARE) ---\nconst queriedFoldersRegistry: Record<string, Set<string>> = {}\n\nconst getCacheKey = (\n projectName: string,\n filter?: string,\n folderFilter?: string,\n search?: string,\n showComments?: boolean,\n) => {\n return JSON.stringify({ projectName, filter, folderFilter, search, showComments })\n}\n\nconst markFoldersAsQueried = (cacheKey: string, folderIds: string[]) => {\n if (!queriedFoldersRegistry[cacheKey]) {\n queriedFoldersRegistry[cacheKey] = new Set()\n }\n folderIds.forEach((id) => queriedFoldersRegistry[cacheKey].add(id))\n}\n\nconst getQueriedFolders = (cacheKey: string): Set<string> => {\n return queriedFoldersRegistry[cacheKey] || new Set()\n}\n\nconst injectedApi = enhancedApi.injectEndpoints({\n endpoints: (build) => ({\n // Each project has one cache for all the tasks of the expanded folders\n // Changing the expanded folders will trigger a refetch but not a new cache\n // Each expanded folder has it's own query that is looped over here\n // When new folders are expanded, the new tasks are fetched and we use the cache for the rest\n // This also solves the pagination issue of getting all tasks in one query, splitting it up in multiple queries to avoid pagination limits\n getOverviewTasksByFolders: build.query<\n EditorTaskNode[],\n {\n projectName: string\n parentIds: string[]\n filter?: string\n folderFilter?: string\n search?: string\n showComments?: boolean\n }\n >({\n async queryFn(\n { projectName, parentIds, filter, folderFilter, search, showComments },\n { dispatch, getState, forced },\n ) {\n try {\n const state = getState()\n const cacheArgs = { projectName, filter, folderFilter, search, showComments }\n\n // Select current flat cache state\n const currentCache = (injectedApi.endpoints as any).getOverviewTasksByFolders.select(\n cacheArgs,\n )(state)\n const cacheData: EditorTaskNode[] = currentCache?.data || []\n\n // 1. Generate a stable cache key matching RTK Query's serialization\n const cacheKey = getCacheKey(projectName, filter, folderFilter, search, showComments)\n\n // 2. Fetch our registry specific to THIS combination of search/filters\n const alreadyQueriedFolders = getQueriedFolders(cacheKey)\n\n // 3. Diffing: Only request folders that haven't hit the network under these specific filters\n // If forced, we ignore the registry and fetch all folders again, like a refresh\n const newFolderIds = forced\n ? parentIds\n : parentIds.filter((id) => !alreadyQueriedFolders.has(id))\n\n // Short-circuit if all expanded folders have been evaluated for this filter setup\n if (newFolderIds.length === 0) {\n return { data: cacheData }\n }\n\n const allNewTasks: EditorTaskNode[] = []\n const BATCH_SIZE = 100\n const TASK_PER_FOLDER = 20\n const MAX_PAGES_PER_BATCH = 10\n const MAX_FOLDERS = 1000\n const TASKS_PER_PAGE = BATCH_SIZE * TASK_PER_FOLDER\n\n if (newFolderIds.length > MAX_FOLDERS) {\n throw new Error(\n `Exceeded maximum folders count limit ${MAX_FOLDERS} (${newFolderIds.length}). Please reduce the number of expanded folders.`,\n )\n }\n\n // 5. Batch folder IDs into groups and process them sequentially\n for (let i = 0; i < newFolderIds.length; i += BATCH_SIZE) {\n const batchFolderIds = newFolderIds.slice(i, i + BATCH_SIZE)\n\n let hasNextPage = true\n let cursor: string | undefined = undefined\n let pageCount = 0\n\n while (hasNextPage && pageCount < MAX_PAGES_PER_BATCH) {\n pageCount++\n\n if (pageCount === MAX_PAGES_PER_BATCH) {\n throw new Error(\n `Exceeded maximum tasks count limit ${MAX_PAGES_PER_BATCH * TASKS_PER_PAGE}.`,\n )\n }\n\n const result = await dispatch(\n enhancedApi.endpoints.GetTasksByParent.initiate(\n {\n projectName,\n parentIds: batchFolderIds,\n filter,\n folderFilter,\n search,\n showComments: !!showComments,\n first: TASKS_PER_PAGE,\n after: cursor,\n },\n { forceRefetch: true },\n ),\n )\n\n if (result.error) throw result.error\n const data = result.data as GetTasksByParentResult\n\n const fetchedTasks = data?.tasks || []\n allNewTasks.push(...fetchedTasks)\n\n const pageInfo = data?.pageInfo\n hasNextPage = pageInfo?.hasNextPage || false\n cursor = pageInfo?.endCursor || undefined\n }\n }\n\n // 4. Only mark folders as queried if the network loops complete successfully\n markFoldersAsQueried(cacheKey, newFolderIds)\n\n // 5. Append new tasks to the existing flat array cache with task ID deduplication\n const finalTasks = [...cacheData, ...allNewTasks]\n const uniqueTasksMap = new Map(finalTasks.map((task) => [task.id, task]))\n\n return {\n data: Array.from(uniqueTasksMap.values()),\n }\n } catch (e: any) {\n console.error(e)\n const errorMessage =\n e.message || e.data?.message || JSON.stringify(e) || 'Unknown Fetch Error'\n return { error: { status: 'FETCH_ERROR', error: errorMessage } as FetchBaseQueryError }\n }\n },\n // keep one cache per project\n serializeQueryArgs: ({ queryArgs: { parentIds, ...rest } }) => ({\n ...rest,\n }),\n // Refetch when the page arg changes\n forceRefetch({ currentArg, previousArg }) {\n return JSON.stringify(currentArg) !== JSON.stringify(previousArg)\n },\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n async onCacheEntryAdded(\n { projectName, parentIds, filter, folderFilter, search, showComments },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch, getCacheEntry },\n ) {\n let token: any\n const batchProcessMessages: RealtimeBatchProcessor<any> = async (messages, isActive) => {\n const queriedFolders = getQueriedFolders(\n getCacheKey(projectName, filter, folderFilter, search, showComments),\n )\n const cachedTaskIds = new Set(\n (getCacheEntry().data as EditorTaskNode[] | undefined)?.map((task) => task.id) || [],\n )\n const batchIds = new Set<string>()\n const patches: {\n taskId: string\n field: SupportedTaskField\n value: string | string[]\n }[] = []\n\n messages\n .filter((message) => message.project === projectName)\n .filter((message) => queriedFolders.has(message.summary?.parentId))\n .forEach((message) => {\n const taskId = message.summary?.entityId\n if (!taskId || !cachedTaskIds.has(taskId)) return\n\n const field = message.topic?.split('.')[2]?.replace('_changed', '')\n const patch = getSupportedEntityPatch(\n field,\n message.summary,\n REALTIME_TASK_SUPPORTED_VALUE_FIELDS,\n )\n if (patch)\n patches.push({\n taskId,\n field: patch.field as SupportedTaskField,\n value: patch.value,\n })\n else batchIds.add(taskId)\n })\n\n if (patches.length) {\n updateCachedData((draft: EditorTaskNode[]) => {\n patches.forEach(({ taskId, field, value }) => {\n const task = draft.find((item) => item.id === taskId)\n if (!task) return\n Object.assign(task, { [field === 'type' ? 'taskType' : field]: value })\n })\n })\n }\n\n const idsToFetch = Array.from(batchIds)\n if (!idsToFetch.length || idsToFetch.length > REALTIME_REST_CALL_LIMIT) return\n\n try {\n await waitForRealtimeJitter()\n const res = await dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(\n {\n projectName,\n taskIds: idsToFetch,\n showComments: !!showComments,\n } as any,\n { forceRefetch: true },\n ),\n ).unwrap()\n const returned = res.tasks || []\n if (!isActive()) return\n const returnedMap = new Map(returned.map((t: EditorTaskNode) => [t.id, t]))\n\n updateCachedData((draft: EditorTaskNode[]) => {\n // update or add\n for (const task of returned) {\n const idx = draft.findIndex((t) => t.id === task.id)\n if (idx > -1) draft[idx] = task\n else draft.push(task)\n }\n // remove missing\n for (const id of idsToFetch) {\n if (!returnedMap.has(id)) {\n const idx = draft.findIndex((t) => t.id === id)\n if (idx > -1) draft.splice(idx, 1)\n }\n }\n })\n } catch (err) {\n console.error('Realtime overview batch update failed', err)\n }\n }\n const batcher = createRealtimeBatcher(\n batchProcessMessages,\n (message: any) =>\n `${message.project ?? projectName}:${message.summary?.entityId}:${message.topic}`,\n )\n let unsubscribeThumbnails: (() => void) | undefined\n try {\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: EditorTaskNode[]) => {\n messages.forEach((message) => {\n if (message.summary.entityType === 'task' && message.summary.thumbnailHash) {\n const idx = draft.findIndex((t) => t.id === message.summary.entityId)\n if (idx > -1) {\n draft[idx].thumbnailHash = message.summary.thumbnailHash\n }\n }\n })\n })\n },\n ['task'],\n )\n\n const handlePubSub = (_topic: string, message: any) => {\n const taskId = message?.summary?.entityId\n const parentId = message?.summary?.parentId\n if (!taskId || !parentId) return\n batcher.add({ ...message, topic: _topic })\n }\n\n // Subscribe to task entity updates\n // NOTE: backend emits topics like 'entity.task.assignees_changed'.\n // Assuming PubSub supports prefix matching when subscribing without the suffix.\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (e) {\n // cache entry removed before loaded - ignore\n }\n\n await cacheEntryRemoved\n batcher.clear()\n\n // Evict tracking map memory entry completely when this RTK Query cache entry expires\n const deadCacheKey = getCacheKey(projectName, filter, folderFilter, search, showComments)\n delete queriedFoldersRegistry[deadCacheKey]\n\n if (token) PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) unsubscribeThumbnails()\n },\n keepUnusedDataFor: CACHE_TIME,\n }),\n // searchFolders is a post so it's a bit annoying to consume\n // we wrap it in a queryFn to make it easier to consume as a query hook\n getSearchFolders: build.query<string[], SearchFoldersApiArg>({\n async queryFn({ projectName, folderSearchRequest }, { dispatch }) {\n try {\n const result = await dispatch(\n foldersApiEnhanced.endpoints.searchFolders.initiate({\n projectName,\n folderSearchRequest,\n }),\n )\n\n const data = result.data?.folderIds || []\n\n return { data }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n providesTags: (_r, _e, { projectName }) => [{ type: 'tasksFolder', id: projectName }],\n keepUnusedDataFor: CACHE_TIME,\n }),\n // Add new infinite query endpoint for tasks list\n getTasksListInfinite: build.infiniteQuery<\n GetTasksListResult,\n GetTasksListArgs,\n TasksListPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '', desc: false },\n // Calculate the next page param based on current page response and params\n getNextPageParam: (lastPage, _allPages, lastPageParam, _allPageParams) => {\n // Use the endCursor from the query as the next page param\n const pageInfo = lastPage.pageInfo\n const desc = lastPageParam.desc\n const hasNextPage = desc ? pageInfo.hasPreviousPage : pageInfo.hasNextPage\n\n if (!hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n desc: lastPageParam.desc,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const {\n projectName,\n filter,\n folderFilter,\n search,\n folderIds,\n taskIds,\n sortBy,\n desc,\n showComments,\n includeFolderChildren,\n } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetTasksList\n const queryParams: any = {\n projectName,\n filter,\n folderFilter,\n search,\n folderIds,\n taskIds,\n showComments: !!showComments,\n includeFolderChildren: includeFolderChildren !== false, // default to true\n }\n\n // Add cursor-based pagination\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.last = TASKS_INFINITE_QUERY_COUNT\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n\n // Call the existing GetTasksList endpoint\n const result = await api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n const fallback = {\n tasks: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n }\n\n // Return the tasks directly as required by the infinite query format\n return {\n data: result.data || fallback,\n }\n } catch (e: any) {\n console.error('Error in getTasksListInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.pages.flatMap((p) => p.tasks) || [], projectName),\n async onCacheEntryAdded(\n arg,\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch, getCacheEntry },\n ) {\n let token: any\n const batchProcessMessages: RealtimeBatchProcessor<any> = async (messages, isActive) => {\n const cachedTaskIds = new Set(\n (getCacheEntry().data?.pages || []).flatMap((page) =>\n page.tasks.map((task: EditorTaskNode) => task.id),\n ),\n )\n const batchIds = new Set<string>()\n const patches: {\n taskId: string\n field: SupportedTaskField\n value: string | string[]\n }[] = []\n\n messages\n .filter((message) => message.project === arg.projectName)\n .forEach((message) => {\n const taskId = message.summary?.entityId\n if (!taskId || !cachedTaskIds.has(taskId)) return\n\n const field = message.topic?.split('.')[2]?.replace('_changed', '')\n const patch = getSupportedEntityPatch(\n field,\n message.summary,\n REALTIME_TASK_SUPPORTED_VALUE_FIELDS,\n )\n if (patch)\n patches.push({\n taskId,\n field: patch.field as SupportedTaskField,\n value: patch.value,\n })\n else batchIds.add(taskId)\n })\n\n if (patches.length) {\n updateCachedData((draft: { pages: GetTasksListResult[]; pageParams: any[] }) => {\n patches.forEach(({ taskId, field, value }) => {\n for (const page of draft.pages) {\n const task = page.tasks.find((item) => item.id === taskId)\n if (!task) continue\n Object.assign(task, { [field === 'type' ? 'taskType' : field]: value })\n break\n }\n })\n })\n }\n\n const idsToFetch = Array.from(batchIds)\n if (!idsToFetch.length || idsToFetch.length > REALTIME_REST_CALL_LIMIT) return\n\n try {\n await waitForRealtimeJitter()\n const res = await dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(\n {\n projectName: arg.projectName,\n taskIds: idsToFetch,\n folderIds: arg.folderIds,\n showComments: !!arg.showComments,\n } as any,\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const returned = res.tasks || []\n if (!isActive()) return\n const returnedMap = new Map(returned.map((t: EditorTaskNode) => [t.id, t]))\n\n updateCachedData((draft: { pages: GetTasksListResult[]; pageParams: any[] }) => {\n // update/insert\n for (const task of returned) {\n let located = false\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === task.id)\n if (idx !== -1) {\n page.tasks[idx] = task\n located = true\n break\n }\n }\n if (!located) {\n if (draft.pages.length) draft.pages[0].tasks.unshift(task)\n else\n draft.pages.push({\n tasks: [task],\n pageInfo: {\n startCursor: null,\n endCursor: null,\n hasNextPage: false,\n hasPreviousPage: false,\n },\n })\n }\n }\n // remove any requested but missing tasks\n for (const id of idsToFetch) {\n if (returnedMap.has(id)) continue\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === id)\n if (idx !== -1) {\n page.tasks.splice(idx, 1)\n break\n }\n }\n }\n })\n } catch (err) {\n console.error('Realtime infinite tasks batch update failed', err)\n }\n }\n const batcher = createRealtimeBatcher(\n batchProcessMessages,\n (message: any) => `${message.project}:${message.summary?.entityId}:${message.topic}`,\n )\n let unsubscribeThumbnails: (() => void) | undefined\n try {\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: { pages: GetTasksListResult[]; pageParams: any[] }) => {\n messages.forEach((message) => {\n if (message.summary.entityType === 'task' && message.summary.thumbnailHash) {\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === message.summary.entityId)\n if (idx > -1) {\n page.tasks[idx].thumbnailHash = message.summary.thumbnailHash\n break\n }\n }\n }\n })\n })\n },\n ['task'],\n )\n\n const handlePubSub = (_topic: string, message: any) => {\n const taskId = message?.summary?.entityId\n if (!taskId) return\n batcher.add({ ...message, topic: _topic })\n }\n\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (_) {\n // ignore\n }\n await cacheEntryRemoved\n batcher.clear()\n if (token) PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) unsubscribeThumbnails()\n },\n keepUnusedDataFor: CACHE_TIME,\n }),\n getGroupedTasksList: build.query<GetGroupedTasksListResult, GetGroupedTasksListArgs>({\n queryFn: async (\n {\n projectName,\n groups,\n search,\n folderFilter,\n folderIds,\n desc,\n sortBy,\n groupCount,\n showComments,\n },\n api,\n ) => {\n try {\n let promises = []\n // Folder-level filter keys that must go in folderFilter, not task filter\n const folderFilterKeys = new Set(['folderType'])\n\n for (const group of groups) {\n // Determine count for this group - use argument override, else group count, else default\n const count = groupCount || group.count || 500\n\n // Separate folder-level conditions from task-level conditions in the group filter\n let taskFilter: string | undefined = group.filter\n let mergedFolderFilter = folderFilter\n if (group.filter) {\n try {\n const parsed = JSON.parse(group.filter)\n const conditions = parsed.conditions || []\n const taskConditions = conditions.filter((c: any) => !folderFilterKeys.has(c.key))\n const folderConditions = conditions.filter((c: any) => folderFilterKeys.has(c.key))\n\n if (folderConditions.length > 0) {\n taskFilter = taskConditions.length\n ? JSON.stringify({ ...parsed, conditions: taskConditions })\n : undefined\n // Merge folder conditions with existing folderFilter, preserving metadata\n const existingFolderFilter = folderFilter ? JSON.parse(folderFilter) : null\n const existingConditions =\n existingFolderFilter && Array.isArray(existingFolderFilter.conditions)\n ? existingFolderFilter.conditions\n : []\n const allFolderConditions = [...existingConditions, ...folderConditions]\n mergedFolderFilter = JSON.stringify(\n existingFolderFilter\n ? { ...existingFolderFilter, conditions: allFolderConditions }\n : { conditions: allFolderConditions },\n )\n }\n } catch {\n // If parsing fails, use the original filter as-is\n }\n }\n\n const queryParams: GetTasksListQueryVariables = {\n projectName,\n filter: taskFilter,\n folderFilter: mergedFolderFilter,\n search,\n folderIds,\n sortBy: sortBy,\n showComments: !!showComments,\n // @ts-expect-error - we know group does not exist on query variables but we need it for later\n group: group.value,\n }\n if (desc) {\n queryParams.last = count\n } else {\n queryParams.first = count\n }\n\n const promise = api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n promises.push(promise)\n }\n\n const result = await Promise.all(promises)\n const tasks: EditorTaskNode[] = []\n for (const res of result) {\n if (res.error) throw res.error\n // get group value\n // @ts-expect-error - we know group does exist on res.originalArgs from line 319\n const groupValue = res.originalArgs?.group as string\n\n const hasNextPage =\n res.data?.pageInfo?.hasNextPage || res.data?.pageInfo?.hasPreviousPage || false\n const groupTasks =\n res.data?.tasks.map((task, i, a) => ({\n ...task,\n groups: [\n {\n value: groupValue,\n hasNextPage: i === a.length - 1 && hasNextPage ? groupValue : undefined, // Only add hasNextPage to the last task in the group\n },\n ],\n })) || []\n\n tasks.push(...groupTasks)\n }\n\n // Return the tasks directly as required by the query format\n return {\n data: {\n tasks,\n },\n }\n } catch (error: any) {\n console.error('Error in getGroupedTasksList queryFn:', error)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks, projectName),\n keepUnusedDataFor: CACHE_TIME,\n }),\n }),\n})\n\nexport const {\n useGetOverviewTasksByFoldersQuery,\n useGetSearchFoldersQuery,\n useGetTasksListQuery,\n useGetTasksListInfiniteInfiniteQuery,\n useLazyGetTasksByParentQuery,\n useGetGroupedTasksListQuery,\n useGetFolderColumnStatsQuery,\n useGetTaskColumnStatsQuery,\n} = injectedApi\nexport default injectedApi\n"],"names":["CACHE_TIME","parseJSONField","allAttrib","parsed","parseAllAttribs","transformFilteredEntitiesByParent","response","tasks","taskNode","getOverviewTaskTags","result","projectName","parentIds","taskTags","task","parentTags","id","enhancedApi","gqlApi","res","_e","normalizeFieldStats","error","transformStatsError","_t","rest","cache","incoming","mergeFieldStats","currentArg","previousArg","hasNewTargetFields","_r","foldersApiEnhanced","foldersApi","TASKS_INFINITE_QUERY_COUNT","queriedFoldersRegistry","getCacheKey","filter","folderFilter","search","showComments","markFoldersAsQueried","cacheKey","folderIds","getQueriedFolders","injectedApi","build","dispatch","getState","forced","state","cacheArgs","cacheData","alreadyQueriedFolders","newFolderIds","allNewTasks","BATCH_SIZE","TASK_PER_FOLDER","MAX_PAGES_PER_BATCH","MAX_FOLDERS","TASKS_PER_PAGE","i","batchFolderIds","hasNextPage","cursor","pageCount","data","fetchedTasks","pageInfo","finalTasks","uniqueTasksMap","e","cacheDataLoaded","cacheEntryRemoved","updateCachedData","getCacheEntry","token","batcher","createRealtimeBatcher","messages","isActive","queriedFolders","cachedTaskIds","batchIds","patches","message","taskId","field","patch","getSupportedEntityPatch","REALTIME_TASK_SUPPORTED_VALUE_FIELDS","draft","value","item","idsToFetch","REALTIME_REST_CALL_LIMIT","waitForRealtimeJitter","returned","returnedMap","t","idx","err","unsubscribeThumbnails","subscribeToThumbnailUpdates","handlePubSub","_topic","parentId","PubSub","deadCacheKey","folderSearchRequest","lastPage","_allPages","lastPageParam","_allPageParams","queryArg","pageParam","api","taskIds","sortBy","desc","includeFolderChildren","queryParams","fallback","p","arg","page","located","groups","groupCount","promises","folderFilterKeys","group","count","taskFilter","mergedFolderFilter","conditions","taskConditions","folderConditions","existingFolderFilter","allFolderConditions","promise","groupValue","groupTasks","a","useGetOverviewTasksByFoldersQuery","useGetSearchFoldersQuery","useGetTasksListQuery","useGetTasksListInfiniteInfiniteQuery","useLazyGetTasksByParentQuery","useGetGroupedTasksListQuery","useGetFolderColumnStatsQuery","useGetTaskColumnStatsQuery"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCA,MAAMA,IAAa,IAGNC,IAAiB,CAACC,MAA8D;AAC3F,MAAI,CAACA,EAAW,QAAO,CAAA;AACvB,MAAI;AACF,UAAMC,IAAkB,KAAK,MAAMD,CAAS;AAC5C,WAAOC,KAAU,OAAOA,KAAW,YAAY,CAAC,MAAM,QAAQA,CAAM,IAC/DA,IACD,CAAA;AAAA,EACN,QAAY;AACV,WAAO,CAAA;AAAA,EACT;AACF,GAEaC,KAAkBH,GAEzBI,IAAoC,CAACC,MAAsD;AAC/F,MAAI,CAACA,EAAS;AACZ,WAAO,CAAA;AAGT,QAAMC,IAA0B,CAAA;AAChC,aAAW,EAAE,MAAMC,EAAA,KAAcF,EAAS,QAAQ,MAAM;AACtD,IAAAC,EAAM,KAAK;AAAA,MACT,GAAGC;AAAA,MACH,UAAUA,EAAS,YAAY;AAAA,MAC/B,QAAQP,EAAeO,EAAS,SAAS;AAAA,MACzC,MAAMP,EAAeO,EAAS,IAAI;AAAA,MAClC,UAAUA,EAAS;AAAA,MACnB,YAAY;AAAA,MACZ,OAAO,CAAA;AAAA,IAAC,CACT;AAGH,SAAOD;AACT,GAEME,IAAsB,CAC1BC,IAAuC,IACvCC,GACAC,MACG;AACH,QAAMC,IAAWH,GAAQ,IAAI,CAACI,OAAU,EAAE,MAAM,gBAAgB,IAAIA,EAAK,GAAA,EAAK,KAAK,CAAA,GAE7EC,IAAaH,KACd,MAAM,QAAQA,CAAS,IAAIA,IAAY,CAACA,CAAS,GAAG,IAAI,CAACI,OAAQ;AAAA,IAChE,MAAM;AAAA,IACN,IAAAA;AAAA,EAAA,EACA,IACF,CAAA;AAEJ,SAAO;AAAA,IACL,GAAGH;AAAA,IACH,GAAGE;AAAA,IACH,EAAE,MAAM,gBAAgB,IAAIJ,EAAA;AAAA,IAC5B,EAAE,MAAM,gBAAgB,IAAI,OAAA;AAAA,EAAO;AAEvC,GAwDMM,IAAcC,GAAO,iBAA+C;AAAA,EACxE,WAAW;AAAA;AAAA;AAAA;AAAA,IAIT,kBAAkB;AAAA,MAChB,mBAAmB,CAACC,OAAgC;AAAA,QAClD,UAAUA,GAAK,SAAS,OAAO,YAAY,EAAE,aAAa,IAAO,WAAW,KAAA;AAAA,QAC5E,OAAOd,EAAkCc,CAAG;AAAA,MAAA;AAAA,MAE9C,cAAc,CAACT,GAAQU,GAAI,EAAE,WAAAR,GAAW,aAAAD,EAAA,MACtCF,EAAoBC,GAAQ,SAAS,IAAIC,GAAaC,CAAS;AAAA,MACjE,mBAAmBZ;AAAA,IAAA;AAAA,IAErB,cAAc;AAAA,MACZ,mBAAmB,CAACU,OAA+B;AAAA,QACjD,OAAOL,EAAkCK,CAAM;AAAA,QAC/C,UAAUA,EAAO,QAAQ,MAAM;AAAA,MAAA;AAAA,MAEjC,cAAc,CAACA,GAAQU,GAAI,EAAE,aAAAT,EAAA,MAC3BF,EAAoBC,GAAQ,SAAS,CAAA,GAAIC,CAAW;AAAA,MACtD,mBAAmBX;AAAA,IAAA;AAAA;AAAA;AAAA,IAIrB,sBAAsB;AAAA,MACpB,mBAAmB,CAACmB,MAClBE,EAAoBF,GAAK,SAAS,SAAS,cAAc,EAAE;AAAA,MAC7D,wBAAwB,CAACG,MAAeC,EAAoBD,GAAO,QAAQ;AAAA,MAC3E,oBAAoB,CAAC,EAAE,WAAW,EAAE,SAASE,GAAI,GAAGC,EAAA,EAAK,MAAQA;AAAA,MACjE,OAAO,CAACC,GAAOC,MAAaC,EAAgBD,GAAUD,CAAK;AAAA,MAC3D,cAAc,CAAC,EAAE,YAAAG,GAAY,aAAAC,QAAkBC,EAAmBF,GAAYC,CAAW;AAAA,MACzF,cAAc,CAACE,GAAIZ,GAAI,EAAE,aAAAT,EAAA,MAAkB,CAAC,EAAE,MAAM,qBAAqB,IAAIA,GAAa;AAAA,MAC1F,mBAAmBX;AAAA,IAAA;AAAA,IAErB,oBAAoB;AAAA,MAClB,mBAAmB,CAACmB,MAClBE,EAAoBF,GAAK,SAAS,OAAO,cAAc,EAAE;AAAA,MAC3D,wBAAwB,CAACG,MAAeC,EAAoBD,GAAO,MAAM;AAAA,MACzE,oBAAoB,CAAC,EAAE,WAAW,EAAE,SAASE,GAAI,GAAGC,EAAA,EAAK,MAAQA;AAAA,MACjE,OAAO,CAACC,GAAOC,MAAaC,EAAgBD,GAAUD,CAAK;AAAA,MAC3D,cAAc,CAAC,EAAE,YAAAG,GAAY,aAAAC,QAAkBC,EAAmBF,GAAYC,CAAW;AAAA,MACzF,cAAc,CAACE,GAAIZ,GAAI,EAAE,aAAAT,EAAA,MAAkB,CAAC,EAAE,MAAM,mBAAmB,IAAIA,GAAa;AAAA,MACxF,mBAAmBX;AAAA,IAAA;AAAA,EACrB;AAEJ,CAAC,GAGKiC,KAAqBC,GAAW,iBAAiB;AAAA,EACrD,WAAW;AAAA,IACT,eAAe,CAAA;AAAA,EAAC;AAEpB,CAAC,GAEYC,IAA6B,KAGpCC,IAAsD,CAAA,GAEtDC,IAAc,CAClB1B,GACA2B,GACAC,GACAC,GACAC,MAEO,KAAK,UAAU,EAAE,aAAA9B,GAAa,QAAA2B,GAAQ,cAAAC,GAAc,QAAAC,GAAQ,cAAAC,GAAc,GAG7EC,KAAuB,CAACC,GAAkBC,MAAwB;AACtE,EAAKR,EAAuBO,CAAQ,MAClCP,EAAuBO,CAAQ,IAAI,oBAAI,IAAA,IAEzCC,EAAU,QAAQ,CAAC5B,MAAOoB,EAAuBO,CAAQ,EAAE,IAAI3B,CAAE,CAAC;AACpE,GAEM6B,IAAoB,CAACF,MAClBP,EAAuBO,CAAQ,KAAK,oBAAI,IAAA,GAG3CG,IAAc7B,EAAY,gBAAgB;AAAA,EAC9C,WAAW,CAAC8B,OAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMrB,2BAA2BA,EAAM,MAU/B;AAAA,MACA,MAAM,QACJ,EAAE,aAAApC,GAAa,WAAAC,GAAW,QAAA0B,GAAQ,cAAAC,GAAc,QAAAC,GAAQ,cAAAC,EAAA,GACxD,EAAE,UAAAO,GAAU,UAAAC,GAAU,QAAAC,KACtB;AACA,YAAI;AACF,gBAAMC,IAAQF,EAAA,GACRG,IAAY,EAAE,aAAAzC,GAAa,QAAA2B,GAAQ,cAAAC,GAAc,QAAAC,GAAQ,cAAAC,EAAA,GAMzDY,IAHgBP,EAAY,UAAkB,0BAA0B;AAAA,YAC5EM;AAAA,UAAA,EACAD,CAAK,GAC2C,QAAQ,CAAA,GAGpDR,IAAWN,EAAY1B,GAAa2B,GAAQC,GAAcC,GAAQC,CAAY,GAG9Ea,IAAwBT,EAAkBF,CAAQ,GAIlDY,IAAeL,IACjBtC,IACAA,EAAU,OAAO,CAACI,MAAO,CAACsC,EAAsB,IAAItC,CAAE,CAAC;AAG3D,cAAIuC,EAAa,WAAW;AAC1B,mBAAO,EAAE,MAAMF,EAAA;AAGjB,gBAAMG,IAAgC,CAAA,GAChCC,IAAa,KACbC,IAAkB,IAClBC,IAAsB,IACtBC,IAAc,KACdC,IAAiBJ,IAAaC;AAEpC,cAAIH,EAAa,SAASK;AACxB,kBAAM,IAAI;AAAA,cACR,wCAAwCA,CAAW,KAAKL,EAAa,MAAM;AAAA,YAAA;AAK/E,mBAASO,IAAI,GAAGA,IAAIP,EAAa,QAAQO,KAAKL,GAAY;AACxD,kBAAMM,IAAiBR,EAAa,MAAMO,GAAGA,IAAIL,CAAU;AAE3D,gBAAIO,IAAc,IACdC,GACAC,IAAY;AAEhB,mBAAOF,KAAeE,IAAYP,KAAqB;AAGrD,kBAFAO,KAEIA,MAAcP;AAChB,sBAAM,IAAI;AAAA,kBACR,sCAAsCA,IAAsBE,CAAc;AAAA,gBAAA;AAI9E,oBAAMnD,IAAS,MAAMsC;AAAA,gBACnB/B,EAAY,UAAU,iBAAiB;AAAA,kBACrC;AAAA,oBACE,aAAAN;AAAA,oBACA,WAAWoD;AAAA,oBACX,QAAAzB;AAAA,oBACA,cAAAC;AAAA,oBACA,QAAAC;AAAA,oBACA,cAAc,CAAC,CAACC;AAAA,oBAChB,OAAOoB;AAAA,oBACP,OAAOI;AAAA,kBAAA;AAAA,kBAET,EAAE,cAAc,GAAA;AAAA,gBAAK;AAAA,cACvB;AAGF,kBAAIvD,EAAO,MAAO,OAAMA,EAAO;AAC/B,oBAAMyD,IAAOzD,EAAO,MAEd0D,KAAeD,GAAM,SAAS,CAAA;AACpC,cAAAX,EAAY,KAAK,GAAGY,EAAY;AAEhC,oBAAMC,IAAWF,GAAM;AACvB,cAAAH,IAAcK,GAAU,eAAe,IACvCJ,IAASI,GAAU,aAAa;AAAA,YAClC;AAAA,UACF;AAGA,UAAA3B,GAAqBC,GAAUY,CAAY;AAG3C,gBAAMe,IAAa,CAAC,GAAGjB,GAAW,GAAGG,CAAW,GAC1Ce,IAAiB,IAAI,IAAID,EAAW,IAAI,CAACxD,MAAS,CAACA,EAAK,IAAIA,CAAI,CAAC,CAAC;AAExE,iBAAO;AAAA,YACL,MAAM,MAAM,KAAKyD,EAAe,QAAQ;AAAA,UAAA;AAAA,QAE5C,SAASC,GAAQ;AACf,yBAAQ,MAAMA,CAAC,GAGR,EAAE,OAAO,EAAE,QAAQ,eAAe,OADvCA,EAAE,WAAWA,EAAE,MAAM,WAAW,KAAK,UAAUA,CAAC,KAAK,wBACM;AAAA,QAC/D;AAAA,MACF;AAAA;AAAA,MAEA,oBAAoB,CAAC,EAAE,WAAW,EAAE,WAAA5D,GAAW,GAAGa,EAAA,SAAc;AAAA,QAC9D,GAAGA;AAAA,MAAA;AAAA;AAAA,MAGL,aAAa,EAAE,YAAAI,GAAY,aAAAC,KAAe;AACxC,eAAO,KAAK,UAAUD,CAAU,MAAM,KAAK,UAAUC,CAAW;AAAA,MAClE;AAAA,MACA,cAAc,CAACpB,GAAQU,GAAI,EAAE,WAAAR,GAAW,aAAAD,EAAA,MACtCF,EAAoBC,GAAQC,GAAaC,CAAS;AAAA,MACpD,MAAM,kBACJ,EAAE,aAAAD,GAAa,WAAAC,GAAW,QAAA0B,GAAQ,cAAAC,GAAc,QAAAC,GAAQ,cAAAC,EAAA,GACxD,EAAE,iBAAAgC,GAAiB,mBAAAC,GAAmB,kBAAAC,GAAkB,UAAA3B,GAAU,eAAA4B,KAClE;AACA,YAAIC;AAqFJ,cAAMC,IAAUC;AAAA,UApF0C,OAAOC,GAAUC,MAAa;AACtF,kBAAMC,IAAiBrC;AAAA,cACrBR,EAAY1B,GAAa2B,GAAQC,GAAcC,GAAQC,CAAY;AAAA,YAAA,GAE/D0C,IAAgB,IAAI;AAAA,cACvBP,EAAA,EAAgB,MAAuC,IAAI,CAAC9D,MAASA,EAAK,EAAE,KAAK,CAAA;AAAA,YAAC,GAE/EsE,wBAAe,IAAA,GACfC,IAIA,CAAA;AAEN,YAAAL,EACG,OAAO,CAACM,MAAYA,EAAQ,YAAY3E,CAAW,EACnD,OAAO,CAAC2E,MAAYJ,EAAe,IAAII,EAAQ,SAAS,QAAQ,CAAC,EACjE,QAAQ,CAACA,MAAY;AACpB,oBAAMC,IAASD,EAAQ,SAAS;AAChC,kBAAI,CAACC,KAAU,CAACJ,EAAc,IAAII,CAAM,EAAG;AAE3C,oBAAMC,IAAQF,EAAQ,OAAO,MAAM,GAAG,EAAE,CAAC,GAAG,QAAQ,YAAY,EAAE,GAC5DG,IAAQC;AAAA,gBACZF;AAAA,gBACAF,EAAQ;AAAA,gBACRK;AAAA,cAAA;AAEF,cAAIF,IACFJ,EAAQ,KAAK;AAAA,gBACX,QAAAE;AAAA,gBACA,OAAOE,EAAM;AAAA,gBACb,OAAOA,EAAM;AAAA,cAAA,CACd,IACEL,EAAS,IAAIG,CAAM;AAAA,YAC1B,CAAC,GAECF,EAAQ,UACVV,EAAiB,CAACiB,MAA4B;AAC5C,cAAAP,EAAQ,QAAQ,CAAC,EAAE,QAAAE,GAAQ,OAAAC,GAAO,OAAAK,QAAY;AAC5C,sBAAM/E,IAAO8E,EAAM,KAAK,CAACE,MAASA,EAAK,OAAOP,CAAM;AACpD,gBAAKzE,KACL,OAAO,OAAOA,GAAM,EAAE,CAAC0E,MAAU,SAAS,aAAaA,CAAK,GAAGK,GAAO;AAAA,cACxE,CAAC;AAAA,YACH,CAAC;AAGH,kBAAME,IAAa,MAAM,KAAKX,CAAQ;AACtC,gBAAI,GAACW,EAAW,UAAUA,EAAW,SAASC;AAE9C,kBAAI;AACF,sBAAMC,EAAA;AAWN,sBAAMC,KAVM,MAAMlD;AAAA,kBAChB/B,EAAY,UAAU,aAAa;AAAA,oBACjC;AAAA,sBACE,aAAAN;AAAA,sBACA,SAASoF;AAAA,sBACT,cAAc,CAAC,CAACtD;AAAA,oBAAA;AAAA,oBAElB,EAAE,cAAc,GAAA;AAAA,kBAAK;AAAA,gBACvB,EACA,OAAA,GACmB,SAAS,CAAA;AAC9B,oBAAI,CAACwC,IAAY;AACjB,sBAAMkB,IAAc,IAAI,IAAID,EAAS,IAAI,CAACE,MAAsB,CAACA,EAAE,IAAIA,CAAC,CAAC,CAAC;AAE1E,gBAAAzB,EAAiB,CAACiB,MAA4B;AAE5C,6BAAW9E,KAAQoF,GAAU;AAC3B,0BAAMG,IAAMT,EAAM,UAAU,CAACQ,MAAMA,EAAE,OAAOtF,EAAK,EAAE;AACnD,oBAAIuF,IAAM,KAAIT,EAAMS,CAAG,IAAIvF,IACtB8E,EAAM,KAAK9E,CAAI;AAAA,kBACtB;AAEA,6BAAWE,KAAM+E;AACf,wBAAI,CAACI,EAAY,IAAInF,CAAE,GAAG;AACxB,4BAAMqF,IAAMT,EAAM,UAAU,CAACQ,MAAMA,EAAE,OAAOpF,CAAE;AAC9C,sBAAIqF,IAAM,MAAIT,EAAM,OAAOS,GAAK,CAAC;AAAA,oBACnC;AAAA,gBAEJ,CAAC;AAAA,cACH,SAASC,GAAK;AACZ,wBAAQ,MAAM,yCAAyCA,CAAG;AAAA,cAC5D;AAAA,UACF;AAAA,UAGE,CAAChB,MACC,GAAGA,EAAQ,WAAW3E,CAAW,IAAI2E,EAAQ,SAAS,QAAQ,IAAIA,EAAQ,KAAK;AAAA,QAAA;AAEnF,YAAIiB;AACJ,YAAI;AACF,gBAAM9B,GAEN8B,IAAwBC;AAAA,YACtB,CAACxB,MAAuC;AACtC,cAAAL,EAAiB,CAACiB,MAA4B;AAC5C,gBAAAZ,EAAS,QAAQ,CAACM,MAAY;AAC5B,sBAAIA,EAAQ,QAAQ,eAAe,UAAUA,EAAQ,QAAQ,eAAe;AAC1E,0BAAMe,IAAMT,EAAM,UAAU,CAACQ,MAAMA,EAAE,OAAOd,EAAQ,QAAQ,QAAQ;AACpE,oBAAIe,IAAM,OACRT,EAAMS,CAAG,EAAE,gBAAgBf,EAAQ,QAAQ;AAAA,kBAE/C;AAAA,gBACF,CAAC;AAAA,cACH,CAAC;AAAA,YACH;AAAA,YACA,CAAC,MAAM;AAAA,UAAA;AAGT,gBAAMmB,IAAe,CAACC,GAAgBpB,MAAiB;AACrD,kBAAMC,IAASD,GAAS,SAAS,UAC3BqB,IAAWrB,GAAS,SAAS;AACnC,YAAI,CAACC,KAAU,CAACoB,KAChB7B,EAAQ,IAAI,EAAE,GAAGQ,GAAS,OAAOoB,GAAQ;AAAA,UAC3C;AAKA,UAAA7B,IAAQ+B,EAAO,UAAU,eAAeH,CAAY;AAAA,QACtD,QAAY;AAAA,QAEZ;AAEA,cAAM/B,GACNI,EAAQ,MAAA;AAGR,cAAM+B,IAAexE,EAAY1B,GAAa2B,GAAQC,GAAcC,GAAQC,CAAY;AACxF,eAAOL,EAAuByE,CAAY,GAEtChC,KAAO+B,EAAO,YAAY/B,CAAK,GAC/B0B,KAAuBA,EAAA;AAAA,MAC7B;AAAA,MACA,mBAAmBvG;AAAA,IAAA,CACpB;AAAA;AAAA;AAAA,IAGD,kBAAkB+C,EAAM,MAAqC;AAAA,MAC3D,MAAM,QAAQ,EAAE,aAAApC,GAAa,qBAAAmG,KAAuB,EAAE,UAAA9D,KAAY;AAChE,YAAI;AAUF,iBAAO,EAAE,OATM,MAAMA;AAAA,YACnBf,GAAmB,UAAU,cAAc,SAAS;AAAA,cAClD,aAAAtB;AAAA,cACA,qBAAAmG;AAAA,YAAA,CACD;AAAA,UAAA,GAGiB,MAAM,aAAa,CAAA,EAE9B;AAAA,QACX,SAAStC,GAAQ;AACf,yBAAQ,MAAMA,CAAC,GAER,EAAE,OADK,EAAE,QAAQ,eAAe,OAAOA,EAAE,QAAA,EACvC;AAAA,QACX;AAAA,MACF;AAAA,MACA,cAAc,CAACxC,GAAIZ,GAAI,EAAE,aAAAT,EAAA,MAAkB,CAAC,EAAE,MAAM,eAAe,IAAIA,GAAa;AAAA,MACpF,mBAAmBX;AAAA,IAAA,CACpB;AAAA;AAAA,IAED,sBAAsB+C,EAAM,cAI1B;AAAA,MACA,sBAAsB;AAAA,QACpB,kBAAkB,EAAE,QAAQ,IAAI,MAAM,GAAA;AAAA;AAAA,QAEtC,kBAAkB,CAACgE,GAAUC,GAAWC,GAAeC,MAAmB;AAExE,gBAAM7C,IAAW0C,EAAS;AAI1B,cAAI,IAHSE,EAAc,OACA5C,EAAS,kBAAkBA,EAAS,gBAE3C,CAACA,EAAS;AAE9B,mBAAO;AAAA,cACL,QAAQA,EAAS;AAAA,cACjB,MAAM4C,EAAc;AAAA,YAAA;AAAA,QAExB;AAAA,MAAA;AAAA,MAEF,SAAS,OAAO,EAAE,UAAAE,GAAU,WAAAC,EAAA,GAAaC,MAAQ;AAC/C,YAAI;AACF,gBAAM;AAAA,YACJ,aAAA1G;AAAA,YACA,QAAA2B;AAAA,YACA,cAAAC;AAAA,YACA,QAAAC;AAAA,YACA,WAAAI;AAAA,YACA,SAAA0E;AAAA,YACA,QAAAC;AAAA,YACA,MAAAC;AAAA,YACA,cAAA/E;AAAA,YACA,uBAAAgF;AAAA,UAAA,IACEN,GACE,EAAE,QAAAlD,MAAWmD,GAGbM,IAAmB;AAAA,YACvB,aAAA/G;AAAA,YACA,QAAA2B;AAAA,YACA,cAAAC;AAAA,YACA,QAAAC;AAAA,YACA,WAAAI;AAAA,YACA,SAAA0E;AAAA,YACA,cAAc,CAAC,CAAC7E;AAAA,YAChB,uBAAuBgF,MAA0B;AAAA;AAAA,UAAA;AAInD,UAAIF,KACFG,EAAY,SAASH,GACjBC,KACFE,EAAY,SAASzD,KAAU,QAC/ByD,EAAY,OAAOvF,MAEnBuF,EAAY,QAAQzD,KAAU,QAC9ByD,EAAY,QAAQvF,OAGtBuF,EAAY,QAAQzD,KAAU,QAC9ByD,EAAY,QAAQvF;AAItB,gBAAMzB,IAAS,MAAM2G,EAAI;AAAA,YACvBpG,EAAY,UAAU,aAAa,SAASyG,GAAa,EAAE,cAAc,IAAM;AAAA,UAAA;AAGjF,cAAIhH,EAAO,MAAO,OAAMA,EAAO;AAC/B,gBAAMiH,IAAW;AAAA,YACf,OAAO,CAAA;AAAA,YACP,UAAU;AAAA,cACR,aAAa;AAAA,cACb,WAAW;AAAA,cACX,aAAa;AAAA,cACb,iBAAiB;AAAA,YAAA;AAAA,UACnB;AAIF,iBAAO;AAAA,YACL,MAAMjH,EAAO,QAAQiH;AAAA,UAAA;AAAA,QAEzB,SAASnD,GAAQ;AACf,yBAAQ,MAAM,0CAA0CA,CAAC,GAClD,EAAE,OAAO,EAAE,QAAQ,eAAe,OAAOA,EAAE,UAAQ;AAAA,QAC5D;AAAA,MACF;AAAA,MACA,cAAc,CAAC9D,GAAQU,GAAI,EAAE,aAAAT,EAAA,MAC3BF,EAAoBC,GAAQ,MAAM,QAAQ,CAACkH,MAAMA,EAAE,KAAK,KAAK,CAAA,GAAIjH,CAAW;AAAA,MAC9E,MAAM,kBACJkH,GACA,EAAE,iBAAApD,GAAiB,mBAAAC,GAAmB,kBAAAC,GAAkB,UAAA3B,GAAU,eAAA4B,KAClE;AACA,YAAIC;AA+GJ,cAAMC,IAAUC;AAAA,UA9G0C,OAAOC,GAAUC,MAAa;AACtF,kBAAME,IAAgB,IAAI;AAAA,eACvBP,EAAA,EAAgB,MAAM,SAAS,CAAA,GAAI;AAAA,gBAAQ,CAACkD,MAC3CA,EAAK,MAAM,IAAI,CAAChH,MAAyBA,EAAK,EAAE;AAAA,cAAA;AAAA,YAClD,GAEIsE,wBAAe,IAAA,GACfC,IAIA,CAAA;AAEN,YAAAL,EACG,OAAO,CAACM,MAAYA,EAAQ,YAAYuC,EAAI,WAAW,EACvD,QAAQ,CAACvC,MAAY;AACpB,oBAAMC,IAASD,EAAQ,SAAS;AAChC,kBAAI,CAACC,KAAU,CAACJ,EAAc,IAAII,CAAM,EAAG;AAE3C,oBAAMC,IAAQF,EAAQ,OAAO,MAAM,GAAG,EAAE,CAAC,GAAG,QAAQ,YAAY,EAAE,GAC5DG,IAAQC;AAAA,gBACZF;AAAA,gBACAF,EAAQ;AAAA,gBACRK;AAAA,cAAA;AAEF,cAAIF,IACFJ,EAAQ,KAAK;AAAA,gBACX,QAAAE;AAAA,gBACA,OAAOE,EAAM;AAAA,gBACb,OAAOA,EAAM;AAAA,cAAA,CACd,IACEL,EAAS,IAAIG,CAAM;AAAA,YAC1B,CAAC,GAECF,EAAQ,UACVV,EAAiB,CAACiB,MAA8D;AAC9E,cAAAP,EAAQ,QAAQ,CAAC,EAAE,QAAAE,GAAQ,OAAAC,GAAO,OAAAK,QAAY;AAC5C,2BAAWiC,KAAQlC,EAAM,OAAO;AAC9B,wBAAM9E,IAAOgH,EAAK,MAAM,KAAK,CAAChC,MAASA,EAAK,OAAOP,CAAM;AACzD,sBAAKzE,GACL;AAAA,2BAAO,OAAOA,GAAM,EAAE,CAAC0E,MAAU,SAAS,aAAaA,CAAK,GAAGK,GAAO;AACtE;AAAA;AAAA,gBACF;AAAA,cACF,CAAC;AAAA,YACH,CAAC;AAGH,kBAAME,IAAa,MAAM,KAAKX,CAAQ;AACtC,gBAAI,GAACW,EAAW,UAAUA,EAAW,SAASC;AAE9C,kBAAI;AACF,sBAAMC,EAAA;AAaN,sBAAMC,KAZM,MAAMlD;AAAA,kBAChB/B,EAAY,UAAU,aAAa;AAAA,oBACjC;AAAA,sBACE,aAAa4G,EAAI;AAAA,sBACjB,SAAS9B;AAAA,sBACT,WAAW8B,EAAI;AAAA,sBACf,cAAc,CAAC,CAACA,EAAI;AAAA,oBAAA;AAAA,oBAEtB,EAAE,cAAc,GAAA;AAAA,kBAAK;AAAA,gBACvB,EACA,OAAA,GAEmB,SAAS,CAAA;AAC9B,oBAAI,CAAC5C,IAAY;AACjB,sBAAMkB,IAAc,IAAI,IAAID,EAAS,IAAI,CAACE,MAAsB,CAACA,EAAE,IAAIA,CAAC,CAAC,CAAC;AAE1E,gBAAAzB,EAAiB,CAACiB,MAA8D;AAE9E,6BAAW9E,KAAQoF,GAAU;AAC3B,wBAAI6B,IAAU;AACd,+BAAWD,KAAQlC,EAAM,OAAO;AAC9B,4BAAMS,IAAMyB,EAAK,MAAM,UAAU,CAAC1B,MAAMA,EAAE,OAAOtF,EAAK,EAAE;AACxD,0BAAIuF,MAAQ,IAAI;AACd,wBAAAyB,EAAK,MAAMzB,CAAG,IAAIvF,GAClBiH,IAAU;AACV;AAAA,sBACF;AAAA,oBACF;AACA,oBAAKA,MACCnC,EAAM,MAAM,SAAQA,EAAM,MAAM,CAAC,EAAE,MAAM,QAAQ9E,CAAI,IAEvD8E,EAAM,MAAM,KAAK;AAAA,sBACf,OAAO,CAAC9E,CAAI;AAAA,sBACZ,UAAU;AAAA,wBACR,aAAa;AAAA,wBACb,WAAW;AAAA,wBACX,aAAa;AAAA,wBACb,iBAAiB;AAAA,sBAAA;AAAA,oBACnB,CACD;AAAA,kBAEP;AAEA,6BAAWE,KAAM+E;AACf,wBAAI,CAAAI,EAAY,IAAInF,CAAE;AACtB,iCAAW8G,KAAQlC,EAAM,OAAO;AAC9B,8BAAMS,IAAMyB,EAAK,MAAM,UAAU,CAAC1B,MAAMA,EAAE,OAAOpF,CAAE;AACnD,4BAAIqF,MAAQ,IAAI;AACd,0BAAAyB,EAAK,MAAM,OAAOzB,GAAK,CAAC;AACxB;AAAA,wBACF;AAAA,sBACF;AAAA,gBAEJ,CAAC;AAAA,cACH,SAASC,GAAK;AACZ,wBAAQ,MAAM,+CAA+CA,CAAG;AAAA,cAClE;AAAA,UACF;AAAA,UAGE,CAAChB,MAAiB,GAAGA,EAAQ,OAAO,IAAIA,EAAQ,SAAS,QAAQ,IAAIA,EAAQ,KAAK;AAAA,QAAA;AAEpF,YAAIiB;AACJ,YAAI;AACF,gBAAM9B,GAEN8B,IAAwBC;AAAA,YACtB,CAACxB,MAAuC;AACtC,cAAAL,EAAiB,CAACiB,MAA8D;AAC9E,gBAAAZ,EAAS,QAAQ,CAACM,MAAY;AAC5B,sBAAIA,EAAQ,QAAQ,eAAe,UAAUA,EAAQ,QAAQ;AAC3D,+BAAWwC,KAAQlC,EAAM,OAAO;AAC9B,4BAAMS,IAAMyB,EAAK,MAAM,UAAU,CAAC1B,MAAMA,EAAE,OAAOd,EAAQ,QAAQ,QAAQ;AACzE,0BAAIe,IAAM,IAAI;AACZ,wBAAAyB,EAAK,MAAMzB,CAAG,EAAE,gBAAgBf,EAAQ,QAAQ;AAChD;AAAA,sBACF;AAAA,oBACF;AAAA,gBAEJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH;AAAA,YACA,CAAC,MAAM;AAAA,UAAA;AAGT,gBAAMmB,IAAe,CAACC,GAAgBpB,MAAiB;AAErD,YADeA,GAAS,SAAS,YAEjCR,EAAQ,IAAI,EAAE,GAAGQ,GAAS,OAAOoB,GAAQ;AAAA,UAC3C;AAEA,UAAA7B,IAAQ+B,EAAO,UAAU,eAAeH,CAAY;AAAA,QACtD,QAAY;AAAA,QAEZ;AACA,cAAM/B,GACNI,EAAQ,MAAA,GACJD,KAAO+B,EAAO,YAAY/B,CAAK,GAC/B0B,KAAuBA,EAAA;AAAA,MAC7B;AAAA,MACA,mBAAmBvG;AAAA,IAAA,CACpB;AAAA,IACD,qBAAqB+C,EAAM,MAA0D;AAAA,MACnF,SAAS,OACP;AAAA,QACE,aAAApC;AAAA,QACA,QAAAqH;AAAA,QACA,QAAAxF;AAAA,QACA,cAAAD;AAAA,QACA,WAAAK;AAAA,QACA,MAAA4E;AAAA,QACA,QAAAD;AAAA,QACA,YAAAU;AAAA,QACA,cAAAxF;AAAA,MAAA,GAEF4E,MACG;AACH,YAAI;AACF,cAAIa,IAAW,CAAA;AAEf,gBAAMC,IAAmB,oBAAI,IAAI,CAAC,YAAY,CAAC;AAE/C,qBAAWC,KAASJ,GAAQ;AAE1B,kBAAMK,IAAQJ,KAAcG,EAAM,SAAS;AAG3C,gBAAIE,IAAiCF,EAAM,QACvCG,IAAqBhG;AACzB,gBAAI6F,EAAM;AACR,kBAAI;AACF,sBAAMjI,IAAS,KAAK,MAAMiI,EAAM,MAAM,GAChCI,IAAarI,EAAO,cAAc,CAAA,GAClCsI,IAAiBD,EAAW,OAAO,CAAC,MAAW,CAACL,EAAiB,IAAI,EAAE,GAAG,CAAC,GAC3EO,IAAmBF,EAAW,OAAO,CAAC,MAAWL,EAAiB,IAAI,EAAE,GAAG,CAAC;AAElF,oBAAIO,EAAiB,SAAS,GAAG;AAC/B,kBAAAJ,IAAaG,EAAe,SACxB,KAAK,UAAU,EAAE,GAAGtI,GAAQ,YAAYsI,EAAA,CAAgB,IACxD;AAEJ,wBAAME,IAAuBpG,IAAe,KAAK,MAAMA,CAAY,IAAI,MAKjEqG,IAAsB,CAAC,GAH3BD,KAAwB,MAAM,QAAQA,EAAqB,UAAU,IACjEA,EAAqB,aACrB,CAAA,GAC8C,GAAGD,CAAgB;AACvE,kBAAAH,IAAqB,KAAK;AAAA,oBACxBI,IACI,EAAE,GAAGA,GAAsB,YAAYC,EAAA,IACvC,EAAE,YAAYA,EAAA;AAAA,kBAAoB;AAAA,gBAE1C;AAAA,cACF,QAAQ;AAAA,cAER;AAGF,kBAAMlB,IAA0C;AAAA,cAC9C,aAAA/G;AAAA,cACA,QAAQ2H;AAAA,cACR,cAAcC;AAAA,cACd,QAAA/F;AAAA,cACA,WAAAI;AAAA,cACA,QAAA2E;AAAA,cACA,cAAc,CAAC,CAAC9E;AAAA;AAAA,cAEhB,OAAO2F,EAAM;AAAA,YAAA;AAEf,YAAIZ,IACFE,EAAY,OAAOW,IAEnBX,EAAY,QAAQW;AAGtB,kBAAMQ,IAAUxB,EAAI;AAAA,cAClBpG,EAAY,UAAU,aAAa,SAASyG,GAAa,EAAE,cAAc,IAAM;AAAA,YAAA;AAEjF,YAAAQ,EAAS,KAAKW,CAAO;AAAA,UACvB;AAEA,gBAAMnI,IAAS,MAAM,QAAQ,IAAIwH,CAAQ,GACnC3H,IAA0B,CAAA;AAChC,qBAAWY,KAAOT,GAAQ;AACxB,gBAAIS,EAAI,MAAO,OAAMA,EAAI;AAGzB,kBAAM2H,IAAa3H,EAAI,cAAc,OAE/B6C,IACJ7C,EAAI,MAAM,UAAU,eAAeA,EAAI,MAAM,UAAU,mBAAmB,IACtE4H,IACJ5H,EAAI,MAAM,MAAM,IAAI,CAACL,GAAM,GAAGkI,OAAO;AAAA,cACnC,GAAGlI;AAAA,cACH,QAAQ;AAAA,gBACN;AAAA,kBACE,OAAOgI;AAAA,kBACP,aAAa,MAAME,EAAE,SAAS,KAAKhF,IAAc8E,IAAa;AAAA;AAAA,gBAAA;AAAA,cAChE;AAAA,YACF,EACA,KAAK,CAAA;AAET,YAAAvI,EAAM,KAAK,GAAGwI,CAAU;AAAA,UAC1B;AAGA,iBAAO;AAAA,YACL,MAAM;AAAA,cACJ,OAAAxI;AAAA,YAAA;AAAA,UACF;AAAA,QAEJ,SAASe,GAAY;AACnB,yBAAQ,MAAM,yCAAyCA,CAAK,GACrD,EAAE,OAAO,EAAE,QAAQ,eAAe,OAAOA,EAAM,UAAQ;AAAA,QAChE;AAAA,MACF;AAAA,MACA,cAAc,CAACZ,GAAQU,GAAI,EAAE,aAAAT,QAC3BF,EAAoBC,GAAQ,OAAOC,CAAW;AAAA,MAChD,mBAAmBX;AAAA,IAAA,CACpB;AAAA,EAAA;AAEL,CAAC,GAEY;AAAA,EACX,mCAAAiJ;AAAA,EACA,0BAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,sCAAAC;AAAA,EACA,8BAAAC;AAAA,EACA,6BAAAC;AAAA,EACA,8BAAAC;AAAA,EACA,4BAAAC;AACF,IAAI1G;"}
@@ -1 +1 @@
1
- {"version":3,"file":"updateOverview.cjs.js","sources":["../../../../../../src/api/queries/overview/updateOverview.ts"],"sourcesContent":["import { foldersQueries } from '../folders'\nimport { detailsPanelQueries } from '../entities/getEntityPanel'\nimport { operationsApi } from '@shared/api/generated'\nimport { entityListsQueriesGql } from '../entityLists/updateLists'\nimport type {\n OperationsResponseModel,\n OperationModel,\n OperationsApiArg,\n} from '@shared/api/generated'\nimport getOverviewApi from './getOverview'\nimport { patchDetailsPanelEntity } from '../entities'\nimport { FetchBaseQueryError, RootState } from '@reduxjs/toolkit/query'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { EditorTaskNode } from '@shared/containers/ProjectTreeTable'\nimport { getUpdatedEntityIds } from './filterRefetchUtils'\nimport {\n refetchTasksForCacheEntry,\n refetchOverviewTasksForCacheEntry,\n} from './refetchFilteredEntities'\nimport { patchFolderStatusInVersions, patchVersions } from './patchVersions'\nimport { patchProducts } from './patchProducts'\n// these operations are dedicated to the overview page\n// this mean cache updates are custom for the overview page here\n\n// Helper function to update entities with operation data\nconst updateEntityWithOperation = (entity: any, operationData: any) => {\n // Update top-level properties directly\n Object.keys(operationData).forEach((key) => {\n if (key === 'attrib' || key === 'links' || key === 'deleteLinks') return\n entity[key] = operationData[key]\n })\n\n // Handle attrib merging\n if (operationData.attrib) {\n entity.attrib = {\n ...entity.attrib,\n ...operationData.attrib,\n }\n }\n\n // Handle links merging\n if (operationData.links) {\n const existingLinks = entity.links || []\n const newLinks = operationData.links || []\n\n // Ensure links structure exists\n if (!entity.links) entity.links = []\n\n // Process links directly\n entity.links = [...existingLinks]\n\n newLinks.forEach((newLink: any) => {\n const existingIndex = entity.links.findIndex((link: any) => link.id === newLink.id)\n\n if (existingIndex !== -1) {\n entity.links[existingIndex] = { ...entity.links[existingIndex], ...newLink }\n } else {\n entity.links.push(newLink)\n }\n })\n }\n\n // Handle links deletion\n if (operationData.deleteLinks) {\n const linksToDelete = operationData.deleteLinks || []\n\n // Ensure links structure exists\n if (!entity.links) entity.links = []\n\n // Remove links by ID\n linksToDelete.forEach((linkId: string) => {\n entity.links = entity.links.filter((link: any) => link.id !== linkId)\n })\n }\n}\n\nconst getOverviewTaskTags = (tasks: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n { type: 'overviewTask', id: 'LIST' },\n ...tasks.map((op) => ({ type: 'overviewTask', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...tasks\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'overviewTask',\n id: op.data?.projectName,\n })),\n ]\n}\n\nconst getOverviewFolderTags = (folders: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n ...folders.map((op) => ({ type: 'folder', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...folders\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'folder',\n id: op.data?.projectName,\n })),\n ]\n}\n\nexport type PatchOperation = Pick<OperationModel, 'entityId' | 'entityType' | 'data'> & {\n type?: OperationModel['type']\n}\n\n// Helper function to create a patch operation for deleting links\nexport const createLinkDeletionPatch = (\n entityId: string,\n entityType: OperationModel['entityType'],\n linkIds: string[],\n): PatchOperation => {\n return {\n entityId,\n entityType,\n type: 'update',\n data: { deleteLinks: linkIds },\n }\n}\n\n// Utility function to delete specific links by ID from entities\nexport const deleteLinksFromEntities = (\n entities: { entityId: string; entityType: OperationModel['entityType'] }[],\n linkIds: string[],\n): PatchOperation[] => {\n return entities.map((entity) =>\n createLinkDeletionPatch(entity.entityId, entity.entityType, linkIds),\n )\n}\n\n// Generic helper function to patch entities based on their type\nexport const patchOverviewEntities = (\n entities: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n // Group entities by type\n const entitiesByType = entities.reduce((acc, entity) => {\n if (!acc[entity.entityType]) {\n acc[entity.entityType] = []\n }\n acc[entity.entityType].push(entity)\n return acc\n }, {} as Record<string, PatchOperation[]>)\n\n // Patch each entity type using the appropriate function\n if (entitiesByType.task) {\n patchOverviewTasks(entitiesByType.task, { state, dispatch }, patches)\n }\n if (entitiesByType.folder) {\n patchOverviewFolders(entitiesByType.folder, { state, dispatch }, patches)\n }\n // Add more entity types as needed\n // if (entitiesByType.product) { ... }\n // if (entitiesByType.version) { ... }\n // etc.\n}\n\nexport const patchOverviewTasks = (\n tasks: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = getOverviewTaskTags(tasks)\n const taskEntries = getOverviewApi.util.selectInvalidatedBy(state, tags)\n\n const deleteIds = new Set(\n tasks.filter((op) => op.type === 'delete' && op.entityId).map((op) => op.entityId),\n )\n const removeDeletedTasks = (tasksArrayDraft: EditorTaskNode[]) => {\n for (let i = tasksArrayDraft.length - 1; i >= 0; i--) {\n if (deleteIds.has(tasksArrayDraft[i].id)) tasksArrayDraft.splice(i, 1)\n }\n }\n\n for (const entry of taskEntries) {\n if (entry.endpointName === 'getTasksListInfinite') {\n // patch getTasksListInfinite\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData('getTasksListInfinite', entry.originalArgs, (draft) => {\n // Apply each change to matching tasks in all pages\n for (const taskOperation of tasks) {\n if (taskOperation.type === 'create' && taskOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.pages[0].tasks.push(taskOperation.data)\n } else if (taskOperation.type !== 'delete') {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n // TODO: task is not found here, why?\n const task = page.tasks.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n }\n }\n }\n // optimistically remove deleted tasks\n if (deleteIds.size > 0) {\n for (const page of draft.pages) {\n removeDeletedTasks(page.tasks)\n }\n }\n }),\n )\n\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n } else {\n // this updates the main overview cache task\n // it also updates any GetTasksByParent caches\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData(\n entry.endpointName as 'getOverviewTasksByFolders' | 'GetTasksList',\n entry.originalArgs,\n (draft) => {\n const applyToDraft = (patchTask: (tasksArrayDraft: EditorTaskNode[]) => void) => {\n // Check if draft is an array or an object with a tasks property\n if (Array.isArray(draft)) {\n patchTask(draft)\n } else if (draft.tasks && Array.isArray(draft.tasks)) {\n // Handle object with tasks array case (like in GetTasksList)\n patchTask(draft.tasks)\n }\n }\n\n // Apply each change to matching tasks in the cache\n for (const taskOperation of tasks) {\n if (\n taskOperation.type === 'create' &&\n taskOperation.data &&\n entry.originalArgs.parentIds?.includes(taskOperation.data.folderId)\n ) {\n applyToDraft((tasksArrayDraft) => {\n // @ts-expect-error\n tasksArrayDraft.push(taskOperation.data)\n })\n } else if (taskOperation.type !== 'delete') {\n applyToDraft((tasksArrayDraft) => {\n const task = tasksArrayDraft.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n })\n }\n }\n // optimistically remove deleted tasks\n if (deleteIds.size > 0) {\n applyToDraft(removeDeletedTasks)\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n }\n }\n}\n\n// Debounced, per-project invalidation of the footer stats caches after entity ops.\ntype StatsTagType =\n | 'folderColumnStats'\n | 'taskColumnStats'\n | 'productColumnStats'\n | 'versionColumnStats'\n | 'entityListItemsColumnStats'\nconst statsRefetchTimers = new Map<string, ReturnType<typeof setTimeout>>()\nconst scheduleStatsRefetch = (\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n projectName: string,\n tagTypes: StatsTagType[],\n) => {\n const key = `${projectName}:${tagTypes.join()}`\n const existing = statsRefetchTimers.get(key)\n if (existing) clearTimeout(existing)\n statsRefetchTimers.set(\n key,\n setTimeout(() => {\n statsRefetchTimers.delete(key)\n dispatch(\n getOverviewApi.util.invalidateTags(tagTypes.map((type) => ({ type, id: projectName }))),\n )\n }, 500),\n )\n}\n\nexport const patchOverviewFolders = (\n folders: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const folderEntries = foldersQueries.util\n .selectInvalidatedBy(state, getOverviewFolderTags(folders))\n .filter((entry) => entry.endpointName === 'getFolderList')\n\n const deleteIds = new Set(\n folders.filter((op) => op.type === 'delete' && op.entityId).map((op) => op.entityId),\n )\n\n for (const entry of folderEntries) {\n const folderPatch = dispatch(\n foldersQueries.util.updateQueryData(\n entry.endpointName as 'getFolderList',\n entry.originalArgs,\n (draft) => {\n // Create a Map for O(1) folder lookups\n const folderMap = new Map()\n draft.folders.forEach((folder) => {\n folderMap.set(folder.id, folder)\n })\n\n for (const folderOperation of folders) {\n if (folderOperation.type === 'create' && folderOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.folders.push(folderOperation.data)\n } else if (folderOperation.type !== 'delete') {\n const folder = folderMap.get(folderOperation.entityId)\n\n if (folder) {\n updateEntityWithOperation(folder, folderOperation.data)\n }\n }\n }\n\n // optimistically remove deleted folders\n if (deleteIds.size > 0) {\n for (let i = draft.folders.length - 1; i >= 0; i--) {\n if (deleteIds.has(draft.folders[i].id)) draft.folders.splice(i, 1)\n }\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(folderPatch)\n }\n}\n\nconst patchListItems = (\n entities: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = entities.map((op) => ({ type: 'entityListItem', id: op.entityId }))\n const entries = entityListsQueriesGql.util.selectInvalidatedBy(state, tags)\n\n const deleteIds = new Set(\n entities.filter((op) => op.type === 'delete' && op.entityId).map((op) => op.entityId),\n )\n\n for (const entry of entries) {\n if (entry.endpointName === 'getListItemsInfinite') {\n const listItemsPatch = dispatch(\n entityListsQueriesGql.util.updateQueryData(\n 'getListItemsInfinite',\n entry.originalArgs,\n (draft) => {\n // Apply each change to matching tasks in all pages\n for (const listOperation of entities) {\n if (listOperation.type === 'update' && listOperation.data) {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n const item = page.items.find((item) => item.entityId === listOperation.entityId)\n if (item) {\n updateEntityWithOperation(item, listOperation.data)\n }\n }\n }\n }\n // optimistically remove items whose entity is being deleted\n if (deleteIds.size > 0) {\n for (const page of draft.pages) {\n for (let i = page.items.length - 1; i >= 0; i--) {\n if (deleteIds.has(page.items[i].entityId)) page.items.splice(i, 1)\n }\n }\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches?.push(listItemsPatch)\n }\n }\n}\n\nconst splitByOpType = (operations: OperationModel[]) => {\n return operations.reduce(\n (acc: Record<OperationModel['type'], OperationModel[]>, operation) => {\n acc[operation.type].push(operation)\n return acc\n },\n {\n create: [],\n update: [],\n delete: [],\n },\n )\n}\n\nconst operationsEnhanced = operationsApi.enhanceEndpoints({\n endpoints: {\n operations: {},\n },\n})\n\n// enhance the argument type to include some extra fields\ninterface UpdateOverviewEntitiesArg extends OperationsApiArg {\n patchOperations?: PatchOperation[] // extra entities to patch\n}\n\nconst operationsApiEnhancedInjected = operationsEnhanced.injectEndpoints({\n endpoints: (build) => ({\n updateOverviewEntities: build.mutation<\n OperationsResponseModel | undefined,\n UpdateOverviewEntitiesArg\n >({\n async queryFn(arg, { dispatch }) {\n try {\n const result = await dispatch(operationsEnhanced.endpoints.operations.initiate(arg))\n\n // Check if the network request itself failed (offline, timeout, etc.)\n if (result.error) {\n return { error: result.error as FetchBaseQueryError }\n }\n\n const data = result.data\n // check for any errors in the result\n const uniqueErrors = new Set()\n const uniqueErrorCodes = new Set()\n for (const op of data?.operations || []) {\n if (op.success === false && op.detail) {\n if (!uniqueErrors.has(op.detail)) {\n uniqueErrors.add(op.detail)\n }\n if (!uniqueErrorCodes.has(op.errorCode)) {\n uniqueErrorCodes.add(op.errorCode)\n }\n }\n }\n\n if (uniqueErrors.size > 0) {\n const error = {\n status: 'FETCH_ERROR',\n error: Array.from(uniqueErrors).join(', '),\n errorCodes: Array.from(uniqueErrorCodes),\n } as FetchBaseQueryError\n return { error }\n } else {\n return { data }\n }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n async onQueryStarted(\n { operationsRequestModel, patchOperations = [], projectName },\n { dispatch, queryFulfilled, getState },\n ) {\n if (!operationsRequestModel.operations?.length) return\n const { operations } = operationsRequestModel\n // we need to split the operations by entity type\n const operationsByType = operations.reduce(\n (acc: Record<OperationModel['entityType'], OperationModel[]>, operation) => {\n acc[operation.entityType].push(operation)\n return acc\n },\n {\n task: [],\n folder: [],\n product: [],\n version: [],\n representation: [],\n workfile: [],\n },\n )\n\n // collect patches incase we need to undo them\n const state = getState()\n const patches: any[] = []\n\n // patch the overview tasks\n if (operationsByType.task?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.task)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing tasks and optimistically remove deleted ones\n // (deletes are reconciled via invalidatesTags once the request settles)\n patchOverviewTasks([...updatesToPatch, ...deleteOps], { state, dispatch }, patches)\n }\n\n // patch the overview folders (any other folders from foldersList)\n if (operationsByType.folder?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.folder)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing folders and optimistically remove deleted ones\n patchOverviewFolders([...updatesToPatch, ...deleteOps], { state, dispatch }, patches)\n }\n\n const patchExtraTasks = patchOperations.filter((op) => op.entityType === 'task')\n const patchExtraFolders = patchOperations.filter((op) => op.entityType === 'folder')\n\n if (patchExtraTasks.length) {\n // often used for updating inherited dependents\n patchOverviewTasks(patchExtraTasks, { state, dispatch }, patches)\n }\n\n if (patchExtraFolders.length) {\n // often used for updating inherited dependents\n patchOverviewFolders(patchExtraFolders, { state, dispatch }, patches)\n }\n\n patchFolderStatusInVersions(\n [...operationsByType.folder, ...patchExtraFolders],\n { state, dispatch },\n patches,\n )\n\n // patch the list items\n patchListItems([...operations, ...patchOperations], { state, dispatch }, patches)\n\n // patch versions\n if (operationsByType.version?.length) {\n patchVersions(operationsByType.version, { state, dispatch }, patches)\n }\n\n // patch products\n if (operationsByType.product?.length) {\n patchProducts(operationsByType.product, { state, dispatch }, patches)\n }\n\n // try to patch any details panels\n // first we patch the individual entities\n // then we patch the details panel cache\n const entityTags = operations.map((op) => ({\n id: op.entityId,\n type: op.entityType,\n }))\n const entitiesTags = entityTags.map((tag) => ({\n type: 'entities',\n id: tag.id,\n }))\n\n // invalidates the details panel cache so that it fetches all individual entities again (using it's updated cache)\n const invalidateEntryPanel = () =>\n dispatch(detailsPanelQueries.util.invalidateTags(entitiesTags))\n\n // the individual entities that are patched for the details panel\n // remember the details panel cache is made up of individual entity caches\n const detailsPanelEntityCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entityTags,\n )\n\n // the cache for the whole details panel\n const detailsPanelEntitiesCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entitiesTags,\n )\n\n for (const entry of detailsPanelEntitiesCaches) {\n if (entry.endpointName !== 'getEntitiesDetailsPanel') continue\n const entitiesDetailsResult = dispatch(\n detailsPanelQueries.util.updateQueryData(\n entry.endpointName as 'getEntitiesDetailsPanel',\n entry.originalArgs,\n (draft) => {\n for (const entity of draft) {\n patchDetailsPanelEntity(operations, entity)\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches.push(entitiesDetailsResult)\n }\n\n try {\n await queryFulfilled\n\n // Background refetch logic - runs after successful mutation\n // This ensures calculated attributes are up-to-date and entities are correctly filtered\n\n const taskOperations = operationsByType.task || []\n const folderOperations = operationsByType.folder || []\n const versionOperations = operationsByType.version || []\n const productOperations = operationsByType.product || []\n\n if (projectName) {\n if (taskOperations.length || folderOperations.length) {\n scheduleStatsRefetch(dispatch, projectName, [\n 'folderColumnStats',\n 'taskColumnStats',\n 'entityListItemsColumnStats',\n ])\n }\n if (versionOperations.length || productOperations.length) {\n scheduleStatsRefetch(dispatch, projectName, [\n 'productColumnStats',\n 'versionColumnStats',\n 'entityListItemsColumnStats',\n ])\n }\n }\n\n // Early exit if no operations\n if (taskOperations.length === 0 && folderOperations.length === 0) {\n return\n }\n\n // Extract updated entity IDs (always needed for refetch)\n const updatedTaskIds = getUpdatedEntityIds(taskOperations)\n const updatedFolderIds = getUpdatedEntityIds(folderOperations)\n\n // Get all active task list cache entries\n const overviewTaskTags = updatedTaskIds.map((id) => ({ type: 'overviewTask', id }))\n const tasksListInfiniteEntries = getOverviewApi.util\n .selectInvalidatedBy(state, overviewTaskTags)\n .filter((entry) => entry.endpointName === 'getTasksListInfinite')\n\n // Requirement: \"refetch the full data for the specific entity/entities\"\n // For each cache with its own filter, fetch entities and update that cache\n if (updatedTaskIds.length > 0 && projectName) {\n // Process getTasksListInfinite caches\n for (const entry of tasksListInfiniteEntries) {\n await refetchTasksForCacheEntry({\n dispatch,\n projectName,\n updatedTaskIds,\n cacheEntry: entry,\n })\n }\n\n // Process getOverviewTasksByFolders caches\n // Use selectInvalidatedBy to get only caches that contain the updated tasks\n const overviewTasksEntries = getOverviewApi.util\n .selectInvalidatedBy(state, overviewTaskTags)\n .filter((entry) => entry.endpointName === 'getOverviewTasksByFolders')\n\n for (const entry of overviewTasksEntries) {\n await refetchOverviewTasksForCacheEntry({\n dispatch,\n projectName,\n updatedTaskIds,\n cacheEntry: entry,\n })\n }\n }\n\n // Always refetch folders if they were updated (for calculated attributes)\n // Not conditional on affectsFilter - requirement says \"always refetch entities\"\n // (deletes are reconciled via invalidatesTags)\n if (updatedFolderIds.length > 0 && projectName) {\n dispatch(foldersQueries.util.invalidateTags([{ type: 'folder', id: 'LIST' }]))\n }\n } catch (error) {\n // undo all patches if there is an error\n for (const patch of patches) {\n patch.undo()\n }\n\n if (detailsPanelEntityCaches.length) {\n // we invalidate the tags for the detailsPanelEntityCaches that were patched\n // invalidate the details panel cache\n invalidateEntryPanel()\n }\n }\n },\n invalidatesTags: (_r, _e, { operationsRequestModel, projectName }) => {\n type Tags = { id: string; type: string }[]\n const userDashboardTags: Tags = [{ type: 'kanban', id: 'project-' + projectName }],\n taskProgressTags: Tags = [],\n entityListItemTags: Tags = [],\n tasksFolderTags: Tags = [],\n deletedEntityTags: Tags = [],\n entityActivityTags: Tags = []\n\n let hasAttribOp = false\n const deletedTypes = new Set<string>()\n operationsRequestModel.operations?.forEach((op) => {\n const { entityId } = op\n if (entityId) {\n taskProgressTags.push({ type: 'progress', id: entityId })\n // Invalidate list item cache for this entity to trigger background refetch\n entityListItemTags.push({ type: 'entityListItem', id: entityId })\n } else {\n // new entity created, so we should invalidate everything\n taskProgressTags.push({ type: 'progress', id: 'LIST' })\n }\n if ((op.data as any)?.attrib) hasAttribOp = true\n // own-edit activity events are sender-filtered on the websocket, so refetch open feeds\n if (\n op.type === 'update' &&\n entityId &&\n ['status', 'attrib', 'tags', 'assignees', `${op.entityType}Type`].some(\n (key) => (op.data as any)?.[key] !== undefined,\n )\n ) {\n entityActivityTags.push({ type: 'entityActivities', id: entityId })\n }\n if (op.type === 'delete' && entityId) {\n deletedTypes.add(op.entityType)\n deletedEntityTags.push({ type: op.entityType, id: entityId })\n // details panels showing the deleted entity\n deletedEntityTags.push({ type: 'entities', id: entityId })\n }\n })\n\n if (hasAttribOp) {\n tasksFolderTags.push({ type: 'tasksFolder', id: projectName })\n }\n\n // Deleted rows are removed optimistically; only server-side descendants need a refetch\n // (folder -> folders/tasks/products/versions, product -> versions).\n const invalidateList = new Set<string>()\n if (deletedTypes.has('folder')) {\n ;['folder', 'task', 'product', 'version'].forEach((t) => invalidateList.add(t))\n }\n if (deletedTypes.has('product')) invalidateList.add('version')\n\n if (invalidateList.has('folder')) deletedEntityTags.push({ type: 'folder', id: 'LIST' })\n if (invalidateList.has('task')) {\n deletedEntityTags.push(\n { type: 'overviewTask', id: 'LIST' },\n { type: 'overviewTask', id: projectName },\n )\n }\n if (invalidateList.has('product')) deletedEntityTags.push({ type: 'product', id: 'LIST' })\n if (invalidateList.has('version')) deletedEntityTags.push({ type: 'version', id: 'LIST' })\n\n return [\n ...userDashboardTags,\n ...taskProgressTags,\n ...entityListItemTags,\n ...tasksFolderTags,\n ...deletedEntityTags,\n ...entityActivityTags,\n ]\n },\n }),\n }),\n})\n\nexport const { useUpdateOverviewEntitiesMutation } = operationsApiEnhancedInjected\n"],"names":["updateEntityWithOperation","entity","operationData","key","existingLinks","newLinks","newLink","existingIndex","link","linksToDelete","linkId","getOverviewTaskTags","tasks","op","getOverviewFolderTags","folders","createLinkDeletionPatch","entityId","entityType","linkIds","deleteLinksFromEntities","entities","patchOverviewEntities","state","dispatch","patches","entitiesByType","acc","patchOverviewTasks","patchOverviewFolders","tags","taskEntries","getOverviewApi","deleteIds","removeDeletedTasks","tasksArrayDraft","i","entry","tasksPatch","draft","taskOperation","page","task","applyToDraft","patchTask","statsRefetchTimers","scheduleStatsRefetch","projectName","tagTypes","existing","type","folderEntries","foldersQueries","folderPatch","folderMap","folder","folderOperation","patchListItems","entries","entityListsQueriesGql","listItemsPatch","listOperation","item","splitByOpType","operations","operation","operationsEnhanced","operationsApi","operationsApiEnhancedInjected","build","arg","result","data","uniqueErrors","uniqueErrorCodes","e","operationsRequestModel","patchOperations","queryFulfilled","getState","operationsByType","deleteOps","update","updatesToPatch","dep","patchExtraTasks","patchExtraFolders","patchFolderStatusInVersions","patchVersions","patchProducts","entityTags","entitiesTags","tag","invalidateEntryPanel","detailsPanelQueries","detailsPanelEntityCaches","detailsPanelEntitiesCaches","entitiesDetailsResult","patchDetailsPanelEntity","taskOperations","folderOperations","versionOperations","productOperations","updatedTaskIds","getUpdatedEntityIds","updatedFolderIds","overviewTaskTags","id","tasksListInfiniteEntries","refetchTasksForCacheEntry","overviewTasksEntries","refetchOverviewTasksForCacheEntry","patch","_r","_e","userDashboardTags","taskProgressTags","entityListItemTags","tasksFolderTags","deletedEntityTags","entityActivityTags","hasAttribOp","deletedTypes","invalidateList","t","useUpdateOverviewEntitiesMutation"],"mappings":"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"}
1
+ {"version":3,"file":"updateOverview.cjs.js","sources":["../../../../../../src/api/queries/overview/updateOverview.ts"],"sourcesContent":["import { foldersQueries } from '../folders'\nimport { detailsPanelQueries } from '../entities/getEntityPanel'\nimport { operationsApi } from '@shared/api/generated'\nimport { entityListsQueriesGql } from '../entityLists/updateLists'\nimport type {\n OperationsResponseModel,\n OperationModel,\n OperationsApiArg,\n} from '@shared/api/generated'\nimport getOverviewApi from './getOverview'\nimport { patchDetailsPanelEntity } from '../entities'\nimport { FetchBaseQueryError, RootState } from '@reduxjs/toolkit/query'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport type { EditorTaskNode } from '@shared/containers/ProjectTreeTable/types/table'\nimport { getUpdatedEntityIds } from './filterRefetchUtils'\nimport {\n refetchTasksForCacheEntry,\n refetchOverviewTasksForCacheEntry,\n} from './refetchFilteredEntities'\nimport { patchFolderStatusInVersions, patchVersions } from './patchVersions'\nimport { patchProducts } from './patchProducts'\n// these operations are dedicated to the overview page\n// this mean cache updates are custom for the overview page here\n\n// Helper function to update entities with operation data\nconst updateEntityWithOperation = (entity: any, operationData: any) => {\n // Update top-level properties directly\n Object.keys(operationData).forEach((key) => {\n if (key === 'attrib' || key === 'links' || key === 'deleteLinks') return\n entity[key] = operationData[key]\n })\n\n // Handle attrib merging\n if (operationData.attrib) {\n entity.attrib = {\n ...entity.attrib,\n ...operationData.attrib,\n }\n }\n\n // Handle links merging\n if (operationData.links) {\n const existingLinks = entity.links || []\n const newLinks = operationData.links || []\n\n // Ensure links structure exists\n if (!entity.links) entity.links = []\n\n // Process links directly\n entity.links = [...existingLinks]\n\n newLinks.forEach((newLink: any) => {\n const existingIndex = entity.links.findIndex((link: any) => link.id === newLink.id)\n\n if (existingIndex !== -1) {\n entity.links[existingIndex] = { ...entity.links[existingIndex], ...newLink }\n } else {\n entity.links.push(newLink)\n }\n })\n }\n\n // Handle links deletion\n if (operationData.deleteLinks) {\n const linksToDelete = operationData.deleteLinks || []\n\n // Ensure links structure exists\n if (!entity.links) entity.links = []\n\n // Remove links by ID\n linksToDelete.forEach((linkId: string) => {\n entity.links = entity.links.filter((link: any) => link.id !== linkId)\n })\n }\n}\n\nconst getOverviewTaskTags = (tasks: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n { type: 'overviewTask', id: 'LIST' },\n ...tasks.map((op) => ({ type: 'overviewTask', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...tasks\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'overviewTask',\n id: op.data?.projectName,\n })),\n ]\n}\n\nconst getOverviewFolderTags = (folders: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n ...folders.map((op) => ({ type: 'folder', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...folders\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'folder',\n id: op.data?.projectName,\n })),\n ]\n}\n\nexport type PatchOperation = Pick<OperationModel, 'entityId' | 'entityType' | 'data'> & {\n type?: OperationModel['type']\n}\n\n// Helper function to create a patch operation for deleting links\nexport const createLinkDeletionPatch = (\n entityId: string,\n entityType: OperationModel['entityType'],\n linkIds: string[],\n): PatchOperation => {\n return {\n entityId,\n entityType,\n type: 'update',\n data: { deleteLinks: linkIds },\n }\n}\n\n// Utility function to delete specific links by ID from entities\nexport const deleteLinksFromEntities = (\n entities: { entityId: string; entityType: OperationModel['entityType'] }[],\n linkIds: string[],\n): PatchOperation[] => {\n return entities.map((entity) =>\n createLinkDeletionPatch(entity.entityId, entity.entityType, linkIds),\n )\n}\n\n// Generic helper function to patch entities based on their type\nexport const patchOverviewEntities = (\n entities: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n // Group entities by type\n const entitiesByType = entities.reduce((acc, entity) => {\n if (!acc[entity.entityType]) {\n acc[entity.entityType] = []\n }\n acc[entity.entityType].push(entity)\n return acc\n }, {} as Record<string, PatchOperation[]>)\n\n // Patch each entity type using the appropriate function\n if (entitiesByType.task) {\n patchOverviewTasks(entitiesByType.task, { state, dispatch }, patches)\n }\n if (entitiesByType.folder) {\n patchOverviewFolders(entitiesByType.folder, { state, dispatch }, patches)\n }\n // Add more entity types as needed\n // if (entitiesByType.product) { ... }\n // if (entitiesByType.version) { ... }\n // etc.\n}\n\nexport const patchOverviewTasks = (\n tasks: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = getOverviewTaskTags(tasks)\n const taskEntries = getOverviewApi.util.selectInvalidatedBy(state, tags)\n\n const deleteIds = new Set(\n tasks.filter((op) => op.type === 'delete' && op.entityId).map((op) => op.entityId),\n )\n const removeDeletedTasks = (tasksArrayDraft: EditorTaskNode[]) => {\n for (let i = tasksArrayDraft.length - 1; i >= 0; i--) {\n if (deleteIds.has(tasksArrayDraft[i].id)) tasksArrayDraft.splice(i, 1)\n }\n }\n\n for (const entry of taskEntries) {\n if (entry.endpointName === 'getTasksListInfinite') {\n // patch getTasksListInfinite\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData('getTasksListInfinite', entry.originalArgs, (draft) => {\n // Apply each change to matching tasks in all pages\n for (const taskOperation of tasks) {\n if (taskOperation.type === 'create' && taskOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.pages[0].tasks.push(taskOperation.data)\n } else if (taskOperation.type !== 'delete') {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n // TODO: task is not found here, why?\n const task = page.tasks.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n }\n }\n }\n // optimistically remove deleted tasks\n if (deleteIds.size > 0) {\n for (const page of draft.pages) {\n removeDeletedTasks(page.tasks)\n }\n }\n }),\n )\n\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n } else {\n // this updates the main overview cache task\n // it also updates any GetTasksByParent caches\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData(\n entry.endpointName as 'getOverviewTasksByFolders' | 'GetTasksList',\n entry.originalArgs,\n (draft) => {\n const applyToDraft = (patchTask: (tasksArrayDraft: EditorTaskNode[]) => void) => {\n // Check if draft is an array or an object with a tasks property\n if (Array.isArray(draft)) {\n patchTask(draft)\n } else if (draft.tasks && Array.isArray(draft.tasks)) {\n // Handle object with tasks array case (like in GetTasksList)\n patchTask(draft.tasks)\n }\n }\n\n // Apply each change to matching tasks in the cache\n for (const taskOperation of tasks) {\n if (\n taskOperation.type === 'create' &&\n taskOperation.data &&\n entry.originalArgs.parentIds?.includes(taskOperation.data.folderId)\n ) {\n applyToDraft((tasksArrayDraft) => {\n // @ts-expect-error\n tasksArrayDraft.push(taskOperation.data)\n })\n } else if (taskOperation.type !== 'delete') {\n applyToDraft((tasksArrayDraft) => {\n const task = tasksArrayDraft.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n })\n }\n }\n // optimistically remove deleted tasks\n if (deleteIds.size > 0) {\n applyToDraft(removeDeletedTasks)\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n }\n }\n}\n\n// Debounced, per-project invalidation of the footer stats caches after entity ops.\ntype StatsTagType =\n | 'folderColumnStats'\n | 'taskColumnStats'\n | 'productColumnStats'\n | 'versionColumnStats'\n | 'entityListItemsColumnStats'\nconst statsRefetchTimers = new Map<string, ReturnType<typeof setTimeout>>()\nconst scheduleStatsRefetch = (\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n projectName: string,\n tagTypes: StatsTagType[],\n) => {\n const key = `${projectName}:${tagTypes.join()}`\n const existing = statsRefetchTimers.get(key)\n if (existing) clearTimeout(existing)\n statsRefetchTimers.set(\n key,\n setTimeout(() => {\n statsRefetchTimers.delete(key)\n dispatch(\n getOverviewApi.util.invalidateTags(tagTypes.map((type) => ({ type, id: projectName }))),\n )\n }, 500),\n )\n}\n\nexport const patchOverviewFolders = (\n folders: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const folderEntries = foldersQueries.util\n .selectInvalidatedBy(state, getOverviewFolderTags(folders))\n .filter((entry) => entry.endpointName === 'getFolderList')\n\n const deleteIds = new Set(\n folders.filter((op) => op.type === 'delete' && op.entityId).map((op) => op.entityId),\n )\n\n for (const entry of folderEntries) {\n const folderPatch = dispatch(\n foldersQueries.util.updateQueryData(\n entry.endpointName as 'getFolderList',\n entry.originalArgs,\n (draft) => {\n // Create a Map for O(1) folder lookups\n const folderMap = new Map()\n draft.folders.forEach((folder) => {\n folderMap.set(folder.id, folder)\n })\n\n for (const folderOperation of folders) {\n if (folderOperation.type === 'create' && folderOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.folders.push(folderOperation.data)\n } else if (folderOperation.type !== 'delete') {\n const folder = folderMap.get(folderOperation.entityId)\n\n if (folder) {\n updateEntityWithOperation(folder, folderOperation.data)\n }\n }\n }\n\n // optimistically remove deleted folders\n if (deleteIds.size > 0) {\n for (let i = draft.folders.length - 1; i >= 0; i--) {\n if (deleteIds.has(draft.folders[i].id)) draft.folders.splice(i, 1)\n }\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(folderPatch)\n }\n}\n\nconst patchListItems = (\n entities: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = entities.map((op) => ({ type: 'entityListItem', id: op.entityId }))\n const entries = entityListsQueriesGql.util.selectInvalidatedBy(state, tags)\n\n const deleteIds = new Set(\n entities.filter((op) => op.type === 'delete' && op.entityId).map((op) => op.entityId),\n )\n\n for (const entry of entries) {\n if (entry.endpointName === 'getListItemsInfinite') {\n const listItemsPatch = dispatch(\n entityListsQueriesGql.util.updateQueryData(\n 'getListItemsInfinite',\n entry.originalArgs,\n (draft) => {\n // Apply each change to matching tasks in all pages\n for (const listOperation of entities) {\n if (listOperation.type === 'update' && listOperation.data) {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n const item = page.items.find((item) => item.entityId === listOperation.entityId)\n if (item) {\n updateEntityWithOperation(item, listOperation.data)\n }\n }\n }\n }\n // optimistically remove items whose entity is being deleted\n if (deleteIds.size > 0) {\n for (const page of draft.pages) {\n for (let i = page.items.length - 1; i >= 0; i--) {\n if (deleteIds.has(page.items[i].entityId)) page.items.splice(i, 1)\n }\n }\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches?.push(listItemsPatch)\n }\n }\n}\n\nconst splitByOpType = (operations: OperationModel[]) => {\n return operations.reduce(\n (acc: Record<OperationModel['type'], OperationModel[]>, operation) => {\n acc[operation.type].push(operation)\n return acc\n },\n {\n create: [],\n update: [],\n delete: [],\n },\n )\n}\n\nconst operationsEnhanced = operationsApi.enhanceEndpoints({\n endpoints: {\n operations: {},\n },\n})\n\n// enhance the argument type to include some extra fields\ninterface UpdateOverviewEntitiesArg extends OperationsApiArg {\n patchOperations?: PatchOperation[] // extra entities to patch\n}\n\nconst operationsApiEnhancedInjected = operationsEnhanced.injectEndpoints({\n endpoints: (build) => ({\n updateOverviewEntities: build.mutation<\n OperationsResponseModel | undefined,\n UpdateOverviewEntitiesArg\n >({\n async queryFn(arg, { dispatch }) {\n try {\n const result = await dispatch(operationsEnhanced.endpoints.operations.initiate(arg))\n\n // Check if the network request itself failed (offline, timeout, etc.)\n if (result.error) {\n return { error: result.error as FetchBaseQueryError }\n }\n\n const data = result.data\n // check for any errors in the result\n const uniqueErrors = new Set()\n const uniqueErrorCodes = new Set()\n for (const op of data?.operations || []) {\n if (op.success === false && op.detail) {\n if (!uniqueErrors.has(op.detail)) {\n uniqueErrors.add(op.detail)\n }\n if (!uniqueErrorCodes.has(op.errorCode)) {\n uniqueErrorCodes.add(op.errorCode)\n }\n }\n }\n\n if (uniqueErrors.size > 0) {\n const error = {\n status: 'FETCH_ERROR',\n error: Array.from(uniqueErrors).join(', '),\n errorCodes: Array.from(uniqueErrorCodes),\n } as FetchBaseQueryError\n return { error }\n } else {\n return { data }\n }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n async onQueryStarted(\n { operationsRequestModel, patchOperations = [], projectName },\n { dispatch, queryFulfilled, getState },\n ) {\n if (!operationsRequestModel.operations?.length) return\n const { operations } = operationsRequestModel\n // we need to split the operations by entity type\n const operationsByType = operations.reduce(\n (acc: Record<OperationModel['entityType'], OperationModel[]>, operation) => {\n acc[operation.entityType].push(operation)\n return acc\n },\n {\n task: [],\n folder: [],\n product: [],\n version: [],\n representation: [],\n workfile: [],\n },\n )\n\n // collect patches incase we need to undo them\n const state = getState()\n const patches: any[] = []\n\n // patch the overview tasks\n if (operationsByType.task?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.task)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing tasks and optimistically remove deleted ones\n // (deletes are reconciled via invalidatesTags once the request settles)\n patchOverviewTasks([...updatesToPatch, ...deleteOps], { state, dispatch }, patches)\n }\n\n // patch the overview folders (any other folders from foldersList)\n if (operationsByType.folder?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.folder)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing folders and optimistically remove deleted ones\n patchOverviewFolders([...updatesToPatch, ...deleteOps], { state, dispatch }, patches)\n }\n\n const patchExtraTasks = patchOperations.filter((op) => op.entityType === 'task')\n const patchExtraFolders = patchOperations.filter((op) => op.entityType === 'folder')\n\n if (patchExtraTasks.length) {\n // often used for updating inherited dependents\n patchOverviewTasks(patchExtraTasks, { state, dispatch }, patches)\n }\n\n if (patchExtraFolders.length) {\n // often used for updating inherited dependents\n patchOverviewFolders(patchExtraFolders, { state, dispatch }, patches)\n }\n\n patchFolderStatusInVersions(\n [...operationsByType.folder, ...patchExtraFolders],\n { state, dispatch },\n patches,\n )\n\n // patch the list items\n patchListItems([...operations, ...patchOperations], { state, dispatch }, patches)\n\n // patch versions\n if (operationsByType.version?.length) {\n patchVersions(operationsByType.version, { state, dispatch }, patches)\n }\n\n // patch products\n if (operationsByType.product?.length) {\n patchProducts(operationsByType.product, { state, dispatch }, patches)\n }\n\n // try to patch any details panels\n // first we patch the individual entities\n // then we patch the details panel cache\n const entityTags = operations.map((op) => ({\n id: op.entityId,\n type: op.entityType,\n }))\n const entitiesTags = entityTags.map((tag) => ({\n type: 'entities',\n id: tag.id,\n }))\n\n // invalidates the details panel cache so that it fetches all individual entities again (using it's updated cache)\n const invalidateEntryPanel = () =>\n dispatch(detailsPanelQueries.util.invalidateTags(entitiesTags))\n\n // the individual entities that are patched for the details panel\n // remember the details panel cache is made up of individual entity caches\n const detailsPanelEntityCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entityTags,\n )\n\n // the cache for the whole details panel\n const detailsPanelEntitiesCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entitiesTags,\n )\n\n for (const entry of detailsPanelEntitiesCaches) {\n if (entry.endpointName !== 'getEntitiesDetailsPanel') continue\n const entitiesDetailsResult = dispatch(\n detailsPanelQueries.util.updateQueryData(\n entry.endpointName as 'getEntitiesDetailsPanel',\n entry.originalArgs,\n (draft) => {\n for (const entity of draft) {\n patchDetailsPanelEntity(operations, entity)\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches.push(entitiesDetailsResult)\n }\n\n try {\n await queryFulfilled\n\n // Background refetch logic - runs after successful mutation\n // This ensures calculated attributes are up-to-date and entities are correctly filtered\n\n const taskOperations = operationsByType.task || []\n const folderOperations = operationsByType.folder || []\n const versionOperations = operationsByType.version || []\n const productOperations = operationsByType.product || []\n\n if (projectName) {\n if (taskOperations.length || folderOperations.length) {\n scheduleStatsRefetch(dispatch, projectName, [\n 'folderColumnStats',\n 'taskColumnStats',\n 'entityListItemsColumnStats',\n ])\n }\n if (versionOperations.length || productOperations.length) {\n scheduleStatsRefetch(dispatch, projectName, [\n 'productColumnStats',\n 'versionColumnStats',\n 'entityListItemsColumnStats',\n ])\n }\n }\n\n // Early exit if no operations\n if (taskOperations.length === 0 && folderOperations.length === 0) {\n return\n }\n\n // Extract updated entity IDs (always needed for refetch)\n const updatedTaskIds = getUpdatedEntityIds(taskOperations)\n const updatedFolderIds = getUpdatedEntityIds(folderOperations)\n\n // Get all active task list cache entries\n const overviewTaskTags = updatedTaskIds.map((id) => ({ type: 'overviewTask', id }))\n const tasksListInfiniteEntries = getOverviewApi.util\n .selectInvalidatedBy(state, overviewTaskTags)\n .filter((entry) => entry.endpointName === 'getTasksListInfinite')\n\n // Requirement: \"refetch the full data for the specific entity/entities\"\n // For each cache with its own filter, fetch entities and update that cache\n if (updatedTaskIds.length > 0 && projectName) {\n // Process getTasksListInfinite caches\n for (const entry of tasksListInfiniteEntries) {\n await refetchTasksForCacheEntry({\n dispatch,\n projectName,\n updatedTaskIds,\n cacheEntry: entry,\n })\n }\n\n // Process getOverviewTasksByFolders caches\n // Use selectInvalidatedBy to get only caches that contain the updated tasks\n const overviewTasksEntries = getOverviewApi.util\n .selectInvalidatedBy(state, overviewTaskTags)\n .filter((entry) => entry.endpointName === 'getOverviewTasksByFolders')\n\n for (const entry of overviewTasksEntries) {\n await refetchOverviewTasksForCacheEntry({\n dispatch,\n projectName,\n updatedTaskIds,\n cacheEntry: entry,\n })\n }\n }\n\n // Always refetch folders if they were updated (for calculated attributes)\n // Not conditional on affectsFilter - requirement says \"always refetch entities\"\n // (deletes are reconciled via invalidatesTags)\n if (updatedFolderIds.length > 0 && projectName) {\n dispatch(foldersQueries.util.invalidateTags([{ type: 'folder', id: 'LIST' }]))\n }\n } catch (error) {\n // undo all patches if there is an error\n for (const patch of patches) {\n patch.undo()\n }\n\n if (detailsPanelEntityCaches.length) {\n // we invalidate the tags for the detailsPanelEntityCaches that were patched\n // invalidate the details panel cache\n invalidateEntryPanel()\n }\n }\n },\n invalidatesTags: (_r, _e, { operationsRequestModel, projectName }) => {\n type Tags = { id: string; type: string }[]\n const userDashboardTags: Tags = [{ type: 'kanban', id: 'project-' + projectName }],\n taskProgressTags: Tags = [],\n entityListItemTags: Tags = [],\n tasksFolderTags: Tags = [],\n deletedEntityTags: Tags = [],\n entityActivityTags: Tags = []\n\n let hasAttribOp = false\n const deletedTypes = new Set<string>()\n operationsRequestModel.operations?.forEach((op) => {\n const { entityId } = op\n if (entityId) {\n taskProgressTags.push({ type: 'progress', id: entityId })\n // Invalidate list item cache for this entity to trigger background refetch\n entityListItemTags.push({ type: 'entityListItem', id: entityId })\n } else {\n // new entity created, so we should invalidate everything\n taskProgressTags.push({ type: 'progress', id: 'LIST' })\n }\n if ((op.data as any)?.attrib) hasAttribOp = true\n // own-edit activity events are sender-filtered on the websocket, so refetch open feeds\n if (\n op.type === 'update' &&\n entityId &&\n ['status', 'attrib', 'tags', 'assignees', `${op.entityType}Type`].some(\n (key) => (op.data as any)?.[key] !== undefined,\n )\n ) {\n entityActivityTags.push({ type: 'entityActivities', id: entityId })\n }\n if (op.type === 'delete' && entityId) {\n deletedTypes.add(op.entityType)\n deletedEntityTags.push({ type: op.entityType, id: entityId })\n // details panels showing the deleted entity\n deletedEntityTags.push({ type: 'entities', id: entityId })\n }\n })\n\n if (hasAttribOp) {\n tasksFolderTags.push({ type: 'tasksFolder', id: projectName })\n }\n\n // Deleted rows are removed optimistically; only server-side descendants need a refetch\n // (folder -> folders/tasks/products/versions, product -> versions).\n const invalidateList = new Set<string>()\n if (deletedTypes.has('folder')) {\n ;['folder', 'task', 'product', 'version'].forEach((t) => invalidateList.add(t))\n }\n if (deletedTypes.has('product')) invalidateList.add('version')\n\n if (invalidateList.has('folder')) deletedEntityTags.push({ type: 'folder', id: 'LIST' })\n if (invalidateList.has('task')) {\n deletedEntityTags.push(\n { type: 'overviewTask', id: 'LIST' },\n { type: 'overviewTask', id: projectName },\n )\n }\n if (invalidateList.has('product')) deletedEntityTags.push({ type: 'product', id: 'LIST' })\n if (invalidateList.has('version')) deletedEntityTags.push({ type: 'version', id: 'LIST' })\n\n return [\n ...userDashboardTags,\n ...taskProgressTags,\n ...entityListItemTags,\n ...tasksFolderTags,\n ...deletedEntityTags,\n ...entityActivityTags,\n ]\n },\n }),\n }),\n})\n\nexport const { useUpdateOverviewEntitiesMutation } = operationsApiEnhancedInjected\n"],"names":["updateEntityWithOperation","entity","operationData","key","existingLinks","newLinks","newLink","existingIndex","link","linksToDelete","linkId","getOverviewTaskTags","tasks","op","getOverviewFolderTags","folders","createLinkDeletionPatch","entityId","entityType","linkIds","deleteLinksFromEntities","entities","patchOverviewEntities","state","dispatch","patches","entitiesByType","acc","patchOverviewTasks","patchOverviewFolders","tags","taskEntries","getOverviewApi","deleteIds","removeDeletedTasks","tasksArrayDraft","i","entry","tasksPatch","draft","taskOperation","page","task","applyToDraft","patchTask","statsRefetchTimers","scheduleStatsRefetch","projectName","tagTypes","existing","type","folderEntries","foldersQueries","folderPatch","folderMap","folder","folderOperation","patchListItems","entries","entityListsQueriesGql","listItemsPatch","listOperation","item","splitByOpType","operations","operation","operationsEnhanced","operationsApi","operationsApiEnhancedInjected","build","arg","result","data","uniqueErrors","uniqueErrorCodes","e","operationsRequestModel","patchOperations","queryFulfilled","getState","operationsByType","deleteOps","update","updatesToPatch","dep","patchExtraTasks","patchExtraFolders","patchFolderStatusInVersions","patchVersions","patchProducts","entityTags","entitiesTags","tag","invalidateEntryPanel","detailsPanelQueries","detailsPanelEntityCaches","detailsPanelEntitiesCaches","entitiesDetailsResult","patchDetailsPanelEntity","taskOperations","folderOperations","versionOperations","productOperations","updatedTaskIds","getUpdatedEntityIds","updatedFolderIds","overviewTaskTags","id","tasksListInfiniteEntries","refetchTasksForCacheEntry","overviewTasksEntries","refetchOverviewTasksForCacheEntry","patch","_r","_e","userDashboardTags","taskProgressTags","entityListItemTags","tasksFolderTags","deletedEntityTags","entityActivityTags","hasAttribOp","deletedTypes","invalidateList","t","useUpdateOverviewEntitiesMutation"],"mappings":"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"}