@ynput/ayon-frontend-shared 0.4.0 → 0.4.1

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 (730) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +49 -46
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +244 -228
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/Slicer.cjs.js +1 -1
  8. package/dist/Slicer.es.js +52 -49
  9. package/dist/Slicer.es.js.map +1 -1
  10. package/dist/api.cjs.js +1 -1
  11. package/dist/api.es.js +93 -93
  12. package/dist/components.cjs.js +1 -1
  13. package/dist/components.es.js +130 -126
  14. package/dist/components.es.js.map +1 -1
  15. package/dist/index.cjs.js +1 -1
  16. package/dist/index.es.js +36 -33
  17. package/dist/index.es.js.map +1 -1
  18. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  19. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  20. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  21. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  22. package/dist/shared/src/api/generated/graphql.cjs.js +40 -21
  23. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  24. package/dist/shared/src/api/generated/graphql.es.js +36 -17
  25. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  26. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  27. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  28. package/dist/shared/src/api/generated/views.cjs.js.map +1 -1
  29. package/dist/shared/src/api/generated/views.es.js.map +1 -1
  30. package/dist/shared/src/api/queries/activities/getActivities.cjs.js +1 -1
  31. package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
  32. package/dist/shared/src/api/queries/activities/getActivities.es.js +4 -4
  33. package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
  34. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
  35. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
  36. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +99 -105
  37. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
  38. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
  39. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  40. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +133 -87
  41. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  42. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  43. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  44. package/dist/shared/src/api/queries/entityLists/getLists.es.js +155 -155
  45. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  46. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -1
  47. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  48. package/dist/shared/src/api/queries/folders/getFolders.es.js +66 -64
  49. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  50. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +1 -1
  51. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -1
  52. package/dist/shared/src/api/queries/links/getEntityLinks.es.js +110 -111
  53. package/dist/shared/src/api/queries/links/getEntityLinks.es.js.map +1 -1
  54. package/dist/shared/src/api/queries/links/getLinks.cjs.js +1 -1
  55. package/dist/shared/src/api/queries/links/getLinks.cjs.js.map +1 -1
  56. package/dist/shared/src/api/queries/links/getLinks.es.js +58 -73
  57. package/dist/shared/src/api/queries/links/getLinks.es.js.map +1 -1
  58. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  59. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  60. package/dist/shared/src/api/queries/overview/getOverview.es.js +380 -328
  61. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  62. package/dist/shared/src/api/queries/overview/patchVersions.cjs.js +1 -1
  63. package/dist/shared/src/api/queries/overview/patchVersions.cjs.js.map +1 -1
  64. package/dist/shared/src/api/queries/overview/patchVersions.es.js +130 -77
  65. package/dist/shared/src/api/queries/overview/patchVersions.es.js.map +1 -1
  66. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +1 -1
  67. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  68. package/dist/shared/src/api/queries/overview/updateOverview.es.js +136 -132
  69. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  70. package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -1
  71. package/dist/shared/src/api/queries/review/getReview.cjs.js.map +1 -1
  72. package/dist/shared/src/api/queries/review/getReview.es.js +180 -104
  73. package/dist/shared/src/api/queries/review/getReview.es.js.map +1 -1
  74. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  75. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  76. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +152 -132
  77. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  78. package/dist/shared/src/api/queries/users/getUsers.cjs.js +2 -2
  79. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  80. package/dist/shared/src/api/queries/users/getUsers.es.js +2 -2
  81. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  82. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  83. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  84. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +485 -439
  85. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  86. package/dist/shared/src/components/Chips/Chips.cjs.js +1 -1
  87. package/dist/shared/src/components/Chips/Chips.cjs.js.map +1 -1
  88. package/dist/shared/src/components/Chips/Chips.es.js +18 -17
  89. package/dist/shared/src/components/Chips/Chips.es.js.map +1 -1
  90. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +1 -1
  91. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
  92. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +23 -20
  93. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
  94. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  95. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  96. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +10 -7
  97. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  98. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  99. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  100. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +23 -20
  101. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  102. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +1 -1
  103. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  104. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +23 -20
  105. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  106. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  107. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  108. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +23 -20
  109. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  110. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
  111. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
  112. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +34 -30
  113. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
  114. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  115. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  116. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +23 -20
  117. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  118. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  119. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  120. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +28 -25
  121. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  122. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  123. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  124. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +23 -20
  125. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  126. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  127. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  128. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +27 -24
  129. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  130. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  131. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  132. package/dist/shared/src/components/LinksManager/LinksManager.es.js +23 -20
  133. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  134. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  135. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  136. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +23 -20
  137. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  138. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  139. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  140. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +23 -20
  141. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  142. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
  143. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
  144. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +23 -20
  145. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
  146. package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
  147. package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
  148. package/dist/shared/src/components/Menu/Menu.es.js +23 -20
  149. package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
  150. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  151. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  152. package/dist/shared/src/components/Menu/MenuItem.es.js +21 -18
  153. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  154. package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
  155. package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
  156. package/dist/shared/src/components/Menu/MenuList.es.js +23 -20
  157. package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
  158. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +1 -1
  159. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  160. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +23 -20
  161. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  162. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  163. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  164. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +23 -20
  165. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  166. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +2 -2
  167. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  168. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +210 -182
  169. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  170. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
  171. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  172. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +89 -82
  173. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  174. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  175. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  176. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +23 -20
  177. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  178. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  179. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  180. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +109 -106
  181. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  182. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  183. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  184. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +23 -20
  185. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  186. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  187. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  188. package/dist/shared/src/components/RenameForm/RenameForm.es.js +23 -20
  189. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  190. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  191. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  192. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +29 -32
  193. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  194. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  195. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  196. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +30 -27
  197. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  198. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  199. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  200. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +29 -26
  201. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  202. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  203. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  204. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +29 -26
  205. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  206. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.cjs.js +1 -1
  207. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.cjs.js.map +1 -1
  208. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.es.js +2 -1
  209. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.es.js.map +1 -1
  210. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  211. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  212. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +511 -394
  213. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  214. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +1 -1
  215. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  216. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +23 -20
  217. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  218. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js +8 -5
  219. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js.map +1 -1
  220. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js +36 -22
  221. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js.map +1 -1
  222. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
  223. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  224. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +30 -27
  225. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  226. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  227. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  228. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +29 -26
  229. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  230. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +1 -1
  231. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  232. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +23 -20
  233. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  234. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  235. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  236. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +29 -26
  237. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  238. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  239. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  240. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +32 -29
  241. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  242. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  243. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  244. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +29 -26
  245. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  246. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  247. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  248. package/dist/shared/src/containers/Actions/Actions.es.js +23 -20
  249. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  250. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  251. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  252. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +29 -26
  253. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  254. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  255. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  256. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +29 -26
  257. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  258. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  259. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  260. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +29 -26
  261. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  262. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  263. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  264. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +29 -26
  265. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  266. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  267. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  268. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +29 -26
  269. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  270. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js +1 -1
  271. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js.map +1 -1
  272. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js +23 -20
  273. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js.map +1 -1
  274. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  275. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  276. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +29 -26
  277. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  278. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  279. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  280. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +29 -26
  281. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  282. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  283. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  284. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +23 -20
  285. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  286. package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js +1 -1
  287. package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js.map +1 -1
  288. package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.es.js +12 -12
  289. package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.es.js.map +1 -1
  290. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  291. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  292. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +133 -130
  293. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  294. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  295. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  296. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +29 -26
  297. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  298. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  299. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  300. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +27 -24
  301. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  302. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  303. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  304. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +27 -24
  305. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  306. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  307. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  308. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +23 -20
  309. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  310. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  311. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  312. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +29 -26
  313. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  314. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  315. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  316. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +29 -26
  317. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  318. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  319. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  320. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +29 -26
  321. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  322. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  323. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  324. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +29 -26
  325. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  326. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  327. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  328. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +23 -20
  329. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  330. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  331. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  332. package/dist/shared/src/containers/Feed/Feed.es.js +28 -25
  333. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  334. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  335. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  336. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +29 -26
  337. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  338. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  339. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  340. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +29 -26
  341. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  342. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  343. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  344. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +29 -26
  345. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  346. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  347. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  348. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +23 -20
  349. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  350. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  351. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  352. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +27 -24
  353. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  354. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  355. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  356. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +33 -30
  357. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  358. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  359. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  360. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +23 -20
  361. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  362. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  363. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  364. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +23 -20
  365. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  366. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +2 -2
  367. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -1
  368. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +21 -18
  369. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -1
  370. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  371. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  372. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +23 -20
  373. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  374. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  375. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  376. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +27 -24
  377. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  378. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  379. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  380. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +26 -23
  381. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  382. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  383. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  384. package/dist/shared/src/containers/ListTable/ListTable.es.js +25 -22
  385. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  386. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  387. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  388. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +119 -116
  389. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  390. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  391. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  392. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +29 -26
  393. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  394. package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js +2 -2
  395. package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js.map +1 -1
  396. package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js +114 -111
  397. package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js.map +1 -1
  398. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js +1 -1
  399. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js.map +1 -1
  400. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js +116 -113
  401. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js.map +1 -1
  402. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  403. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  404. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +64 -61
  405. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  406. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  407. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  408. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +586 -414
  409. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  410. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  411. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  412. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +24 -21
  413. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  414. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  415. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  416. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +24 -21
  417. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  418. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  419. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  420. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +29 -26
  421. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  422. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  423. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  424. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +131 -128
  425. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  426. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +5 -5
  427. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  428. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +289 -272
  429. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  430. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  431. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  432. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +34 -31
  433. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  434. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  435. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  436. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +25 -22
  437. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  438. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +1 -1
  439. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  440. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +28 -25
  441. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  442. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  443. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  444. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +118 -115
  445. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  446. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  447. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  448. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +23 -20
  449. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  450. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  451. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  452. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +28 -25
  453. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  454. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  455. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  456. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +25 -22
  457. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  458. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  459. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  460. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +124 -121
  461. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  462. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  463. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  464. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +48 -45
  465. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  466. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  467. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  468. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +26 -23
  469. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  470. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  471. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  472. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +23 -20
  473. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  474. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  475. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  476. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +103 -100
  477. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  478. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  479. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  480. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +26 -23
  481. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  482. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  483. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  484. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +26 -23
  485. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  486. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupCounts.cjs.js.map +1 -1
  487. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupCounts.es.js.map +1 -1
  488. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  489. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  490. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +93 -383
  491. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  492. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  493. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  494. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +23 -20
  495. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  496. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  497. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  498. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +22 -19
  499. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  500. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  501. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  502. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +25 -22
  503. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  504. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  505. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  506. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +37 -45
  507. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  508. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  509. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  510. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +21 -18
  511. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  512. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  513. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  514. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +37 -34
  515. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  516. package/dist/shared/src/containers/ProjectTreeTable/utils/columnIds.cjs.js +2 -0
  517. package/dist/shared/src/containers/ProjectTreeTable/utils/columnIds.cjs.js.map +1 -0
  518. package/dist/shared/src/containers/ProjectTreeTable/utils/columnIds.es.js +45 -0
  519. package/dist/shared/src/containers/ProjectTreeTable/utils/columnIds.es.js.map +1 -0
  520. package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.cjs.js.map +1 -1
  521. package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.es.js.map +1 -1
  522. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js +1 -1
  523. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js.map +1 -1
  524. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js +37 -21
  525. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js.map +1 -1
  526. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +1 -1
  527. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  528. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +28 -25
  529. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  530. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +6 -2
  531. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  532. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +28 -21
  533. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  534. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +1 -1
  535. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
  536. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +29 -26
  537. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
  538. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.cjs.js +30 -0
  539. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.cjs.js.map +1 -0
  540. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.es.js +370 -0
  541. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.es.js.map +1 -0
  542. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +2 -2
  543. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  544. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +39 -36
  545. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  546. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +1 -1
  547. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
  548. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +23 -20
  549. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
  550. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  551. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  552. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +26 -23
  553. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  554. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  555. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  556. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +29 -26
  557. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  558. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +1 -1
  559. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
  560. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +23 -20
  561. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
  562. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  563. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  564. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +29 -26
  565. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  566. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  567. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  568. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +29 -26
  569. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  570. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +1 -1
  571. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -1
  572. package/dist/shared/src/containers/Slicer/components/Slicer.es.js +25 -22
  573. package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -1
  574. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +1 -1
  575. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
  576. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +23 -20
  577. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
  578. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  579. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  580. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +29 -26
  581. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  582. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  583. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  584. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +27 -24
  585. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  586. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
  587. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
  588. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +23 -20
  589. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
  590. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js +1 -1
  591. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js.map +1 -1
  592. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js +22 -19
  593. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js.map +1 -1
  594. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
  595. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
  596. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +23 -20
  597. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
  598. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
  599. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
  600. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +23 -20
  601. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
  602. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js +1 -1
  603. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js.map +1 -1
  604. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js +25 -22
  605. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js.map +1 -1
  606. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js +1 -1
  607. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js.map +1 -1
  608. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js +23 -20
  609. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js.map +1 -1
  610. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js +1 -1
  611. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js.map +1 -1
  612. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js +23 -20
  613. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js.map +1 -1
  614. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js +1 -1
  615. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js.map +1 -1
  616. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js +23 -20
  617. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js.map +1 -1
  618. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  619. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  620. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +24 -21
  621. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  622. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  623. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  624. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +23 -20
  625. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  626. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  627. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  628. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +23 -20
  629. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  630. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +1 -1
  631. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  632. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +23 -20
  633. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  634. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  635. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  636. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +25 -22
  637. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  638. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  639. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  640. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +26 -23
  641. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  642. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  643. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  644. package/dist/shared/src/context/DetailsPanelContext.es.js +27 -24
  645. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  646. package/dist/shared/src/context/EntityUpdatesContext.cjs.js +1 -1
  647. package/dist/shared/src/context/EntityUpdatesContext.cjs.js.map +1 -1
  648. package/dist/shared/src/context/EntityUpdatesContext.es.js +85 -65
  649. package/dist/shared/src/context/EntityUpdatesContext.es.js.map +1 -1
  650. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  651. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  652. package/dist/shared/src/context/PowerpackContext.es.js +27 -24
  653. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  654. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  655. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  656. package/dist/shared/src/context/ProjectFoldersContext.es.js +25 -22
  657. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  658. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  659. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  660. package/dist/shared/src/context/SubtasksModulesContext.es.js +25 -22
  661. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  662. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  663. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  664. package/dist/shared/src/context/WebsocketContext.es.js +31 -28
  665. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  666. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  667. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  668. package/dist/shared/src/hooks/useEntityUpdate.es.js +23 -20
  669. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  670. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  671. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  672. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +23 -20
  673. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  674. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
  675. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
  676. package/dist/shared/src/hooks/useHierarchyTable.es.js +23 -20
  677. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
  678. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  679. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  680. package/dist/shared/src/hooks/useUserProjectConfig.es.js +23 -20
  681. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  682. package/dist/shared/src/util/columnConfigConverter.cjs.js +1 -1
  683. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
  684. package/dist/shared/src/util/columnConfigConverter.es.js +33 -33
  685. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
  686. package/dist/shared/src/util/getAttributeIcon.cjs.js +1 -1
  687. package/dist/shared/src/util/getAttributeIcon.cjs.js.map +1 -1
  688. package/dist/shared/src/util/getAttributeIcon.es.js +2 -1
  689. package/dist/shared/src/util/getAttributeIcon.es.js.map +1 -1
  690. package/dist/shared/src/util/realtimeUpdatesUtils.cjs.js +1 -1
  691. package/dist/shared/src/util/realtimeUpdatesUtils.cjs.js.map +1 -1
  692. package/dist/shared/src/util/realtimeUpdatesUtils.es.js +33 -27
  693. package/dist/shared/src/util/realtimeUpdatesUtils.es.js.map +1 -1
  694. package/dist/types/api/generated/graphql.d.ts +45 -2
  695. package/dist/types/api/generated/graphqlLinks.d.ts +14 -2
  696. package/dist/types/api/generated/views.d.ts +13 -4
  697. package/dist/types/api/queries/activities/getActivities.d.ts +24 -0
  698. package/dist/types/api/queries/activities/util/activityRealtimeHandler.d.ts +0 -3
  699. package/dist/types/api/queries/entities/getEntity.d.ts +12 -0
  700. package/dist/types/api/queries/entities/getEntityPanel.d.ts +12 -0
  701. package/dist/types/api/queries/entities/updateEntity.d.ts +12 -0
  702. package/dist/types/api/queries/entityLists/getLists.d.ts +12 -7
  703. package/dist/types/api/queries/entityLists/types.d.ts +7 -0
  704. package/dist/types/api/queries/overview/getOverview.d.ts +14 -2
  705. package/dist/types/api/queries/overview/patchVersions.d.ts +9 -0
  706. package/dist/types/api/queries/project/getProject.d.ts +12 -0
  707. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +12 -0
  708. package/dist/types/api/queries/users/getUsers.d.ts +12 -0
  709. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +155 -0
  710. package/dist/types/components/EntityIcon/EntityIcon.d.ts +4 -4
  711. package/dist/types/components/ProjectTableSettings/ColumnsSettings.d.ts +9 -1
  712. package/dist/types/components/ProjectTableSettings/index.d.ts +1 -0
  713. package/dist/types/components/RemotePage/RemotePageWrapper.d.ts +1 -1
  714. package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +5 -2
  715. package/dist/types/components/SettingsPanel/SettingsPanelItemTemplate.d.ts +1 -0
  716. package/dist/types/components/index.d.ts +1 -0
  717. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +3 -1
  718. package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +22 -1
  719. package/dist/types/containers/ProjectTreeTable/hooks/useGroupCounts.d.ts +1 -0
  720. package/dist/types/containers/ProjectTreeTable/types/index.d.ts +1 -1
  721. package/dist/types/containers/ProjectTreeTable/types/table.d.ts +3 -0
  722. package/dist/types/containers/ProjectTreeTable/utils/columnIds.d.ts +10 -0
  723. package/dist/types/containers/ProjectTreeTable/utils/getTableFieldOptions.d.ts +2 -1
  724. package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +1 -0
  725. package/dist/types/containers/ProjectTreeTable/widgets/EntityWidget.d.ts +15 -0
  726. package/dist/types/containers/ProjectTreeTable/widgets/index.d.ts +1 -0
  727. package/dist/types/util/realtimeUpdatesUtils.d.ts +6 -3
  728. package/dist/util.cjs.js +1 -1
  729. package/dist/util.es.js +43 -42
  730. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"getUserDashboard.cjs.js","sources":["../../../../../../src/api/queries/userDashboard/getUserDashboard.ts"],"sourcesContent":["import {\n gqlApi,\n GetKanbanProjectUsersQuery,\n GetKanbanQuery,\n ProjectModel,\n KanbanNode,\n Anatomy,\n} from '@shared/api/generated'\nimport { projectQueries } from '../project'\nimport PubSub from '@shared/util/pubsub'\nimport { subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport convertAccessGroupsData, { AccessGroups } from './convertAccessGroupsData'\n\n// GetKanban response type\nexport type GetKanbanResponse = KanbanNode[]\n\n// GetKanbanProjectUsers response type\nexport type KanbanProjectUserNode = Omit<\n GetKanbanProjectUsersQuery['users']['edges'][0]['node'],\n 'accessGroups'\n> & { accessGroups: AccessGroups; projects: string[]; avatarUrl: string }\nexport type GetKanbanProjectUsersResponse = KanbanProjectUserNode[]\n\nexport interface MessageSummary {\n entityId: string\n entityPath: string\n parentId: string\n value: any\n}\n\nexport interface Message {\n id: string\n topic: string\n project: string\n user: string\n sender: string\n senderType: string\n description: string\n status: string\n progress: number\n store: boolean\n createdAt: string\n updatedAt: string\n dependsOn: string | null\n summary: MessageSummary\n}\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\nimport getUserProjectsAccess from './getUserProjectsAccess'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<\n Definitions,\n 'GetKanban' | 'GetKanbanTasks' | 'GetKanbanProjectUsers'\n> & {\n GetKanban: OverrideResultType<Definitions['GetKanban'], GetKanbanResponse>\n GetKanbanTasks: OverrideResultType<Definitions['GetKanbanTasks'], GetKanbanResponse>\n GetKanbanProjectUsers: OverrideResultType<\n Definitions['GetKanbanProjectUsers'],\n GetKanbanProjectUsersResponse\n >\n}\n\n// get edges and sort by task label || name\nconst transformKanban = (response: GetKanbanQuery) =>\n response.kanban.edges\n .map(({ node }) => node)\n .sort((a, b) => {\n const aLabel = a.label || a.name\n const bLabel = b.label || b.name\n return aLabel.localeCompare(bLabel)\n })\n\nconst provideKanbanTags = (result: GetKanbanResponse | undefined, _error: any, args: any) =>\n result?.length\n ? [\n { type: 'kanBanTask', id: 'LIST' },\n ...result.flatMap(({ id, projectName, assignees }) => [\n { type: 'task', id },\n { type: 'kanban', id: 'project-' + projectName },\n ...assignees.map((assignee) => ({ type: 'kanban', id: 'user-' + assignee })),\n ...assignees.map((assignee) => ({\n type: 'kanban',\n id: 'user-' + assignee + '-project-' + projectName,\n })),\n { type: 'kanban', id: JSON.stringify(args) },\n ]),\n ]\n : [{ type: 'kanBanTask', id: 'LIST' }]\n\nexport const getKanbanTasks = async (\n {\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n },\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n) => {\n try {\n // get the task\n const response = await dispatch(\n enhancedDashboardGraphqlApi.endpoints.GetKanbanTasks.initiate(\n { projects, taskIds },\n { forceRefetch: true },\n ),\n )\n\n if (response.status === 'rejected' || !response.data) {\n console.error('No tasks found', taskIds)\n throw new Error(`No tasks found ${taskIds.join(', ')}`)\n }\n\n if (response.status !== 'fulfilled') return []\n // get tasks from response (usually only one task)\n return response.data\n } catch (error) {\n console.error(error)\n return []\n }\n}\n\nconst enhancedDashboardGraphqlApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetKanban: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n async onCacheEntryAdded(\n { assignees = [], projects = [] } = {},\n { updateCachedData, cacheDataLoaded, cacheEntryRemoved, dispatch, getCacheEntry },\n ) {\n let token\n let unsubscribeThumbnails: (() => void) | undefined\n let fetchQueue: { taskIds: string[]; projects: string[] }[] = []\n let fetchTimeout: any = null\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const cacheTasks = getCacheEntry().data ?? []\n if (!cacheTasks.length) return\n\n const matchedMessages = messages.filter((m) =>\n cacheTasks.some((t) => t.id === m.summary.entityId && t.projectName === m.project),\n )\n if (matchedMessages.length === 0) return\n\n updateCachedData((draft) => {\n matchedMessages.forEach((message) => {\n const entityIndex = draft.findIndex((t) => t.id === message.summary.entityId)\n if (entityIndex !== -1 && draft[entityIndex] && message.summary.thumbnailHash) {\n draft[entityIndex].thumbnailHash = message.summary.thumbnailHash\n }\n })\n })\n },\n ['task'],\n )\n\n const processFetchQueue = async () => {\n const batch = [...fetchQueue]\n fetchQueue = []\n fetchTimeout = null\n\n const taskIds = Array.from(new Set(batch.flatMap((b) => b.taskIds)))\n const projects = Array.from(new Set(batch.flatMap((b) => b.projects)))\n\n if (taskIds.length === 0) return\n\n const tasks = await getKanbanTasks({ projects, taskIds }, dispatch)\n\n // get all tasks that have been ADDED to the assignees\n const tasksWithArgAssignees = tasks.filter((task) =>\n task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n // get all tasks that have been REMOVED from the assignees\n const tasksWithoutArgAssignees = tasks.filter(\n (task) => !task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n\n // patch the kanban query by adding new tasks and remove old tasks\n updateCachedData((draft) => {\n // add new tasks\n tasksWithArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index === -1) {\n draft.push(task)\n } else {\n // update the task\n draft[index] = task\n }\n })\n // remove old tasks\n tasksWithoutArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index !== -1) {\n draft.splice(index, 1)\n }\n })\n })\n }\n\n const patchKanbanTask = ({\n projects = [],\n taskIds = [],\n payload,\n }: {\n projects: string[]\n taskIds: string[]\n payload?: Partial<KanbanNode>\n }) => {\n let needsFetch = false\n\n if (payload) {\n updateCachedData((draft) => {\n taskIds.forEach((id) => {\n const index = draft.findIndex((t) => t.id === id)\n if (index !== -1) {\n // update the task\n Object.assign(draft[index], payload)\n\n // if assignees changed, check if it should be removed\n if (payload.assignees) {\n const isStillAssigned =\n !assignees?.length || payload.assignees.some((a) => assignees?.includes(a))\n if (!isStillAssigned) {\n draft.splice(index, 1)\n }\n }\n } else {\n // task not in cache, if it's now assigned to us, we need to fetch\n if (payload.assignees?.some((a) => assignees?.includes(a))) {\n needsFetch = true\n }\n }\n })\n })\n } else {\n needsFetch = true\n }\n\n if (!needsFetch) return\n\n // add to queue\n fetchQueue.push({ projects, taskIds })\n\n // debounce the fetch with a random offset\n if (!fetchTimeout) {\n const delay = Math.random() * 5000\n fetchTimeout = setTimeout(processFetchQueue, delay)\n }\n }\n\n const handlePubSub = async (_topic: string, message: Message) => {\n const project = message.project\n // first check the project name as selected\n if (!projects?.includes(project)) return console.log('project not selected')\n // then get entity id\n const entityId = message.summary.entityId\n if (!entityId) return console.log('no entity id found')\n\n // current tasks on the board\n const cacheTasks = getCacheEntry().data ?? []\n // entity.task.status_changed\n const field = message.topic.split('.')[2].split('_changed')[0]\n\n // Only patch the task for the fields status and assignees.\n if (!['status', 'assignees'].includes(field)) return\n\n const value = message.summary.value\n // cast the correct type onto value based on the field\n let castValue: any = value\n if (field === 'status') {\n castValue = String(value)\n } else if (field === 'assignees') {\n castValue = Array.isArray(value) ? (value as string[]) : []\n }\n\n // check this task is actually on the board\n const isTaskOnMyBoard = cacheTasks.some((t) => t.id === entityId)\n // if the field is assignees AND the value includes current assignees then we patch\n const isValueMe =\n field === 'assignees' && (castValue as string[]).some((a) => assignees?.includes(a))\n\n if (!isTaskOnMyBoard && !isValueMe) return\n // patch task updates into kanban cache\n patchKanbanTask({\n taskIds: [entityId],\n projects: [project],\n payload: { [field]: castValue } as Partial<KanbanNode>,\n })\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (error) {\n console.error(error)\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n if (fetchTimeout) clearTimeout(fetchTimeout)\n },\n // // there is only one cache for kanban\n // serializeQueryArgs: () => '',\n // // whenever the assignees or projects change, we need to refetch the one query\n // forceRefetch: (params) => {\n // const { currentArg, previousArg } = params\n // // if the assignees are different, we need to refetch the query\n // if (!isEqual(currentArg?.assignees, previousArg?.assignees)) return true\n // // if the projects are different, we need to refetch the query\n // if (!isEqual(currentArg?.projects, previousArg?.projects)) return true\n // return false\n // },\n },\n // same query as GetKanban but for specific tasks\n // used mainly for patching tasks into the kanban cache\n GetKanbanTasks: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n },\n // get all users on all selected projects\n GetKanbanProjectUsers: {\n transformResponse: (response: GetKanbanProjectUsersQuery, _meta, { projects } = {}) =>\n response.users.edges.map(({ node: user }) => {\n const accessGroups = convertAccessGroupsData(user.accessGroups)\n // parse access groups json\n const isUser = !user.isManager && !user.isAdmin\n // get the projects that the user has access to\n let projectsAccess = isUser ? getUserProjectsAccess(accessGroups) : projects\n if (typeof projectsAccess === 'string' || !projectsAccess) projectsAccess = []\n\n // assignees select requires avatarUrl\n const avatarUrl = `/api/users/${user.name}/avatar`\n\n return {\n ...user,\n accessGroups: accessGroups,\n projects: projectsAccess,\n avatarUrl,\n }\n }),\n providesTags: (result) =>\n result?.length\n ? [\n { type: 'user', id: 'LIST' },\n ...result.map(({ name }) => ({ type: 'user', id: name })),\n ]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const { useGetKanbanQuery, useGetKanbanProjectUsersQuery } = enhancedDashboardGraphqlApi\n\ntype GetProjectsInfoParams = {\n projects: string[]\n anatomy?: boolean\n}\n\nexport type ProjectModeWithAnatomy = ProjectModel & { anatomy?: Anatomy }\n\nexport type GetProjectsInfoResponse = { [projectName: string]: ProjectModeWithAnatomy | undefined }\n\nconst injectedDashboardRestApi = enhancedDashboardGraphqlApi.injectEndpoints({\n endpoints: (build) => ({\n getProjectsInfo: build.query<GetProjectsInfoResponse, GetProjectsInfoParams>({\n async queryFn({ projects = [], anatomy = true }, { dispatch }) {\n try {\n // get project info for each project\n const projectInfo: Record<string, ProjectModeWithAnatomy | undefined> = {}\n for (const project of projects) {\n const projectName = project as string\n // hopefully this will be cached\n // it also allows for different combination of projects but still use the cache\n const responses = [\n dispatch(projectQueries.endpoints.getProject.initiate({ projectName })).unwrap(),\n ...(anatomy\n ? [\n dispatch(\n projectQueries.endpoints.getProjectAnatomy.initiate({ projectName }),\n ).unwrap(),\n ]\n : []),\n ]\n\n const settled = await Promise.allSettled(responses)\n\n const projectDataResult = settled[0]\n const projectData =\n projectDataResult.status === 'fulfilled'\n ? (projectDataResult.value as ProjectModel)\n : undefined\n const anatomyData =\n anatomy && settled[1]?.status === 'fulfilled'\n ? (settled[1].value as Anatomy)\n : undefined\n\n if (projectData) {\n projectInfo[projectName] = {\n ...projectData,\n anatomy: anatomyData,\n } as ProjectModeWithAnatomy\n }\n }\n\n return { data: projectInfo, meta: undefined, error: undefined }\n } catch (error: any) {\n console.error(error)\n return { error, meta: undefined, data: undefined }\n }\n },\n providesTags: (_res, _error, { projects }) =>\n projects.map((projectName) => ({ type: 'project', id: projectName })),\n }),\n }),\n})\n\nexport const { useGetProjectsInfoQuery } = injectedDashboardRestApi\nexport { injectedDashboardRestApi as dashboardQueries }\n"],"names":["transformKanban","response","node","a","b","aLabel","bLabel","provideKanbanTags","result","_error","args","id","projectName","assignees","assignee","getKanbanTasks","projects","taskIds","dispatch","enhancedDashboardGraphqlApi","error","gqlApi","updateCachedData","cacheDataLoaded","cacheEntryRemoved","getCacheEntry","token","unsubscribeThumbnails","fetchQueue","fetchTimeout","subscribeToThumbnailUpdates","messages","cacheTasks","matchedMessages","m","t","draft","message","entityIndex","processFetchQueue","batch","tasks","tasksWithArgAssignees","task","tasksWithoutArgAssignees","index","patchKanbanTask","payload","needsFetch","delay","handlePubSub","_topic","project","entityId","field","value","castValue","isTaskOnMyBoard","isValueMe","PubSub","_meta","user","accessGroups","convertAccessGroupsData","projectsAccess","getUserProjectsAccess","avatarUrl","name","useGetKanbanQuery","useGetKanbanProjectUsersQuery","injectedDashboardRestApi","build","anatomy","projectInfo","responses","projectQueries","settled","projectDataResult","projectData","anatomyData","_res","useGetProjectsInfoQuery"],"mappings":"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"}
