@ynput/ayon-frontend-shared 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1096) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +37 -201
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +248 -512
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/Slicer.cjs.js +1 -1
  8. package/dist/Slicer.es.js +31 -233
  9. package/dist/Slicer.es.js.map +1 -1
  10. package/dist/components.cjs.js +1 -1
  11. package/dist/components.es.js +83 -82
  12. package/dist/components.es.js.map +1 -1
  13. package/dist/index.cjs.js +1 -1
  14. package/dist/index.es.js +32 -130
  15. package/dist/index.es.js.map +1 -1
  16. package/dist/shared/src/api/generated/graphql.cjs.js +8 -7
  17. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  18. package/dist/shared/src/api/generated/graphql.es.js +18 -17
  19. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  20. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  21. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  22. package/dist/shared/src/api/queries/actions/getActions.cjs.js.map +1 -1
  23. package/dist/shared/src/api/queries/actions/getActions.es.js.map +1 -1
  24. package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
  25. package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
  26. package/dist/shared/src/api/queries/activities/getCategories.cjs.js.map +1 -1
  27. package/dist/shared/src/api/queries/activities/getCategories.es.js.map +1 -1
  28. package/dist/shared/src/api/queries/activities/patchTableLatestComments.cjs.js.map +1 -1
  29. package/dist/shared/src/api/queries/activities/patchTableLatestComments.es.js.map +1 -1
  30. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js.map +1 -1
  31. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js.map +1 -1
  32. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
  33. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
  34. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +55 -151
  35. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
  36. package/dist/shared/src/api/queries/addons/updateAddons.cjs.js.map +1 -1
  37. package/dist/shared/src/api/queries/addons/updateAddons.es.js.map +1 -1
  38. package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js.map +1 -1
  39. package/dist/shared/src/api/queries/attributes/getAttributes.es.js.map +1 -1
  40. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js.map +1 -1
  41. package/dist/shared/src/api/queries/columnStats/columnStats.es.js.map +1 -1
  42. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -1
  43. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -1
  44. package/dist/shared/src/api/queries/entities/getEntity.cjs.js.map +1 -1
  45. package/dist/shared/src/api/queries/entities/getEntity.es.js.map +1 -1
  46. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
  47. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  48. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +58 -113
  49. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  50. package/dist/shared/src/api/queries/entities/patchDetailsPanel.cjs.js.map +1 -1
  51. package/dist/shared/src/api/queries/entities/patchDetailsPanel.es.js.map +1 -1
  52. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  53. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  54. package/dist/shared/src/api/queries/entityLists/getLists.es.js +67 -118
  55. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  56. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js +1 -1
  57. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js.map +1 -1
  58. package/dist/shared/src/api/queries/entityLists/listFolders.es.js +40 -95
  59. package/dist/shared/src/api/queries/entityLists/listFolders.es.js.map +1 -1
  60. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
  61. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
  62. package/dist/shared/src/api/queries/folders/getFolderDeleteInfo.cjs.js.map +1 -1
  63. package/dist/shared/src/api/queries/folders/getFolderDeleteInfo.es.js.map +1 -1
  64. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -1
  65. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  66. package/dist/shared/src/api/queries/folders/getFolders.es.js +68 -119
  67. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  68. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +1 -1
  69. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -1
  70. package/dist/shared/src/api/queries/links/getEntityLinks.es.js +73 -128
  71. package/dist/shared/src/api/queries/links/getEntityLinks.es.js.map +1 -1
  72. package/dist/shared/src/api/queries/links/updateLinks.cjs.js.map +1 -1
  73. package/dist/shared/src/api/queries/links/updateLinks.es.js.map +1 -1
  74. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  75. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  76. package/dist/shared/src/api/queries/overview/getOverview.es.js +229 -282
  77. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  78. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  79. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  80. package/dist/shared/src/api/queries/products/getFolderProducts.cjs.js.map +1 -1
  81. package/dist/shared/src/api/queries/products/getFolderProducts.es.js.map +1 -1
  82. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js +1 -1
  83. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js.map +1 -1
  84. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js +80 -134
  85. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js.map +1 -1
  86. package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -1
  87. package/dist/shared/src/api/queries/review/getReview.cjs.js.map +1 -1
  88. package/dist/shared/src/api/queries/review/getReview.es.js +95 -152
  89. package/dist/shared/src/api/queries/review/getReview.es.js.map +1 -1
  90. package/dist/shared/src/api/queries/share/share.cjs.js.map +1 -1
  91. package/dist/shared/src/api/queries/share/share.es.js.map +1 -1
  92. package/dist/shared/src/api/queries/system/getSystem.cjs.js.map +1 -1
  93. package/dist/shared/src/api/queries/system/getSystem.es.js.map +1 -1
  94. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  95. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  96. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +88 -141
  97. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  98. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  99. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  100. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  101. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  102. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +30 -80
  103. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  104. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.cjs.js.map +1 -1
  105. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.es.js.map +1 -1
  106. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -1
  107. package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -1
  108. package/dist/shared/src/api/queries/views/getViews.cjs.js.map +1 -1
  109. package/dist/shared/src/api/queries/views/getViews.es.js.map +1 -1
  110. package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
  111. package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
  112. package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js.map +1 -1
  113. package/dist/shared/src/api/queries/watchers/getWatchers.es.js.map +1 -1
  114. package/dist/shared/src/components/AccessSearchInput/AccessSearchInput.cjs.js.map +1 -1
  115. package/dist/shared/src/components/AccessSearchInput/AccessSearchInput.es.js.map +1 -1
  116. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +1 -1
  117. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
  118. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +28 -30
  119. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
  120. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js +1 -1
  121. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js.map +1 -1
  122. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js +29 -125
  123. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js.map +1 -1
  124. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +3 -3
  125. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
  126. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +16 -310
  127. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
  128. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js +5 -5
  129. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js.map +1 -1
  130. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.es.js +49 -145
  131. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.es.js.map +1 -1
  132. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +5 -5
  133. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
  134. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +45 -141
  135. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
  136. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  137. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  138. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +26 -182
  139. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  140. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  141. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  142. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +9 -195
  143. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  144. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +2 -2
  145. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  146. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +5 -200
  147. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  148. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js +4 -4
  149. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js.map +1 -1
  150. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js +18 -114
  151. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js.map +1 -1
  152. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js +2 -2
  153. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js.map +1 -1
  154. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js +13 -109
  155. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js.map +1 -1
  156. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  157. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  158. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +11 -316
  159. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  160. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js +1 -1
  161. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js.map +1 -1
  162. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js +23 -119
  163. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js.map +1 -1
  164. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js +1 -1
  165. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js.map +1 -1
  166. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js +0 -111
  167. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js.map +1 -1
  168. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.cjs.js +1 -1
  169. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.cjs.js.map +1 -1
  170. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.es.js +1 -1
  171. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.es.js.map +1 -1
  172. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
  173. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
  174. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +12 -314
  175. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
  176. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  177. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  178. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +86 -273
  179. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  180. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  181. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  182. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +34 -335
  183. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  184. package/dist/shared/src/components/EntityPath/EntityPath.cjs.js.map +1 -1
  185. package/dist/shared/src/components/EntityPath/EntityPath.es.js.map +1 -1
  186. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  187. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  188. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +15 -310
  189. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  190. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.cjs.js.map +1 -1
  191. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.es.js.map +1 -1
  192. package/dist/shared/src/components/EnumEditor/EnumEditorItem.cjs.js.map +1 -1
  193. package/dist/shared/src/components/EnumEditor/EnumEditorItem.es.js.map +1 -1
  194. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  195. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  196. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +89 -293
  197. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  198. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.cjs.js +2 -2
  199. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.cjs.js.map +1 -1
  200. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.es.js +10 -106
  201. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.es.js.map +1 -1
  202. package/dist/shared/src/components/InfoMessage/InfoMessage.cjs.js +1 -1
  203. package/dist/shared/src/components/InfoMessage/InfoMessage.cjs.js.map +1 -1
  204. package/dist/shared/src/components/InfoMessage/InfoMessage.es.js +6 -5
  205. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  206. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  207. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  208. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  209. package/dist/shared/src/components/LinksManager/LinksManager.es.js +51 -346
  210. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  211. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  212. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  213. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +7 -212
  214. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  215. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  216. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  217. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +2 -205
  218. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  219. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
  220. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
  221. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +4 -185
  222. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
  223. package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
  224. package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
  225. package/dist/shared/src/components/Menu/Menu.es.js +48 -343
  226. package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
  227. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  228. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  229. package/dist/shared/src/components/Menu/MenuItem.es.js +20 -316
  230. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  231. package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
  232. package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
  233. package/dist/shared/src/components/Menu/MenuList.es.js +74 -373
  234. package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
  235. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +2 -2
  236. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  237. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +16 -315
  238. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  239. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  240. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  241. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +48 -346
  242. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  243. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +2 -2
  244. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  245. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +134 -304
  246. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  247. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
  248. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  249. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +74 -367
  250. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  251. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  252. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  253. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +3 -299
  254. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  255. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  256. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  257. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +34 -334
  258. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  259. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  260. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  261. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +30 -331
  262. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  263. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +5 -5
  264. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  265. package/dist/shared/src/components/RenameForm/RenameForm.es.js +77 -372
  266. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  267. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  268. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  269. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +114 -309
  270. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  271. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  272. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  273. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +66 -365
  274. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  275. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  276. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  277. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +14 -316
  278. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  279. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
  280. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  281. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +70 -72
  282. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  283. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  284. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  285. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +24 -326
  286. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  287. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.cjs.js.map +1 -1
  288. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.es.js.map +1 -1
  289. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  290. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  291. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +335 -534
  292. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  293. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +7 -7
  294. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  295. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +29 -329
  296. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  297. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +4 -4
  298. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  299. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +53 -355
  300. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  301. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +2 -2
  302. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  303. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +95 -394
  304. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  305. package/dist/shared/src/components/SyncButton/SyncButton.cjs.js +2 -2
  306. package/dist/shared/src/components/SyncButton/SyncButton.cjs.js.map +1 -1
  307. package/dist/shared/src/components/SyncButton/SyncButton.es.js +52 -165
  308. package/dist/shared/src/components/SyncButton/SyncButton.es.js.map +1 -1
  309. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +3 -3
  310. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  311. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +35 -334
  312. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  313. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js +1 -1
  314. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js.map +1 -1
  315. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js +26 -122
  316. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js.map +1 -1
  317. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js +3 -3
  318. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js.map +1 -1
  319. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js +22 -118
  320. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js.map +1 -1
  321. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +13 -13
  322. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  323. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +99 -300
  324. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  325. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  326. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  327. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +61 -262
  328. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  329. package/dist/shared/src/config/plannerFeatures.cjs.js.map +1 -1
  330. package/dist/shared/src/config/plannerFeatures.es.js.map +1 -1
  331. package/dist/shared/src/config/powerpackFeatures.cjs.js.map +1 -1
  332. package/dist/shared/src/config/powerpackFeatures.es.js.map +1 -1
  333. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  334. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  335. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +6 -210
  336. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  337. package/dist/shared/src/containers/Actions/ActionIcon.cjs.js.map +1 -1
  338. package/dist/shared/src/containers/Actions/ActionIcon.es.js.map +1 -1
  339. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  340. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  341. package/dist/shared/src/containers/Actions/Actions.es.js +51 -250
  342. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  343. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
  344. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
  345. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  346. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  347. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +20 -323
  348. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  349. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.cjs.js.map +1 -1
  350. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.es.js.map +1 -1
  351. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.cjs.js.map +1 -1
  352. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.es.js.map +1 -1
  353. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  354. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  355. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +143 -327
  356. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  357. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +3 -3
  358. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  359. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +27 -329
  360. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  361. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  362. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  363. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +39 -236
  364. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  365. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  366. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  367. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +65 -255
  368. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  369. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js +1 -1
  370. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js.map +1 -1
  371. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js +16 -317
  372. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js.map +1 -1
  373. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  374. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  375. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +61 -354
  376. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  377. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js +5 -5
  378. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js.map +1 -1
  379. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js +20 -116
  380. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js.map +1 -1
  381. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  382. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  383. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +2 -306
  384. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  385. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.cjs.js +1 -1
  386. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.cjs.js.map +1 -1
  387. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.es.js +51 -147
  388. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.es.js.map +1 -1
  389. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  390. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  391. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +2 -202
  392. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  393. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.cjs.js.map +1 -1
  394. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.es.js.map +1 -1
  395. package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js.map +1 -1
  396. package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.es.js.map +1 -1
  397. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.cjs.js.map +1 -1
  398. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.es.js.map +1 -1
  399. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +9 -9
  400. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  401. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +18 -320
  402. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  403. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  404. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  405. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +13 -217
  406. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  407. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  408. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  409. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +22 -323
  410. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  411. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  412. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  413. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +27 -307
  414. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  415. package/dist/shared/src/containers/DetailsPanel/helpers/buildDetailsPanelTitles.cjs.js.map +1 -1
  416. package/dist/shared/src/containers/DetailsPanel/helpers/buildDetailsPanelTitles.es.js.map +1 -1
  417. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.cjs.js.map +1 -1
  418. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.es.js.map +1 -1
  419. package/dist/shared/src/containers/DetailsPanel/helpers/getAllProjectsStatuses.cjs.js.map +1 -1
  420. package/dist/shared/src/containers/DetailsPanel/helpers/getAllProjectsStatuses.es.js.map +1 -1
  421. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.cjs.js.map +1 -1
  422. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.es.js.map +1 -1
  423. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js +1 -1
  424. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js.map +1 -1
  425. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js +10 -106
  426. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js.map +1 -1
  427. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.cjs.js.map +1 -1
  428. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.es.js.map +1 -1
  429. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  430. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  431. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +2 -209
  432. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  433. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +2 -2
  434. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  435. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +74 -373
  436. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  437. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  438. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  439. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +20 -324
  440. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  441. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +6 -6
  442. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  443. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +32 -338
  444. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  445. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +3 -3
  446. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  447. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +12 -318
  448. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  449. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js +1 -1
  450. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js.map +1 -1
  451. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js +11 -107
  452. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js.map +1 -1
  453. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  454. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  455. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +23 -228
  456. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  457. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js +1 -1
  458. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js.map +1 -1
  459. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js +27 -123
  460. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js.map +1 -1
  461. package/dist/shared/src/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.cjs.js.map +1 -1
  462. package/dist/shared/src/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.es.js.map +1 -1
  463. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  464. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  465. package/dist/shared/src/containers/Feed/Feed.es.js +65 -245
  466. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  467. package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js.map +1 -1
  468. package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.es.js.map +1 -1
  469. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  470. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  471. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +8 -309
  472. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  473. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  474. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  475. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +145 -421
  476. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  477. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  478. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  479. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +18 -317
  480. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  481. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js +1 -1
  482. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js.map +1 -1
  483. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js +24 -120
  484. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js.map +1 -1
  485. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  486. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  487. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +42 -331
  488. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  489. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js.map +1 -1
  490. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.styled.es.js.map +1 -1
  491. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  492. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  493. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +227 -372
  494. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  495. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.cjs.js.map +1 -1
  496. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.es.js.map +1 -1
  497. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  498. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  499. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +38 -341
  500. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  501. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  502. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  503. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +22 -324
  504. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  505. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js +1 -1
  506. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js.map +1 -1
  507. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js +9 -105
  508. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js.map +1 -1
  509. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  510. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  511. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +21 -324
  512. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  513. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.cjs.js +1 -1
  514. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.cjs.js.map +1 -1
  515. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.es.js +16 -26
  516. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.es.js.map +1 -1
  517. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.cjs.js +2 -0
  518. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.cjs.js.map +1 -0
  519. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.es.js +14 -0
  520. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.es.js.map +1 -0
  521. package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js +1 -1
  522. package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js.map +1 -1
  523. package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js +2 -15
  524. package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js.map +1 -1
  525. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +2 -2
  526. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -1
  527. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +62 -361
  528. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -1
  529. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  530. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  531. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +57 -356
  532. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  533. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  534. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  535. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +14 -310
  536. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  537. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  538. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  539. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +34 -238
  540. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  541. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js +1 -1
  542. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
  543. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js +67 -163
  544. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js.map +1 -1
  545. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js.map +1 -1
  546. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js +18 -8
  547. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js.map +1 -1
  548. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js +1 -1
  549. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js.map +1 -1
  550. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js +10 -106
  551. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js.map +1 -1
  552. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionUsers.cjs.js.map +1 -1
  553. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionUsers.es.js.map +1 -1
  554. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js +1 -1
  555. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js.map +1 -1
  556. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js +13 -109
  557. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js.map +1 -1
  558. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  559. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  560. package/dist/shared/src/containers/ListTable/ListTable.es.js +115 -284
  561. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  562. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  563. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  564. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +44 -177
  565. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  566. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  567. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  568. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +46 -343
  569. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  570. package/dist/shared/src/containers/ListTable/ListTableWidgets.cjs.js.map +1 -1
  571. package/dist/shared/src/containers/ListTable/ListTableWidgets.es.js.map +1 -1
  572. package/dist/shared/src/containers/MoveEntityDialog/MoveEntityDialog.cjs.js.map +1 -1
  573. package/dist/shared/src/containers/MoveEntityDialog/MoveEntityDialog.es.js.map +1 -1
  574. package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js +3 -3
  575. package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js.map +1 -1
  576. package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js +170 -459
  577. package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js.map +1 -1
  578. package/dist/shared/src/containers/NewEntity/components/TypeEditor.cjs.js.map +1 -1
  579. package/dist/shared/src/containers/NewEntity/components/TypeEditor.es.js.map +1 -1
  580. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js +1 -1
  581. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js.map +1 -1
  582. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js +117 -314
  583. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js.map +1 -1
  584. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  585. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  586. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +590 -859
  587. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  588. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  589. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  590. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +245 -391
  591. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  592. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  593. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  594. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +75 -375
  595. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  596. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  597. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  598. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +32 -204
  599. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  600. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  601. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  602. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +27 -124
  603. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  604. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js +7 -7
  605. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js.map +1 -1
  606. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js +35 -131
  607. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js.map +1 -1
  608. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  609. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  610. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +97 -292
  611. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  612. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +4 -4
  613. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  614. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +243 -441
  615. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  616. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  617. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  618. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +156 -330
  619. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  620. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  621. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  622. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +4 -208
  623. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  624. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +1 -1
  625. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  626. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +120 -420
  627. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  628. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  629. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  630. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +71 -245
  631. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  632. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.cjs.js.map +1 -1
  633. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.es.js +3 -3
  634. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.es.js.map +1 -1
  635. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.cjs.js.map +1 -1
  636. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.es.js.map +1 -1
  637. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.cjs.js.map +1 -1
  638. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.es.js.map +1 -1
  639. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js +1 -1
  640. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js.map +1 -1
  641. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js +83 -179
  642. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js.map +1 -1
  643. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  644. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  645. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +13 -317
  646. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  647. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  648. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  649. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +59 -233
  650. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  651. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  652. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  653. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +74 -248
  654. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  655. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  656. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  657. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +147 -439
  658. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  659. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  660. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  661. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +23 -197
  662. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  663. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  664. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  665. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +32 -206
  666. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  667. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  668. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  669. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +32 -332
  670. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  671. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  672. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  673. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +135 -335
  674. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  675. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js.map +1 -1
  676. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js.map +1 -1
  677. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  678. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  679. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +29 -203
  680. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  681. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  682. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  683. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +36 -204
  684. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  685. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  686. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  687. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +78 -282
  688. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  689. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  690. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  691. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +31 -232
  692. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  693. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  694. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  695. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +24 -198
  696. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  697. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  698. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  699. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +29 -203
  700. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  701. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  702. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  703. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +167 -467
  704. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  705. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  706. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  707. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +41 -215
  708. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  709. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js.map +1 -1
  710. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js.map +1 -1
  711. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.cjs.js.map +1 -1
  712. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.es.js.map +1 -1
  713. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.cjs.js.map +1 -1
  714. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.es.js.map +1 -1
  715. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js.map +1 -1
  716. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js.map +1 -1
  717. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.cjs.js.map +1 -1
  718. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.es.js.map +1 -1
  719. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.cjs.js.map +1 -1
  720. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.es.js.map +1 -1
  721. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.cjs.js.map +1 -1
  722. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.es.js.map +1 -1
  723. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js.map +1 -1
  724. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js.map +1 -1
  725. package/dist/shared/src/containers/ProjectTreeTable/utils/sanitizeQueryFilter.cjs.js.map +1 -1
  726. package/dist/shared/src/containers/ProjectTreeTable/utils/sanitizeQueryFilter.es.js.map +1 -1
  727. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.cjs.js.map +1 -1
  728. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.es.js.map +1 -1
  729. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +2 -2
  730. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  731. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +14 -315
  732. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  733. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
  734. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  735. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +113 -398
  736. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  737. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +5 -5
  738. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
  739. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +40 -332
  740. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
  741. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  742. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  743. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.cjs.js +1 -1
  744. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.cjs.js.map +1 -1
  745. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.es.js +22 -194
  746. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.es.js.map +1 -1
  747. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
  748. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
  749. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  750. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  751. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +3 -3
  752. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  753. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +52 -348
  754. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  755. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +5 -5
  756. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
  757. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +77 -364
  758. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
  759. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  760. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  761. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +28 -202
  762. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  763. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  764. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  765. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +36 -333
  766. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  767. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +5 -5
  768. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
  769. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +130 -424
  770. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
  771. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +4 -4
  772. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  773. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +80 -176
  774. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  775. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +5 -5
  776. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  777. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +12 -108
  778. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  779. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  780. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  781. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +20 -217
  782. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  783. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  784. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  785. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +231 -527
  786. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  787. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -2
  788. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -1
  789. package/dist/shared/src/containers/Slicer/components/Slicer.es.js +69 -367
  790. package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -1
  791. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +2 -2
  792. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
  793. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +18 -318
  794. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
  795. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +2 -2
  796. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  797. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +24 -328
  798. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  799. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  800. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  801. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +69 -370
  802. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  803. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
  804. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
  805. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +27 -228
  806. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
  807. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js +1 -1
  808. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js.map +1 -1
  809. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js +34 -236
  810. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js.map +1 -1
  811. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
  812. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
  813. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +5 -309
  814. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
  815. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
  816. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
  817. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +7 -311
  818. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
  819. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js +1 -1
  820. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js.map +1 -1
  821. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js +11 -314
  822. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js.map +1 -1
  823. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js +1 -1
  824. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js.map +1 -1
  825. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js +13 -316
  826. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js.map +1 -1
  827. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js +1 -1
  828. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js.map +1 -1
  829. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js +34 -338
  830. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js.map +1 -1
  831. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js +1 -1
  832. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js.map +1 -1
  833. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js +11 -316
  834. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js.map +1 -1
  835. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  836. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  837. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +72 -368
  838. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  839. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -1
  840. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -1
  841. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.cjs.js.map +1 -1
  842. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.es.js.map +1 -1
  843. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js +1 -1
  844. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js.map +1 -1
  845. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js +24 -120
  846. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js.map +1 -1
  847. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js.map +1 -1
  848. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js.map +1 -1
  849. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  850. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  851. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +35 -336
  852. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  853. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  854. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  855. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +55 -354
  856. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  857. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
  858. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  859. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +40 -335
  860. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  861. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  862. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  863. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +59 -262
  864. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  865. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js +1 -1
  866. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js.map +1 -1
  867. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js +17 -113
  868. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js.map +1 -1
  869. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
  870. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  871. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +45 -141
  872. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  873. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.cjs.js.map +1 -1
  874. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.es.js.map +1 -1
  875. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  876. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  877. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +22 -216
  878. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  879. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
  880. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
  881. package/dist/shared/src/containers/Views/types.cjs.js.map +1 -1
  882. package/dist/shared/src/containers/Views/types.es.js.map +1 -1
  883. package/dist/shared/src/containers/Views/utils/generateWorkingView.cjs.js.map +1 -1
  884. package/dist/shared/src/containers/Views/utils/generateWorkingView.es.js.map +1 -1
  885. package/dist/shared/src/context/AddonContext.cjs.js.map +1 -1
  886. package/dist/shared/src/context/AddonContext.es.js.map +1 -1
  887. package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
  888. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  889. package/dist/shared/src/context/AddonProjectContext.es.js +19 -115
  890. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  891. package/dist/shared/src/context/DeleteEntitiesContext.cjs.js +1 -1
  892. package/dist/shared/src/context/DeleteEntitiesContext.cjs.js.map +1 -1
  893. package/dist/shared/src/context/DeleteEntitiesContext.es.js +1 -1
  894. package/dist/shared/src/context/DeleteEntitiesContext.es.js.map +1 -1
  895. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  896. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  897. package/dist/shared/src/context/DetailsPanelContext.es.js +66 -362
  898. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  899. package/dist/shared/src/context/EntityUpdatesContext.cjs.js +1 -1
  900. package/dist/shared/src/context/EntityUpdatesContext.cjs.js.map +1 -1
  901. package/dist/shared/src/context/EntityUpdatesContext.es.js +61 -358
  902. package/dist/shared/src/context/EntityUpdatesContext.es.js.map +1 -1
  903. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  904. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  905. package/dist/shared/src/context/PowerpackContext.es.js +42 -344
  906. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  907. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  908. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  909. package/dist/shared/src/context/ProjectFoldersContext.es.js +26 -231
  910. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  911. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  912. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  913. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  914. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  915. package/dist/shared/src/context/SubtasksModulesContext.es.js +23 -324
  916. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  917. package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js +1 -1
  918. package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js.map +1 -1
  919. package/dist/shared/src/context/ThumbnailUploaderContext.es.js +17 -21
  920. package/dist/shared/src/context/ThumbnailUploaderContext.es.js.map +1 -1
  921. package/dist/shared/src/context/UriContext.cjs.js +1 -1
  922. package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
  923. package/dist/shared/src/context/UriContext.es.js +2 -2
  924. package/dist/shared/src/context/UriContext.es.js.map +1 -1
  925. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  926. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  927. package/dist/shared/src/context/WebsocketContext.es.js +28 -229
  928. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  929. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  930. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  931. package/dist/shared/src/hooks/useEntityUpdate.es.js +2 -208
  932. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  933. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  934. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  935. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +11 -314
  936. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  937. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
  938. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
  939. package/dist/shared/src/hooks/useHierarchyTable.es.js +30 -333
  940. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
  941. package/dist/shared/src/hooks/useLoadModules.cjs.js.map +1 -1
  942. package/dist/shared/src/hooks/useLoadModules.es.js.map +1 -1
  943. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js +1 -1
  944. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js.map +1 -1
  945. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js +19 -115
  946. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js.map +1 -1
  947. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  948. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  949. package/dist/shared/src/hooks/useUserProjectConfig.es.js +6 -212
  950. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  951. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js.map +1 -1
  952. package/dist/shared/src/util/buildHierarchicalTableRows.es.js.map +1 -1
  953. package/dist/shared/src/util/checkName.cjs.js.map +1 -1
  954. package/dist/shared/src/util/checkName.es.js.map +1 -1
  955. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
  956. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
  957. package/dist/shared/src/util/getAttributeIcon.cjs.js.map +1 -1
  958. package/dist/shared/src/util/getAttributeIcon.es.js.map +1 -1
  959. package/dist/shared/src/util/getBundleMode.cjs.js +1 -1
  960. package/dist/shared/src/util/getBundleMode.cjs.js.map +1 -1
  961. package/dist/shared/src/util/getBundleMode.es.js +16 -112
  962. package/dist/shared/src/util/getBundleMode.es.js.map +1 -1
  963. package/dist/shared/src/util/getGroupByDataType.cjs.js.map +1 -1
  964. package/dist/shared/src/util/getGroupByDataType.es.js.map +1 -1
  965. package/dist/shared/src/util/getPriorityOptions.cjs.js.map +1 -1
  966. package/dist/shared/src/util/getPriorityOptions.es.js.map +1 -1
  967. package/dist/shared/src/util/iconUtils.cjs.js.map +1 -1
  968. package/dist/shared/src/util/iconUtils.es.js.map +1 -1
  969. package/dist/shared/src/util/mentionTypeOptions.cjs.js +2 -0
  970. package/dist/shared/src/util/mentionTypeOptions.cjs.js.map +1 -0
  971. package/dist/shared/src/util/mentionTypeOptions.es.js +16 -0
  972. package/dist/shared/src/util/mentionTypeOptions.es.js.map +1 -0
  973. package/dist/shared/src/util/parseFilename.cjs.js +2 -0
  974. package/dist/shared/src/util/parseFilename.cjs.js.map +1 -0
  975. package/dist/shared/src/util/parseFilename.es.js +8 -0
  976. package/dist/shared/src/util/parseFilename.es.js.map +1 -0
  977. package/dist/shared/src/util/uriUtils.cjs.js.map +1 -1
  978. package/dist/shared/src/util/uriUtils.es.js.map +1 -1
  979. package/dist/types/api/base/index.d.ts +1 -1
  980. package/dist/types/api/generated/graphql.d.ts +5 -2
  981. package/dist/types/api/generated/graphqlLinks.d.ts +1 -0
  982. package/dist/types/api/queries/activities/getActivities.d.ts +4 -2
  983. package/dist/types/api/queries/activities/getCategories.d.ts +1 -1
  984. package/dist/types/api/queries/activities/util/activityRealtimeHandler.d.ts +1 -1
  985. package/dist/types/api/queries/entities/getEntity.d.ts +2 -1
  986. package/dist/types/api/queries/entities/getEntityPanel.d.ts +2 -1
  987. package/dist/types/api/queries/entities/updateEntity.d.ts +2 -1
  988. package/dist/types/api/queries/entityLists/getLists.d.ts +305 -305
  989. package/dist/types/api/queries/overview/getOverview.d.ts +35 -18
  990. package/dist/types/api/queries/project/getProject.d.ts +62 -61
  991. package/dist/types/api/queries/system/getSystem.d.ts +1 -1
  992. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +2 -1
  993. package/dist/types/api/queries/users/getUsers.d.ts +2 -1
  994. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +4 -2
  995. package/dist/types/api/queries/views/getViews.d.ts +1 -1
  996. package/dist/types/components/DetailsPanelDetails/DetailsSection.d.ts +1 -1
  997. package/dist/types/components/Menu/Menu.d.ts +1 -1
  998. package/dist/types/components/Menu/MenuList.d.ts +1 -1
  999. package/dist/types/components/Powerpack/PowerpackButton.d.ts +1 -1
  1000. package/dist/types/components/ProjectTableSettings/ColumnsSettings.d.ts +1 -1
  1001. package/dist/types/components/ProjectTableSettings/ProjectTableSettings.d.ts +2 -2
  1002. package/dist/types/components/ProjectTableSettings/TableSettingsFallback.d.ts +1 -1
  1003. package/dist/types/components/RemotePage/ProjectPageRemote.d.ts +1 -1
  1004. package/dist/types/components/RemotePage/RemotePageWrapper.d.ts +4 -2
  1005. package/dist/types/components/RenameForm/RenameForm.d.ts +1 -1
  1006. package/dist/types/components/ReviewablesList/SortableReviewableCard.d.ts +1 -1
  1007. package/dist/types/components/ReviewablesList/useReviewablesUpload.d.ts +2 -2
  1008. package/dist/types/components/ReviewablesSelector/Card.d.ts +1 -1
  1009. package/dist/types/components/SearchFilter/filterScopeRegistry.d.ts +1 -1
  1010. package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +1 -1
  1011. package/dist/types/components/SettingsPanel/SettingsPanel.d.ts +1 -1
  1012. package/dist/types/components/SyncButton/SyncButton.d.ts +1 -1
  1013. package/dist/types/components/Thumbnail/StackedThumbnails.d.ts +1 -2
  1014. package/dist/types/config/plannerFeatures.d.ts +1 -1
  1015. package/dist/types/config/powerpackFeatures.d.ts +1 -1
  1016. package/dist/types/containers/Actions/Actions.d.ts +2 -2
  1017. package/dist/types/containers/ContextMenu/ContextMenuItem.d.ts +1 -1
  1018. package/dist/types/containers/ContextMenu/useCreateContextMenu.d.ts +1 -1
  1019. package/dist/types/containers/DetailsPanel/DetailsPanel.d.ts +1 -1
  1020. package/dist/types/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.d.ts +2 -2
  1021. package/dist/types/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.d.ts +1 -1
  1022. package/dist/types/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.d.ts +2 -2
  1023. package/dist/types/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.d.ts +1 -1
  1024. package/dist/types/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.d.ts +3 -3
  1025. package/dist/types/containers/DetailsPanel/containers/DetailsPanelSubtasks.d.ts +1 -1
  1026. package/dist/types/containers/DetailsPanel/helpers/buildEntityTypeIcons.d.ts +1 -1
  1027. package/dist/types/containers/DetailsPanel/helpers/getEntityPathData.d.ts +1 -1
  1028. package/dist/types/containers/DetailsPanel/helpers/mergeProjectInfo.d.ts +1 -1
  1029. package/dist/types/containers/DetailsPanel/hooks/useGetEntityPath.d.ts +1 -1
  1030. package/dist/types/containers/EntityPickerDialog/components/EntityTypeTable.d.ts +1 -1
  1031. package/dist/types/containers/EntityPickerDialog/hooks/useGetEntityPickerData.d.ts +1 -1
  1032. package/dist/types/containers/EntityPickerDialog/util/buildEntityPickerTableData.d.ts +1 -1
  1033. package/dist/types/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.d.ts +1 -1
  1034. package/dist/types/containers/Feed/components/ActivityReference/ActivityReference.styled.d.ts +2 -2
  1035. package/dist/types/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.d.ts +1 -1
  1036. package/dist/types/containers/Feed/components/ActivityVersions/ActivityVersions.styled.d.ts +1 -1
  1037. package/dist/types/containers/Feed/components/CommentInput/modules/index.d.ts +1 -1
  1038. package/dist/types/containers/Feed/components/CommentInput/quillFormats.d.ts +1 -0
  1039. package/dist/types/containers/Feed/components/CommentInput/types.d.ts +1 -12
  1040. package/dist/types/containers/Feed/components/FileUploadCard/FileUploadCard.d.ts +1 -1
  1041. package/dist/types/containers/Feed/context/FeedContext.d.ts +1 -1
  1042. package/dist/types/containers/Feed/hooks/useLastVersionReview.d.ts +1 -1
  1043. package/dist/types/containers/Feed/mentionHelpers/getMentionTasks.d.ts +1 -1
  1044. package/dist/types/containers/Feed/mentionHelpers/getMentionUsers.d.ts +1 -1
  1045. package/dist/types/containers/Feed/mentionHelpers/getMentionVersions.d.ts +2 -2
  1046. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +1 -1
  1047. package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +1 -1
  1048. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +4 -3
  1049. package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +1 -1
  1050. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +4 -5
  1051. package/dist/types/containers/ProjectTreeTable/hooks/useFolderRelationships.d.ts +1 -1
  1052. package/dist/types/containers/ProjectTreeTable/hooks/useGetEntityTypeData.d.ts +2 -2
  1053. package/dist/types/containers/ProjectTreeTable/hooks/useMoveEntities.d.ts +1 -1
  1054. package/dist/types/containers/ProjectTreeTable/hooks/usePasteLinks.d.ts +1 -1
  1055. package/dist/types/containers/ProjectTreeTable/hooks/useQueryFilters.d.ts +1 -1
  1056. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +6 -5
  1057. package/dist/types/containers/ProjectTreeTable/utils/getEntityViewerIds.d.ts +1 -1
  1058. package/dist/types/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.d.ts +1 -1
  1059. package/dist/types/containers/ProjectTreeTable/utils/linksToTableData.d.ts +1 -1
  1060. package/dist/types/containers/ProjectTreeTable/utils/sanitizeQueryFilter.d.ts +1 -1
  1061. package/dist/types/containers/ProjectTreeTable/widgets/LinksWidget.d.ts +1 -1
  1062. package/dist/types/containers/ProjectTreeTable/widgets/NameWidget.d.ts +1 -1
  1063. package/dist/types/containers/ProjectTreeTable/widgets/TextWidget.d.ts +2 -1
  1064. package/dist/types/containers/Slicer/components/Slicer.d.ts +2 -2
  1065. package/dist/types/containers/Slicer/components/SlicerDropdownFallback.d.ts +1 -1
  1066. package/dist/types/containers/Slicer/context/SlicerContext.d.ts +3 -4
  1067. package/dist/types/containers/Slicer/hooks/useEntityListsSlice.d.ts +1 -1
  1068. package/dist/types/containers/Slicer/hooks/useHierarchyContextMenuItems.d.ts +3 -3
  1069. package/dist/types/containers/Slicer/hooks/useProjectAnatomySlices.d.ts +1 -1
  1070. package/dist/types/containers/Slicer/hooks/useSlicerCounts.d.ts +1 -1
  1071. package/dist/types/containers/Slicer/hooks/useUsersTable.d.ts +1 -1
  1072. package/dist/types/containers/Slicer/types.d.ts +1 -1
  1073. package/dist/types/containers/Views/hooks/pages/useListsViewSettings.d.ts +1 -1
  1074. package/dist/types/containers/Views/hooks/pages/useOverviewViewSettings.d.ts +1 -1
  1075. package/dist/types/containers/Views/types.d.ts +1 -1
  1076. package/dist/types/context/AddonContext.d.ts +1 -1
  1077. package/dist/types/context/AddonProjectContext.d.ts +2 -2
  1078. package/dist/types/context/DetailsPanelContext.d.ts +2 -2
  1079. package/dist/types/context/SubtasksModulesContext.d.ts +1 -1
  1080. package/dist/types/hooks/useHierarchyTable.d.ts +1 -1
  1081. package/dist/types/util/buildHierarchicalTableRows.d.ts +1 -1
  1082. package/dist/types/util/columnConfigConverter.d.ts +1 -1
  1083. package/dist/types/util/getBundleMode.d.ts +1 -1
  1084. package/dist/types/util/getGroupByDataType.d.ts +1 -1
  1085. package/dist/types/util/index.d.ts +2 -0
  1086. package/dist/types/util/mentionTypeOptions.d.ts +12 -0
  1087. package/dist/types/util/parseFilename.d.ts +1 -0
  1088. package/dist/types/util/uriUtils.d.ts +1 -1
  1089. package/dist/util.cjs.js +1 -1
  1090. package/dist/util.es.js +24 -20
  1091. package/dist/util.es.js.map +1 -1
  1092. package/package.json +1 -1
  1093. package/dist/shared/src/components/ThumbnailSimple/index.cjs.js +0 -2
  1094. package/dist/shared/src/components/ThumbnailSimple/index.cjs.js.map +0 -1
  1095. package/dist/shared/src/components/ThumbnailSimple/index.es.js +0 -6
  1096. package/dist/shared/src/components/ThumbnailSimple/index.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"columnStats.cjs.js","sources":["../../../../../../src/api/queries/columnStats/columnStats.ts"],"sourcesContent":["import { ColumnStats } from '@shared/api/generated'\n// Shape of the backend GraphQL `ColumnStats` (connection.fieldStats).\n// `sum` and `distribution` are typed ahead of backend support so wiring them is a no-op.\nexport interface FieldStats extends ColumnStats {\n primaryCount?: number | null\n secondaryCount?: number | null\n}\n\nconst snakeToCamel = (s: string): string => s.replace(/_([a-z0-9])/g, (_, c) => c.toUpperCase())\n\n// Per-entity \"type\" columns all map to the unified `subType` column in the table.\n// (`product_base_type` is a separate column — productBaseType — so not aliased.)\nconst COLUMN_ALIASES: Record<string, string> = {\n task_type: 'subType',\n folder_type: 'subType',\n product_type: 'subType',\n}\n\n// Canonical frontend column id for a backend column name. Attribute columns keep\n// their `attrib_` form; everything else is snake_case on the backend but camelCase\n// in the table (product_base_type → productBaseType, created_at → createdAt).\nexport const canonicalColumnId = (name: string): string => {\n if (name in COLUMN_ALIASES) return COLUMN_ALIASES[name]\n if (name.startsWith('project_attributes_')) {\n return 'attrib_' + name.slice('project_attributes_'.length)\n }\n if (name.startsWith('inherited_attributes_')) {\n return 'attrib_' + name.slice('inherited_attributes_'.length)\n }\n if (name.startsWith('attrib_')) return name\n return snakeToCamel(name)\n}\n\n// list_of_strings attrs arrive as one bucket keyed by the whole array serialized\n// to text (backend GROUP BY on attrib->>'name'); split it so each element counts.\nconst toDistributionValues = (v: unknown): unknown[] => {\n if (Array.isArray(v)) return v\n if (typeof v === 'string') {\n const t = v.trim()\n if (t.startsWith('[') && t.endsWith(']')) {\n try {\n const parsed = JSON.parse(t)\n if (Array.isArray(parsed)) return parsed\n } catch {}\n }\n }\n return [v]\n}\n\nconst normalizeDistribution = (raw: unknown): FieldStats['distribution'] => {\n if (raw == null) return undefined\n let value = raw\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value)\n } catch {\n return undefined\n }\n }\n if (Array.isArray(value)) {\n // dedupe by value; array buckets (tags/assignees combos) unnest per value\n const byValue = new Map<string, { value: string; count: number }>()\n for (const d of value) {\n if (!d || d.value == null) continue\n const vals = toDistributionValues(d.value)\n for (const raw of vals) {\n const v = String(raw)\n const prev = byValue.get(v)\n byValue.set(v, { ...d, value: v, count: (prev?.count ?? 0) + (Number(d.count) || 0) })\n }\n }\n return [...byValue.values()]\n }\n if (typeof value === 'object') {\n return Object.entries(value as Record<string, unknown>).map(([v, count]) => ({\n value: v,\n count: Number(count) || 0,\n }))\n }\n return undefined\n}\n\nconst sumN = (a?: number | null, b?: number | null): number | undefined =>\n a == null && b == null ? undefined : (a ?? 0) + (b ?? 0)\nconst lowest = <T>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a < b ? a : b\nconst highest = <T>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a > b ? a : b\nconst pct = (part?: number, rest?: number): number | undefined =>\n part != null && rest != null && part + rest > 0\n ? Math.round((part / (part + rest)) * 10000) / 100\n : undefined\n\n// Additive combine of one column's stats from two entity sets (e.g. folder +\n// task). Counts sum, min/max widen, percentages recompute, avg is weighted by\n// filled counts when available.\nconst combineTwo = (a: FieldStats, b: FieldStats): FieldStats => {\n const filled = sumN(a.valueFilledCount, b.valueFilledCount)\n const notFilled = sumN(a.valueNotFilledCount, b.valueNotFilledCount)\n const checked = sumN(a.checkedCount, b.checkedCount)\n const notChecked = sumN(a.notCheckedCount, b.notCheckedCount)\n\n let avg: number | undefined\n if (a.avg != null && b.avg != null) {\n const wa = a.valueFilledCount\n const wb = b.valueFilledCount\n avg =\n wa != null && wb != null && wa + wb > 0\n ? (a.avg * wa + b.avg * wb) / (wa + wb)\n : (a.avg + b.avg) / 2\n avg = Math.round(avg * 100) / 100\n } else {\n avg = a.avg ?? b.avg ?? undefined\n }\n\n let distribution: FieldStats['distribution']\n if (a.distribution?.length || b.distribution?.length) {\n const byValue = new Map<string, NonNullable<FieldStats['distribution']>[number]>()\n for (const d of [...(a.distribution ?? []), ...(b.distribution ?? [])]) {\n const prev = byValue.get(d.value)\n byValue.set(d.value, prev ? { ...prev, count: prev.count + d.count } : { ...d })\n }\n distribution = [...byValue.values()]\n }\n\n return {\n columnName: a.columnName,\n min: lowest(a.min, b.min),\n max: highest(a.max, b.max),\n avg,\n sum: sumN(a.sum, b.sum),\n valueFilledCount: filled,\n valueNotFilledCount: notFilled,\n percentageFilled: pct(filled, notFilled),\n percentageNotFilled: pct(notFilled, filled),\n checkedCount: checked,\n notCheckedCount: notChecked,\n checkedPercentage: pct(checked, notChecked),\n notCheckedPercentage: pct(notChecked, checked),\n distribution,\n primaryCount: a.primaryCount ?? b.primaryCount,\n secondaryCount: a.secondaryCount ?? b.secondaryCount,\n }\n}\n\n// Normalize a raw fieldStats response (apply in transformResponse).\nexport const normalizeFieldStats = (stats: FieldStats[]): FieldStats[] =>\n stats.map((s) => ({\n ...s,\n columnName: canonicalColumnId(s.columnName),\n distribution: normalizeDistribution(s.distribution),\n }))\n\n// Merge stats lists by canonical column id, field-wise: overlay's non-null values\n// win, base fills the gaps. A single list also dedupes its own repeated columns.\nexport const mergeFieldStats = (\n overlay: FieldStats[] = [],\n base: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of base) byId.set(canonicalColumnId(s.columnName), { ...s })\n for (const s of overlay) {\n const id = canonicalColumnId(s.columnName)\n const merged: FieldStats = { ...(byId.get(id) || { columnName: s.columnName }) }\n for (const [k, v] of Object.entries(s)) {\n if (v !== null && v !== undefined) (merged as any)[k] = v\n }\n byId.set(id, merged)\n }\n return [...byId.values()]\n}\n\n// Total row count for an entity set = max(filled + not-filled) across its\n// stat columns. Feeds the main folders/tasks count cell.\nexport const totalRowsFromStats = (stats: FieldStats[]): number =>\n stats.reduce(\n (max, s) => Math.max(max, (s.valueFilledCount ?? 0) + (s.valueNotFilledCount ?? 0)),\n 0,\n )\n\n// Combine primary-entity stats (tasks/versions) with group-entity stats\n// (folders/products) for the \"include groups & folders\" row scope.\nexport const combineFieldStats = (\n primary: FieldStats[],\n group: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of primary) byId.set(canonicalColumnId(s.columnName), s)\n const out = new Map(byId)\n for (const g of group) {\n const id = canonicalColumnId(g.columnName)\n const p = byId.get(id)\n out.set(id, p ? combineTwo(p, g) : g)\n }\n return [...out.values()]\n}\n\nexport const transformStatsError = (error: any, entityType: string): string => {\n const message = error?.message ?? 'Unknown stats error'\n console.error(`Error fetching ${entityType} stats:`, error)\n return message\n}\n"],"names":["snakeToCamel","s","_","c","COLUMN_ALIASES","canonicalColumnId","name","toDistributionValues","v","t","parsed","normalizeDistribution","raw","value","byValue","d","vals","prev","count","sumN","a","b","lowest","highest","pct","part","rest","combineTwo","filled","notFilled","checked","notChecked","avg","wa","wb","distribution","normalizeFieldStats","stats","mergeFieldStats","overlay","base","byId","id","merged","k","totalRowsFromStats","max","combineFieldStats","primary","group","out","g","p","transformStatsError","error","entityType","message"],"mappings":"gFAQA,MAAMA,EAAgBC,GAAsBA,EAAE,QAAQ,eAAgB,CAACC,EAAGC,IAAMA,EAAE,aAAa,EAIzFC,EAAyC,CAC7C,UAAW,UACX,YAAa,UACb,aAAc,SAChB,EAKaC,EAAqBC,GAC5BA,KAAQF,EAAuBA,EAAeE,CAAI,EAClDA,EAAK,WAAW,qBAAqB,EAChC,UAAYA,EAAK,MAAM,EAA4B,EAExDA,EAAK,WAAW,uBAAuB,EAClC,UAAYA,EAAK,MAAM,EAA8B,EAE1DA,EAAK,WAAW,SAAS,EAAUA,EAChCN,EAAaM,CAAI,EAKpBC,EAAwBC,GAA0B,CACtD,GAAI,MAAM,QAAQA,CAAC,EAAG,OAAOA,EAC7B,GAAI,OAAOA,GAAM,SAAU,CACzB,MAAMC,EAAID,EAAE,KAAA,EACZ,GAAIC,EAAE,WAAW,GAAG,GAAKA,EAAE,SAAS,GAAG,EACrC,GAAI,CACF,MAAMC,EAAS,KAAK,MAAMD,CAAC,EAC3B,GAAI,MAAM,QAAQC,CAAM,EAAG,OAAOA,CACpC,MAAQ,CAAC,CAEb,CACA,MAAO,CAACF,CAAC,CACX,EAEMG,EAAyBC,GAA6C,CAC1E,GAAIA,GAAO,KAAM,OACjB,IAAIC,EAAQD,EACZ,GAAI,OAAOC,GAAU,SACnB,GAAI,CACFA,EAAQ,KAAK,MAAMA,CAAK,CAC1B,MAAQ,CACN,MACF,CAEF,GAAI,MAAM,QAAQA,CAAK,EAAG,CAExB,MAAMC,MAAc,IACpB,UAAWC,KAAKF,EAAO,CACrB,GAAI,CAACE,GAAKA,EAAE,OAAS,KAAM,SAC3B,MAAMC,EAAOT,EAAqBQ,EAAE,KAAK,EACzC,UAAWH,KAAOI,EAAM,CACtB,MAAMR,EAAI,OAAOI,CAAG,EACdK,EAAOH,EAAQ,IAAIN,CAAC,EAC1BM,EAAQ,IAAIN,EAAG,CAAE,GAAGO,EAAG,MAAOP,EAAG,OAAQS,GAAM,OAAS,IAAM,OAAOF,EAAE,KAAK,GAAK,GAAI,CACvF,CACF,CACA,MAAO,CAAC,GAAGD,EAAQ,QAAQ,CAC7B,CACA,GAAI,OAAOD,GAAU,SACnB,OAAO,OAAO,QAAQA,CAAgC,EAAE,IAAI,CAAC,CAACL,EAAGU,CAAK,KAAO,CAC3E,MAAOV,EACP,MAAO,OAAOU,CAAK,GAAK,CAAA,EACxB,CAGN,EAEMC,EAAO,CAACC,EAAmBC,IAC/BD,GAAK,MAAQC,GAAK,KAAO,QAAaD,GAAK,IAAMC,GAAK,GAClDC,EAAS,CAAIF,EAAcC,IAC/BD,GAAK,KAAOC,GAAK,OAAYA,GAAK,MAAWD,EAAIC,EAARD,EAAgBC,EACrDE,EAAU,CAAIH,EAAcC,IAChCD,GAAK,KAAOC,GAAK,OAAYA,GAAK,MAAWD,EAAIC,EAARD,EAAgBC,EACrDG,EAAM,CAACC,EAAeC,IAC1BD,GAAQ,MAAQC,GAAQ,MAAQD,EAAOC,EAAO,EAC1C,KAAK,MAAOD,GAAQA,EAAOC,GAAS,GAAK,EAAI,IAC7C,OAKAC,EAAa,CAACP,EAAeC,IAA8B,CAC/D,MAAMO,EAAST,EAAKC,EAAE,iBAAkBC,EAAE,gBAAgB,EACpDQ,EAAYV,EAAKC,EAAE,oBAAqBC,EAAE,mBAAmB,EAC7DS,EAAUX,EAAKC,EAAE,aAAcC,EAAE,YAAY,EAC7CU,EAAaZ,EAAKC,EAAE,gBAAiBC,EAAE,eAAe,EAE5D,IAAIW,EACJ,GAAIZ,EAAE,KAAO,MAAQC,EAAE,KAAO,KAAM,CAClC,MAAMY,EAAKb,EAAE,iBACPc,EAAKb,EAAE,iBACbW,EACEC,GAAM,MAAQC,GAAM,MAAQD,EAAKC,EAAK,GACjCd,EAAE,IAAMa,EAAKZ,EAAE,IAAMa,IAAOD,EAAKC,IACjCd,EAAE,IAAMC,EAAE,KAAO,EACxBW,EAAM,KAAK,MAAMA,EAAM,GAAG,EAAI,GAChC,MACEA,EAAMZ,EAAE,KAAOC,EAAE,KAAO,OAG1B,IAAIc,EACJ,GAAIf,EAAE,cAAc,QAAUC,EAAE,cAAc,OAAQ,CACpD,MAAMP,MAAc,IACpB,UAAWC,IAAK,CAAC,GAAIK,EAAE,cAAgB,CAAA,EAAK,GAAIC,EAAE,cAAgB,CAAA,CAAG,EAAG,CACtE,MAAMJ,EAAOH,EAAQ,IAAIC,EAAE,KAAK,EAChCD,EAAQ,IAAIC,EAAE,MAAOE,EAAO,CAAE,GAAGA,EAAM,MAAOA,EAAK,MAAQF,EAAE,KAAA,EAAU,CAAE,GAAGA,EAAG,CACjF,CACAoB,EAAe,CAAC,GAAGrB,EAAQ,QAAQ,CACrC,CAEA,MAAO,CACL,WAAYM,EAAE,WACd,IAAKE,EAAOF,EAAE,IAAKC,EAAE,GAAG,EACxB,IAAKE,EAAQH,EAAE,IAAKC,EAAE,GAAG,EACzB,IAAAW,EACA,IAAKb,EAAKC,EAAE,IAAKC,EAAE,GAAG,EACtB,iBAAkBO,EAClB,oBAAqBC,EACrB,iBAAkBL,EAAII,EAAQC,CAAS,EACvC,oBAAqBL,EAAIK,EAAWD,CAAM,EAC1C,aAAcE,EACd,gBAAiBC,EACjB,kBAAmBP,EAAIM,EAASC,CAAU,EAC1C,qBAAsBP,EAAIO,EAAYD,CAAO,EAC7C,aAAAK,EACA,aAAcf,EAAE,cAAgBC,EAAE,aAClC,eAAgBD,EAAE,gBAAkBC,EAAE,cAAA,CAE1C,EAGae,EAAuBC,GAClCA,EAAM,IAAKpC,IAAO,CAChB,GAAGA,EACH,WAAYI,EAAkBJ,EAAE,UAAU,EAC1C,aAAcU,EAAsBV,EAAE,YAAY,CACpD,EAAE,EAISqC,EAAkB,CAC7BC,EAAwB,GACxBC,EAAqB,CAAA,IACJ,CACjB,MAAMC,MAAW,IACjB,UAAWxC,KAAKuC,EAAMC,EAAK,IAAIpC,EAAkBJ,EAAE,UAAU,EAAG,CAAE,GAAGA,CAAA,CAAG,EACxE,UAAWA,KAAKsC,EAAS,CACvB,MAAMG,EAAKrC,EAAkBJ,EAAE,UAAU,EACnC0C,EAAqB,CAAE,GAAIF,EAAK,IAAIC,CAAE,GAAK,CAAE,WAAYzC,EAAE,WAAW,EAC5E,SAAW,CAAC2C,EAAGpC,CAAC,IAAK,OAAO,QAAQP,CAAC,EAC/BO,GAAM,OAA0BmC,EAAeC,CAAC,EAAIpC,GAE1DiC,EAAK,IAAIC,EAAIC,CAAM,CACrB,CACA,MAAO,CAAC,GAAGF,EAAK,QAAQ,CAC1B,EAIaI,EAAsBR,GACjCA,EAAM,OACJ,CAACS,EAAK7C,IAAM,KAAK,IAAI6C,GAAM7C,EAAE,kBAAoB,IAAMA,EAAE,qBAAuB,EAAE,EAClF,CACF,EAIW8C,EAAoB,CAC/BC,EACAC,EAAsB,KACL,CACjB,MAAMR,MAAW,IACjB,UAAWxC,KAAK+C,EAASP,EAAK,IAAIpC,EAAkBJ,EAAE,UAAU,EAAGA,CAAC,EACpE,MAAMiD,EAAM,IAAI,IAAIT,CAAI,EACxB,UAAWU,KAAKF,EAAO,CACrB,MAAMP,EAAKrC,EAAkB8C,EAAE,UAAU,EACnCC,EAAIX,EAAK,IAAIC,CAAE,EACrBQ,EAAI,IAAIR,EAAIU,EAAIzB,EAAWyB,EAAGD,CAAC,EAAIA,CAAC,CACtC,CACA,MAAO,CAAC,GAAGD,EAAI,QAAQ,CACzB,EAEaG,EAAsB,CAACC,EAAYC,IAA+B,CAC7E,MAAMC,EAAUF,GAAO,SAAW,sBAClC,eAAQ,MAAM,kBAAkBC,CAAU,UAAWD,CAAK,EACnDE,CACT"}