1
+ {"version":3,"file":"getUserDashboard.cjs.js","sources":["../../../../../../src/api/queries/userDashboard/getUserDashboard.ts"],"sourcesContent":["import {\n gqlApi,\n GetKanbanProjectUsersQuery,\n GetKanbanQuery,\n ProjectModel,\n KanbanNode,\n Anatomy,\n} from '@shared/api/generated'\nimport { projectQueries } from '../project'\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 convertAccessGroupsData, { AccessGroups } from './convertAccessGroupsData'\n\n// GetKanban response type\nexport type GetKanbanResponse = KanbanNode[]\n\n// GetKanbanProjectUsers response type\nexport type KanbanProjectUserNode = Omit<\n GetKanbanProjectUsersQuery['users']['edges'][0]['node'],\n 'accessGroups'\n> & { accessGroups: AccessGroups; projects: string[]; avatarUrl: string }\nexport type GetKanbanProjectUsersResponse = KanbanProjectUserNode[]\n\nexport interface MessageSummary {\n entityId: string\n entityPath: string\n parentId: string\n value: any\n}\n\nexport interface Message {\n id: string\n topic: string\n project: string\n user: string\n sender: string\n senderType: string\n description: string\n status: string\n progress: number\n store: boolean\n createdAt: string\n updatedAt: string\n dependsOn: string | null\n summary: MessageSummary\n}\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\nimport getUserProjectsAccess from './getUserProjectsAccess'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<\n Definitions,\n 'GetKanban' | 'GetKanbanTasks' | 'GetKanbanProjectUsers'\n> & {\n GetKanban: OverrideResultType<Definitions['GetKanban'], GetKanbanResponse>\n GetKanbanTasks: OverrideResultType<Definitions['GetKanbanTasks'], GetKanbanResponse>\n GetKanbanProjectUsers: OverrideResultType<\n Definitions['GetKanbanProjectUsers'],\n GetKanbanProjectUsersResponse\n >\n}\n\n// get edges and sort by task label || name\nconst transformKanban = (response: GetKanbanQuery) =>\n response.kanban.edges\n .map(({ node }) => node)\n .sort((a, b) => {\n const aLabel = a.label || a.name\n const bLabel = b.label || b.name\n return aLabel.localeCompare(bLabel)\n })\n\nconst provideKanbanTags = (result: GetKanbanResponse | undefined, _error: any, args: any) =>\n result?.length\n ? [\n { type: 'kanBanTask', id: 'LIST' },\n ...result.flatMap(({ id, projectName, assignees = [] }) => [\n { type: 'task', id },\n { type: 'kanban', id: 'project-' + projectName },\n ...assignees.map((assignee) => ({ type: 'kanban', id: 'user-' + assignee })),\n ...assignees.map((assignee) => ({\n type: 'kanban',\n id: 'user-' + assignee + '-project-' + projectName,\n })),\n { type: 'kanban', id: JSON.stringify(args) },\n ]),\n ]\n : [{ type: 'kanBanTask', id: 'LIST' }]\n\nexport const getKanbanTasks = async (\n {\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n },\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n) => {\n try {\n projects = projects ?? []\n taskIds = taskIds ?? []\n // get the task\n const response = await dispatch(\n enhancedDashboardGraphqlApi.endpoints.GetKanbanTasks.initiate(\n { projects, taskIds },\n { forceRefetch: true },\n ),\n )\n\n if (response.status === 'rejected' || !response.data) {\n console.error('No tasks found', taskIds)\n throw new Error(`No tasks found ${taskIds.join(', ')}`)\n }\n\n if (response.status !== 'fulfilled') return []\n // get tasks from response (usually only one task)\n return response.data\n } catch (error) {\n console.error(error)\n return []\n }\n}\n\nconst enhancedDashboardGraphqlApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetKanban: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n async onCacheEntryAdded(\n args = {},\n { updateCachedData, cacheDataLoaded, cacheEntryRemoved, dispatch, getCacheEntry },\n ) {\n let token\n let unsubscribeThumbnails: (() => void) | undefined\n const batchProcessMessages: RealtimeBatchProcessor<{\n topic: string\n message: Message\n }> = async (updates, isActive) => {\n const selectedProjects: string[] = Array.isArray(args?.projects) ? args.projects : []\n const selectedAssignees: string[] = Array.isArray(args?.assignees) ? args.assignees : []\n // Current tasks on the board. Re-read the cache when the batch runs because it may\n // have changed while the realtime updates were waiting in the debounce window.\n const cacheTasks = getCacheEntry().data ?? []\n const cachedTaskKeys = new Set(cacheTasks.map((task) => `${task.projectName}:${task.id}`))\n const taskUpdatesToFetch = new Map<string, { taskId: string; project: string }>()\n const patches: {\n taskId: string\n project: string\n field: SupportedTaskField\n value: string | string[]\n }[] = []\n\n updates.forEach(({ topic, message }) => {\n // First check the project name as selected.\n const project = message.project\n if (!project || !selectedProjects.includes(project)) return\n\n const taskId = message.summary?.entityId\n if (!taskId) return\n\n // Only patch the task for the fields supported by the Kanban view.\n const field = topic.split('.')[2]?.replace('_changed', '')\n const patch = getSupportedEntityPatch(\n field,\n message.summary,\n REALTIME_TASK_SUPPORTED_VALUE_FIELDS,\n )\n if (!patch) return\n\n const taskKey = `${project}:${taskId}`\n const isTaskOnMyBoard = cachedTaskKeys.has(taskKey)\n const patchValue = patch.value\n const isValueMe =\n patch.field === 'assignees' &&\n (patchValue as string[]).some((assignee) => selectedAssignees.includes(assignee))\n\n // A task not currently on the board only matters when an assignee update\n // makes it relevant to the selected users.\n if (!isTaskOnMyBoard && !isValueMe) return\n\n if (!isTaskOnMyBoard) {\n taskUpdatesToFetch.set(taskKey, { taskId, project })\n return\n }\n\n patches.push({\n taskId,\n project,\n field: patch.field as SupportedTaskField,\n value: patch.value,\n })\n })\n\n if (patches.length) {\n updateCachedData((draft) => {\n patches.forEach(({ taskId, project, field, value }) => {\n const task = draft.find(\n (item) => item.id === taskId && item.projectName === project,\n )\n if (!task) return\n\n // Patch the Kanban cache directly for supported fields.\n Object.assign(task, { [field === 'type' ? 'taskType' : field]: value })\n if (\n field === 'assignees' &&\n selectedAssignees.length > 0 &&\n !(value as string[]).some((assignee) => selectedAssignees.includes(assignee))\n ) {\n const index = draft.indexOf(task)\n if (index !== -1) draft.splice(index, 1)\n }\n })\n })\n }\n\n const fetchUpdates = Array.from(taskUpdatesToFetch.values())\n if (!fetchUpdates.length || fetchUpdates.length > REALTIME_REST_CALL_LIMIT) return\n\n // Fetch tasks that have just become relevant to the selected assignees.\n await waitForRealtimeJitter()\n const tasks = await getKanbanTasks(\n {\n projects: [...new Set(fetchUpdates.map(({ project }) => project))],\n taskIds: [...new Set(fetchUpdates.map(({ taskId }) => taskId))],\n },\n dispatch,\n )\n if (!isActive()) return\n\n // Get all tasks that have been ADDED to the assignees.\n const tasksWithArgAssignees = tasks.filter(\n (task) =>\n !selectedAssignees.length ||\n (task.assignees ?? []).some((assignee) => selectedAssignees.includes(assignee)),\n )\n // Get all tasks that have been REMOVED from the assignees.\n const tasksWithoutArgAssignees = tasks.filter(\n (task) =>\n selectedAssignees.length > 0 &&\n !(task.assignees ?? []).some((assignee) => selectedAssignees.includes(assignee)),\n )\n\n // Patch the Kanban query by adding new tasks and removing old tasks.\n updateCachedData((draft) => {\n // Add new tasks or update existing tasks.\n tasksWithArgAssignees.forEach((task) => {\n const index = draft.findIndex((cachedTask) => cachedTask.id === task.id)\n if (index === -1) draft.push(task)\n else draft[index] = task\n })\n // Remove old tasks.\n tasksWithoutArgAssignees.forEach((task) => {\n const index = draft.findIndex((cachedTask) => cachedTask.id === task.id)\n if (index !== -1) draft.splice(index, 1)\n })\n })\n }\n const batcher = createRealtimeBatcher(\n batchProcessMessages,\n ({ topic, message }) => `${message.project ?? ''}:${message.summary?.entityId}:${topic}`,\n )\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const cacheTasks = getCacheEntry().data ?? []\n if (!cacheTasks.length) return\n\n const matchedMessages = messages.filter((m) =>\n cacheTasks.some((t) => t.id === m.summary.entityId && t.projectName === m.project),\n )\n if (matchedMessages.length === 0) return\n\n updateCachedData((draft) => {\n matchedMessages.forEach((message) => {\n const entityIndex = draft.findIndex((t) => t.id === message.summary.entityId)\n if (entityIndex !== -1 && draft[entityIndex] && message.summary.thumbnailHash) {\n draft[entityIndex].thumbnailHash = message.summary.thumbnailHash\n }\n })\n })\n },\n ['task'],\n )\n\n const handlePubSub = (_topic: string, message: Message) => {\n if (!message?.summary?.entityId) return\n batcher.add({ topic: _topic, message })\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (error) {\n console.error(error)\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n batcher.clear()\n },\n // // there is only one cache for kanban\n // serializeQueryArgs: () => '',\n // // whenever the assignees or projects change, we need to refetch the one query\n // forceRefetch: (params) => {\n // const { currentArg, previousArg } = params\n // // if the assignees are different, we need to refetch the query\n // if (!isEqual(currentArg?.assignees, previousArg?.assignees)) return true\n // // if the projects are different, we need to refetch the query\n // if (!isEqual(currentArg?.projects, previousArg?.projects)) return true\n // return false\n // },\n },\n // same query as GetKanban but for specific tasks\n // used mainly for patching tasks into the kanban cache\n GetKanbanTasks: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n },\n // get all users on all selected projects\n GetKanbanProjectUsers: {\n transformResponse: (response: GetKanbanProjectUsersQuery, _meta, { projects } = {}) =>\n response.users.edges.map(({ node: user }) => {\n const accessGroups = convertAccessGroupsData(user.accessGroups)\n // parse access groups json\n const isUser = !user.isManager && !user.isAdmin\n // get the projects that the user has access to\n let projectsAccess = isUser ? getUserProjectsAccess(accessGroups) : projects\n if (typeof projectsAccess === 'string' || !projectsAccess) projectsAccess = []\n\n // assignees select requires avatarUrl\n const avatarUrl = `/api/users/${user.name}/avatar`\n\n return {\n ...user,\n accessGroups: accessGroups,\n projects: projectsAccess,\n avatarUrl,\n }\n }),\n providesTags: (result) =>\n result?.length\n ? [\n { type: 'user', id: 'LIST' },\n ...result.map(({ name }) => ({ type: 'user', id: name })),\n ]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const { useGetKanbanQuery, useGetKanbanProjectUsersQuery } = enhancedDashboardGraphqlApi\n\ntype GetProjectsInfoParams = {\n projects: string[]\n anatomy?: boolean\n}\n\nexport type ProjectModeWithAnatomy = ProjectModel & { anatomy?: Anatomy }\n\nexport type GetProjectsInfoResponse = { [projectName: string]: ProjectModeWithAnatomy | undefined }\n\nconst injectedDashboardRestApi = enhancedDashboardGraphqlApi.injectEndpoints({\n endpoints: (build) => ({\n getProjectsInfo: build.query<GetProjectsInfoResponse, GetProjectsInfoParams>({\n async queryFn({ projects = [], anatomy = true }, { dispatch }) {\n try {\n // get project info for each project\n const projectInfo: Record<string, ProjectModeWithAnatomy | undefined> = {}\n for (const project of projects) {\n const projectName = project as string\n // hopefully this will be cached\n // it also allows for different combination of projects but still use the cache\n const responses = [\n dispatch(projectQueries.endpoints.getProject.initiate({ projectName })).unwrap(),\n ...(anatomy\n ? [\n dispatch(\n projectQueries.endpoints.getProjectAnatomy.initiate({ projectName }),\n ).unwrap(),\n ]\n : []),\n ]\n\n const settled = await Promise.allSettled(responses)\n\n const projectDataResult = settled[0]\n const projectData =\n projectDataResult.status === 'fulfilled'\n ? (projectDataResult.value as ProjectModel)\n : undefined\n const anatomyData =\n anatomy && settled[1]?.status === 'fulfilled'\n ? (settled[1].value as Anatomy)\n : undefined\n\n if (projectData) {\n projectInfo[projectName] = {\n ...projectData,\n anatomy: anatomyData,\n } as ProjectModeWithAnatomy\n }\n }\n\n return { data: projectInfo, meta: undefined, error: undefined }\n } catch (error: any) {\n console.error(error)\n return { error, meta: undefined, data: undefined }\n }\n },\n providesTags: (_res, _error, { projects }) =>\n projects.map((projectName) => ({ type: 'project', id: projectName })),\n }),\n }),\n})\n\nexport const { useGetProjectsInfoQuery } = injectedDashboardRestApi\nexport { injectedDashboardRestApi as dashboardQueries }\n"],"names":["transformKanban","response","node","a","b","aLabel","bLabel","provideKanbanTags","result","_error","args","id","projectName","assignees","assignee","getKanbanTasks","projects","taskIds","dispatch","enhancedDashboardGraphqlApi","error","gqlApi","updateCachedData","cacheDataLoaded","cacheEntryRemoved","getCacheEntry","token","unsubscribeThumbnails","batchProcessMessages","updates","isActive","selectedProjects","selectedAssignees","cacheTasks","cachedTaskKeys","task","taskUpdatesToFetch","patches","topic","message","project","taskId","field","patch","getSupportedEntityPatch","REALTIME_TASK_SUPPORTED_VALUE_FIELDS","taskKey","isTaskOnMyBoard","patchValue","isValueMe","draft","value","item","index","fetchUpdates","REALTIME_REST_CALL_LIMIT","waitForRealtimeJitter","tasks","tasksWithArgAssignees","tasksWithoutArgAssignees","cachedTask","batcher","createRealtimeBatcher","subscribeToThumbnailUpdates","messages","matchedMessages","m","t","entityIndex","handlePubSub","_topic","PubSub","_meta","user","accessGroups","convertAccessGroupsData","projectsAccess","getUserProjectsAccess","avatarUrl","name","useGetKanbanQuery","useGetKanbanProjectUsersQuery","injectedDashboardRestApi","build","anatomy","projectInfo","responses","projectQueries","settled","projectDataResult","projectData","anatomyData","_res","useGetProjectsInfoQuery"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import "../../base/client.es.js";
2
- import { api as x } from "../../generated/graphql.es.js";
2
+ import { api as D } from "../../generated/graphql.es.js";
3
3
  import "../../generated/graphqlLinks.es.js";
4
4
  import "../../generated/access.es.js";
5
5
  import "../../generated/actions.es.js";
@@ -38,13 +38,13 @@ import "../../generated/workfiles.es.js";
38
38
  import "../../generated/ynputCloud.es.js";
39
39
  import "../../generated/grouping.es.js";
40
40
  import "../../generated/views.es.js";
41
- import I from "../project/getProject.es.js";
41
+ import L from "../project/getProject.es.js";
42
42
  import "../project/updateProject.es.js";
43
- import S from "../../../util/pubsub.es.js";
43
+ import R from "../../../util/pubsub.es.js";
44
44
  import "lodash";
45
45
  import "react-toastify";
46
46
  import "uuid";
47
- import { subscribeToThumbnailUpdates as M } from "../../../util/thumbnailWebsocket.es.js";
47
+ import { subscribeToThumbnailUpdates as N } from "../../../util/thumbnailWebsocket.es.js";
48
48
  import "../actions/getActions.es.js";
49
49
  import "../activities/getActivities.es.js";
50
50
  import "../activities/updateReaction.es.js";
@@ -99,120 +99,140 @@ import "../views/getViews.es.js";
99
99
  import "../views/updateViews.es.js";
100
100
  import "../watchers/getWatchers.es.js";
101
101
  import "../uris/getUris.es.js";
102
- import E from "./convertAccessGroupsData.es.js";
103
- import R from "./getUserProjectsAccess.es.js";
104
- const w = (r) => r.kanban.edges.map(({ node: i }) => i).sort((i, a) => {
105
- const o = i.label || i.name, s = a.label || a.name;
106
- return o.localeCompare(s);
107
- }), G = (r, i, a) => r?.length ? [
102
+ import { createRealtimeBatcher as O, getSupportedEntityPatch as B, REALTIME_TASK_SUPPORTED_VALUE_FIELDS as F, REALTIME_REST_CALL_LIMIT as Q, waitForRealtimeJitter as q } from "../../../util/realtimeUpdatesUtils.es.js";
103
+ import H from "./convertAccessGroupsData.es.js";
104
+ import V from "./getUserProjectsAccess.es.js";
105
+ const K = (o) => o.kanban.edges.map(({ node: e }) => e).sort((e, a) => {
106
+ const t = e.label || e.name, i = a.label || a.name;
107
+ return t.localeCompare(i);
108
+ }), _ = (o, e, a) => o?.length ? [
108
109
  { type: "kanBanTask", id: "LIST" },
109
- ...r.flatMap(({ id: o, projectName: s, assignees: y }) => [
110
- { type: "task", id: o },
111
- { type: "kanban", id: "project-" + s },
112
- ...y.map((m) => ({ type: "kanban", id: "user-" + m })),
113
- ...y.map((m) => ({
110
+ ...o.flatMap(({ id: t, projectName: i, assignees: h = [] }) => [
111
+ { type: "task", id: t },
112
+ { type: "kanban", id: "project-" + i },
113
+ ...h.map((s) => ({ type: "kanban", id: "user-" + s })),
114
+ ...h.map((s) => ({
114
115
  type: "kanban",
115
- id: "user-" + m + "-project-" + s
116
+ id: "user-" + s + "-project-" + i
116
117
  })),
117
118
  { type: "kanban", id: JSON.stringify(a) }
118
119
  ])
119
- ] : [{ type: "kanBanTask", id: "LIST" }], U = async ({
120
- projects: r = [],
121
- taskIds: i = []
120
+ ] : [{ type: "kanBanTask", id: "LIST" }], J = async ({
121
+ projects: o = [],
122
+ taskIds: e = []
122
123
  }, a) => {
123
124
  try {
124
- const o = await a(
125
- v.endpoints.GetKanbanTasks.initiate(
126
- { projects: r, taskIds: i },
125
+ o = o ?? [], e = e ?? [];
126
+ const t = await a(
127
+ P.endpoints.GetKanbanTasks.initiate(
128
+ { projects: o, taskIds: e },
127
129
  { forceRefetch: !0 }
128
130
  )
129
131
  );
130
- if (o.status === "rejected" || !o.data)
131
- throw console.error("No tasks found", i), new Error(`No tasks found ${i.join(", ")}`);
132
- return o.status !== "fulfilled" ? [] : o.data;
133
- } catch (o) {
134
- return console.error(o), [];
132
+ if (t.status === "rejected" || !t.data)
133
+ throw console.error("No tasks found", e), new Error(`No tasks found ${e.join(", ")}`);
134
+ return t.status !== "fulfilled" ? [] : t.data;
135
+ } catch (t) {
136
+ return console.error(t), [];
135
137
  }
136
- }, v = x.enhanceEndpoints({
138
+ }, P = D.enhanceEndpoints({
137
139
  endpoints: {
138
140
  GetKanban: {
139
- transformResponse: w,
140
- providesTags: G,
141
- async onCacheEntryAdded({ assignees: r = [], projects: i = [] } = {}, { updateCachedData: a, cacheDataLoaded: o, cacheEntryRemoved: s, dispatch: y, getCacheEntry: m }) {
142
- let j, h, g = [], f = null;
143
- try {
144
- await o, h = M(
145
- (b) => {
146
- const c = m().data ?? [];
147
- if (!c.length) return;
148
- const u = b.filter(
149
- (n) => c.some((p) => p.id === n.summary.entityId && p.projectName === n.project)
141
+ transformResponse: K,
142
+ providesTags: _,
143
+ async onCacheEntryAdded(o = {}, { updateCachedData: e, cacheDataLoaded: a, cacheEntryRemoved: t, dispatch: i, getCacheEntry: h }) {
144
+ let s, j;
145
+ const k = O(
146
+ async (c, d) => {
147
+ const g = Array.isArray(o?.projects) ? o.projects : [], u = Array.isArray(o?.assignees) ? o.assignees : [], y = h().data ?? [], b = new Set(y.map((r) => `${r.projectName}:${r.id}`)), T = /* @__PURE__ */ new Map(), A = [];
148
+ c.forEach(({ topic: r, message: n }) => {
149
+ const p = n.project;
150
+ if (!p || !g.includes(p)) return;
151
+ const m = n.summary?.entityId;
152
+ if (!m) return;
153
+ const E = r.split(".")[2]?.replace("_changed", ""), f = B(
154
+ E,
155
+ n.summary,
156
+ F
150
157
  );
151
- u.length !== 0 && a((n) => {
152
- u.forEach((p) => {
153
- const d = n.findIndex((t) => t.id === p.summary.entityId);
154
- d !== -1 && n[d] && p.summary.thumbnailHash && (n[d].thumbnailHash = p.summary.thumbnailHash);
158
+ if (!f) return;
159
+ const l = `${p}:${m}`, w = b.has(l), U = f.value, x = f.field === "assignees" && U.some(($) => u.includes($));
160
+ if (!(!w && !x)) {
161
+ if (!w) {
162
+ T.set(l, { taskId: m, project: p });
163
+ return;
164
+ }
165
+ A.push({
166
+ taskId: m,
167
+ project: p,
168
+ field: f.field,
169
+ value: f.value
155
170
  });
171
+ }
172
+ }), A.length && e((r) => {
173
+ A.forEach(({ taskId: n, project: p, field: m, value: E }) => {
174
+ const f = r.find(
175
+ (l) => l.id === n && l.projectName === p
176
+ );
177
+ if (f && (Object.assign(f, { [m === "type" ? "taskType" : m]: E }), m === "assignees" && u.length > 0 && !E.some((l) => u.includes(l)))) {
178
+ const l = r.indexOf(f);
179
+ l !== -1 && r.splice(l, 1);
180
+ }
156
181
  });
157
- },
158
- ["task"]
159
- );
160
- const k = async () => {
161
- const b = [...g];
162
- g = [], f = null;
163
- const c = Array.from(new Set(b.flatMap((t) => t.taskIds))), u = Array.from(new Set(b.flatMap((t) => t.projects)));
164
- if (c.length === 0) return;
165
- const n = await U({ projects: u, taskIds: c }, y), p = n.filter(
166
- (t) => t.assignees.some((e) => r?.includes(e))
167
- ), d = n.filter(
168
- (t) => !t.assignees.some((e) => r?.includes(e))
182
+ });
183
+ const I = Array.from(T.values());
184
+ if (!I.length || I.length > Q) return;
185
+ await q();
186
+ const S = await J(
187
+ {
188
+ projects: [...new Set(I.map(({ project: r }) => r))],
189
+ taskIds: [...new Set(I.map(({ taskId: r }) => r))]
190
+ },
191
+ i
192
+ );
193
+ if (!d()) return;
194
+ const G = S.filter(
195
+ (r) => !u.length || (r.assignees ?? []).some((n) => u.includes(n))
196
+ ), M = S.filter(
197
+ (r) => u.length > 0 && !(r.assignees ?? []).some((n) => u.includes(n))
169
198
  );
170
- a((t) => {
171
- p.forEach((e) => {
172
- const l = t.findIndex((T) => T.id === e.id);
173
- l === -1 ? t.push(e) : t[l] = e;
174
- }), d.forEach((e) => {
175
- const l = t.findIndex((T) => T.id === e.id);
176
- l !== -1 && t.splice(l, 1);
199
+ e((r) => {
200
+ G.forEach((n) => {
201
+ const p = r.findIndex((m) => m.id === n.id);
202
+ p === -1 ? r.push(n) : r[p] = n;
203
+ }), M.forEach((n) => {
204
+ const p = r.findIndex((m) => m.id === n.id);
205
+ p !== -1 && r.splice(p, 1);
177
206
  });
178
207
  });
179
- }, P = ({
180
- projects: b = [],
181
- taskIds: c = [],
182
- payload: u
183
- }) => {
184
- let n = !1;
185
- if (u ? a((p) => {
186
- c.forEach((d) => {
187
- const t = p.findIndex((e) => e.id === d);
188
- t !== -1 ? (Object.assign(p[t], u), u.assignees && (!r?.length || u.assignees.some((l) => r?.includes(l)) || p.splice(t, 1))) : u.assignees?.some((e) => r?.includes(e)) && (n = !0);
208
+ },
209
+ ({ topic: c, message: d }) => `${d.project ?? ""}:${d.summary?.entityId}:${c}`
210
+ );
211
+ try {
212
+ await a, j = N(
213
+ (d) => {
214
+ const g = h().data ?? [];
215
+ if (!g.length) return;
216
+ const u = d.filter(
217
+ (y) => g.some((b) => b.id === y.summary.entityId && b.projectName === y.project)
218
+ );
219
+ u.length !== 0 && e((y) => {
220
+ u.forEach((b) => {
221
+ const T = y.findIndex((A) => A.id === b.summary.entityId);
222
+ T !== -1 && y[T] && b.summary.thumbnailHash && (y[T].thumbnailHash = b.summary.thumbnailHash);
223
+ });
189
224
  });
190
- }) : n = !0, !!n && (g.push({ projects: b, taskIds: c }), !f)) {
191
- const p = Math.random() * 5e3;
192
- f = setTimeout(k, p);
193
- }
194
- }, K = async (b, c) => {
195
- const u = c.project;
196
- if (!i?.includes(u)) return console.log("project not selected");
197
- const n = c.summary.entityId;
198
- if (!n) return console.log("no entity id found");
199
- const p = m().data ?? [], d = c.topic.split(".")[2].split("_changed")[0];
200
- if (!["status", "assignees"].includes(d)) return;
201
- const t = c.summary.value;
202
- let e = t;
203
- d === "status" ? e = String(t) : d === "assignees" && (e = Array.isArray(t) ? t : []);
204
- const l = p.some((A) => A.id === n), T = d === "assignees" && e.some((A) => r?.includes(A));
205
- !l && !T || P({
206
- taskIds: [n],
207
- projects: [u],
208
- payload: { [d]: e }
209
- });
225
+ },
226
+ ["task"]
227
+ );
228
+ const c = (d, g) => {
229
+ g?.summary?.entityId && k.add({ topic: d, message: g });
210
230
  };
211
- j = S.subscribe("entity.task", K);
212
- } catch (k) {
213
- console.error(k);
231
+ s = R.subscribe("entity.task", c);
232
+ } catch (c) {
233
+ console.error(c);
214
234
  }
215
- await s, S.unsubscribe(j), h && h(), f && clearTimeout(f);
235
+ await t, R.unsubscribe(s), j && j(), k.clear();
216
236
  }
217
237
  // // there is only one cache for kanban
218
238
  // serializeQueryArgs: () => '',
@@ -229,63 +249,63 @@ const w = (r) => r.kanban.edges.map(({ node: i }) => i).sort((i, a) => {
229
249
  // same query as GetKanban but for specific tasks
230
250
  // used mainly for patching tasks into the kanban cache
231
251
  GetKanbanTasks: {
232
- transformResponse: w,
233
- providesTags: G
252
+ transformResponse: K,
253
+ providesTags: _
234
254
  },
235
255
  // get all users on all selected projects
236
256
  GetKanbanProjectUsers: {
237
- transformResponse: (r, i, { projects: a } = {}) => r.users.edges.map(({ node: o }) => {
238
- const s = E(o.accessGroups);
239
- let m = !o.isManager && !o.isAdmin ? R(s) : a;
240
- (typeof m == "string" || !m) && (m = []);
241
- const j = `/api/users/${o.name}/avatar`;
257
+ transformResponse: (o, e, { projects: a } = {}) => o.users.edges.map(({ node: t }) => {
258
+ const i = H(t.accessGroups);
259
+ let s = !t.isManager && !t.isAdmin ? V(i) : a;
260
+ (typeof s == "string" || !s) && (s = []);
261
+ const j = `/api/users/${t.name}/avatar`;
242
262
  return {
243
- ...o,
244
- accessGroups: s,
245
- projects: m,
263
+ ...t,
264
+ accessGroups: i,
265
+ projects: s,
246
266
  avatarUrl: j
247
267
  };
248
268
  }),
249
- providesTags: (r) => r?.length ? [
269
+ providesTags: (o) => o?.length ? [
250
270
  { type: "user", id: "LIST" },
251
- ...r.map(({ name: i }) => ({ type: "user", id: i }))
271
+ ...o.map(({ name: e }) => ({ type: "user", id: e }))
252
272
  ] : [{ type: "user", id: "LIST" }]
253
273
  }
254
274
  }
255
- }), { useGetKanbanQuery: Eo, useGetKanbanProjectUsersQuery: Ro } = v, L = v.injectEndpoints({
256
- endpoints: (r) => ({
257
- getProjectsInfo: r.query({
258
- async queryFn({ projects: i = [], anatomy: a = !0 }, { dispatch: o }) {
275
+ }), { useGetKanbanQuery: Hr, useGetKanbanProjectUsersQuery: Vr } = P, W = P.injectEndpoints({
276
+ endpoints: (o) => ({
277
+ getProjectsInfo: o.query({
278
+ async queryFn({ projects: e = [], anatomy: a = !0 }, { dispatch: t }) {
259
279
  try {
260
- const s = {};
261
- for (const y of i) {
262
- const m = y, j = [
263
- o(I.endpoints.getProject.initiate({ projectName: m })).unwrap(),
280
+ const i = {};
281
+ for (const h of e) {
282
+ const s = h, j = [
283
+ t(L.endpoints.getProject.initiate({ projectName: s })).unwrap(),
264
284
  ...a ? [
265
- o(
266
- I.endpoints.getProjectAnatomy.initiate({ projectName: m })
285
+ t(
286
+ L.endpoints.getProjectAnatomy.initiate({ projectName: s })
267
287
  ).unwrap()
268
288
  ] : []
269
- ], h = await Promise.allSettled(j), g = h[0], f = g.status === "fulfilled" ? g.value : void 0, k = a && h[1]?.status === "fulfilled" ? h[1].value : void 0;
270
- f && (s[m] = {
271
- ...f,
272
- anatomy: k
289
+ ], v = await Promise.allSettled(j), k = v[0], c = k.status === "fulfilled" ? k.value : void 0, d = a && v[1]?.status === "fulfilled" ? v[1].value : void 0;
290
+ c && (i[s] = {
291
+ ...c,
292
+ anatomy: d
273
293
  });
274
294
  }
275
- return { data: s, meta: void 0, error: void 0 };
276
- } catch (s) {
277
- return console.error(s), { error: s, meta: void 0, data: void 0 };
295
+ return { data: i, meta: void 0, error: void 0 };
296
+ } catch (i) {
297
+ return console.error(i), { error: i, meta: void 0, data: void 0 };
278
298
  }
279
299
  },
280
- providesTags: (i, a, { projects: o }) => o.map((s) => ({ type: "project", id: s }))
300
+ providesTags: (e, a, { projects: t }) => t.map((i) => ({ type: "project", id: i }))
281
301
  })
282
302
  })
283
- }), { useGetProjectsInfoQuery: Uo } = L;
303
+ }), { useGetProjectsInfoQuery: Jr } = W;
284
304
  export {
285
- L as dashboardQueries,
286
- U as getKanbanTasks,
287
- Ro as useGetKanbanProjectUsersQuery,
288
- Eo as useGetKanbanQuery,
289
- Uo as useGetProjectsInfoQuery
305
+ W as dashboardQueries,
306
+ J as getKanbanTasks,
307
+ Vr as useGetKanbanProjectUsersQuery,
308
+ Hr as useGetKanbanQuery,
309
+ Jr as useGetProjectsInfoQuery
290
310
  };
291
311
  //# sourceMappingURL=getUserDashboard.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getUserDashboard.es.js","sources":["../../../../../../src/api/queries/userDashboard/getUserDashboard.ts"],"sourcesContent":["import {\n gqlApi,\n GetKanbanProjectUsersQuery,\n GetKanbanQuery,\n ProjectModel,\n KanbanNode,\n Anatomy,\n} from '@shared/api/generated'\nimport { projectQueries } from '../project'\nimport PubSub from '@shared/util/pubsub'\nimport { subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport convertAccessGroupsData, { AccessGroups } from './convertAccessGroupsData'\n\n// GetKanban response type\nexport type GetKanbanResponse = KanbanNode[]\n\n// GetKanbanProjectUsers response type\nexport type KanbanProjectUserNode = Omit<\n GetKanbanProjectUsersQuery['users']['edges'][0]['node'],\n 'accessGroups'\n> & { accessGroups: AccessGroups; projects: string[]; avatarUrl: string }\nexport type GetKanbanProjectUsersResponse = KanbanProjectUserNode[]\n\nexport interface MessageSummary {\n entityId: string\n entityPath: string\n parentId: string\n value: any\n}\n\nexport interface Message {\n id: string\n topic: string\n project: string\n user: string\n sender: string\n senderType: string\n description: string\n status: string\n progress: number\n store: boolean\n createdAt: string\n updatedAt: string\n dependsOn: string | null\n summary: MessageSummary\n}\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\nimport getUserProjectsAccess from './getUserProjectsAccess'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<\n Definitions,\n 'GetKanban' | 'GetKanbanTasks' | 'GetKanbanProjectUsers'\n> & {\n GetKanban: OverrideResultType<Definitions['GetKanban'], GetKanbanResponse>\n GetKanbanTasks: OverrideResultType<Definitions['GetKanbanTasks'], GetKanbanResponse>\n GetKanbanProjectUsers: OverrideResultType<\n Definitions['GetKanbanProjectUsers'],\n GetKanbanProjectUsersResponse\n >\n}\n\n// get edges and sort by task label || name\nconst transformKanban = (response: GetKanbanQuery) =>\n response.kanban.edges\n .map(({ node }) => node)\n .sort((a, b) => {\n const aLabel = a.label || a.name\n const bLabel = b.label || b.name\n return aLabel.localeCompare(bLabel)\n })\n\nconst provideKanbanTags = (result: GetKanbanResponse | undefined, _error: any, args: any) =>\n result?.length\n ? [\n { type: 'kanBanTask', id: 'LIST' },\n ...result.flatMap(({ id, projectName, assignees }) => [\n { type: 'task', id },\n { type: 'kanban', id: 'project-' + projectName },\n ...assignees.map((assignee) => ({ type: 'kanban', id: 'user-' + assignee })),\n ...assignees.map((assignee) => ({\n type: 'kanban',\n id: 'user-' + assignee + '-project-' + projectName,\n })),\n { type: 'kanban', id: JSON.stringify(args) },\n ]),\n ]\n : [{ type: 'kanBanTask', id: 'LIST' }]\n\nexport const getKanbanTasks = async (\n {\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n },\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n) => {\n try {\n // get the task\n const response = await dispatch(\n enhancedDashboardGraphqlApi.endpoints.GetKanbanTasks.initiate(\n { projects, taskIds },\n { forceRefetch: true },\n ),\n )\n\n if (response.status === 'rejected' || !response.data) {\n console.error('No tasks found', taskIds)\n throw new Error(`No tasks found ${taskIds.join(', ')}`)\n }\n\n if (response.status !== 'fulfilled') return []\n // get tasks from response (usually only one task)\n return response.data\n } catch (error) {\n console.error(error)\n return []\n }\n}\n\nconst enhancedDashboardGraphqlApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetKanban: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n async onCacheEntryAdded(\n { assignees = [], projects = [] } = {},\n { updateCachedData, cacheDataLoaded, cacheEntryRemoved, dispatch, getCacheEntry },\n ) {\n let token\n let unsubscribeThumbnails: (() => void) | undefined\n let fetchQueue: { taskIds: string[]; projects: string[] }[] = []\n let fetchTimeout: any = null\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const cacheTasks = getCacheEntry().data ?? []\n if (!cacheTasks.length) return\n\n const matchedMessages = messages.filter((m) =>\n cacheTasks.some((t) => t.id === m.summary.entityId && t.projectName === m.project),\n )\n if (matchedMessages.length === 0) return\n\n updateCachedData((draft) => {\n matchedMessages.forEach((message) => {\n const entityIndex = draft.findIndex((t) => t.id === message.summary.entityId)\n if (entityIndex !== -1 && draft[entityIndex] && message.summary.thumbnailHash) {\n draft[entityIndex].thumbnailHash = message.summary.thumbnailHash\n }\n })\n })\n },\n ['task'],\n )\n\n const processFetchQueue = async () => {\n const batch = [...fetchQueue]\n fetchQueue = []\n fetchTimeout = null\n\n const taskIds = Array.from(new Set(batch.flatMap((b) => b.taskIds)))\n const projects = Array.from(new Set(batch.flatMap((b) => b.projects)))\n\n if (taskIds.length === 0) return\n\n const tasks = await getKanbanTasks({ projects, taskIds }, dispatch)\n\n // get all tasks that have been ADDED to the assignees\n const tasksWithArgAssignees = tasks.filter((task) =>\n task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n // get all tasks that have been REMOVED from the assignees\n const tasksWithoutArgAssignees = tasks.filter(\n (task) => !task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n\n // patch the kanban query by adding new tasks and remove old tasks\n updateCachedData((draft) => {\n // add new tasks\n tasksWithArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index === -1) {\n draft.push(task)\n } else {\n // update the task\n draft[index] = task\n }\n })\n // remove old tasks\n tasksWithoutArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index !== -1) {\n draft.splice(index, 1)\n }\n })\n })\n }\n\n const patchKanbanTask = ({\n projects = [],\n taskIds = [],\n payload,\n }: {\n projects: string[]\n taskIds: string[]\n payload?: Partial<KanbanNode>\n }) => {\n let needsFetch = false\n\n if (payload) {\n updateCachedData((draft) => {\n taskIds.forEach((id) => {\n const index = draft.findIndex((t) => t.id === id)\n if (index !== -1) {\n // update the task\n Object.assign(draft[index], payload)\n\n // if assignees changed, check if it should be removed\n if (payload.assignees) {\n const isStillAssigned =\n !assignees?.length || payload.assignees.some((a) => assignees?.includes(a))\n if (!isStillAssigned) {\n draft.splice(index, 1)\n }\n }\n } else {\n // task not in cache, if it's now assigned to us, we need to fetch\n if (payload.assignees?.some((a) => assignees?.includes(a))) {\n needsFetch = true\n }\n }\n })\n })\n } else {\n needsFetch = true\n }\n\n if (!needsFetch) return\n\n // add to queue\n fetchQueue.push({ projects, taskIds })\n\n // debounce the fetch with a random offset\n if (!fetchTimeout) {\n const delay = Math.random() * 5000\n fetchTimeout = setTimeout(processFetchQueue, delay)\n }\n }\n\n const handlePubSub = async (_topic: string, message: Message) => {\n const project = message.project\n // first check the project name as selected\n if (!projects?.includes(project)) return console.log('project not selected')\n // then get entity id\n const entityId = message.summary.entityId\n if (!entityId) return console.log('no entity id found')\n\n // current tasks on the board\n const cacheTasks = getCacheEntry().data ?? []\n // entity.task.status_changed\n const field = message.topic.split('.')[2].split('_changed')[0]\n\n // Only patch the task for the fields status and assignees.\n if (!['status', 'assignees'].includes(field)) return\n\n const value = message.summary.value\n // cast the correct type onto value based on the field\n let castValue: any = value\n if (field === 'status') {\n castValue = String(value)\n } else if (field === 'assignees') {\n castValue = Array.isArray(value) ? (value as string[]) : []\n }\n\n // check this task is actually on the board\n const isTaskOnMyBoard = cacheTasks.some((t) => t.id === entityId)\n // if the field is assignees AND the value includes current assignees then we patch\n const isValueMe =\n field === 'assignees' && (castValue as string[]).some((a) => assignees?.includes(a))\n\n if (!isTaskOnMyBoard && !isValueMe) return\n // patch task updates into kanban cache\n patchKanbanTask({\n taskIds: [entityId],\n projects: [project],\n payload: { [field]: castValue } as Partial<KanbanNode>,\n })\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (error) {\n console.error(error)\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n if (fetchTimeout) clearTimeout(fetchTimeout)\n },\n // // there is only one cache for kanban\n // serializeQueryArgs: () => '',\n // // whenever the assignees or projects change, we need to refetch the one query\n // forceRefetch: (params) => {\n // const { currentArg, previousArg } = params\n // // if the assignees are different, we need to refetch the query\n // if (!isEqual(currentArg?.assignees, previousArg?.assignees)) return true\n // // if the projects are different, we need to refetch the query\n // if (!isEqual(currentArg?.projects, previousArg?.projects)) return true\n // return false\n // },\n },\n // same query as GetKanban but for specific tasks\n // used mainly for patching tasks into the kanban cache\n GetKanbanTasks: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n },\n // get all users on all selected projects\n GetKanbanProjectUsers: {\n transformResponse: (response: GetKanbanProjectUsersQuery, _meta, { projects } = {}) =>\n response.users.edges.map(({ node: user }) => {\n const accessGroups = convertAccessGroupsData(user.accessGroups)\n // parse access groups json\n const isUser = !user.isManager && !user.isAdmin\n // get the projects that the user has access to\n let projectsAccess = isUser ? getUserProjectsAccess(accessGroups) : projects\n if (typeof projectsAccess === 'string' || !projectsAccess) projectsAccess = []\n\n // assignees select requires avatarUrl\n const avatarUrl = `/api/users/${user.name}/avatar`\n\n return {\n ...user,\n accessGroups: accessGroups,\n projects: projectsAccess,\n avatarUrl,\n }\n }),\n providesTags: (result) =>\n result?.length\n ? [\n { type: 'user', id: 'LIST' },\n ...result.map(({ name }) => ({ type: 'user', id: name })),\n ]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const { useGetKanbanQuery, useGetKanbanProjectUsersQuery } = enhancedDashboardGraphqlApi\n\ntype GetProjectsInfoParams = {\n projects: string[]\n anatomy?: boolean\n}\n\nexport type ProjectModeWithAnatomy = ProjectModel & { anatomy?: Anatomy }\n\nexport type GetProjectsInfoResponse = { [projectName: string]: ProjectModeWithAnatomy | undefined }\n\nconst injectedDashboardRestApi = enhancedDashboardGraphqlApi.injectEndpoints({\n endpoints: (build) => ({\n getProjectsInfo: build.query<GetProjectsInfoResponse, GetProjectsInfoParams>({\n async queryFn({ projects = [], anatomy = true }, { dispatch }) {\n try {\n // get project info for each project\n const projectInfo: Record<string, ProjectModeWithAnatomy | undefined> = {}\n for (const project of projects) {\n const projectName = project as string\n // hopefully this will be cached\n // it also allows for different combination of projects but still use the cache\n const responses = [\n dispatch(projectQueries.endpoints.getProject.initiate({ projectName })).unwrap(),\n ...(anatomy\n ? [\n dispatch(\n projectQueries.endpoints.getProjectAnatomy.initiate({ projectName }),\n ).unwrap(),\n ]\n : []),\n ]\n\n const settled = await Promise.allSettled(responses)\n\n const projectDataResult = settled[0]\n const projectData =\n projectDataResult.status === 'fulfilled'\n ? (projectDataResult.value as ProjectModel)\n : undefined\n const anatomyData =\n anatomy && settled[1]?.status === 'fulfilled'\n ? (settled[1].value as Anatomy)\n : undefined\n\n if (projectData) {\n projectInfo[projectName] = {\n ...projectData,\n anatomy: anatomyData,\n } as ProjectModeWithAnatomy\n }\n }\n\n return { data: projectInfo, meta: undefined, error: undefined }\n } catch (error: any) {\n console.error(error)\n return { error, meta: undefined, data: undefined }\n }\n },\n providesTags: (_res, _error, { projects }) =>\n projects.map((projectName) => ({ type: 'project', id: projectName })),\n }),\n }),\n})\n\nexport const { useGetProjectsInfoQuery } = injectedDashboardRestApi\nexport { injectedDashboardRestApi as dashboardQueries }\n"],"names":["transformKanban","response","node","a","b","aLabel","bLabel","provideKanbanTags","result","_error","args","id","projectName","assignees","assignee","getKanbanTasks","projects","taskIds","dispatch","enhancedDashboardGraphqlApi","error","gqlApi","updateCachedData","cacheDataLoaded","cacheEntryRemoved","getCacheEntry","token","unsubscribeThumbnails","fetchQueue","fetchTimeout","subscribeToThumbnailUpdates","messages","cacheTasks","matchedMessages","m","t","draft","message","entityIndex","processFetchQueue","batch","tasks","tasksWithArgAssignees","task","tasksWithoutArgAssignees","index","patchKanbanTask","payload","needsFetch","delay","handlePubSub","_topic","project","entityId","field","value","castValue","isTaskOnMyBoard","isValueMe","PubSub","_meta","user","accessGroups","convertAccessGroupsData","projectsAccess","getUserProjectsAccess","avatarUrl","name","useGetKanbanQuery","useGetKanbanProjectUsersQuery","injectedDashboardRestApi","build","anatomy","projectInfo","responses","projectQueries","settled","projectDataResult","projectData","anatomyData","_res","useGetProjectsInfoQuery"],"mappings":"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"}
1
+ {"version":3,"file":"getUserDashboard.es.js","sources":["../../../../../../src/api/queries/userDashboard/getUserDashboard.ts"],"sourcesContent":["import {\n gqlApi,\n GetKanbanProjectUsersQuery,\n GetKanbanQuery,\n ProjectModel,\n KanbanNode,\n Anatomy,\n} from '@shared/api/generated'\nimport { projectQueries } from '../project'\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 convertAccessGroupsData, { AccessGroups } from './convertAccessGroupsData'\n\n// GetKanban response type\nexport type GetKanbanResponse = KanbanNode[]\n\n// GetKanbanProjectUsers response type\nexport type KanbanProjectUserNode = Omit<\n GetKanbanProjectUsersQuery['users']['edges'][0]['node'],\n 'accessGroups'\n> & { accessGroups: AccessGroups; projects: string[]; avatarUrl: string }\nexport type GetKanbanProjectUsersResponse = KanbanProjectUserNode[]\n\nexport interface MessageSummary {\n entityId: string\n entityPath: string\n parentId: string\n value: any\n}\n\nexport interface Message {\n id: string\n topic: string\n project: string\n user: string\n sender: string\n senderType: string\n description: string\n status: string\n progress: number\n store: boolean\n createdAt: string\n updatedAt: string\n dependsOn: string | null\n summary: MessageSummary\n}\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\nimport getUserProjectsAccess from './getUserProjectsAccess'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<\n Definitions,\n 'GetKanban' | 'GetKanbanTasks' | 'GetKanbanProjectUsers'\n> & {\n GetKanban: OverrideResultType<Definitions['GetKanban'], GetKanbanResponse>\n GetKanbanTasks: OverrideResultType<Definitions['GetKanbanTasks'], GetKanbanResponse>\n GetKanbanProjectUsers: OverrideResultType<\n Definitions['GetKanbanProjectUsers'],\n GetKanbanProjectUsersResponse\n >\n}\n\n// get edges and sort by task label || name\nconst transformKanban = (response: GetKanbanQuery) =>\n response.kanban.edges\n .map(({ node }) => node)\n .sort((a, b) => {\n const aLabel = a.label || a.name\n const bLabel = b.label || b.name\n return aLabel.localeCompare(bLabel)\n })\n\nconst provideKanbanTags = (result: GetKanbanResponse | undefined, _error: any, args: any) =>\n result?.length\n ? [\n { type: 'kanBanTask', id: 'LIST' },\n ...result.flatMap(({ id, projectName, assignees = [] }) => [\n { type: 'task', id },\n { type: 'kanban', id: 'project-' + projectName },\n ...assignees.map((assignee) => ({ type: 'kanban', id: 'user-' + assignee })),\n ...assignees.map((assignee) => ({\n type: 'kanban',\n id: 'user-' + assignee + '-project-' + projectName,\n })),\n { type: 'kanban', id: JSON.stringify(args) },\n ]),\n ]\n : [{ type: 'kanBanTask', id: 'LIST' }]\n\nexport const getKanbanTasks = async (\n {\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n },\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n) => {\n try {\n projects = projects ?? []\n taskIds = taskIds ?? []\n // get the task\n const response = await dispatch(\n enhancedDashboardGraphqlApi.endpoints.GetKanbanTasks.initiate(\n { projects, taskIds },\n { forceRefetch: true },\n ),\n )\n\n if (response.status === 'rejected' || !response.data) {\n console.error('No tasks found', taskIds)\n throw new Error(`No tasks found ${taskIds.join(', ')}`)\n }\n\n if (response.status !== 'fulfilled') return []\n // get tasks from response (usually only one task)\n return response.data\n } catch (error) {\n console.error(error)\n return []\n }\n}\n\nconst enhancedDashboardGraphqlApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetKanban: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n async onCacheEntryAdded(\n args = {},\n { updateCachedData, cacheDataLoaded, cacheEntryRemoved, dispatch, getCacheEntry },\n ) {\n let token\n let unsubscribeThumbnails: (() => void) | undefined\n const batchProcessMessages: RealtimeBatchProcessor<{\n topic: string\n message: Message\n }> = async (updates, isActive) => {\n const selectedProjects: string[] = Array.isArray(args?.projects) ? args.projects : []\n const selectedAssignees: string[] = Array.isArray(args?.assignees) ? args.assignees : []\n // Current tasks on the board. Re-read the cache when the batch runs because it may\n // have changed while the realtime updates were waiting in the debounce window.\n const cacheTasks = getCacheEntry().data ?? []\n const cachedTaskKeys = new Set(cacheTasks.map((task) => `${task.projectName}:${task.id}`))\n const taskUpdatesToFetch = new Map<string, { taskId: string; project: string }>()\n const patches: {\n taskId: string\n project: string\n field: SupportedTaskField\n value: string | string[]\n }[] = []\n\n updates.forEach(({ topic, message }) => {\n // First check the project name as selected.\n const project = message.project\n if (!project || !selectedProjects.includes(project)) return\n\n const taskId = message.summary?.entityId\n if (!taskId) return\n\n // Only patch the task for the fields supported by the Kanban view.\n const field = topic.split('.')[2]?.replace('_changed', '')\n const patch = getSupportedEntityPatch(\n field,\n message.summary,\n REALTIME_TASK_SUPPORTED_VALUE_FIELDS,\n )\n if (!patch) return\n\n const taskKey = `${project}:${taskId}`\n const isTaskOnMyBoard = cachedTaskKeys.has(taskKey)\n const patchValue = patch.value\n const isValueMe =\n patch.field === 'assignees' &&\n (patchValue as string[]).some((assignee) => selectedAssignees.includes(assignee))\n\n // A task not currently on the board only matters when an assignee update\n // makes it relevant to the selected users.\n if (!isTaskOnMyBoard && !isValueMe) return\n\n if (!isTaskOnMyBoard) {\n taskUpdatesToFetch.set(taskKey, { taskId, project })\n return\n }\n\n patches.push({\n taskId,\n project,\n field: patch.field as SupportedTaskField,\n value: patch.value,\n })\n })\n\n if (patches.length) {\n updateCachedData((draft) => {\n patches.forEach(({ taskId, project, field, value }) => {\n const task = draft.find(\n (item) => item.id === taskId && item.projectName === project,\n )\n if (!task) return\n\n // Patch the Kanban cache directly for supported fields.\n Object.assign(task, { [field === 'type' ? 'taskType' : field]: value })\n if (\n field === 'assignees' &&\n selectedAssignees.length > 0 &&\n !(value as string[]).some((assignee) => selectedAssignees.includes(assignee))\n ) {\n const index = draft.indexOf(task)\n if (index !== -1) draft.splice(index, 1)\n }\n })\n })\n }\n\n const fetchUpdates = Array.from(taskUpdatesToFetch.values())\n if (!fetchUpdates.length || fetchUpdates.length > REALTIME_REST_CALL_LIMIT) return\n\n // Fetch tasks that have just become relevant to the selected assignees.\n await waitForRealtimeJitter()\n const tasks = await getKanbanTasks(\n {\n projects: [...new Set(fetchUpdates.map(({ project }) => project))],\n taskIds: [...new Set(fetchUpdates.map(({ taskId }) => taskId))],\n },\n dispatch,\n )\n if (!isActive()) return\n\n // Get all tasks that have been ADDED to the assignees.\n const tasksWithArgAssignees = tasks.filter(\n (task) =>\n !selectedAssignees.length ||\n (task.assignees ?? []).some((assignee) => selectedAssignees.includes(assignee)),\n )\n // Get all tasks that have been REMOVED from the assignees.\n const tasksWithoutArgAssignees = tasks.filter(\n (task) =>\n selectedAssignees.length > 0 &&\n !(task.assignees ?? []).some((assignee) => selectedAssignees.includes(assignee)),\n )\n\n // Patch the Kanban query by adding new tasks and removing old tasks.\n updateCachedData((draft) => {\n // Add new tasks or update existing tasks.\n tasksWithArgAssignees.forEach((task) => {\n const index = draft.findIndex((cachedTask) => cachedTask.id === task.id)\n if (index === -1) draft.push(task)\n else draft[index] = task\n })\n // Remove old tasks.\n tasksWithoutArgAssignees.forEach((task) => {\n const index = draft.findIndex((cachedTask) => cachedTask.id === task.id)\n if (index !== -1) draft.splice(index, 1)\n })\n })\n }\n const batcher = createRealtimeBatcher(\n batchProcessMessages,\n ({ topic, message }) => `${message.project ?? ''}:${message.summary?.entityId}:${topic}`,\n )\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const cacheTasks = getCacheEntry().data ?? []\n if (!cacheTasks.length) return\n\n const matchedMessages = messages.filter((m) =>\n cacheTasks.some((t) => t.id === m.summary.entityId && t.projectName === m.project),\n )\n if (matchedMessages.length === 0) return\n\n updateCachedData((draft) => {\n matchedMessages.forEach((message) => {\n const entityIndex = draft.findIndex((t) => t.id === message.summary.entityId)\n if (entityIndex !== -1 && draft[entityIndex] && message.summary.thumbnailHash) {\n draft[entityIndex].thumbnailHash = message.summary.thumbnailHash\n }\n })\n })\n },\n ['task'],\n )\n\n const handlePubSub = (_topic: string, message: Message) => {\n if (!message?.summary?.entityId) return\n batcher.add({ topic: _topic, message })\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (error) {\n console.error(error)\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n batcher.clear()\n },\n // // there is only one cache for kanban\n // serializeQueryArgs: () => '',\n // // whenever the assignees or projects change, we need to refetch the one query\n // forceRefetch: (params) => {\n // const { currentArg, previousArg } = params\n // // if the assignees are different, we need to refetch the query\n // if (!isEqual(currentArg?.assignees, previousArg?.assignees)) return true\n // // if the projects are different, we need to refetch the query\n // if (!isEqual(currentArg?.projects, previousArg?.projects)) return true\n // return false\n // },\n },\n // same query as GetKanban but for specific tasks\n // used mainly for patching tasks into the kanban cache\n GetKanbanTasks: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n },\n // get all users on all selected projects\n GetKanbanProjectUsers: {\n transformResponse: (response: GetKanbanProjectUsersQuery, _meta, { projects } = {}) =>\n response.users.edges.map(({ node: user }) => {\n const accessGroups = convertAccessGroupsData(user.accessGroups)\n // parse access groups json\n const isUser = !user.isManager && !user.isAdmin\n // get the projects that the user has access to\n let projectsAccess = isUser ? getUserProjectsAccess(accessGroups) : projects\n if (typeof projectsAccess === 'string' || !projectsAccess) projectsAccess = []\n\n // assignees select requires avatarUrl\n const avatarUrl = `/api/users/${user.name}/avatar`\n\n return {\n ...user,\n accessGroups: accessGroups,\n projects: projectsAccess,\n avatarUrl,\n }\n }),\n providesTags: (result) =>\n result?.length\n ? [\n { type: 'user', id: 'LIST' },\n ...result.map(({ name }) => ({ type: 'user', id: name })),\n ]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const { useGetKanbanQuery, useGetKanbanProjectUsersQuery } = enhancedDashboardGraphqlApi\n\ntype GetProjectsInfoParams = {\n projects: string[]\n anatomy?: boolean\n}\n\nexport type ProjectModeWithAnatomy = ProjectModel & { anatomy?: Anatomy }\n\nexport type GetProjectsInfoResponse = { [projectName: string]: ProjectModeWithAnatomy | undefined }\n\nconst injectedDashboardRestApi = enhancedDashboardGraphqlApi.injectEndpoints({\n endpoints: (build) => ({\n getProjectsInfo: build.query<GetProjectsInfoResponse, GetProjectsInfoParams>({\n async queryFn({ projects = [], anatomy = true }, { dispatch }) {\n try {\n // get project info for each project\n const projectInfo: Record<string, ProjectModeWithAnatomy | undefined> = {}\n for (const project of projects) {\n const projectName = project as string\n // hopefully this will be cached\n // it also allows for different combination of projects but still use the cache\n const responses = [\n dispatch(projectQueries.endpoints.getProject.initiate({ projectName })).unwrap(),\n ...(anatomy\n ? [\n dispatch(\n projectQueries.endpoints.getProjectAnatomy.initiate({ projectName }),\n ).unwrap(),\n ]\n : []),\n ]\n\n const settled = await Promise.allSettled(responses)\n\n const projectDataResult = settled[0]\n const projectData =\n projectDataResult.status === 'fulfilled'\n ? (projectDataResult.value as ProjectModel)\n : undefined\n const anatomyData =\n anatomy && settled[1]?.status === 'fulfilled'\n ? (settled[1].value as Anatomy)\n : undefined\n\n if (projectData) {\n projectInfo[projectName] = {\n ...projectData,\n anatomy: anatomyData,\n } as ProjectModeWithAnatomy\n }\n }\n\n return { data: projectInfo, meta: undefined, error: undefined }\n } catch (error: any) {\n console.error(error)\n return { error, meta: undefined, data: undefined }\n }\n },\n providesTags: (_res, _error, { projects }) =>\n projects.map((projectName) => ({ type: 'project', id: projectName })),\n }),\n }),\n})\n\nexport const { useGetProjectsInfoQuery } = injectedDashboardRestApi\nexport { injectedDashboardRestApi as dashboardQueries }\n"],"names":["transformKanban","response","node","a","b","aLabel","bLabel","provideKanbanTags","result","_error","args","id","projectName","assignees","assignee","getKanbanTasks","projects","taskIds","dispatch","enhancedDashboardGraphqlApi","error","gqlApi","updateCachedData","cacheDataLoaded","cacheEntryRemoved","getCacheEntry","token","unsubscribeThumbnails","batcher","createRealtimeBatcher","updates","isActive","selectedProjects","selectedAssignees","cacheTasks","cachedTaskKeys","task","taskUpdatesToFetch","patches","topic","message","project","taskId","field","patch","getSupportedEntityPatch","REALTIME_TASK_SUPPORTED_VALUE_FIELDS","taskKey","isTaskOnMyBoard","patchValue","isValueMe","draft","value","item","index","fetchUpdates","REALTIME_REST_CALL_LIMIT","waitForRealtimeJitter","tasks","tasksWithArgAssignees","tasksWithoutArgAssignees","cachedTask","subscribeToThumbnailUpdates","messages","matchedMessages","m","t","entityIndex","handlePubSub","_topic","PubSub","_meta","user","accessGroups","convertAccessGroupsData","projectsAccess","getUserProjectsAccess","avatarUrl","name","useGetKanbanQuery","useGetKanbanProjectUsersQuery","injectedDashboardRestApi","build","anatomy","projectInfo","responses","projectQueries","settled","projectDataResult","projectData","anatomyData","_res","useGetProjectsInfoQuery"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6EA,MAAMA,IAAkB,CAACC,MACvBA,EAAS,OAAO,MACb,IAAI,CAAC,EAAE,MAAAC,EAAA,MAAWA,CAAI,EACtB,KAAK,CAACC,GAAGC,MAAM;AACd,QAAMC,IAASF,EAAE,SAASA,EAAE,MACtBG,IAASF,EAAE,SAASA,EAAE;AAC5B,SAAOC,EAAO,cAAcC,CAAM;AACpC,CAAC,GAECC,IAAoB,CAACC,GAAuCC,GAAaC,MAC7EF,GAAQ,SACJ;AAAA,EACE,EAAE,MAAM,cAAc,IAAI,OAAA;AAAA,EAC1B,GAAGA,EAAO,QAAQ,CAAC,EAAE,IAAAG,GAAI,aAAAC,GAAa,WAAAC,IAAY,CAAA,QAAS;AAAA,IACzD,EAAE,MAAM,QAAQ,IAAAF,EAAA;AAAA,IAChB,EAAE,MAAM,UAAU,IAAI,aAAaC,EAAA;AAAA,IACnC,GAAGC,EAAU,IAAI,CAACC,OAAc,EAAE,MAAM,UAAU,IAAI,UAAUA,EAAA,EAAW;AAAA,IAC3E,GAAGD,EAAU,IAAI,CAACC,OAAc;AAAA,MAC9B,MAAM;AAAA,MACN,IAAI,UAAUA,IAAW,cAAcF;AAAA,IAAA,EACvC;AAAA,IACF,EAAE,MAAM,UAAU,IAAI,KAAK,UAAUF,CAAI,EAAA;AAAA,EAAE,CAC5C;AACH,IACA,CAAC,EAAE,MAAM,cAAc,IAAI,QAAQ,GAE5BK,IAAiB,OAC5B;AAAA,EACE,UAAAC,IAAW,CAAA;AAAA,EACX,SAAAC,IAAU,CAAA;AACZ,GAIAC,MACG;AACH,MAAI;AACF,IAAAF,IAAWA,KAAY,CAAA,GACvBC,IAAUA,KAAW,CAAA;AAErB,UAAMhB,IAAW,MAAMiB;AAAA,MACrBC,EAA4B,UAAU,eAAe;AAAA,QACnD,EAAE,UAAAH,GAAU,SAAAC,EAAA;AAAA,QACZ,EAAE,cAAc,GAAA;AAAA,MAAK;AAAA,IACvB;AAGF,QAAIhB,EAAS,WAAW,cAAc,CAACA,EAAS;AAC9C,oBAAQ,MAAM,kBAAkBgB,CAAO,GACjC,IAAI,MAAM,kBAAkBA,EAAQ,KAAK,IAAI,CAAC,EAAE;AAGxD,WAAIhB,EAAS,WAAW,cAAoB,CAAA,IAErCA,EAAS;AAAA,EAClB,SAASmB,GAAO;AACd,mBAAQ,MAAMA,CAAK,GACZ,CAAA;AAAA,EACT;AACF,GAEMD,IAA8BE,EAAO,iBAA+C;AAAA,EACxF,WAAW;AAAA,IACT,WAAW;AAAA,MACT,mBAAmBrB;AAAA,MACnB,cAAcO;AAAA,MACd,MAAM,kBACJG,IAAO,CAAA,GACP,EAAE,kBAAAY,GAAkB,iBAAAC,GAAiB,mBAAAC,GAAmB,UAAAN,GAAU,eAAAO,KAClE;AACA,YAAIC,GACAC;AA4HJ,cAAMC,IAAUC;AAAA,UAxHX,OAAOC,GAASC,MAAa;AAChC,kBAAMC,IAA6B,MAAM,QAAQtB,GAAM,QAAQ,IAAIA,EAAK,WAAW,CAAA,GAC7EuB,IAA8B,MAAM,QAAQvB,GAAM,SAAS,IAAIA,EAAK,YAAY,CAAA,GAGhFwB,IAAaT,IAAgB,QAAQ,CAAA,GACrCU,IAAiB,IAAI,IAAID,EAAW,IAAI,CAACE,MAAS,GAAGA,EAAK,WAAW,IAAIA,EAAK,EAAE,EAAE,CAAC,GACnFC,wBAAyB,IAAA,GACzBC,IAKA,CAAA;AAEN,YAAAR,EAAQ,QAAQ,CAAC,EAAE,OAAAS,GAAO,SAAAC,QAAc;AAEtC,oBAAMC,IAAUD,EAAQ;AACxB,kBAAI,CAACC,KAAW,CAACT,EAAiB,SAASS,CAAO,EAAG;AAErD,oBAAMC,IAASF,EAAQ,SAAS;AAChC,kBAAI,CAACE,EAAQ;AAGb,oBAAMC,IAAQJ,EAAM,MAAM,GAAG,EAAE,CAAC,GAAG,QAAQ,YAAY,EAAE,GACnDK,IAAQC;AAAA,gBACZF;AAAA,gBACAH,EAAQ;AAAA,gBACRM;AAAA,cAAA;AAEF,kBAAI,CAACF,EAAO;AAEZ,oBAAMG,IAAU,GAAGN,CAAO,IAAIC,CAAM,IAC9BM,IAAkBb,EAAe,IAAIY,CAAO,GAC5CE,IAAaL,EAAM,OACnBM,IACJN,EAAM,UAAU,eACfK,EAAwB,KAAK,CAACnC,MAAamB,EAAkB,SAASnB,CAAQ,CAAC;AAIlF,kBAAI,GAACkC,KAAmB,CAACE,IAEzB;AAAA,oBAAI,CAACF,GAAiB;AACpB,kBAAAX,EAAmB,IAAIU,GAAS,EAAE,QAAAL,GAAQ,SAAAD,GAAS;AACnD;AAAA,gBACF;AAEA,gBAAAH,EAAQ,KAAK;AAAA,kBACX,QAAAI;AAAA,kBACA,SAAAD;AAAA,kBACA,OAAOG,EAAM;AAAA,kBACb,OAAOA,EAAM;AAAA,gBAAA,CACd;AAAA;AAAA,YACH,CAAC,GAEGN,EAAQ,UACVhB,EAAiB,CAAC6B,MAAU;AAC1B,cAAAb,EAAQ,QAAQ,CAAC,EAAE,QAAAI,GAAQ,SAAAD,GAAS,OAAAE,GAAO,OAAAS,QAAY;AACrD,sBAAMhB,IAAOe,EAAM;AAAA,kBACjB,CAACE,MAASA,EAAK,OAAOX,KAAUW,EAAK,gBAAgBZ;AAAA,gBAAA;AAEvD,oBAAKL,MAGL,OAAO,OAAOA,GAAM,EAAE,CAACO,MAAU,SAAS,aAAaA,CAAK,GAAGS,GAAO,GAEpET,MAAU,eACVV,EAAkB,SAAS,KAC3B,CAAEmB,EAAmB,KAAK,CAACtC,MAAamB,EAAkB,SAASnB,CAAQ,CAAC,IAC5E;AACA,wBAAMwC,IAAQH,EAAM,QAAQf,CAAI;AAChC,kBAAIkB,MAAU,MAAIH,EAAM,OAAOG,GAAO,CAAC;AAAA,gBACzC;AAAA,cACF,CAAC;AAAA,YACH,CAAC;AAGH,kBAAMC,IAAe,MAAM,KAAKlB,EAAmB,QAAQ;AAC3D,gBAAI,CAACkB,EAAa,UAAUA,EAAa,SAASC,EAA0B;AAG5E,kBAAMC,EAAA;AACN,kBAAMC,IAAQ,MAAM3C;AAAA,cAClB;AAAA,gBACE,UAAU,CAAC,GAAG,IAAI,IAAIwC,EAAa,IAAI,CAAC,EAAE,SAAAd,EAAA,MAAcA,CAAO,CAAC,CAAC;AAAA,gBACjE,SAAS,CAAC,GAAG,IAAI,IAAIc,EAAa,IAAI,CAAC,EAAE,QAAAb,QAAaA,CAAM,CAAC,CAAC;AAAA,cAAA;AAAA,cAEhExB;AAAA,YAAA;AAEF,gBAAI,CAACa,IAAY;AAGjB,kBAAM4B,IAAwBD,EAAM;AAAA,cAClC,CAACtB,MACC,CAACH,EAAkB,WAClBG,EAAK,aAAa,CAAA,GAAI,KAAK,CAACtB,MAAamB,EAAkB,SAASnB,CAAQ,CAAC;AAAA,YAAA,GAG5E8C,IAA2BF,EAAM;AAAA,cACrC,CAACtB,MACCH,EAAkB,SAAS,KAC3B,EAAEG,EAAK,aAAa,CAAA,GAAI,KAAK,CAACtB,MAAamB,EAAkB,SAASnB,CAAQ,CAAC;AAAA,YAAA;AAInF,YAAAQ,EAAiB,CAAC6B,MAAU;AAE1B,cAAAQ,EAAsB,QAAQ,CAACvB,MAAS;AACtC,sBAAMkB,IAAQH,EAAM,UAAU,CAACU,MAAeA,EAAW,OAAOzB,EAAK,EAAE;AACvE,gBAAIkB,MAAU,KAAIH,EAAM,KAAKf,CAAI,IAC5Be,EAAMG,CAAK,IAAIlB;AAAA,cACtB,CAAC,GAEDwB,EAAyB,QAAQ,CAACxB,MAAS;AACzC,sBAAMkB,IAAQH,EAAM,UAAU,CAACU,MAAeA,EAAW,OAAOzB,EAAK,EAAE;AACvE,gBAAIkB,MAAU,MAAIH,EAAM,OAAOG,GAAO,CAAC;AAAA,cACzC,CAAC;AAAA,YACH,CAAC;AAAA,UACH;AAAA,UAGE,CAAC,EAAE,OAAAf,GAAO,SAAAC,EAAA,MAAc,GAAGA,EAAQ,WAAW,EAAE,IAAIA,EAAQ,SAAS,QAAQ,IAAID,CAAK;AAAA,QAAA;AAExF,YAAI;AAEF,gBAAMhB,GAENI,IAAwBmC;AAAA,YACtB,CAACC,MAAuC;AACtC,oBAAM7B,IAAaT,IAAgB,QAAQ,CAAA;AAC3C,kBAAI,CAACS,EAAW,OAAQ;AAExB,oBAAM8B,IAAkBD,EAAS;AAAA,gBAAO,CAACE,MACvC/B,EAAW,KAAK,CAACgC,MAAMA,EAAE,OAAOD,EAAE,QAAQ,YAAYC,EAAE,gBAAgBD,EAAE,OAAO;AAAA,cAAA;AAEnF,cAAID,EAAgB,WAAW,KAE/B1C,EAAiB,CAAC6B,MAAU;AAC1B,gBAAAa,EAAgB,QAAQ,CAACxB,MAAY;AACnC,wBAAM2B,IAAchB,EAAM,UAAU,CAACe,MAAMA,EAAE,OAAO1B,EAAQ,QAAQ,QAAQ;AAC5E,kBAAI2B,MAAgB,MAAMhB,EAAMgB,CAAW,KAAK3B,EAAQ,QAAQ,kBAC9DW,EAAMgB,CAAW,EAAE,gBAAgB3B,EAAQ,QAAQ;AAAA,gBAEvD,CAAC;AAAA,cACH,CAAC;AAAA,YACH;AAAA,YACA,CAAC,MAAM;AAAA,UAAA;AAGT,gBAAM4B,IAAe,CAACC,GAAgB7B,MAAqB;AACzD,YAAKA,GAAS,SAAS,YACvBZ,EAAQ,IAAI,EAAE,OAAOyC,GAAQ,SAAA7B,GAAS;AAAA,UACxC;AAGA,UAAAd,IAAQ4C,EAAO,UAAU,eAAeF,CAAY;AAAA,QACtD,SAAShD,GAAO;AACd,kBAAQ,MAAMA,CAAK;AAAA,QAGrB;AAEA,cAAMI,GAEN8C,EAAO,YAAY5C,CAAK,GACpBC,KACFA,EAAA,GAEFC,EAAQ,MAAA;AAAA,MACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA;AAAA;AAAA;AAAA,IAeF,gBAAgB;AAAA,MACd,mBAAmB5B;AAAA,MACnB,cAAcO;AAAA,IAAA;AAAA;AAAA,IAGhB,uBAAuB;AAAA,MACrB,mBAAmB,CAACN,GAAsCsE,GAAO,EAAE,UAAAvD,MAAa,CAAA,MAC9Ef,EAAS,MAAM,MAAM,IAAI,CAAC,EAAE,MAAMuE,QAAW;AAC3C,cAAMC,IAAeC,EAAwBF,EAAK,YAAY;AAI9D,YAAIG,IAFW,CAACH,EAAK,aAAa,CAACA,EAAK,UAEVI,EAAsBH,CAAY,IAAIzD;AACpE,SAAI,OAAO2D,KAAmB,YAAY,CAACA,WAAiC,CAAA;AAG5E,cAAME,IAAY,cAAcL,EAAK,IAAI;AAEzC,eAAO;AAAA,UACL,GAAGA;AAAA,UACH,cAAAC;AAAA,UACA,UAAUE;AAAA,UACV,WAAAE;AAAA,QAAA;AAAA,MAEJ,CAAC;AAAA,MACH,cAAc,CAACrE,MACbA,GAAQ,SACJ;AAAA,QACE,EAAE,MAAM,QAAQ,IAAI,OAAA;AAAA,QACpB,GAAGA,EAAO,IAAI,CAAC,EAAE,MAAAsE,EAAA,OAAY,EAAE,MAAM,QAAQ,IAAIA,IAAO;AAAA,MAAA,IAE1D,CAAC,EAAE,MAAM,QAAQ,IAAI,QAAQ;AAAA,IAAA;AAAA,EACrC;AAEJ,CAAC,GAEY,EAAE,mBAAAC,IAAmB,+BAAAC,OAAkC7D,GAW9D8D,IAA2B9D,EAA4B,gBAAgB;AAAA,EAC3E,WAAW,CAAC+D,OAAW;AAAA,IACrB,iBAAiBA,EAAM,MAAsD;AAAA,MAC3E,MAAM,QAAQ,EAAE,UAAAlE,IAAW,CAAA,GAAI,SAAAmE,IAAU,GAAA,GAAQ,EAAE,UAAAjE,KAAY;AAC7D,YAAI;AAEF,gBAAMkE,IAAkE,CAAA;AACxE,qBAAW3C,KAAWzB,GAAU;AAC9B,kBAAMJ,IAAc6B,GAGd4C,IAAY;AAAA,cAChBnE,EAASoE,EAAe,UAAU,WAAW,SAAS,EAAE,aAAA1E,EAAA,CAAa,CAAC,EAAE,OAAA;AAAA,cACxE,GAAIuE,IACA;AAAA,gBACEjE;AAAA,kBACEoE,EAAe,UAAU,kBAAkB,SAAS,EAAE,aAAA1E,GAAa;AAAA,gBAAA,EACnE,OAAA;AAAA,cAAO,IAEX,CAAA;AAAA,YAAC,GAGD2E,IAAU,MAAM,QAAQ,WAAWF,CAAS,GAE5CG,IAAoBD,EAAQ,CAAC,GAC7BE,IACJD,EAAkB,WAAW,cACxBA,EAAkB,QACnB,QACAE,IACJP,KAAWI,EAAQ,CAAC,GAAG,WAAW,cAC7BA,EAAQ,CAAC,EAAE,QACZ;AAEN,YAAIE,MACFL,EAAYxE,CAAW,IAAI;AAAA,cACzB,GAAG6E;AAAA,cACH,SAASC;AAAA,YAAA;AAAA,UAGf;AAEA,iBAAO,EAAE,MAAMN,GAAa,MAAM,QAAW,OAAO,OAAA;AAAA,QACtD,SAAShE,GAAY;AACnB,yBAAQ,MAAMA,CAAK,GACZ,EAAE,OAAAA,GAAO,MAAM,QAAW,MAAM,OAAA;AAAA,QACzC;AAAA,MACF;AAAA,MACA,cAAc,CAACuE,GAAMlF,GAAQ,EAAE,UAAAO,QAC7BA,EAAS,IAAI,CAACJ,OAAiB,EAAE,MAAM,WAAW,IAAIA,IAAc;AAAA,IAAA,CACvE;AAAA,EAAA;AAEL,CAAC,GAEY,EAAE,yBAAAgF,OAA4BX;"}