1
+ {"version":3,"file":"columnStats.cjs.js","sources":["../../../../../../src/api/queries/columnStats/columnStats.ts"],"sourcesContent":["import type { ColumnStats } from '@shared/api/generated'\n// Shape of the backend GraphQL `ColumnStats` (connection.fieldStats).\n// `sum` and `distribution` are typed ahead of backend support so wiring them is a no-op.\nexport interface FieldStats extends ColumnStats {\n primaryCount?: number | null\n secondaryCount?: number | null\n}\n\nconst snakeToCamel = (s: string): string => s.replace(/_([a-z0-9])/g, (_, c) => c.toUpperCase())\n\n// Per-entity \"type\" columns all map to the unified `subType` column in the table.\n// (`product_base_type` is a separate column — productBaseType — so not aliased.)\nconst COLUMN_ALIASES: Record<string, string> = {\n task_type: 'subType',\n folder_type: 'subType',\n product_type: 'subType',\n}\n\n// Canonical frontend column id for a backend column name. Attribute columns keep\n// their `attrib_` form; everything else is snake_case on the backend but camelCase\n// in the table (product_base_type → productBaseType, created_at → createdAt).\nexport const canonicalColumnId = (name: string): string => {\n if (name in COLUMN_ALIASES) return COLUMN_ALIASES[name]\n if (name.startsWith('project_attributes_')) {\n return 'attrib_' + name.slice('project_attributes_'.length)\n }\n if (name.startsWith('inherited_attributes_')) {\n return 'attrib_' + name.slice('inherited_attributes_'.length)\n }\n if (name.startsWith('attrib_')) return name\n return snakeToCamel(name)\n}\n\n// list_of_strings attrs arrive as one bucket keyed by the whole array serialized\n// to text (backend GROUP BY on attrib->>'name'); split it so each element counts.\nconst toDistributionValues = (v: unknown): unknown[] => {\n if (Array.isArray(v)) return v\n if (typeof v === 'string') {\n const t = v.trim()\n if (t.startsWith('[') && t.endsWith(']')) {\n try {\n const parsed = JSON.parse(t)\n if (Array.isArray(parsed)) return parsed\n } catch {}\n }\n }\n return [v]\n}\n\nconst normalizeDistribution = (raw: unknown): FieldStats['distribution'] => {\n if (raw == null) return undefined\n let value = raw\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value)\n } catch {\n return undefined\n }\n }\n if (Array.isArray(value)) {\n // dedupe by value; array buckets (tags/assignees combos) unnest per value\n const byValue = new Map<string, { value: string; count: number }>()\n for (const d of value) {\n if (!d || d.value == null) continue\n const vals = toDistributionValues(d.value)\n for (const raw of vals) {\n const v = String(raw)\n const prev = byValue.get(v)\n byValue.set(v, { ...d, value: v, count: (prev?.count ?? 0) + (Number(d.count) || 0) })\n }\n }\n return [...byValue.values()]\n }\n if (typeof value === 'object') {\n return Object.entries(value as Record<string, unknown>).map(([v, count]) => ({\n value: v,\n count: Number(count) || 0,\n }))\n }\n return undefined\n}\n\nconst sumN = (a?: number | null, b?: number | null): number | undefined =>\n a == null && b == null ? undefined : (a ?? 0) + (b ?? 0)\nconst lowest = <T>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a < b ? a : b\nconst highest = <T>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a > b ? a : b\nconst pct = (part?: number, rest?: number): number | undefined =>\n part != null && rest != null && part + rest > 0\n ? Math.round((part / (part + rest)) * 10000) / 100\n : undefined\n\n// Additive combine of one column's stats from two entity sets (e.g. folder +\n// task). Counts sum, min/max widen, percentages recompute, avg is weighted by\n// filled counts when available.\nconst combineTwo = (a: FieldStats, b: FieldStats): FieldStats => {\n const filled = sumN(a.valueFilledCount, b.valueFilledCount)\n const notFilled = sumN(a.valueNotFilledCount, b.valueNotFilledCount)\n const checked = sumN(a.checkedCount, b.checkedCount)\n const notChecked = sumN(a.notCheckedCount, b.notCheckedCount)\n\n let avg: number | undefined\n if (a.avg != null && b.avg != null) {\n const wa = a.valueFilledCount\n const wb = b.valueFilledCount\n avg =\n wa != null && wb != null && wa + wb > 0\n ? (a.avg * wa + b.avg * wb) / (wa + wb)\n : (a.avg + b.avg) / 2\n avg = Math.round(avg * 100) / 100\n } else {\n avg = a.avg ?? b.avg ?? undefined\n }\n\n let distribution: FieldStats['distribution']\n if (a.distribution?.length || b.distribution?.length) {\n const byValue = new Map<string, NonNullable<FieldStats['distribution']>[number]>()\n for (const d of [...(a.distribution ?? []), ...(b.distribution ?? [])]) {\n const prev = byValue.get(d.value)\n byValue.set(d.value, prev ? { ...prev, count: prev.count + d.count } : { ...d })\n }\n distribution = [...byValue.values()]\n }\n\n return {\n columnName: a.columnName,\n min: lowest(a.min, b.min),\n max: highest(a.max, b.max),\n avg,\n sum: sumN(a.sum, b.sum),\n valueFilledCount: filled,\n valueNotFilledCount: notFilled,\n percentageFilled: pct(filled, notFilled),\n percentageNotFilled: pct(notFilled, filled),\n checkedCount: checked,\n notCheckedCount: notChecked,\n checkedPercentage: pct(checked, notChecked),\n notCheckedPercentage: pct(notChecked, checked),\n distribution,\n primaryCount: a.primaryCount ?? b.primaryCount,\n secondaryCount: a.secondaryCount ?? b.secondaryCount,\n }\n}\n\n// Normalize a raw fieldStats response (apply in transformResponse).\nexport const normalizeFieldStats = (stats: FieldStats[]): FieldStats[] =>\n stats.map((s) => ({\n ...s,\n columnName: canonicalColumnId(s.columnName),\n distribution: normalizeDistribution(s.distribution),\n }))\n\n// Merge stats lists by canonical column id, field-wise: overlay's non-null values\n// win, base fills the gaps. A single list also dedupes its own repeated columns.\nexport const mergeFieldStats = (\n overlay: FieldStats[] = [],\n base: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of base) byId.set(canonicalColumnId(s.columnName), { ...s })\n for (const s of overlay) {\n const id = canonicalColumnId(s.columnName)\n const merged: FieldStats = { ...(byId.get(id) || { columnName: s.columnName }) }\n for (const [k, v] of Object.entries(s)) {\n if (v !== null && v !== undefined) (merged as any)[k] = v\n }\n byId.set(id, merged)\n }\n return [...byId.values()]\n}\n\n// Total row count for an entity set = max(filled + not-filled) across its\n// stat columns. Feeds the main folders/tasks count cell.\nexport const totalRowsFromStats = (stats: FieldStats[]): number =>\n stats.reduce(\n (max, s) => Math.max(max, (s.valueFilledCount ?? 0) + (s.valueNotFilledCount ?? 0)),\n 0,\n )\n\n// Combine primary-entity stats (tasks/versions) with group-entity stats\n// (folders/products) for the \"include groups & folders\" row scope.\nexport const combineFieldStats = (\n primary: FieldStats[],\n group: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of primary) byId.set(canonicalColumnId(s.columnName), s)\n const out = new Map(byId)\n for (const g of group) {\n const id = canonicalColumnId(g.columnName)\n const p = byId.get(id)\n out.set(id, p ? combineTwo(p, g) : g)\n }\n return [...out.values()]\n}\n\nexport const transformStatsError = (error: any, entityType: string): string => {\n const message = error?.message ?? 'Unknown stats error'\n console.error(`Error fetching ${entityType} stats:`, error)\n return message\n}\n"],"names":["snakeToCamel","s","_","c","COLUMN_ALIASES","canonicalColumnId","name","toDistributionValues","v","t","parsed","normalizeDistribution","raw","value","byValue","d","vals","prev","count","sumN","a","b","lowest","highest","pct","part","rest","combineTwo","filled","notFilled","checked","notChecked","avg","wa","wb","distribution","normalizeFieldStats","stats","mergeFieldStats","overlay","base","byId","id","merged","k","totalRowsFromStats","max","combineFieldStats","primary","group","out","g","p","transformStatsError","error","entityType","message"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"columnStats.es.js","sources":["../../../../../../src/api/queries/columnStats/columnStats.ts"],"sourcesContent":["import { ColumnStats } from '@shared/api/generated'\n// Shape of the backend GraphQL `ColumnStats` (connection.fieldStats).\n// `sum` and `distribution` are typed ahead of backend support so wiring them is a no-op.\nexport interface FieldStats extends ColumnStats {\n primaryCount?: number | null\n secondaryCount?: number | null\n}\n\nconst snakeToCamel = (s: string): string => s.replace(/_([a-z0-9])/g, (_, c) => c.toUpperCase())\n\n// Per-entity \"type\" columns all map to the unified `subType` column in the table.\n// (`product_base_type` is a separate column — productBaseType — so not aliased.)\nconst COLUMN_ALIASES: Record<string, string> = {\n task_type: 'subType',\n folder_type: 'subType',\n product_type: 'subType',\n}\n\n// Canonical frontend column id for a backend column name. Attribute columns keep\n// their `attrib_` form; everything else is snake_case on the backend but camelCase\n// in the table (product_base_type → productBaseType, created_at → createdAt).\nexport const canonicalColumnId = (name: string): string => {\n if (name in COLUMN_ALIASES) return COLUMN_ALIASES[name]\n if (name.startsWith('project_attributes_')) {\n return 'attrib_' + name.slice('project_attributes_'.length)\n }\n if (name.startsWith('inherited_attributes_')) {\n return 'attrib_' + name.slice('inherited_attributes_'.length)\n }\n if (name.startsWith('attrib_')) return name\n return snakeToCamel(name)\n}\n\n// list_of_strings attrs arrive as one bucket keyed by the whole array serialized\n// to text (backend GROUP BY on attrib->>'name'); split it so each element counts.\nconst toDistributionValues = (v: unknown): unknown[] => {\n if (Array.isArray(v)) return v\n if (typeof v === 'string') {\n const t = v.trim()\n if (t.startsWith('[') && t.endsWith(']')) {\n try {\n const parsed = JSON.parse(t)\n if (Array.isArray(parsed)) return parsed\n } catch {}\n }\n }\n return [v]\n}\n\nconst normalizeDistribution = (raw: unknown): FieldStats['distribution'] => {\n if (raw == null) return undefined\n let value = raw\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value)\n } catch {\n return undefined\n }\n }\n if (Array.isArray(value)) {\n // dedupe by value; array buckets (tags/assignees combos) unnest per value\n const byValue = new Map<string, { value: string; count: number }>()\n for (const d of value) {\n if (!d || d.value == null) continue\n const vals = toDistributionValues(d.value)\n for (const raw of vals) {\n const v = String(raw)\n const prev = byValue.get(v)\n byValue.set(v, { ...d, value: v, count: (prev?.count ?? 0) + (Number(d.count) || 0) })\n }\n }\n return [...byValue.values()]\n }\n if (typeof value === 'object') {\n return Object.entries(value as Record<string, unknown>).map(([v, count]) => ({\n value: v,\n count: Number(count) || 0,\n }))\n }\n return undefined\n}\n\nconst sumN = (a?: number | null, b?: number | null): number | undefined =>\n a == null && b == null ? undefined : (a ?? 0) + (b ?? 0)\nconst lowest = <T>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a < b ? a : b\nconst highest = <T>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a > b ? a : b\nconst pct = (part?: number, rest?: number): number | undefined =>\n part != null && rest != null && part + rest > 0\n ? Math.round((part / (part + rest)) * 10000) / 100\n : undefined\n\n// Additive combine of one column's stats from two entity sets (e.g. folder +\n// task). Counts sum, min/max widen, percentages recompute, avg is weighted by\n// filled counts when available.\nconst combineTwo = (a: FieldStats, b: FieldStats): FieldStats => {\n const filled = sumN(a.valueFilledCount, b.valueFilledCount)\n const notFilled = sumN(a.valueNotFilledCount, b.valueNotFilledCount)\n const checked = sumN(a.checkedCount, b.checkedCount)\n const notChecked = sumN(a.notCheckedCount, b.notCheckedCount)\n\n let avg: number | undefined\n if (a.avg != null && b.avg != null) {\n const wa = a.valueFilledCount\n const wb = b.valueFilledCount\n avg =\n wa != null && wb != null && wa + wb > 0\n ? (a.avg * wa + b.avg * wb) / (wa + wb)\n : (a.avg + b.avg) / 2\n avg = Math.round(avg * 100) / 100\n } else {\n avg = a.avg ?? b.avg ?? undefined\n }\n\n let distribution: FieldStats['distribution']\n if (a.distribution?.length || b.distribution?.length) {\n const byValue = new Map<string, NonNullable<FieldStats['distribution']>[number]>()\n for (const d of [...(a.distribution ?? []), ...(b.distribution ?? [])]) {\n const prev = byValue.get(d.value)\n byValue.set(d.value, prev ? { ...prev, count: prev.count + d.count } : { ...d })\n }\n distribution = [...byValue.values()]\n }\n\n return {\n columnName: a.columnName,\n min: lowest(a.min, b.min),\n max: highest(a.max, b.max),\n avg,\n sum: sumN(a.sum, b.sum),\n valueFilledCount: filled,\n valueNotFilledCount: notFilled,\n percentageFilled: pct(filled, notFilled),\n percentageNotFilled: pct(notFilled, filled),\n checkedCount: checked,\n notCheckedCount: notChecked,\n checkedPercentage: pct(checked, notChecked),\n notCheckedPercentage: pct(notChecked, checked),\n distribution,\n primaryCount: a.primaryCount ?? b.primaryCount,\n secondaryCount: a.secondaryCount ?? b.secondaryCount,\n }\n}\n\n// Normalize a raw fieldStats response (apply in transformResponse).\nexport const normalizeFieldStats = (stats: FieldStats[]): FieldStats[] =>\n stats.map((s) => ({\n ...s,\n columnName: canonicalColumnId(s.columnName),\n distribution: normalizeDistribution(s.distribution),\n }))\n\n// Merge stats lists by canonical column id, field-wise: overlay's non-null values\n// win, base fills the gaps. A single list also dedupes its own repeated columns.\nexport const mergeFieldStats = (\n overlay: FieldStats[] = [],\n base: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of base) byId.set(canonicalColumnId(s.columnName), { ...s })\n for (const s of overlay) {\n const id = canonicalColumnId(s.columnName)\n const merged: FieldStats = { ...(byId.get(id) || { columnName: s.columnName }) }\n for (const [k, v] of Object.entries(s)) {\n if (v !== null && v !== undefined) (merged as any)[k] = v\n }\n byId.set(id, merged)\n }\n return [...byId.values()]\n}\n\n// Total row count for an entity set = max(filled + not-filled) across its\n// stat columns. Feeds the main folders/tasks count cell.\nexport const totalRowsFromStats = (stats: FieldStats[]): number =>\n stats.reduce(\n (max, s) => Math.max(max, (s.valueFilledCount ?? 0) + (s.valueNotFilledCount ?? 0)),\n 0,\n )\n\n// Combine primary-entity stats (tasks/versions) with group-entity stats\n// (folders/products) for the \"include groups & folders\" row scope.\nexport const combineFieldStats = (\n primary: FieldStats[],\n group: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of primary) byId.set(canonicalColumnId(s.columnName), s)\n const out = new Map(byId)\n for (const g of group) {\n const id = canonicalColumnId(g.columnName)\n const p = byId.get(id)\n out.set(id, p ? combineTwo(p, g) : g)\n }\n return [...out.values()]\n}\n\nexport const transformStatsError = (error: any, entityType: string): string => {\n const message = error?.message ?? 'Unknown stats error'\n console.error(`Error fetching ${entityType} stats:`, error)\n return message\n}\n"],"names":["snakeToCamel","s","_","c","COLUMN_ALIASES","canonicalColumnId","name","toDistributionValues","v","t","parsed","normalizeDistribution","raw","value","byValue","d","vals","prev","count","sumN","a","b","lowest","highest","pct","part","rest","combineTwo","filled","notFilled","checked","notChecked","avg","wa","wb","distribution","normalizeFieldStats","stats","mergeFieldStats","overlay","base","byId","id","merged","k","totalRowsFromStats","max","combineFieldStats","primary","group","out","g","p","transformStatsError","error","entityType","message"],"mappings":"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"}
1
+ {"version":3,"file":"columnStats.es.js","sources":["../../../../../../src/api/queries/columnStats/columnStats.ts"],"sourcesContent":["import type { ColumnStats } from '@shared/api/generated'\n// Shape of the backend GraphQL `ColumnStats` (connection.fieldStats).\n// `sum` and `distribution` are typed ahead of backend support so wiring them is a no-op.\nexport interface FieldStats extends ColumnStats {\n primaryCount?: number | null\n secondaryCount?: number | null\n}\n\nconst snakeToCamel = (s: string): string => s.replace(/_([a-z0-9])/g, (_, c) => c.toUpperCase())\n\n// Per-entity \"type\" columns all map to the unified `subType` column in the table.\n// (`product_base_type` is a separate column — productBaseType — so not aliased.)\nconst COLUMN_ALIASES: Record<string, string> = {\n task_type: 'subType',\n folder_type: 'subType',\n product_type: 'subType',\n}\n\n// Canonical frontend column id for a backend column name. Attribute columns keep\n// their `attrib_` form; everything else is snake_case on the backend but camelCase\n// in the table (product_base_type → productBaseType, created_at → createdAt).\nexport const canonicalColumnId = (name: string): string => {\n if (name in COLUMN_ALIASES) return COLUMN_ALIASES[name]\n if (name.startsWith('project_attributes_')) {\n return 'attrib_' + name.slice('project_attributes_'.length)\n }\n if (name.startsWith('inherited_attributes_')) {\n return 'attrib_' + name.slice('inherited_attributes_'.length)\n }\n if (name.startsWith('attrib_')) return name\n return snakeToCamel(name)\n}\n\n// list_of_strings attrs arrive as one bucket keyed by the whole array serialized\n// to text (backend GROUP BY on attrib->>'name'); split it so each element counts.\nconst toDistributionValues = (v: unknown): unknown[] => {\n if (Array.isArray(v)) return v\n if (typeof v === 'string') {\n const t = v.trim()\n if (t.startsWith('[') && t.endsWith(']')) {\n try {\n const parsed = JSON.parse(t)\n if (Array.isArray(parsed)) return parsed\n } catch {}\n }\n }\n return [v]\n}\n\nconst normalizeDistribution = (raw: unknown): FieldStats['distribution'] => {\n if (raw == null) return undefined\n let value = raw\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value)\n } catch {\n return undefined\n }\n }\n if (Array.isArray(value)) {\n // dedupe by value; array buckets (tags/assignees combos) unnest per value\n const byValue = new Map<string, { value: string; count: number }>()\n for (const d of value) {\n if (!d || d.value == null) continue\n const vals = toDistributionValues(d.value)\n for (const raw of vals) {\n const v = String(raw)\n const prev = byValue.get(v)\n byValue.set(v, { ...d, value: v, count: (prev?.count ?? 0) + (Number(d.count) || 0) })\n }\n }\n return [...byValue.values()]\n }\n if (typeof value === 'object') {\n return Object.entries(value as Record<string, unknown>).map(([v, count]) => ({\n value: v,\n count: Number(count) || 0,\n }))\n }\n return undefined\n}\n\nconst sumN = (a?: number | null, b?: number | null): number | undefined =>\n a == null && b == null ? undefined : (a ?? 0) + (b ?? 0)\nconst lowest = <T>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a < b ? a : b\nconst highest = <T>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a > b ? a : b\nconst pct = (part?: number, rest?: number): number | undefined =>\n part != null && rest != null && part + rest > 0\n ? Math.round((part / (part + rest)) * 10000) / 100\n : undefined\n\n// Additive combine of one column's stats from two entity sets (e.g. folder +\n// task). Counts sum, min/max widen, percentages recompute, avg is weighted by\n// filled counts when available.\nconst combineTwo = (a: FieldStats, b: FieldStats): FieldStats => {\n const filled = sumN(a.valueFilledCount, b.valueFilledCount)\n const notFilled = sumN(a.valueNotFilledCount, b.valueNotFilledCount)\n const checked = sumN(a.checkedCount, b.checkedCount)\n const notChecked = sumN(a.notCheckedCount, b.notCheckedCount)\n\n let avg: number | undefined\n if (a.avg != null && b.avg != null) {\n const wa = a.valueFilledCount\n const wb = b.valueFilledCount\n avg =\n wa != null && wb != null && wa + wb > 0\n ? (a.avg * wa + b.avg * wb) / (wa + wb)\n : (a.avg + b.avg) / 2\n avg = Math.round(avg * 100) / 100\n } else {\n avg = a.avg ?? b.avg ?? undefined\n }\n\n let distribution: FieldStats['distribution']\n if (a.distribution?.length || b.distribution?.length) {\n const byValue = new Map<string, NonNullable<FieldStats['distribution']>[number]>()\n for (const d of [...(a.distribution ?? []), ...(b.distribution ?? [])]) {\n const prev = byValue.get(d.value)\n byValue.set(d.value, prev ? { ...prev, count: prev.count + d.count } : { ...d })\n }\n distribution = [...byValue.values()]\n }\n\n return {\n columnName: a.columnName,\n min: lowest(a.min, b.min),\n max: highest(a.max, b.max),\n avg,\n sum: sumN(a.sum, b.sum),\n valueFilledCount: filled,\n valueNotFilledCount: notFilled,\n percentageFilled: pct(filled, notFilled),\n percentageNotFilled: pct(notFilled, filled),\n checkedCount: checked,\n notCheckedCount: notChecked,\n checkedPercentage: pct(checked, notChecked),\n notCheckedPercentage: pct(notChecked, checked),\n distribution,\n primaryCount: a.primaryCount ?? b.primaryCount,\n secondaryCount: a.secondaryCount ?? b.secondaryCount,\n }\n}\n\n// Normalize a raw fieldStats response (apply in transformResponse).\nexport const normalizeFieldStats = (stats: FieldStats[]): FieldStats[] =>\n stats.map((s) => ({\n ...s,\n columnName: canonicalColumnId(s.columnName),\n distribution: normalizeDistribution(s.distribution),\n }))\n\n// Merge stats lists by canonical column id, field-wise: overlay's non-null values\n// win, base fills the gaps. A single list also dedupes its own repeated columns.\nexport const mergeFieldStats = (\n overlay: FieldStats[] = [],\n base: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of base) byId.set(canonicalColumnId(s.columnName), { ...s })\n for (const s of overlay) {\n const id = canonicalColumnId(s.columnName)\n const merged: FieldStats = { ...(byId.get(id) || { columnName: s.columnName }) }\n for (const [k, v] of Object.entries(s)) {\n if (v !== null && v !== undefined) (merged as any)[k] = v\n }\n byId.set(id, merged)\n }\n return [...byId.values()]\n}\n\n// Total row count for an entity set = max(filled + not-filled) across its\n// stat columns. Feeds the main folders/tasks count cell.\nexport const totalRowsFromStats = (stats: FieldStats[]): number =>\n stats.reduce(\n (max, s) => Math.max(max, (s.valueFilledCount ?? 0) + (s.valueNotFilledCount ?? 0)),\n 0,\n )\n\n// Combine primary-entity stats (tasks/versions) with group-entity stats\n// (folders/products) for the \"include groups & folders\" row scope.\nexport const combineFieldStats = (\n primary: FieldStats[],\n group: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of primary) byId.set(canonicalColumnId(s.columnName), s)\n const out = new Map(byId)\n for (const g of group) {\n const id = canonicalColumnId(g.columnName)\n const p = byId.get(id)\n out.set(id, p ? combineTwo(p, g) : g)\n }\n return [...out.values()]\n}\n\nexport const transformStatsError = (error: any, entityType: string): string => {\n const message = error?.message ?? 'Unknown stats error'\n console.error(`Error fetching ${entityType} stats:`, error)\n return message\n}\n"],"names":["snakeToCamel","s","_","c","COLUMN_ALIASES","canonicalColumnId","name","toDistributionValues","v","t","parsed","normalizeDistribution","raw","value","byValue","d","vals","prev","count","sumN","a","b","lowest","highest","pct","part","rest","combineTwo","filled","notFilled","checked","notChecked","avg","wa","wb","distribution","normalizeFieldStats","stats","mergeFieldStats","overlay","base","byId","id","merged","k","totalRowsFromStats","max","combineFieldStats","primary","group","out","g","p","transformStatsError","error","entityType","message"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"metricTargets.cjs.js","sources":["../../../../../../src/api/queries/columnStats/metricTargets.ts"],"sourcesContent":["import type { VisibilityState } from '@tanstack/react-table'\nimport { StatsOperation } from '@shared/api/generated'\nimport { checkColumnVisibility } from '@shared/containers/ProjectTreeTable/utils/checkColumnVisibility'\nimport type { SummaryCalc, RowScope } from '@shared/containers/ProjectTreeTable/types/summaryTypes'\n\nexport type MetricTarget = {\n field: string // column or dot-path for JSONB, e.g. 'status' / 'attrib.fps'\n aggregations: StatsOperation[]\n}\n\nexport type StatsEntity = 'folder' | 'task' | 'product' | 'version'\n\n// matches both MetricTarget[] and the codegen'd single-or-array variables type\ntype TargetsArg = { targets?: { field: string }[] | { field: string } | null }\nconst targetFields = (arg?: TargetsArg): { field: string }[] => {\n const t = arg?.targets\n return Array.isArray(t) ? t : t ? [t] : []\n}\n\nexport const isSummaryActive = (\n columnId: string,\n columnSummaries?: Record<string, SummaryCalc>,\n columnSummaryScopes?: Record<string, RowScope>,\n): boolean => {\n const calc = columnSummaries?.[columnId]\n const scope = columnSummaryScopes?.[columnId]\n if (calc === 'none' || scope === 'none') return false\n return calc != null || scope != null\n}\n\n// True when at least one *visible* column has an active summary — lets callers\n// skip the whole column-stats query when the user has every summary switched off.\n// Visibility matters: a hidden column can still carry a stale summary value, but\n// buildMetricTargets skips it, so it must not keep the query alive either.\nexport const anySummaryActive = (\n columnSummaries?: Record<string, SummaryCalc>,\n columnSummaryScopes?: Record<string, RowScope>,\n columnVisibility?: VisibilityState,\n defaultColumnVisibility?: VisibilityState,\n): boolean => {\n const ids = new Set([\n ...Object.keys(columnSummaries ?? {}),\n ...Object.keys(columnSummaryScopes ?? {}),\n ])\n for (const id of ids) {\n if (columnVisibility && !checkColumnVisibility(columnVisibility, id, defaultColumnVisibility)) {\n continue\n }\n if (isSummaryActive(id, columnSummaries, columnSummaryScopes)) return true\n }\n return false\n}\n\n// The main count (name column) is on by default, so the footer always has at\n// least that to show. Skip the stats fetch only when the user has explicitly\n// turned the name count off too AND no other column has an active summary —\n// otherwise the name cell has no data and can't be re-enabled.\nexport const shouldSkipColumnStats = (\n columnSummaries?: Record<string, SummaryCalc>,\n columnSummaryScopes?: Record<string, RowScope>,\n columnVisibility?: VisibilityState,\n defaultColumnVisibility?: VisibilityState,\n): boolean =>\n columnSummaryScopes?.['name'] === 'none' &&\n !anySummaryActive(columnSummaries, columnSummaryScopes, columnVisibility, defaultColumnVisibility)\n\n// refetch only when a target was added — hiding a column needs no query\nexport const hasNewTargetFields = (current?: TargetsArg, previous?: TargetsArg): boolean => {\n if (!current) return false\n if (!previous) return true\n const prevFields = new Set(targetFields(previous).map((t) => t.field))\n return targetFields(current).some((t) => !prevFields.has(t.field))\n}\n\nconst COUNTS: StatsOperation[] = [StatsOperation.Filled, StatsOperation.NotFilled]\n// FILLED rides along so combined-scope averages can be weighted exactly\nconst NUMERIC: StatsOperation[] = [\n StatsOperation.Min,\n StatsOperation.Max,\n StatsOperation.Avg,\n StatsOperation.Sum,\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n]\n// enum columns: counts power the fallback display, distribution the colored bar\nconst ENUM: StatsOperation[] = [\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n StatsOperation.Distribution,\n]\n\n// The table's unified subType column per entity (result columnName maps back\n// to subType via COLUMN_ALIASES in columnStats).\nconst SUB_TYPE_FIELD: Record<StatsEntity, string | null> = {\n folder: 'folder_type',\n task: 'task_type',\n product: 'product_type',\n version: null,\n}\n\n// Structural subset of ProjectTableAttribute — two near-identical versions of\n// that type exist (types/index vs hooks/useAttributesList, data.type optional\n// in the latter); only these fields are needed here so accept both.\ntype AttribFieldLike = {\n name: string\n scope?: string[] | null\n data?: { type?: string; enum?: unknown[] }\n}\n\ntype BuildMetricTargetsArgs = {\n entity: StatsEntity\n attribs: AttribFieldLike[]\n columnVisibility: VisibilityState\n // resolved the same way the table resolves it (opt-in): a column absent from\n // both maps is hidden, so it must NOT be aggregated\n defaultColumnVisibility?: VisibilityState\n columnSummaries?: Record<string, SummaryCalc>\n columnSummaryScopes?: Record<string, RowScope>\n extraFields?: string[] // visible, summary-active page columns, e.g. 'product_base_type'\n}\n\n// Targets for the footer over the columns the user can actually see.\n// Skipped on purpose (backend SQL can't aggregate them safely yet):\n// datetime (numeric cast fails), boolean attribs (text-vs-bool compare on\n// JSONB), and list-type attribs.\nexport const buildMetricTargets = ({\n entity,\n attribs,\n columnVisibility,\n defaultColumnVisibility,\n columnSummaries,\n columnSummaryScopes,\n extraFields = [],\n}: BuildMetricTargetsArgs): MetricTarget[] => {\n const isVisible = (columnId: string) =>\n checkColumnVisibility(columnVisibility, columnId, defaultColumnVisibility)\n const isActive = (columnId: string) =>\n isVisible(columnId) && isSummaryActive(columnId, columnSummaries, columnSummaryScopes)\n\n const targets: MetricTarget[] = []\n if (entity === 'version') {\n // versions have no `name` column (display name derives from the version\n // number) — status is non-null and doubles as the row-count anchor, so it\n targets.push({ field: 'status', aggregations: isActive('status') ? ENUM : COUNTS })\n } else {\n // name counts always — they feed the main folders/tasks count cell\n targets.push({ field: 'name', aggregations: COUNTS })\n if (isActive('status')) targets.push({ field: 'status', aggregations: ENUM })\n }\n if (isActive('tags')) targets.push({ field: 'tags', aggregations: ENUM })\n if (entity === 'task' && isActive('assignees')) {\n targets.push({ field: 'assignees', aggregations: ENUM })\n }\n\n const subTypeField = SUB_TYPE_FIELD[entity]\n if (subTypeField && isActive('subType')) {\n targets.push({ field: subTypeField, aggregations: ENUM })\n }\n\n for (const field of extraFields) {\n targets.push({ field, aggregations: ENUM })\n }\n\n for (const attrib of attribs) {\n if (attrib.scope && !attrib.scope.includes(entity)) continue\n if (!isActive(`attrib_${attrib.name}`)) continue\n\n let field = `attrib.${attrib.name}`\n if (['folder', 'task'].includes(entity)) {\n field = `inherited_attributes.${attrib.name}`\n }\n const type = attrib.data?.type\n if (type === 'integer' || type === 'float') {\n targets.push({ field, aggregations: NUMERIC })\n } else if (type === 'string') {\n targets.push({ field, aggregations: attrib.data?.enum?.length ? ENUM : COUNTS })\n }\n }\n\n return targets\n}\n"],"names":["targetFields","arg","t","isSummaryActive","columnId","columnSummaries","columnSummaryScopes","calc","scope","anySummaryActive","columnVisibility","defaultColumnVisibility","ids","id","checkColumnVisibility","shouldSkipColumnStats","hasNewTargetFields","current","previous","prevFields","COUNTS","StatsOperation","NUMERIC","ENUM","SUB_TYPE_FIELD","buildMetricTargets","entity","attribs","extraFields","isVisible","isActive","targets","subTypeField","field","attrib","type"],"mappings":"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"}
1
+ {"version":3,"file":"metricTargets.cjs.js","sources":["../../../../../../src/api/queries/columnStats/metricTargets.ts"],"sourcesContent":["import type { VisibilityState } from '@tanstack/react-table'\nimport { StatsOperation } from '@shared/api/generated'\nimport { checkColumnVisibility } from '@shared/containers/ProjectTreeTable/utils/checkColumnVisibility'\nimport type { SummaryCalc, RowScope } from '@shared/containers/ProjectTreeTable/types/summaryTypes'\n\nexport type MetricTarget = {\n field: string // column or dot-path for JSONB, e.g. 'status' / 'attrib.fps'\n aggregations: StatsOperation[]\n}\n\nexport type StatsEntity = 'folder' | 'task' | 'product' | 'version'\n\n// matches both MetricTarget[] and the codegen'd single-or-array variables type\ntype TargetsArg = { targets?: { field: string }[] | { field: string } | null }\nconst targetFields = (arg?: TargetsArg): { field: string }[] => {\n const t = arg?.targets\n return Array.isArray(t) ? t : t ? [t] : []\n}\n\nexport const isSummaryActive = (\n columnId: string,\n columnSummaries?: Record<string, SummaryCalc>,\n columnSummaryScopes?: Record<string, RowScope>,\n): boolean => {\n const calc = columnSummaries?.[columnId]\n const scope = columnSummaryScopes?.[columnId]\n if (calc === 'none' || scope === 'none') return false\n return calc != null || scope != null\n}\n\n// True when at least one *visible* column has an active summary — lets callers\n// skip the whole column-stats query when the user has every summary switched off.\n// Visibility matters: a hidden column can still carry a stale summary value, but\n// buildMetricTargets skips it, so it must not keep the query alive either.\nexport const anySummaryActive = (\n columnSummaries?: Record<string, SummaryCalc>,\n columnSummaryScopes?: Record<string, RowScope>,\n columnVisibility?: VisibilityState,\n defaultColumnVisibility?: VisibilityState,\n): boolean => {\n const ids = new Set([\n ...Object.keys(columnSummaries ?? {}),\n ...Object.keys(columnSummaryScopes ?? {}),\n ])\n for (const id of ids) {\n if (columnVisibility && !checkColumnVisibility(columnVisibility, id, defaultColumnVisibility)) {\n continue\n }\n if (isSummaryActive(id, columnSummaries, columnSummaryScopes)) return true\n }\n return false\n}\n\n// The main count (name column) is on by default, so the footer always has at\n// least that to show. Skip the stats fetch only when the user has explicitly\n// turned the name count off too AND no other column has an active summary —\n// otherwise the name cell has no data and can't be re-enabled.\nexport const shouldSkipColumnStats = (\n columnSummaries?: Record<string, SummaryCalc>,\n columnSummaryScopes?: Record<string, RowScope>,\n columnVisibility?: VisibilityState,\n defaultColumnVisibility?: VisibilityState,\n): boolean =>\n columnSummaryScopes?.['name'] === 'none' &&\n !anySummaryActive(columnSummaries, columnSummaryScopes, columnVisibility, defaultColumnVisibility)\n\n// refetch only when a target was added — hiding a column needs no query\nexport const hasNewTargetFields = (current?: TargetsArg, previous?: TargetsArg): boolean => {\n if (!current) return false\n if (!previous) return true\n const prevFields = new Set(targetFields(previous).map((t) => t.field))\n return targetFields(current).some((t) => !prevFields.has(t.field))\n}\n\nconst COUNTS: StatsOperation[] = [StatsOperation.Filled, StatsOperation.NotFilled]\n// FILLED rides along so combined-scope averages can be weighted exactly\nconst NUMERIC: StatsOperation[] = [\n StatsOperation.Min,\n StatsOperation.Max,\n StatsOperation.Avg,\n StatsOperation.Sum,\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n]\n// enum columns: counts power the fallback display, distribution the colored bar\nconst ENUM: StatsOperation[] = [\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n StatsOperation.Distribution,\n]\n\n// The table's unified subType column per entity (result columnName maps back\n// to subType via COLUMN_ALIASES in columnStats).\nconst SUB_TYPE_FIELD: Record<StatsEntity, string | null> = {\n folder: 'folder_type',\n task: 'task_type',\n product: 'product_type',\n version: null,\n}\n\n// Structural subset of ProjectTableAttribute — two near-identical versions of\n// that type exist (types/index vs hooks/useAttributesList, data.type optional\n// in the latter); only these fields are needed here so accept both.\ntype AttribFieldLike = {\n name: string\n scope?: string[] | null\n data?: { type?: string; enum?: unknown[] }\n}\n\ntype BuildMetricTargetsArgs = {\n entity: StatsEntity\n attribs: AttribFieldLike[]\n columnVisibility: VisibilityState\n // resolved the same way the table resolves it (opt-in): a column absent from\n // both maps is hidden, so it must NOT be aggregated\n defaultColumnVisibility?: VisibilityState\n columnSummaries?: Record<string, SummaryCalc>\n columnSummaryScopes?: Record<string, RowScope>\n extraFields?: string[] // visible, summary-active page columns, e.g. 'product_base_type'\n}\n\n// Targets for the footer over the columns the user can actually see.\n// Skipped on purpose (backend SQL can't aggregate them safely yet):\n// datetime (numeric cast fails), boolean attribs (text-vs-bool compare on\n// JSONB), and list-type attribs.\nexport const buildMetricTargets = ({\n entity,\n attribs,\n columnVisibility,\n defaultColumnVisibility,\n columnSummaries,\n columnSummaryScopes,\n extraFields = [],\n}: BuildMetricTargetsArgs): MetricTarget[] => {\n const isVisible = (columnId: string) =>\n checkColumnVisibility(columnVisibility, columnId, defaultColumnVisibility)\n const isActive = (columnId: string) =>\n isVisible(columnId) && isSummaryActive(columnId, columnSummaries, columnSummaryScopes)\n\n const targets: MetricTarget[] = []\n if (entity === 'version') {\n // versions have no `name` column (display name derives from the version\n // number) — status is non-null and doubles as the row-count anchor, so it\n targets.push({ field: 'status', aggregations: isActive('status') ? ENUM : COUNTS })\n } else {\n // name counts always — they feed the main folders/tasks count cell\n targets.push({ field: 'name', aggregations: COUNTS })\n if (isActive('status')) targets.push({ field: 'status', aggregations: ENUM })\n }\n if (isActive('tags')) targets.push({ field: 'tags', aggregations: ENUM })\n if (entity === 'task' && isActive('assignees')) {\n targets.push({ field: 'assignees', aggregations: ENUM })\n }\n\n const subTypeField = SUB_TYPE_FIELD[entity]\n if (subTypeField && isActive('subType')) {\n targets.push({ field: subTypeField, aggregations: ENUM })\n }\n\n for (const field of extraFields) {\n targets.push({ field, aggregations: ENUM })\n }\n\n for (const attrib of attribs) {\n if (attrib.scope && !attrib.scope.includes(entity)) continue\n if (!isActive(`attrib_${attrib.name}`)) continue\n\n let field = `attrib.${attrib.name}`\n if (['folder', 'task'].includes(entity)) {\n field = `inherited_attributes.${attrib.name}`\n }\n const type = attrib.data?.type\n if (type === 'integer' || type === 'float') {\n targets.push({ field, aggregations: NUMERIC })\n } else if (type === 'string') {\n targets.push({ field, aggregations: attrib.data?.enum?.length ? ENUM : COUNTS })\n }\n }\n\n return targets\n}\n"],"names":["targetFields","arg","t","isSummaryActive","columnId","columnSummaries","columnSummaryScopes","calc","scope","anySummaryActive","columnVisibility","defaultColumnVisibility","ids","id","checkColumnVisibility","shouldSkipColumnStats","hasNewTargetFields","current","previous","prevFields","COUNTS","StatsOperation","NUMERIC","ENUM","SUB_TYPE_FIELD","buildMetricTargets","entity","attribs","extraFields","isVisible","isActive","targets","subTypeField","field","attrib","type"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"metricTargets.es.js","sources":["../../../../../../src/api/queries/columnStats/metricTargets.ts"],"sourcesContent":["import type { VisibilityState } from '@tanstack/react-table'\nimport { StatsOperation } from '@shared/api/generated'\nimport { checkColumnVisibility } from '@shared/containers/ProjectTreeTable/utils/checkColumnVisibility'\nimport type { SummaryCalc, RowScope } from '@shared/containers/ProjectTreeTable/types/summaryTypes'\n\nexport type MetricTarget = {\n field: string // column or dot-path for JSONB, e.g. 'status' / 'attrib.fps'\n aggregations: StatsOperation[]\n}\n\nexport type StatsEntity = 'folder' | 'task' | 'product' | 'version'\n\n// matches both MetricTarget[] and the codegen'd single-or-array variables type\ntype TargetsArg = { targets?: { field: string }[] | { field: string } | null }\nconst targetFields = (arg?: TargetsArg): { field: string }[] => {\n const t = arg?.targets\n return Array.isArray(t) ? t : t ? [t] : []\n}\n\nexport const isSummaryActive = (\n columnId: string,\n columnSummaries?: Record<string, SummaryCalc>,\n columnSummaryScopes?: Record<string, RowScope>,\n): boolean => {\n const calc = columnSummaries?.[columnId]\n const scope = columnSummaryScopes?.[columnId]\n if (calc === 'none' || scope === 'none') return false\n return calc != null || scope != null\n}\n\n// True when at least one *visible* column has an active summary — lets callers\n// skip the whole column-stats query when the user has every summary switched off.\n// Visibility matters: a hidden column can still carry a stale summary value, but\n// buildMetricTargets skips it, so it must not keep the query alive either.\nexport const anySummaryActive = (\n columnSummaries?: Record<string, SummaryCalc>,\n columnSummaryScopes?: Record<string, RowScope>,\n columnVisibility?: VisibilityState,\n defaultColumnVisibility?: VisibilityState,\n): boolean => {\n const ids = new Set([\n ...Object.keys(columnSummaries ?? {}),\n ...Object.keys(columnSummaryScopes ?? {}),\n ])\n for (const id of ids) {\n if (columnVisibility && !checkColumnVisibility(columnVisibility, id, defaultColumnVisibility)) {\n continue\n }\n if (isSummaryActive(id, columnSummaries, columnSummaryScopes)) return true\n }\n return false\n}\n\n// The main count (name column) is on by default, so the footer always has at\n// least that to show. Skip the stats fetch only when the user has explicitly\n// turned the name count off too AND no other column has an active summary —\n// otherwise the name cell has no data and can't be re-enabled.\nexport const shouldSkipColumnStats = (\n columnSummaries?: Record<string, SummaryCalc>,\n columnSummaryScopes?: Record<string, RowScope>,\n columnVisibility?: VisibilityState,\n defaultColumnVisibility?: VisibilityState,\n): boolean =>\n columnSummaryScopes?.['name'] === 'none' &&\n !anySummaryActive(columnSummaries, columnSummaryScopes, columnVisibility, defaultColumnVisibility)\n\n// refetch only when a target was added — hiding a column needs no query\nexport const hasNewTargetFields = (current?: TargetsArg, previous?: TargetsArg): boolean => {\n if (!current) return false\n if (!previous) return true\n const prevFields = new Set(targetFields(previous).map((t) => t.field))\n return targetFields(current).some((t) => !prevFields.has(t.field))\n}\n\nconst COUNTS: StatsOperation[] = [StatsOperation.Filled, StatsOperation.NotFilled]\n// FILLED rides along so combined-scope averages can be weighted exactly\nconst NUMERIC: StatsOperation[] = [\n StatsOperation.Min,\n StatsOperation.Max,\n StatsOperation.Avg,\n StatsOperation.Sum,\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n]\n// enum columns: counts power the fallback display, distribution the colored bar\nconst ENUM: StatsOperation[] = [\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n StatsOperation.Distribution,\n]\n\n// The table's unified subType column per entity (result columnName maps back\n// to subType via COLUMN_ALIASES in columnStats).\nconst SUB_TYPE_FIELD: Record<StatsEntity, string | null> = {\n folder: 'folder_type',\n task: 'task_type',\n product: 'product_type',\n version: null,\n}\n\n// Structural subset of ProjectTableAttribute — two near-identical versions of\n// that type exist (types/index vs hooks/useAttributesList, data.type optional\n// in the latter); only these fields are needed here so accept both.\ntype AttribFieldLike = {\n name: string\n scope?: string[] | null\n data?: { type?: string; enum?: unknown[] }\n}\n\ntype BuildMetricTargetsArgs = {\n entity: StatsEntity\n attribs: AttribFieldLike[]\n columnVisibility: VisibilityState\n // resolved the same way the table resolves it (opt-in): a column absent from\n // both maps is hidden, so it must NOT be aggregated\n defaultColumnVisibility?: VisibilityState\n columnSummaries?: Record<string, SummaryCalc>\n columnSummaryScopes?: Record<string, RowScope>\n extraFields?: string[] // visible, summary-active page columns, e.g. 'product_base_type'\n}\n\n// Targets for the footer over the columns the user can actually see.\n// Skipped on purpose (backend SQL can't aggregate them safely yet):\n// datetime (numeric cast fails), boolean attribs (text-vs-bool compare on\n// JSONB), and list-type attribs.\nexport const buildMetricTargets = ({\n entity,\n attribs,\n columnVisibility,\n defaultColumnVisibility,\n columnSummaries,\n columnSummaryScopes,\n extraFields = [],\n}: BuildMetricTargetsArgs): MetricTarget[] => {\n const isVisible = (columnId: string) =>\n checkColumnVisibility(columnVisibility, columnId, defaultColumnVisibility)\n const isActive = (columnId: string) =>\n isVisible(columnId) && isSummaryActive(columnId, columnSummaries, columnSummaryScopes)\n\n const targets: MetricTarget[] = []\n if (entity === 'version') {\n // versions have no `name` column (display name derives from the version\n // number) — status is non-null and doubles as the row-count anchor, so it\n targets.push({ field: 'status', aggregations: isActive('status') ? ENUM : COUNTS })\n } else {\n // name counts always — they feed the main folders/tasks count cell\n targets.push({ field: 'name', aggregations: COUNTS })\n if (isActive('status')) targets.push({ field: 'status', aggregations: ENUM })\n }\n if (isActive('tags')) targets.push({ field: 'tags', aggregations: ENUM })\n if (entity === 'task' && isActive('assignees')) {\n targets.push({ field: 'assignees', aggregations: ENUM })\n }\n\n const subTypeField = SUB_TYPE_FIELD[entity]\n if (subTypeField && isActive('subType')) {\n targets.push({ field: subTypeField, aggregations: ENUM })\n }\n\n for (const field of extraFields) {\n targets.push({ field, aggregations: ENUM })\n }\n\n for (const attrib of attribs) {\n if (attrib.scope && !attrib.scope.includes(entity)) continue\n if (!isActive(`attrib_${attrib.name}`)) continue\n\n let field = `attrib.${attrib.name}`\n if (['folder', 'task'].includes(entity)) {\n field = `inherited_attributes.${attrib.name}`\n }\n const type = attrib.data?.type\n if (type === 'integer' || type === 'float') {\n targets.push({ field, aggregations: NUMERIC })\n } else if (type === 'string') {\n targets.push({ field, aggregations: attrib.data?.enum?.length ? ENUM : COUNTS })\n }\n }\n\n return targets\n}\n"],"names":["targetFields","arg","t","isSummaryActive","columnId","columnSummaries","columnSummaryScopes","calc","scope","anySummaryActive","columnVisibility","defaultColumnVisibility","ids","id","checkColumnVisibility","shouldSkipColumnStats","hasNewTargetFields","current","previous","prevFields","COUNTS","StatsOperation","NUMERIC","ENUM","SUB_TYPE_FIELD","buildMetricTargets","entity","attribs","extraFields","isVisible","isActive","targets","subTypeField","field","attrib","type"],"mappings":"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"}
1
+ {"version":3,"file":"metricTargets.es.js","sources":["../../../../../../src/api/queries/columnStats/metricTargets.ts"],"sourcesContent":["import type { VisibilityState } from '@tanstack/react-table'\nimport { StatsOperation } from '@shared/api/generated'\nimport { checkColumnVisibility } from '@shared/containers/ProjectTreeTable/utils/checkColumnVisibility'\nimport type { SummaryCalc, RowScope } from '@shared/containers/ProjectTreeTable/types/summaryTypes'\n\nexport type MetricTarget = {\n field: string // column or dot-path for JSONB, e.g. 'status' / 'attrib.fps'\n aggregations: StatsOperation[]\n}\n\nexport type StatsEntity = 'folder' | 'task' | 'product' | 'version'\n\n// matches both MetricTarget[] and the codegen'd single-or-array variables type\ntype TargetsArg = { targets?: { field: string }[] | { field: string } | null }\nconst targetFields = (arg?: TargetsArg): { field: string }[] => {\n const t = arg?.targets\n return Array.isArray(t) ? t : t ? [t] : []\n}\n\nexport const isSummaryActive = (\n columnId: string,\n columnSummaries?: Record<string, SummaryCalc>,\n columnSummaryScopes?: Record<string, RowScope>,\n): boolean => {\n const calc = columnSummaries?.[columnId]\n const scope = columnSummaryScopes?.[columnId]\n if (calc === 'none' || scope === 'none') return false\n return calc != null || scope != null\n}\n\n// True when at least one *visible* column has an active summary — lets callers\n// skip the whole column-stats query when the user has every summary switched off.\n// Visibility matters: a hidden column can still carry a stale summary value, but\n// buildMetricTargets skips it, so it must not keep the query alive either.\nexport const anySummaryActive = (\n columnSummaries?: Record<string, SummaryCalc>,\n columnSummaryScopes?: Record<string, RowScope>,\n columnVisibility?: VisibilityState,\n defaultColumnVisibility?: VisibilityState,\n): boolean => {\n const ids = new Set([\n ...Object.keys(columnSummaries ?? {}),\n ...Object.keys(columnSummaryScopes ?? {}),\n ])\n for (const id of ids) {\n if (columnVisibility && !checkColumnVisibility(columnVisibility, id, defaultColumnVisibility)) {\n continue\n }\n if (isSummaryActive(id, columnSummaries, columnSummaryScopes)) return true\n }\n return false\n}\n\n// The main count (name column) is on by default, so the footer always has at\n// least that to show. Skip the stats fetch only when the user has explicitly\n// turned the name count off too AND no other column has an active summary —\n// otherwise the name cell has no data and can't be re-enabled.\nexport const shouldSkipColumnStats = (\n columnSummaries?: Record<string, SummaryCalc>,\n columnSummaryScopes?: Record<string, RowScope>,\n columnVisibility?: VisibilityState,\n defaultColumnVisibility?: VisibilityState,\n): boolean =>\n columnSummaryScopes?.['name'] === 'none' &&\n !anySummaryActive(columnSummaries, columnSummaryScopes, columnVisibility, defaultColumnVisibility)\n\n// refetch only when a target was added — hiding a column needs no query\nexport const hasNewTargetFields = (current?: TargetsArg, previous?: TargetsArg): boolean => {\n if (!current) return false\n if (!previous) return true\n const prevFields = new Set(targetFields(previous).map((t) => t.field))\n return targetFields(current).some((t) => !prevFields.has(t.field))\n}\n\nconst COUNTS: StatsOperation[] = [StatsOperation.Filled, StatsOperation.NotFilled]\n// FILLED rides along so combined-scope averages can be weighted exactly\nconst NUMERIC: StatsOperation[] = [\n StatsOperation.Min,\n StatsOperation.Max,\n StatsOperation.Avg,\n StatsOperation.Sum,\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n]\n// enum columns: counts power the fallback display, distribution the colored bar\nconst ENUM: StatsOperation[] = [\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n StatsOperation.Distribution,\n]\n\n// The table's unified subType column per entity (result columnName maps back\n// to subType via COLUMN_ALIASES in columnStats).\nconst SUB_TYPE_FIELD: Record<StatsEntity, string | null> = {\n folder: 'folder_type',\n task: 'task_type',\n product: 'product_type',\n version: null,\n}\n\n// Structural subset of ProjectTableAttribute — two near-identical versions of\n// that type exist (types/index vs hooks/useAttributesList, data.type optional\n// in the latter); only these fields are needed here so accept both.\ntype AttribFieldLike = {\n name: string\n scope?: string[] | null\n data?: { type?: string; enum?: unknown[] }\n}\n\ntype BuildMetricTargetsArgs = {\n entity: StatsEntity\n attribs: AttribFieldLike[]\n columnVisibility: VisibilityState\n // resolved the same way the table resolves it (opt-in): a column absent from\n // both maps is hidden, so it must NOT be aggregated\n defaultColumnVisibility?: VisibilityState\n columnSummaries?: Record<string, SummaryCalc>\n columnSummaryScopes?: Record<string, RowScope>\n extraFields?: string[] // visible, summary-active page columns, e.g. 'product_base_type'\n}\n\n// Targets for the footer over the columns the user can actually see.\n// Skipped on purpose (backend SQL can't aggregate them safely yet):\n// datetime (numeric cast fails), boolean attribs (text-vs-bool compare on\n// JSONB), and list-type attribs.\nexport const buildMetricTargets = ({\n entity,\n attribs,\n columnVisibility,\n defaultColumnVisibility,\n columnSummaries,\n columnSummaryScopes,\n extraFields = [],\n}: BuildMetricTargetsArgs): MetricTarget[] => {\n const isVisible = (columnId: string) =>\n checkColumnVisibility(columnVisibility, columnId, defaultColumnVisibility)\n const isActive = (columnId: string) =>\n isVisible(columnId) && isSummaryActive(columnId, columnSummaries, columnSummaryScopes)\n\n const targets: MetricTarget[] = []\n if (entity === 'version') {\n // versions have no `name` column (display name derives from the version\n // number) — status is non-null and doubles as the row-count anchor, so it\n targets.push({ field: 'status', aggregations: isActive('status') ? ENUM : COUNTS })\n } else {\n // name counts always — they feed the main folders/tasks count cell\n targets.push({ field: 'name', aggregations: COUNTS })\n if (isActive('status')) targets.push({ field: 'status', aggregations: ENUM })\n }\n if (isActive('tags')) targets.push({ field: 'tags', aggregations: ENUM })\n if (entity === 'task' && isActive('assignees')) {\n targets.push({ field: 'assignees', aggregations: ENUM })\n }\n\n const subTypeField = SUB_TYPE_FIELD[entity]\n if (subTypeField && isActive('subType')) {\n targets.push({ field: subTypeField, aggregations: ENUM })\n }\n\n for (const field of extraFields) {\n targets.push({ field, aggregations: ENUM })\n }\n\n for (const attrib of attribs) {\n if (attrib.scope && !attrib.scope.includes(entity)) continue\n if (!isActive(`attrib_${attrib.name}`)) continue\n\n let field = `attrib.${attrib.name}`\n if (['folder', 'task'].includes(entity)) {\n field = `inherited_attributes.${attrib.name}`\n }\n const type = attrib.data?.type\n if (type === 'integer' || type === 'float') {\n targets.push({ field, aggregations: NUMERIC })\n } else if (type === 'string') {\n targets.push({ field, aggregations: attrib.data?.enum?.length ? ENUM : COUNTS })\n }\n }\n\n return targets\n}\n"],"names":["targetFields","arg","t","isSummaryActive","columnId","columnSummaries","columnSummaryScopes","calc","scope","anySummaryActive","columnVisibility","defaultColumnVisibility","ids","id","checkColumnVisibility","shouldSkipColumnStats","hasNewTargetFields","current","previous","prevFields","COUNTS","StatsOperation","NUMERIC","ENUM","SUB_TYPE_FIELD","buildMetricTargets","entity","attribs","extraFields","isVisible","isActive","targets","subTypeField","field","attrib","type"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getEntity.cjs.js","sources":["../../../../../../src/api/queries/entities/getEntity.ts"],"sourcesContent":["// @ts-nocheck\nimport { GetSearchedTasksQuery, gqlApi } from '@shared/api/generated'\nimport {\n PRODUCT_TILE_FRAGMENT,\n FOLDER_TILE_FRAGMENT,\n VERSION_TILE_FRAGMENT,\n TASK_TILE_FRAGMENT,\n} from './entityQueries'\nimport { FetchBaseQueryError } from '@reduxjs/toolkit/query'\n\nconst buildEventTileQuery = (type) => {\n return `\n query EventTile($projectName: String!, $id: String!) {\n project(name: $projectName) {\n ${type}(id: $id) {\n id\n name\n status\n updatedAt\n }\n }\n }\n `\n}\n\nconst buildEntityTilesQuery = (entities) => {\n // const entities = {[type]: [id, id, id]}\n\n const typesQuery = Object.entries(entities).reduce(\n (acc, [type, ids]) =>\n acc +\n ` ${type}s(ids: ${JSON.stringify(ids)}) {\n edges {\n node {\n ...${type}TileFragment\n }\n }\n }\n `,\n '',\n )\n\n let query = `\n query EntityTiles($projectName: String!) {\n project(name: $projectName) {\n ${typesQuery}\n }\n }\n `\n\n const fragments = {\n folder: FOLDER_TILE_FRAGMENT,\n product: PRODUCT_TILE_FRAGMENT,\n version: VERSION_TILE_FRAGMENT,\n task: TASK_TILE_FRAGMENT,\n }\n\n // Add fragments\n for (const type in entities) {\n query += fragments[type]\n }\n\n return query\n}\n\nfunction getNonObjectValue(value) {\n if (typeof value !== 'object' || value === null) {\n return value\n }\n\n // If value is an object, get the first non-object value from its properties\n let keys = Object.keys(value)\n if (keys.length > 0) {\n return getNonObjectValue(value[keys[0]])\n }\n\n // If no non-object value found, return undefined\n return undefined\n}\n\nexport const formatEntityTiles = (project, entities) => {\n // data = {project: {folders: {edges: [{node: {id}}]}}}\n\n // if entities is an array, convert to object\n if (Array.isArray(entities)) {\n const obj = {}\n for (const entity of entities) {\n obj[entity] = []\n }\n entities = obj\n }\n\n const allEntities = []\n for (const type in entities) {\n if (!project) continue\n let entities = project[type + 's']\n // If no entities of this type\n if (!entities) continue\n entities = entities.edges.map(({ node }) => ({ ...node, type }))\n allEntities.push(...entities)\n }\n\n // loop through each entity and child and if it is an array or object, use first child value as value\n for (const entity of allEntities) {\n for (const attrib in entity) {\n if (!entity[attrib]) continue\n if (Array.isArray(entity[attrib])) {\n entity[attrib] = entity[attrib][0]\n } else if (typeof entity[attrib] === 'object') {\n entity[attrib] = getNonObjectValue(Object.values(entity[attrib])[0])\n }\n // if entity type is version, add 0 prefix to version number 1 -> v001, 12 -> v012\n if (entity.type === 'version' && attrib === 'version') {\n entity[attrib] = 'v' + entity[attrib].toString().padStart(3, '0')\n }\n }\n entity.thumbnailEntityType = entity.type\n if (entity.type === 'product') {\n entity.thumbnailEntityId = entity.latestVersion.thumbnailEntityId\n entity.thumbnailId = entity.latestVersion.thumbnailId\n entity.thumbnailEntityType = 'version'\n }\n }\n\n return allEntities\n}\n\nconst injectedApi = gqlApi.injectEndpoints({\n endpoints: (build) => ({\n getEventTile: build.query({\n query: ({ projectName, id, type }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: buildEventTileQuery(type),\n variables: { projectName, id },\n },\n }),\n transformResponse: (response, meta, { type }) => response.data?.project[type],\n }),\n getEntityTiles: build.query({\n query: ({ projectName, entities }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: buildEntityTilesQuery(entities),\n variables: { projectName },\n },\n }),\n transformResponse: (response, meta, { entities }) =>\n formatEntityTiles(response.data?.project, entities),\n }),\n getEntity: build.query({\n query: ({ projectName, entityType, entityId }) => ({\n url: `/api/projects/${projectName}/${entityType}s/${entityId}`,\n }),\n providesTags: (res, error, { entityId }) => [{ type: 'entity', id: entityId }],\n }),\n }),\n overrideExisting: true,\n})\n\nconst getEntityApi = injectedApi.enhanceEndpoints({\n endpoints: {\n GetProductVersions: {},\n },\n})\n\nexport const {\n useGetEventTileQuery,\n useGetEntityTilesQuery,\n useGetEntityQuery,\n useLazyGetEntityQuery,\n useGetProductVersionsQuery,\n useGetSearchedEntitiesInfiniteQuery,\n} = getEntityApi\nexport default getEntityApi\n"],"names":["buildEventTileQuery","type","buildEntityTilesQuery","entities","query","acc","ids","fragments","FOLDER_TILE_FRAGMENT","PRODUCT_TILE_FRAGMENT","VERSION_TILE_FRAGMENT","TASK_TILE_FRAGMENT","getNonObjectValue","value","keys","formatEntityTiles","project","obj","entity","allEntities","node","attrib","injectedApi","gqlApi","build","projectName","id","response","meta","entityType","entityId","res","error","getEntityApi","useGetEventTileQuery","useGetEntityTilesQuery","useGetEntityQuery","useLazyGetEntityQuery","useGetProductVersionsQuery","useGetSearchedEntitiesInfiniteQuery"],"mappings":"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"}
1
+ {"version":3,"file":"getEntity.cjs.js","sources":["../../../../../../src/api/queries/entities/getEntity.ts"],"sourcesContent":["// @ts-nocheck\nimport { gqlApi } from '@shared/api/generated'\nimport type { GetSearchedTasksQuery } from '@shared/api/generated'\nimport {\n PRODUCT_TILE_FRAGMENT,\n FOLDER_TILE_FRAGMENT,\n VERSION_TILE_FRAGMENT,\n TASK_TILE_FRAGMENT,\n} from './entityQueries'\nimport { FetchBaseQueryError } from '@reduxjs/toolkit/query'\n\nconst buildEventTileQuery = (type) => {\n return `\n query EventTile($projectName: String!, $id: String!) {\n project(name: $projectName) {\n ${type}(id: $id) {\n id\n name\n status\n updatedAt\n }\n }\n }\n `\n}\n\nconst buildEntityTilesQuery = (entities) => {\n // const entities = {[type]: [id, id, id]}\n\n const typesQuery = Object.entries(entities).reduce(\n (acc, [type, ids]) =>\n acc +\n ` ${type}s(ids: ${JSON.stringify(ids)}) {\n edges {\n node {\n ...${type}TileFragment\n }\n }\n }\n `,\n '',\n )\n\n let query = `\n query EntityTiles($projectName: String!) {\n project(name: $projectName) {\n ${typesQuery}\n }\n }\n `\n\n const fragments = {\n folder: FOLDER_TILE_FRAGMENT,\n product: PRODUCT_TILE_FRAGMENT,\n version: VERSION_TILE_FRAGMENT,\n task: TASK_TILE_FRAGMENT,\n }\n\n // Add fragments\n for (const type in entities) {\n query += fragments[type]\n }\n\n return query\n}\n\nfunction getNonObjectValue(value) {\n if (typeof value !== 'object' || value === null) {\n return value\n }\n\n // If value is an object, get the first non-object value from its properties\n let keys = Object.keys(value)\n if (keys.length > 0) {\n return getNonObjectValue(value[keys[0]])\n }\n\n // If no non-object value found, return undefined\n return undefined\n}\n\nexport const formatEntityTiles = (project, entities) => {\n // data = {project: {folders: {edges: [{node: {id}}]}}}\n\n // if entities is an array, convert to object\n if (Array.isArray(entities)) {\n const obj = {}\n for (const entity of entities) {\n obj[entity] = []\n }\n entities = obj\n }\n\n const allEntities = []\n for (const type in entities) {\n if (!project) continue\n let entities = project[type + 's']\n // If no entities of this type\n if (!entities) continue\n entities = entities.edges.map(({ node }) => ({ ...node, type }))\n allEntities.push(...entities)\n }\n\n // loop through each entity and child and if it is an array or object, use first child value as value\n for (const entity of allEntities) {\n for (const attrib in entity) {\n if (!entity[attrib]) continue\n if (Array.isArray(entity[attrib])) {\n entity[attrib] = entity[attrib][0]\n } else if (typeof entity[attrib] === 'object') {\n entity[attrib] = getNonObjectValue(Object.values(entity[attrib])[0])\n }\n // if entity type is version, add 0 prefix to version number 1 -> v001, 12 -> v012\n if (entity.type === 'version' && attrib === 'version') {\n entity[attrib] = 'v' + entity[attrib].toString().padStart(3, '0')\n }\n }\n entity.thumbnailEntityType = entity.type\n if (entity.type === 'product') {\n entity.thumbnailEntityId = entity.latestVersion.thumbnailEntityId\n entity.thumbnailId = entity.latestVersion.thumbnailId\n entity.thumbnailEntityType = 'version'\n }\n }\n\n return allEntities\n}\n\nconst injectedApi = gqlApi.injectEndpoints({\n endpoints: (build) => ({\n getEventTile: build.query({\n query: ({ projectName, id, type }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: buildEventTileQuery(type),\n variables: { projectName, id },\n },\n }),\n transformResponse: (response, meta, { type }) => response.data?.project[type],\n }),\n getEntityTiles: build.query({\n query: ({ projectName, entities }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: buildEntityTilesQuery(entities),\n variables: { projectName },\n },\n }),\n transformResponse: (response, meta, { entities }) =>\n formatEntityTiles(response.data?.project, entities),\n }),\n getEntity: build.query({\n query: ({ projectName, entityType, entityId }) => ({\n url: `/api/projects/${projectName}/${entityType}s/${entityId}`,\n }),\n providesTags: (res, error, { entityId }) => [{ type: 'entity', id: entityId }],\n }),\n }),\n overrideExisting: true,\n})\n\nconst getEntityApi = injectedApi.enhanceEndpoints({\n endpoints: {\n GetProductVersions: {},\n },\n})\n\nexport const {\n useGetEventTileQuery,\n useGetEntityTilesQuery,\n useGetEntityQuery,\n useLazyGetEntityQuery,\n useGetProductVersionsQuery,\n useGetSearchedEntitiesInfiniteQuery,\n} = getEntityApi\nexport default getEntityApi\n"],"names":["buildEventTileQuery","type","buildEntityTilesQuery","entities","query","acc","ids","fragments","FOLDER_TILE_FRAGMENT","PRODUCT_TILE_FRAGMENT","VERSION_TILE_FRAGMENT","TASK_TILE_FRAGMENT","getNonObjectValue","value","keys","formatEntityTiles","project","obj","entity","allEntities","node","attrib","injectedApi","gqlApi","build","projectName","id","response","meta","entityType","entityId","res","error","getEntityApi","useGetEventTileQuery","useGetEntityTilesQuery","useGetEntityQuery","useLazyGetEntityQuery","useGetProductVersionsQuery","useGetSearchedEntitiesInfiniteQuery"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getEntity.es.js","sources":["../../../../../../src/api/queries/entities/getEntity.ts"],"sourcesContent":["// @ts-nocheck\nimport { GetSearchedTasksQuery, gqlApi } from '@shared/api/generated'\nimport {\n PRODUCT_TILE_FRAGMENT,\n FOLDER_TILE_FRAGMENT,\n VERSION_TILE_FRAGMENT,\n TASK_TILE_FRAGMENT,\n} from './entityQueries'\nimport { FetchBaseQueryError } from '@reduxjs/toolkit/query'\n\nconst buildEventTileQuery = (type) => {\n return `\n query EventTile($projectName: String!, $id: String!) {\n project(name: $projectName) {\n ${type}(id: $id) {\n id\n name\n status\n updatedAt\n }\n }\n }\n `\n}\n\nconst buildEntityTilesQuery = (entities) => {\n // const entities = {[type]: [id, id, id]}\n\n const typesQuery = Object.entries(entities).reduce(\n (acc, [type, ids]) =>\n acc +\n ` ${type}s(ids: ${JSON.stringify(ids)}) {\n edges {\n node {\n ...${type}TileFragment\n }\n }\n }\n `,\n '',\n )\n\n let query = `\n query EntityTiles($projectName: String!) {\n project(name: $projectName) {\n ${typesQuery}\n }\n }\n `\n\n const fragments = {\n folder: FOLDER_TILE_FRAGMENT,\n product: PRODUCT_TILE_FRAGMENT,\n version: VERSION_TILE_FRAGMENT,\n task: TASK_TILE_FRAGMENT,\n }\n\n // Add fragments\n for (const type in entities) {\n query += fragments[type]\n }\n\n return query\n}\n\nfunction getNonObjectValue(value) {\n if (typeof value !== 'object' || value === null) {\n return value\n }\n\n // If value is an object, get the first non-object value from its properties\n let keys = Object.keys(value)\n if (keys.length > 0) {\n return getNonObjectValue(value[keys[0]])\n }\n\n // If no non-object value found, return undefined\n return undefined\n}\n\nexport const formatEntityTiles = (project, entities) => {\n // data = {project: {folders: {edges: [{node: {id}}]}}}\n\n // if entities is an array, convert to object\n if (Array.isArray(entities)) {\n const obj = {}\n for (const entity of entities) {\n obj[entity] = []\n }\n entities = obj\n }\n\n const allEntities = []\n for (const type in entities) {\n if (!project) continue\n let entities = project[type + 's']\n // If no entities of this type\n if (!entities) continue\n entities = entities.edges.map(({ node }) => ({ ...node, type }))\n allEntities.push(...entities)\n }\n\n // loop through each entity and child and if it is an array or object, use first child value as value\n for (const entity of allEntities) {\n for (const attrib in entity) {\n if (!entity[attrib]) continue\n if (Array.isArray(entity[attrib])) {\n entity[attrib] = entity[attrib][0]\n } else if (typeof entity[attrib] === 'object') {\n entity[attrib] = getNonObjectValue(Object.values(entity[attrib])[0])\n }\n // if entity type is version, add 0 prefix to version number 1 -> v001, 12 -> v012\n if (entity.type === 'version' && attrib === 'version') {\n entity[attrib] = 'v' + entity[attrib].toString().padStart(3, '0')\n }\n }\n entity.thumbnailEntityType = entity.type\n if (entity.type === 'product') {\n entity.thumbnailEntityId = entity.latestVersion.thumbnailEntityId\n entity.thumbnailId = entity.latestVersion.thumbnailId\n entity.thumbnailEntityType = 'version'\n }\n }\n\n return allEntities\n}\n\nconst injectedApi = gqlApi.injectEndpoints({\n endpoints: (build) => ({\n getEventTile: build.query({\n query: ({ projectName, id, type }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: buildEventTileQuery(type),\n variables: { projectName, id },\n },\n }),\n transformResponse: (response, meta, { type }) => response.data?.project[type],\n }),\n getEntityTiles: build.query({\n query: ({ projectName, entities }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: buildEntityTilesQuery(entities),\n variables: { projectName },\n },\n }),\n transformResponse: (response, meta, { entities }) =>\n formatEntityTiles(response.data?.project, entities),\n }),\n getEntity: build.query({\n query: ({ projectName, entityType, entityId }) => ({\n url: `/api/projects/${projectName}/${entityType}s/${entityId}`,\n }),\n providesTags: (res, error, { entityId }) => [{ type: 'entity', id: entityId }],\n }),\n }),\n overrideExisting: true,\n})\n\nconst getEntityApi = injectedApi.enhanceEndpoints({\n endpoints: {\n GetProductVersions: {},\n },\n})\n\nexport const {\n useGetEventTileQuery,\n useGetEntityTilesQuery,\n useGetEntityQuery,\n useLazyGetEntityQuery,\n useGetProductVersionsQuery,\n useGetSearchedEntitiesInfiniteQuery,\n} = getEntityApi\nexport default getEntityApi\n"],"names":["buildEventTileQuery","type","buildEntityTilesQuery","entities","query","acc","ids","fragments","FOLDER_TILE_FRAGMENT","PRODUCT_TILE_FRAGMENT","VERSION_TILE_FRAGMENT","TASK_TILE_FRAGMENT","getNonObjectValue","value","keys","formatEntityTiles","project","obj","entity","allEntities","node","attrib","injectedApi","gqlApi","build","projectName","id","response","meta","entityType","entityId","res","error","getEntityApi","useGetEventTileQuery","useGetEntityTilesQuery","useGetEntityQuery","useLazyGetEntityQuery","useGetProductVersionsQuery","useGetSearchedEntitiesInfiniteQuery"],"mappings":"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"}
1
+ {"version":3,"file":"getEntity.es.js","sources":["../../../../../../src/api/queries/entities/getEntity.ts"],"sourcesContent":["// @ts-nocheck\nimport { gqlApi } from '@shared/api/generated'\nimport type { GetSearchedTasksQuery } from '@shared/api/generated'\nimport {\n PRODUCT_TILE_FRAGMENT,\n FOLDER_TILE_FRAGMENT,\n VERSION_TILE_FRAGMENT,\n TASK_TILE_FRAGMENT,\n} from './entityQueries'\nimport { FetchBaseQueryError } from '@reduxjs/toolkit/query'\n\nconst buildEventTileQuery = (type) => {\n return `\n query EventTile($projectName: String!, $id: String!) {\n project(name: $projectName) {\n ${type}(id: $id) {\n id\n name\n status\n updatedAt\n }\n }\n }\n `\n}\n\nconst buildEntityTilesQuery = (entities) => {\n // const entities = {[type]: [id, id, id]}\n\n const typesQuery = Object.entries(entities).reduce(\n (acc, [type, ids]) =>\n acc +\n ` ${type}s(ids: ${JSON.stringify(ids)}) {\n edges {\n node {\n ...${type}TileFragment\n }\n }\n }\n `,\n '',\n )\n\n let query = `\n query EntityTiles($projectName: String!) {\n project(name: $projectName) {\n ${typesQuery}\n }\n }\n `\n\n const fragments = {\n folder: FOLDER_TILE_FRAGMENT,\n product: PRODUCT_TILE_FRAGMENT,\n version: VERSION_TILE_FRAGMENT,\n task: TASK_TILE_FRAGMENT,\n }\n\n // Add fragments\n for (const type in entities) {\n query += fragments[type]\n }\n\n return query\n}\n\nfunction getNonObjectValue(value) {\n if (typeof value !== 'object' || value === null) {\n return value\n }\n\n // If value is an object, get the first non-object value from its properties\n let keys = Object.keys(value)\n if (keys.length > 0) {\n return getNonObjectValue(value[keys[0]])\n }\n\n // If no non-object value found, return undefined\n return undefined\n}\n\nexport const formatEntityTiles = (project, entities) => {\n // data = {project: {folders: {edges: [{node: {id}}]}}}\n\n // if entities is an array, convert to object\n if (Array.isArray(entities)) {\n const obj = {}\n for (const entity of entities) {\n obj[entity] = []\n }\n entities = obj\n }\n\n const allEntities = []\n for (const type in entities) {\n if (!project) continue\n let entities = project[type + 's']\n // If no entities of this type\n if (!entities) continue\n entities = entities.edges.map(({ node }) => ({ ...node, type }))\n allEntities.push(...entities)\n }\n\n // loop through each entity and child and if it is an array or object, use first child value as value\n for (const entity of allEntities) {\n for (const attrib in entity) {\n if (!entity[attrib]) continue\n if (Array.isArray(entity[attrib])) {\n entity[attrib] = entity[attrib][0]\n } else if (typeof entity[attrib] === 'object') {\n entity[attrib] = getNonObjectValue(Object.values(entity[attrib])[0])\n }\n // if entity type is version, add 0 prefix to version number 1 -> v001, 12 -> v012\n if (entity.type === 'version' && attrib === 'version') {\n entity[attrib] = 'v' + entity[attrib].toString().padStart(3, '0')\n }\n }\n entity.thumbnailEntityType = entity.type\n if (entity.type === 'product') {\n entity.thumbnailEntityId = entity.latestVersion.thumbnailEntityId\n entity.thumbnailId = entity.latestVersion.thumbnailId\n entity.thumbnailEntityType = 'version'\n }\n }\n\n return allEntities\n}\n\nconst injectedApi = gqlApi.injectEndpoints({\n endpoints: (build) => ({\n getEventTile: build.query({\n query: ({ projectName, id, type }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: buildEventTileQuery(type),\n variables: { projectName, id },\n },\n }),\n transformResponse: (response, meta, { type }) => response.data?.project[type],\n }),\n getEntityTiles: build.query({\n query: ({ projectName, entities }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: buildEntityTilesQuery(entities),\n variables: { projectName },\n },\n }),\n transformResponse: (response, meta, { entities }) =>\n formatEntityTiles(response.data?.project, entities),\n }),\n getEntity: build.query({\n query: ({ projectName, entityType, entityId }) => ({\n url: `/api/projects/${projectName}/${entityType}s/${entityId}`,\n }),\n providesTags: (res, error, { entityId }) => [{ type: 'entity', id: entityId }],\n }),\n }),\n overrideExisting: true,\n})\n\nconst getEntityApi = injectedApi.enhanceEndpoints({\n endpoints: {\n GetProductVersions: {},\n },\n})\n\nexport const {\n useGetEventTileQuery,\n useGetEntityTilesQuery,\n useGetEntityQuery,\n useLazyGetEntityQuery,\n useGetProductVersionsQuery,\n useGetSearchedEntitiesInfiniteQuery,\n} = getEntityApi\nexport default getEntityApi\n"],"names":["buildEventTileQuery","type","buildEntityTilesQuery","entities","query","acc","ids","fragments","FOLDER_TILE_FRAGMENT","PRODUCT_TILE_FRAGMENT","VERSION_TILE_FRAGMENT","TASK_TILE_FRAGMENT","getNonObjectValue","value","keys","formatEntityTiles","project","obj","entity","allEntities","node","attrib","injectedApi","gqlApi","build","projectName","id","response","meta","entityType","entityId","res","error","getEntityApi","useGetEventTileQuery","useGetEntityTilesQuery","useGetEntityQuery","useLazyGetEntityQuery","useGetProductVersionsQuery","useGetSearchedEntitiesInfiniteQuery"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");const Q=require("../../generated/graphql.cjs.js");require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/dataImport.cjs.js");require("../../generated/desktop.cjs.js");require("../../generated/entityLists.cjs.js");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/projectFolders.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");require("lodash");require("react-toastify");require("uuid");const w=require("../../../util/thumbnailWebsocket.cjs.js");require("../actions/getActions.cjs.js");require("../activities/getActivities.cjs.js");require("../activities/updateReaction.cjs.js");require("../activities/getMentions.cjs.js");require("../activities/getCategories.cjs.js");require("../addons/getAddons.cjs.js");require("../addons/updateAddons.cjs.js");require("../attributes/getAttributes.cjs.js");require("../attributes/updateAttributes.cjs.js");require("../authentication/getAuthentication.cjs.js");require("../bundles/getBundles.cjs.js");require("../bundles/updateBundles.cjs.js");require("../cloud/cloud.cjs.js");require("../columnStats/metricTargets.cjs.js");require("../columnStats/groupCounts.cjs.js");require("../config/getConfig.cjs.js");require("../config/updateConfig.cjs.js");require("./getEntity.cjs.js");const j=require("./transformDetailsPanelData.cjs.js");require("./updateEntity.cjs.js");require("../entityLists/getLists.cjs.js");require("../entityLists/updateLists.cjs.js");require("../entityLists/getListsAttributes.cjs.js");require("../entityLists/listItemsColumnStats.cjs.js");require("../entityLists/updateListsAttributes.cjs.js");require("../entityLists/listFolders.cjs.js");require("../folders/getFolders.cjs.js");require("../folders/getFolderDeleteInfo.cjs.js");require("../grouping/getGrouping.cjs.js");require("../links/updateLinks.cjs.js");require("../links/getLinks.cjs.js");require("../links/getEntityLinks.cjs.js");require("../overview/getOverview.cjs.js");require("../overview/updateOverview.cjs.js");require("../versions/getVersionsProducts.cjs.js");require("../permissions/getPermissions.cjs.js");require("../products/createProduct.cjs.js");require("../products/getFolderProducts.cjs.js");require("../project/getProject.cjs.js");require("../project/updateProject.cjs.js");require("../projectFolders/projectFolders.cjs.js");require("../review/getReview.cjs.js");require("../review/updateReview.cjs.js");require("../share/share.cjs.js");require("../system/getSystem.cjs.js");require("../tasks/getTasks.cjs.js");require("../tasks/updateTasks.cjs.js");require("../teams/getTeams.cjs.js");require("../userDashboard/getUserDashboard.cjs.js");require("../users/getUsers.cjs.js");require("../users/updateUsers.cjs.js");require("../users/guests.cjs.js");require("../versions/updateVersions.cjs.js");require("../views/getViews.cjs.js");require("../views/updateViews.cjs.js");require("../watchers/getWatchers.cjs.js");require("../uris/getUris.cjs.js");const b=require("../../../util/realtimeUpdatesUtils.cjs.js"),k=require("../../../util/pubsub.cjs.js"),N=Q.api.enhanceEndpoints({endpoints:{GetDetailsPanelFolder:{transformResponse:(u,o,t)=>{const{projectName:s}=t,e=u?.project?.folder;return e?j.transformDetailsPanelQueriesData({projectName:s,entity:e,entityType:"folder"}):null}},GetDetailsPanelTask:{transformResponse:(u,o,t)=>{const{projectName:s}=t,e=u?.project?.task;return e?j.transformDetailsPanelQueriesData({projectName:s,entity:e,entityType:"task"}):null}},GetDetailsPanelVersion:{transformResponse:(u,o,t)=>{const{projectName:s}=t,e=u?.project?.version;return e?j.transformDetailsPanelQueriesData({projectName:s,entity:e,entityType:"version"}):null}},GetDetailsPanelRepresentation:{transformResponse:(u,o,t)=>{const{projectName:s}=t,e=u?.project?.representation;return e?j.transformDetailsPanelQueriesData({projectName:s,entity:e,entityType:"representation"}):null}}}}),G=u=>{switch(u){case"task":return"GetDetailsPanelTask";case"version":return"GetDetailsPanelVersion";case"folder":return"GetDetailsPanelFolder";case"representation":return"GetDetailsPanelRepresentation"}},S=N.injectEndpoints({endpoints:u=>({getEntitiesDetailsPanel:u.query({async queryFn({entities:o=[],entityType:t},{dispatch:s}){if(!j.detailsPanelEntityTypes.includes(t))return{error:{status:"CUSTOM_ERROR",error:"Entity type not supported"}};try{const e=o.map(l=>s(N.endpoints[G(t)].initiate({projectName:l.projectName,entityId:l.id},{forceRefetch:!0})));return{data:(await Promise.all(e)).filter(l=>!!l.data).map(l=>l.data)}}catch(e){return console.error(e),{error:{status:"FETCH_ERROR",error:e.message}}}},async onCacheEntryAdded({entityType:o},{updateCachedData:t,cacheDataLoaded:s,cacheEntryRemoved:e,dispatch:T,getCacheEntry:R}){let l,I;const g=async(h,m)=>{const E=R().data??[],d=new Set(E.map(i=>`${i.projectName}:${i.id}`)),P=new Map,c=[];h.forEach(({topic:i,message:r})=>{const a=r.summary?.entityId,n=r.project;if(!a||!n)return;const y=`${n}:${a}`;if(!d.has(y))return;const p=i.split(".")[2]?.replace("_changed",""),f=b.getSupportedEntityPatch(p,r.summary,b.REALTIME_TASK_SUPPORTED_VALUE_FIELDS);f?c.push({id:a,projectName:n,field:f.field,value:f.value}):P.set(y,{id:a,projectName:n})}),c.length&&t(i=>{c.forEach(({id:r,projectName:a,field:n,value:y})=>{const p=i.find(f=>f.id===r&&f.projectName===a);p&&(Object.assign(p,{...n==="status"||n==="tags"?{[n]:y}:{},...n==="type"?{entitySubType:y}:{}}),n==="assignees"&&p.task&&(p.task.assignees=y),n==="type"&&p.task&&(p.task.taskType=y))})});const q=Array.from(P.values());if(!q.length||q.length>b.REALTIME_REST_CALL_LIMIT)return;await b.waitForRealtimeJitter();const D=await Promise.all(q.map(async i=>{try{const r=await T(N.endpoints[G(o)].initiate({projectName:i.projectName,entityId:i.id},{forceRefetch:!0}));if(r.status!=="fulfilled")return console.error(r?.error||"No entity found"),null;const a=r.data;return a||(console.error("No entity found"),null)}catch(r){return console.error("Entity task realtime update failed",r),null}}));m()&&t(i=>{D.forEach(r=>{if(!r)return;const a=i.findIndex(n=>n.id===r.id&&n.projectName===r.projectName);if(a===-1){console.error("Entity not found in cache");return}i[a]=r})})},_=b.createRealtimeBatcher(g,({topic:h,message:m})=>`${m.project}:${m.summary?.entityId}:${h}`);try{await s,I=w.subscribeToThumbnailUpdates(E=>{const d=R().data??[],P=E.filter(c=>d.some(q=>q.id===c.summary.entityId&&q.projectName===c.project));P.length!==0&&t(c=>{P.forEach(q=>{const D=c.findIndex(i=>i.id===q.summary.entityId);D!==-1&&c[D]&&q.summary.thumbnailHash&&(c[D].thumbnailHash=q.summary.thumbnailHash)})})},[o]);const h=(E,d)=>{!d?.project||!d?.summary?.entityId||_.add({topic:E,message:d})},m=`entity.${o}`;l=k.subscribe(m,h)}catch{}await e,k.unsubscribe(l),I&&I(),_.clear()},providesTags:(o,t,{entities:s,entityType:e})=>[...s.map(({id:T})=>({id:T,type:"entities"})),{type:"entities",id:e.toUpperCase()},{type:"entities",id:"LIST"}]})})}),{useGetEntitiesDetailsPanelQuery:L,useLazyGetEntitiesDetailsPanelQuery:A}=S;exports.detailsPanelQueries=S;exports.useGetEntitiesDetailsPanelQuery=L;exports.useLazyGetEntitiesDetailsPanelQuery=A;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");const Q=require("../../generated/graphql.cjs.js");require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/dataImport.cjs.js");require("../../generated/desktop.cjs.js");require("../../generated/entityLists.cjs.js");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/projectFolders.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");require("lodash");require("react-toastify");require("uuid");const w=require("../../../util/thumbnailWebsocket.cjs.js");require("../users/updateUsers.cjs.js");const b=require("../../../util/realtimeUpdatesUtils.cjs.js"),k=require("../../../util/pubsub.cjs.js"),j=require("./transformDetailsPanelData.cjs.js"),N=Q.api.enhanceEndpoints({endpoints:{GetDetailsPanelFolder:{transformResponse:(o,u,r)=>{const{projectName:s}=r,e=o?.project?.folder;return e?j.transformDetailsPanelQueriesData({projectName:s,entity:e,entityType:"folder"}):null}},GetDetailsPanelTask:{transformResponse:(o,u,r)=>{const{projectName:s}=r,e=o?.project?.task;return e?j.transformDetailsPanelQueriesData({projectName:s,entity:e,entityType:"task"}):null}},GetDetailsPanelVersion:{transformResponse:(o,u,r)=>{const{projectName:s}=r,e=o?.project?.version;return e?j.transformDetailsPanelQueriesData({projectName:s,entity:e,entityType:"version"}):null}},GetDetailsPanelRepresentation:{transformResponse:(o,u,r)=>{const{projectName:s}=r,e=o?.project?.representation;return e?j.transformDetailsPanelQueriesData({projectName:s,entity:e,entityType:"representation"}):null}}}}),G=o=>{switch(o){case"task":return"GetDetailsPanelTask";case"version":return"GetDetailsPanelVersion";case"folder":return"GetDetailsPanelFolder";case"representation":return"GetDetailsPanelRepresentation"}},S=N.injectEndpoints({endpoints:o=>({getEntitiesDetailsPanel:o.query({async queryFn({entities:u=[],entityType:r},{dispatch:s}){if(!j.detailsPanelEntityTypes.includes(r))return{error:{status:"CUSTOM_ERROR",error:"Entity type not supported"}};try{const e=u.map(p=>s(N.endpoints[G(r)].initiate({projectName:p.projectName,entityId:p.id},{forceRefetch:!0})));return{data:(await Promise.all(e)).filter(p=>!!p.data).map(p=>p.data)}}catch(e){return console.error(e),{error:{status:"FETCH_ERROR",error:e.message}}}},async onCacheEntryAdded({entityType:u},{updateCachedData:r,cacheDataLoaded:s,cacheEntryRemoved:e,dispatch:T,getCacheEntry:R}){let p,I;const g=async(h,f)=>{const E=R().data??[],y=new Set(E.map(i=>`${i.projectName}:${i.id}`)),P=new Map,c=[];h.forEach(({topic:i,message:t})=>{const a=t.summary?.entityId,n=t.project;if(!a||!n)return;const m=`${n}:${a}`;if(!y.has(m))return;const d=i.split(".")[2]?.replace("_changed",""),q=b.getSupportedEntityPatch(d,t.summary,b.REALTIME_TASK_SUPPORTED_VALUE_FIELDS);q?c.push({id:a,projectName:n,field:q.field,value:q.value}):P.set(m,{id:a,projectName:n})}),c.length&&r(i=>{c.forEach(({id:t,projectName:a,field:n,value:m})=>{const d=i.find(q=>q.id===t&&q.projectName===a);d&&(Object.assign(d,{...n==="status"||n==="tags"?{[n]:m}:{},...n==="type"?{entitySubType:m}:{}}),n==="assignees"&&d.task&&(d.task.assignees=m),n==="type"&&d.task&&(d.task.taskType=m))})});const l=Array.from(P.values());if(!l.length||l.length>b.REALTIME_REST_CALL_LIMIT)return;await b.waitForRealtimeJitter();const D=await Promise.all(l.map(async i=>{try{const t=await T(N.endpoints[G(u)].initiate({projectName:i.projectName,entityId:i.id},{forceRefetch:!0}));if(t.status!=="fulfilled")return console.error(t?.error||"No entity found"),null;const a=t.data;return a||(console.error("No entity found"),null)}catch(t){return console.error("Entity task realtime update failed",t),null}}));f()&&r(i=>{D.forEach(t=>{if(!t)return;const a=i.findIndex(n=>n.id===t.id&&n.projectName===t.projectName);if(a===-1){console.error("Entity not found in cache");return}i[a]=t})})},_=b.createRealtimeBatcher(g,({topic:h,message:f})=>`${f.project}:${f.summary?.entityId}:${h}`);try{await s,I=w.subscribeToThumbnailUpdates(E=>{const y=R().data??[],P=E.filter(c=>y.some(l=>l.id===c.summary.entityId&&l.projectName===c.project));P.length!==0&&r(c=>{P.forEach(l=>{const D=c.findIndex(i=>i.id===l.summary.entityId);D!==-1&&c[D]&&l.summary.thumbnailHash&&(c[D].thumbnailHash=l.summary.thumbnailHash)})})},[u]);const h=(E,y)=>{!y?.project||!y?.summary?.entityId||_.add({topic:E,message:y})},f=`entity.${u}`;p=k.subscribe(f,h)}catch{}await e,k.unsubscribe(p),I&&I(),_.clear()},providesTags:(u,r,{entities:s,entityType:e})=>[...s.map(({id:T})=>({id:T,type:"entities"})),{type:"entities",id:e.toUpperCase()},{type:"entities",id:"LIST"}]})})}),{useGetEntitiesDetailsPanelQuery:L,useLazyGetEntitiesDetailsPanelQuery:A}=S;exports.detailsPanelQueries=S;exports.useGetEntitiesDetailsPanelQuery=L;exports.useLazyGetEntitiesDetailsPanelQuery=A;
2
2
  //# sourceMappingURL=getEntityPanel.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getEntityPanel.cjs.js","sources":["../../../../../../src/api/queries/entities/getEntityPanel.ts"],"sourcesContent":["import {\n gqlApi,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport {\n createRealtimeBatcher,\n getSupportedEntityPatch,\n PubSub,\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 { FetchBaseQueryError } from '@reduxjs/toolkit/query'\nimport {\n detailsPanelEntityTypes,\n transformDetailsPanelQueriesData,\n} from './transformDetailsPanelData'\nimport type { DetailsPanelEntityData, DetailsPanelEntityType } from './transformDetailsPanelData'\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\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 | 'GetDetailsPanelFolder'\n | 'GetDetailsPanelTask'\n | 'GetDetailsPanelVersion'\n | 'GetDetailsPanelRepresentation'\n> & {\n GetDetailsPanelFolder: OverrideResultType<\n Definitions['GetDetailsPanelFolder'],\n DetailsPanelEntityData | null\n >\n GetDetailsPanelTask: OverrideResultType<\n Definitions['GetDetailsPanelTask'],\n DetailsPanelEntityData | null\n >\n GetDetailsPanelVersion: OverrideResultType<\n Definitions['GetDetailsPanelVersion'],\n DetailsPanelEntityData | null\n >\n GetDetailsPanelRepresentation: OverrideResultType<\n Definitions['GetDetailsPanelRepresentation'],\n DetailsPanelEntityData | null\n >\n}\n\nconst enhancedDetailsApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetDetailsPanelFolder: {\n transformResponse: (response: GetDetailsPanelFolderQuery, _meta, args) => {\n const { projectName } = args\n const entity = response?.project?.folder\n if (!entity) return null\n return transformDetailsPanelQueriesData({\n projectName,\n entity,\n entityType: 'folder',\n })\n },\n },\n GetDetailsPanelTask: {\n transformResponse: (response: GetDetailsPanelTaskQuery, _meta, args) => {\n const { projectName } = args\n const entity = response?.project?.task\n if (!entity) return null\n return transformDetailsPanelQueriesData({\n projectName,\n entity,\n entityType: 'task',\n })\n },\n },\n GetDetailsPanelVersion: {\n transformResponse: (response: GetDetailsPanelVersionQuery, _meta, args) => {\n const { projectName } = args\n const entity = response?.project?.version\n if (!entity) return null\n return transformDetailsPanelQueriesData({\n projectName,\n entity,\n entityType: 'version',\n })\n },\n },\n GetDetailsPanelRepresentation: {\n transformResponse: (response: GetDetailsPanelRepresentationQuery, _meta, args) => {\n const { projectName } = args\n const entity = response?.project?.representation\n if (!entity) return null\n return transformDetailsPanelQueriesData({\n projectName,\n entity,\n entityType: 'representation',\n })\n },\n },\n },\n})\n\ntype GetEntitiesDetailsPanelArgs = {\n entities: { id: string; projectName: string }[]\n entityType: DetailsPanelEntityType\n}\n\ntype QueryNameType =\n | 'GetDetailsPanelTask'\n | 'GetDetailsPanelVersion'\n | 'GetDetailsPanelFolder'\n | 'GetDetailsPanelRepresentation'\n\nconst getEntityTypeQueryName = (entityType: DetailsPanelEntityType): QueryNameType => {\n switch (entityType) {\n case 'task':\n return 'GetDetailsPanelTask'\n\n case 'version':\n return 'GetDetailsPanelVersion'\n\n case 'folder':\n return 'GetDetailsPanelFolder'\n\n case 'representation':\n return 'GetDetailsPanelRepresentation'\n }\n}\n\nconst detailsPanelQueries2 = enhancedDetailsApi.injectEndpoints({\n endpoints: (build) => ({\n getEntitiesDetailsPanel: build.query<DetailsPanelEntityData[], GetEntitiesDetailsPanelArgs>({\n async queryFn({ entities = [], entityType }, { dispatch }) {\n if (!detailsPanelEntityTypes.includes(entityType)) {\n return {\n error: {\n status: 'CUSTOM_ERROR',\n error: 'Entity type not supported',\n } as FetchBaseQueryError,\n }\n }\n\n try {\n const promises = entities.map((entity) => {\n return dispatch(\n enhancedDetailsApi.endpoints[getEntityTypeQueryName(entityType)].initiate(\n {\n projectName: entity.projectName,\n entityId: entity.id,\n },\n { forceRefetch: true },\n ),\n )\n })\n\n const res = await Promise.all(promises)\n\n const entitiesData = res\n .filter((res) => !!res.data)\n .map((res) => res.data) as DetailsPanelEntityData[]\n\n return { data: entitiesData }\n } catch (e: any) {\n console.error(e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n async onCacheEntryAdded(\n { entityType },\n { updateCachedData, cacheDataLoaded, cacheEntryRemoved, dispatch, getCacheEntry },\n ) {\n let token\n let unsubscribeThumbnails: (() => void) | undefined\n const batchProcessMessages: RealtimeBatchProcessor<{\n topic: string\n message: any\n }> = async (updates, isActive) => {\n const cachedEntities = getCacheEntry().data ?? []\n const cachedEntityKeys = new Set(\n cachedEntities.map((entity) => `${entity.projectName}:${entity.id}`),\n )\n const entitiesToFetch = new Map<string, { id: string; projectName: string }>()\n const patches: {\n id: string\n projectName: string\n field: SupportedTaskField\n value: string | string[]\n }[] = []\n\n updates.forEach(({ topic, message }) => {\n const entityId = message.summary?.entityId\n const projectName = message.project\n if (!entityId || !projectName) return\n\n const entityKey = `${projectName}:${entityId}`\n // Only refresh entities that are currently displayed in this panel.\n if (!cachedEntityKeys.has(entityKey)) return\n\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) {\n patches.push({\n id: entityId,\n projectName,\n field: patch.field as SupportedTaskField,\n value: patch.value,\n })\n } else {\n entitiesToFetch.set(entityKey, { id: entityId, projectName })\n }\n })\n\n if (patches.length) {\n updateCachedData((draft) => {\n patches.forEach(({ id, projectName, field, value }) => {\n const entity = draft.find(\n (item) => item.id === id && item.projectName === projectName,\n )\n if (!entity) return\n\n Object.assign(entity, {\n ...(field === 'status' || field === 'tags' ? { [field]: value } : {}),\n ...(field === 'type' ? { entitySubType: value } : {}),\n })\n\n if (field === 'assignees' && entity.task) {\n entity.task.assignees = value as string[]\n }\n if (field === 'type' && entity.task) {\n entity.task.taskType = value as string\n }\n })\n })\n }\n\n const entitiesToRefresh = Array.from(entitiesToFetch.values())\n if (!entitiesToRefresh.length || entitiesToRefresh.length > REALTIME_REST_CALL_LIMIT) {\n return\n }\n\n // Avoid sending a burst of requests immediately after a realtime event.\n await waitForRealtimeJitter()\n const updatedEntities = await Promise.all(\n entitiesToRefresh.map(async (entity) => {\n try {\n // Get the new data for the entity.\n const res = await dispatch(\n enhancedDetailsApi.endpoints[getEntityTypeQueryName(entityType)].initiate(\n {\n projectName: entity.projectName,\n entityId: entity.id,\n },\n { forceRefetch: true },\n ),\n )\n\n // Check the response.\n if (res.status !== 'fulfilled') {\n console.error(res?.error || 'No entity found')\n return null\n }\n\n const updatedEntity = res.data\n if (!updatedEntity) {\n console.error('No entity found')\n return null\n }\n\n return updatedEntity\n } catch (error) {\n console.error('Entity task realtime update failed', error)\n return null\n }\n }),\n )\n if (!isActive()) return\n\n updateCachedData((draft) => {\n updatedEntities.forEach((updatedEntity) => {\n if (!updatedEntity) return\n\n // Find the entity in the cache.\n const entityIndex = draft.findIndex(\n (entity) =>\n entity.id === updatedEntity.id &&\n entity.projectName === updatedEntity.projectName,\n )\n\n if (entityIndex === -1) {\n console.error('Entity not found in cache')\n return\n }\n\n // Update the entity in the cache.\n draft[entityIndex] = updatedEntity\n })\n })\n }\n const batcher = createRealtimeBatcher(\n batchProcessMessages,\n ({ topic, message }) => `${message.project}:${message.summary?.entityId}:${topic}`,\n )\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 cachedEntities = getCacheEntry().data ?? []\n const matchedMessages = messages.filter((m) =>\n cachedEntities.some(\n (entity) => entity.id === m.summary.entityId && entity.projectName === m.project,\n ),\n )\n if (matchedMessages.length === 0) return\n\n updateCachedData((draft) => {\n matchedMessages.forEach((message) => {\n const entityIndex = draft.findIndex(\n (entity) => entity.id === message.summary.entityId,\n )\n if (entityIndex !== -1 && draft[entityIndex] && message.summary.thumbnailHash) {\n draft[entityIndex].thumbnailHash = message.summary.thumbnailHash\n }\n })\n })\n },\n [entityType],\n )\n\n const handlePubSub = (_topic: string, message: any) => {\n if (!message?.project || !message?.summary?.entityId) return\n batcher.add({ topic: _topic, message })\n }\n\n const topic = `entity.${entityType}`\n // sub to websocket topic\n token = PubSub.subscribe(topic, handlePubSub)\n } catch {\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 providesTags: (_res, _error, { entities, entityType }) => [\n ...entities.map(({ id }: { id: string }) => ({ id, type: 'entities' })),\n { type: 'entities', id: entityType.toUpperCase() },\n { type: 'entities', id: 'LIST' },\n ],\n }),\n }),\n})\n\nexport const { useGetEntitiesDetailsPanelQuery, useLazyGetEntitiesDetailsPanelQuery } =\n detailsPanelQueries2\nexport { detailsPanelQueries2 as detailsPanelQueries }\n"],"names":["enhancedDetailsApi","gqlApi","response","_meta","args","projectName","entity","transformDetailsPanelQueriesData","getEntityTypeQueryName","entityType","detailsPanelQueries2","build","entities","dispatch","detailsPanelEntityTypes","promises","res","updateCachedData","cacheDataLoaded","cacheEntryRemoved","getCacheEntry","token","unsubscribeThumbnails","batchProcessMessages","updates","isActive","cachedEntities","cachedEntityKeys","entitiesToFetch","patches","topic","message","entityId","entityKey","field","patch","getSupportedEntityPatch","REALTIME_TASK_SUPPORTED_VALUE_FIELDS","draft","id","value","item","entitiesToRefresh","REALTIME_REST_CALL_LIMIT","waitForRealtimeJitter","updatedEntities","updatedEntity","error","entityIndex","batcher","createRealtimeBatcher","subscribeToThumbnailUpdates","messages","matchedMessages","m","handlePubSub","_topic","PubSub","_res","_error","useGetEntitiesDetailsPanelQuery","useLazyGetEntitiesDetailsPanelQuery"],"mappings":"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"}
1
+ {"version":3,"file":"getEntityPanel.cjs.js","sources":["../../../../../../src/api/queries/entities/getEntityPanel.ts"],"sourcesContent":["import { gqlApi } from '@shared/api/generated'\nimport type {\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport {\n createRealtimeBatcher,\n getSupportedEntityPatch,\n PubSub,\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 { FetchBaseQueryError } from '@reduxjs/toolkit/query'\nimport {\n detailsPanelEntityTypes,\n transformDetailsPanelQueriesData,\n} from './transformDetailsPanelData'\nimport type { DetailsPanelEntityData, DetailsPanelEntityType } from './transformDetailsPanelData'\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\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 | 'GetDetailsPanelFolder'\n | 'GetDetailsPanelTask'\n | 'GetDetailsPanelVersion'\n | 'GetDetailsPanelRepresentation'\n> & {\n GetDetailsPanelFolder: OverrideResultType<\n Definitions['GetDetailsPanelFolder'],\n DetailsPanelEntityData | null\n >\n GetDetailsPanelTask: OverrideResultType<\n Definitions['GetDetailsPanelTask'],\n DetailsPanelEntityData | null\n >\n GetDetailsPanelVersion: OverrideResultType<\n Definitions['GetDetailsPanelVersion'],\n DetailsPanelEntityData | null\n >\n GetDetailsPanelRepresentation: OverrideResultType<\n Definitions['GetDetailsPanelRepresentation'],\n DetailsPanelEntityData | null\n >\n}\n\nconst enhancedDetailsApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetDetailsPanelFolder: {\n transformResponse: (response: GetDetailsPanelFolderQuery, _meta, args) => {\n const { projectName } = args\n const entity = response?.project?.folder\n if (!entity) return null\n return transformDetailsPanelQueriesData({\n projectName,\n entity,\n entityType: 'folder',\n })\n },\n },\n GetDetailsPanelTask: {\n transformResponse: (response: GetDetailsPanelTaskQuery, _meta, args) => {\n const { projectName } = args\n const entity = response?.project?.task\n if (!entity) return null\n return transformDetailsPanelQueriesData({\n projectName,\n entity,\n entityType: 'task',\n })\n },\n },\n GetDetailsPanelVersion: {\n transformResponse: (response: GetDetailsPanelVersionQuery, _meta, args) => {\n const { projectName } = args\n const entity = response?.project?.version\n if (!entity) return null\n return transformDetailsPanelQueriesData({\n projectName,\n entity,\n entityType: 'version',\n })\n },\n },\n GetDetailsPanelRepresentation: {\n transformResponse: (response: GetDetailsPanelRepresentationQuery, _meta, args) => {\n const { projectName } = args\n const entity = response?.project?.representation\n if (!entity) return null\n return transformDetailsPanelQueriesData({\n projectName,\n entity,\n entityType: 'representation',\n })\n },\n },\n },\n})\n\ntype GetEntitiesDetailsPanelArgs = {\n entities: { id: string; projectName: string }[]\n entityType: DetailsPanelEntityType\n}\n\ntype QueryNameType =\n | 'GetDetailsPanelTask'\n | 'GetDetailsPanelVersion'\n | 'GetDetailsPanelFolder'\n | 'GetDetailsPanelRepresentation'\n\nconst getEntityTypeQueryName = (entityType: DetailsPanelEntityType): QueryNameType => {\n switch (entityType) {\n case 'task':\n return 'GetDetailsPanelTask'\n\n case 'version':\n return 'GetDetailsPanelVersion'\n\n case 'folder':\n return 'GetDetailsPanelFolder'\n\n case 'representation':\n return 'GetDetailsPanelRepresentation'\n }\n}\n\nconst detailsPanelQueries2 = enhancedDetailsApi.injectEndpoints({\n endpoints: (build) => ({\n getEntitiesDetailsPanel: build.query<DetailsPanelEntityData[], GetEntitiesDetailsPanelArgs>({\n async queryFn({ entities = [], entityType }, { dispatch }) {\n if (!detailsPanelEntityTypes.includes(entityType)) {\n return {\n error: {\n status: 'CUSTOM_ERROR',\n error: 'Entity type not supported',\n } as FetchBaseQueryError,\n }\n }\n\n try {\n const promises = entities.map((entity) => {\n return dispatch(\n enhancedDetailsApi.endpoints[getEntityTypeQueryName(entityType)].initiate(\n {\n projectName: entity.projectName,\n entityId: entity.id,\n },\n { forceRefetch: true },\n ),\n )\n })\n\n const res = await Promise.all(promises)\n\n const entitiesData = res\n .filter((res) => !!res.data)\n .map((res) => res.data) as DetailsPanelEntityData[]\n\n return { data: entitiesData }\n } catch (e: any) {\n console.error(e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n async onCacheEntryAdded(\n { entityType },\n { updateCachedData, cacheDataLoaded, cacheEntryRemoved, dispatch, getCacheEntry },\n ) {\n let token\n let unsubscribeThumbnails: (() => void) | undefined\n const batchProcessMessages: RealtimeBatchProcessor<{\n topic: string\n message: any\n }> = async (updates, isActive) => {\n const cachedEntities = getCacheEntry().data ?? []\n const cachedEntityKeys = new Set(\n cachedEntities.map((entity) => `${entity.projectName}:${entity.id}`),\n )\n const entitiesToFetch = new Map<string, { id: string; projectName: string }>()\n const patches: {\n id: string\n projectName: string\n field: SupportedTaskField\n value: string | string[]\n }[] = []\n\n updates.forEach(({ topic, message }) => {\n const entityId = message.summary?.entityId\n const projectName = message.project\n if (!entityId || !projectName) return\n\n const entityKey = `${projectName}:${entityId}`\n // Only refresh entities that are currently displayed in this panel.\n if (!cachedEntityKeys.has(entityKey)) return\n\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) {\n patches.push({\n id: entityId,\n projectName,\n field: patch.field as SupportedTaskField,\n value: patch.value,\n })\n } else {\n entitiesToFetch.set(entityKey, { id: entityId, projectName })\n }\n })\n\n if (patches.length) {\n updateCachedData((draft) => {\n patches.forEach(({ id, projectName, field, value }) => {\n const entity = draft.find(\n (item) => item.id === id && item.projectName === projectName,\n )\n if (!entity) return\n\n Object.assign(entity, {\n ...(field === 'status' || field === 'tags' ? { [field]: value } : {}),\n ...(field === 'type' ? { entitySubType: value } : {}),\n })\n\n if (field === 'assignees' && entity.task) {\n entity.task.assignees = value as string[]\n }\n if (field === 'type' && entity.task) {\n entity.task.taskType = value as string\n }\n })\n })\n }\n\n const entitiesToRefresh = Array.from(entitiesToFetch.values())\n if (!entitiesToRefresh.length || entitiesToRefresh.length > REALTIME_REST_CALL_LIMIT) {\n return\n }\n\n // Avoid sending a burst of requests immediately after a realtime event.\n await waitForRealtimeJitter()\n const updatedEntities = await Promise.all(\n entitiesToRefresh.map(async (entity) => {\n try {\n // Get the new data for the entity.\n const res = await dispatch(\n enhancedDetailsApi.endpoints[getEntityTypeQueryName(entityType)].initiate(\n {\n projectName: entity.projectName,\n entityId: entity.id,\n },\n { forceRefetch: true },\n ),\n )\n\n // Check the response.\n if (res.status !== 'fulfilled') {\n console.error(res?.error || 'No entity found')\n return null\n }\n\n const updatedEntity = res.data\n if (!updatedEntity) {\n console.error('No entity found')\n return null\n }\n\n return updatedEntity\n } catch (error) {\n console.error('Entity task realtime update failed', error)\n return null\n }\n }),\n )\n if (!isActive()) return\n\n updateCachedData((draft) => {\n updatedEntities.forEach((updatedEntity) => {\n if (!updatedEntity) return\n\n // Find the entity in the cache.\n const entityIndex = draft.findIndex(\n (entity) =>\n entity.id === updatedEntity.id &&\n entity.projectName === updatedEntity.projectName,\n )\n\n if (entityIndex === -1) {\n console.error('Entity not found in cache')\n return\n }\n\n // Update the entity in the cache.\n draft[entityIndex] = updatedEntity\n })\n })\n }\n const batcher = createRealtimeBatcher(\n batchProcessMessages,\n ({ topic, message }) => `${message.project}:${message.summary?.entityId}:${topic}`,\n )\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 cachedEntities = getCacheEntry().data ?? []\n const matchedMessages = messages.filter((m) =>\n cachedEntities.some(\n (entity) => entity.id === m.summary.entityId && entity.projectName === m.project,\n ),\n )\n if (matchedMessages.length === 0) return\n\n updateCachedData((draft) => {\n matchedMessages.forEach((message) => {\n const entityIndex = draft.findIndex(\n (entity) => entity.id === message.summary.entityId,\n )\n if (entityIndex !== -1 && draft[entityIndex] && message.summary.thumbnailHash) {\n draft[entityIndex].thumbnailHash = message.summary.thumbnailHash\n }\n })\n })\n },\n [entityType],\n )\n\n const handlePubSub = (_topic: string, message: any) => {\n if (!message?.project || !message?.summary?.entityId) return\n batcher.add({ topic: _topic, message })\n }\n\n const topic = `entity.${entityType}`\n // sub to websocket topic\n token = PubSub.subscribe(topic, handlePubSub)\n } catch {\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 providesTags: (_res, _error, { entities, entityType }) => [\n ...entities.map(({ id }: { id: string }) => ({ id, type: 'entities' })),\n { type: 'entities', id: entityType.toUpperCase() },\n { type: 'entities', id: 'LIST' },\n ],\n }),\n }),\n})\n\nexport const { useGetEntitiesDetailsPanelQuery, useLazyGetEntitiesDetailsPanelQuery } =\n detailsPanelQueries2\nexport { detailsPanelQueries2 as detailsPanelQueries }\n"],"names":["enhancedDetailsApi","gqlApi","response","_meta","args","projectName","entity","transformDetailsPanelQueriesData","getEntityTypeQueryName","entityType","detailsPanelQueries2","build","entities","dispatch","detailsPanelEntityTypes","promises","res","updateCachedData","cacheDataLoaded","cacheEntryRemoved","getCacheEntry","token","unsubscribeThumbnails","batchProcessMessages","updates","isActive","cachedEntities","cachedEntityKeys","entitiesToFetch","patches","topic","message","entityId","entityKey","field","patch","getSupportedEntityPatch","REALTIME_TASK_SUPPORTED_VALUE_FIELDS","draft","id","value","item","entitiesToRefresh","REALTIME_REST_CALL_LIMIT","waitForRealtimeJitter","updatedEntities","updatedEntity","error","entityIndex","batcher","createRealtimeBatcher","subscribeToThumbnailUpdates","messages","matchedMessages","m","handlePubSub","_topic","PubSub","_res","_error","useGetEntitiesDetailsPanelQuery","useLazyGetEntitiesDetailsPanelQuery"],"mappings":"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"}