@ynput/ayon-frontend-shared 0.3.43 → 0.3.45

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 (1025) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +38 -34
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +236 -223
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/Slicer.cjs.js +1 -1
  8. package/dist/Slicer.es.js +29 -26
  9. package/dist/Slicer.es.js.map +1 -1
  10. package/dist/_virtual/index.cjs4.js +1 -1
  11. package/dist/_virtual/index.cjs5.js +1 -1
  12. package/dist/_virtual/index.cjs8.js +1 -1
  13. package/dist/_virtual/index.cjs9.js +1 -1
  14. package/dist/_virtual/index.es4.js +2 -5
  15. package/dist/_virtual/index.es4.js.map +1 -1
  16. package/dist/_virtual/index.es5.js +5 -2
  17. package/dist/_virtual/index.es5.js.map +1 -1
  18. package/dist/_virtual/index.es8.js +5 -2
  19. package/dist/_virtual/index.es8.js.map +1 -1
  20. package/dist/_virtual/index.es9.js +2 -5
  21. package/dist/_virtual/index.es9.js.map +1 -1
  22. package/dist/api.cjs.js +1 -1
  23. package/dist/api.es.js +349 -330
  24. package/dist/api.es.js.map +1 -1
  25. package/dist/components.cjs.js +1 -1
  26. package/dist/components.es.js +149 -144
  27. package/dist/components.es.js.map +1 -1
  28. package/dist/index.cjs.js +1 -1
  29. package/dist/index.es.js +25 -21
  30. package/dist/index.es.js.map +1 -1
  31. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  32. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  33. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  34. package/dist/node_modules/remove-accents/index.es.js +1 -1
  35. package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
  36. package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
  37. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  38. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  39. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  40. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  41. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  42. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  43. package/dist/shared/src/api/generated/graphql.cjs.js +21 -5
  44. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  45. package/dist/shared/src/api/generated/graphql.es.js +18 -2
  46. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  47. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  48. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  49. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
  50. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
  51. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +13 -10
  52. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
  53. package/dist/shared/src/api/queries/bundles/getBundles.cjs.js +2 -0
  54. package/dist/shared/src/api/queries/bundles/getBundles.cjs.js.map +1 -0
  55. package/dist/shared/src/api/queries/bundles/getBundles.es.js +65 -0
  56. package/dist/shared/src/api/queries/bundles/getBundles.es.js.map +1 -0
  57. package/dist/shared/src/api/queries/bundles/updateBundles.cjs.js +2 -0
  58. package/dist/shared/src/api/queries/bundles/updateBundles.cjs.js.map +1 -0
  59. package/dist/shared/src/api/queries/bundles/updateBundles.es.js +159 -0
  60. package/dist/shared/src/api/queries/bundles/updateBundles.es.js.map +1 -0
  61. package/dist/shared/src/api/queries/columnStats/groupCounts.cjs.js +2 -0
  62. package/dist/shared/src/api/queries/columnStats/groupCounts.cjs.js.map +1 -0
  63. package/dist/shared/src/api/queries/columnStats/groupCounts.es.js +83 -0
  64. package/dist/shared/src/api/queries/columnStats/groupCounts.es.js.map +1 -0
  65. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js +1 -1
  66. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -1
  67. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js +60 -41
  68. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -1
  69. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
  70. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  71. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +6 -3
  72. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  73. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  74. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  75. package/dist/shared/src/api/queries/entityLists/getLists.es.js +45 -42
  76. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  77. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js +1 -1
  78. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js.map +1 -1
  79. package/dist/shared/src/api/queries/entityLists/listFolders.es.js +11 -8
  80. package/dist/shared/src/api/queries/entityLists/listFolders.es.js.map +1 -1
  81. package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.cjs.js +1 -1
  82. package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.cjs.js.map +1 -1
  83. package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.es.js +5 -4
  84. package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.es.js.map +1 -1
  85. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -1
  86. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  87. package/dist/shared/src/api/queries/folders/getFolders.es.js +6 -3
  88. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  89. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +1 -1
  90. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -1
  91. package/dist/shared/src/api/queries/links/getEntityLinks.es.js +5 -2
  92. package/dist/shared/src/api/queries/links/getEntityLinks.es.js.map +1 -1
  93. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  94. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  95. package/dist/shared/src/api/queries/overview/getOverview.es.js +280 -247
  96. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  97. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  98. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  99. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js +1 -1
  100. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js.map +1 -1
  101. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js +15 -12
  102. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js.map +1 -1
  103. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  104. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  105. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +8 -5
  106. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  107. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  108. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  109. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +17 -14
  110. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  111. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js +1 -1
  112. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js.map +1 -1
  113. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js +11 -8
  114. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js.map +1 -1
  115. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +1 -1
  116. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
  117. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +6 -3
  118. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
  119. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +1 -1
  120. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  121. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +5 -2
  122. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  123. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +5 -5
  124. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
  125. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +5 -2
  126. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
  127. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  128. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  129. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +15 -11
  130. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  131. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  132. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  133. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +6 -3
  134. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  135. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +1 -1
  136. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  137. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +6 -3
  138. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  139. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js +4 -4
  140. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js.map +1 -1
  141. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js +5 -2
  142. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js.map +1 -1
  143. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js +1 -1
  144. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js.map +1 -1
  145. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js +5 -2
  146. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js.map +1 -1
  147. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  148. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  149. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +6 -3
  150. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  151. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js +1 -1
  152. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js.map +1 -1
  153. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js +5 -2
  154. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js.map +1 -1
  155. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js +1 -1
  156. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js.map +1 -1
  157. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js +5 -2
  158. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js.map +1 -1
  159. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
  160. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
  161. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +6 -3
  162. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
  163. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  164. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  165. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +16 -12
  166. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  167. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  168. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  169. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +18 -14
  170. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  171. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  172. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  173. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +6 -3
  174. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  175. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  176. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  177. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +44 -40
  178. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  179. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.cjs.js +4 -0
  180. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.cjs.js.map +1 -0
  181. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.es.js +133 -0
  182. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.es.js.map +1 -0
  183. package/dist/shared/src/components/InfoMessage/InfoMessage.cjs.js +2 -0
  184. package/dist/shared/src/components/InfoMessage/InfoMessage.cjs.js.map +1 -0
  185. package/dist/shared/src/components/InfoMessage/InfoMessage.es.js +48 -0
  186. package/dist/shared/src/components/InfoMessage/InfoMessage.es.js.map +1 -0
  187. package/dist/shared/src/components/InfoMessage/InfoMessage.styled.cjs.js +77 -0
  188. package/dist/shared/src/components/InfoMessage/InfoMessage.styled.cjs.js.map +1 -0
  189. package/dist/shared/src/components/InfoMessage/InfoMessage.styled.es.js +81 -0
  190. package/dist/shared/src/components/InfoMessage/InfoMessage.styled.es.js.map +1 -0
  191. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  192. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  193. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +6 -3
  194. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  195. package/dist/shared/src/components/LinksManager/CellEditingDialog.cjs.js +1 -1
  196. package/dist/shared/src/components/LinksManager/CellEditingDialog.cjs.js.map +1 -1
  197. package/dist/shared/src/components/LinksManager/CellEditingDialog.es.js +20 -20
  198. package/dist/shared/src/components/LinksManager/CellEditingDialog.es.js.map +1 -1
  199. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
  200. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  201. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +5 -2
  202. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  203. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  204. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  205. package/dist/shared/src/components/LinksManager/LinksManager.es.js +6 -3
  206. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  207. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  208. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  209. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +17 -13
  210. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  211. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  212. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  213. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +6 -3
  214. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  215. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
  216. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
  217. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +6 -3
  218. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
  219. package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
  220. package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
  221. package/dist/shared/src/components/Menu/Menu.es.js +6 -3
  222. package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
  223. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  224. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  225. package/dist/shared/src/components/Menu/MenuItem.es.js +4 -1
  226. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  227. package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
  228. package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
  229. package/dist/shared/src/components/Menu/MenuList.es.js +24 -21
  230. package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
  231. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +1 -1
  232. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  233. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +6 -3
  234. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  235. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  236. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  237. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +6 -3
  238. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  239. package/dist/shared/src/components/Powerpack/useFreeTrialLink.cjs.js +1 -1
  240. package/dist/shared/src/components/Powerpack/useFreeTrialLink.cjs.js.map +1 -1
  241. package/dist/shared/src/components/Powerpack/useFreeTrialLink.es.js +5 -2
  242. package/dist/shared/src/components/Powerpack/useFreeTrialLink.es.js.map +1 -1
  243. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +1 -1
  244. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  245. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +14 -10
  246. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  247. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  248. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  249. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +15 -11
  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 +6 -3
  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 +13 -9
  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 +18 -14
  262. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  263. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  264. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  265. package/dist/shared/src/components/RenameForm/RenameForm.es.js +17 -13
  266. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  267. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +1 -1
  268. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  269. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +5 -2
  270. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  271. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  272. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  273. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +18 -14
  274. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  275. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  276. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  277. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +19 -15
  278. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  279. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  280. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  281. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +18 -14
  282. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  283. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
  284. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  285. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +87 -69
  286. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  287. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  288. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  289. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +18 -14
  290. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  291. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  292. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  293. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +112 -109
  294. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  295. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +1 -1
  296. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  297. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +6 -3
  298. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  299. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
  300. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  301. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +20 -16
  302. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  303. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +2 -2
  304. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  305. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +36 -24
  306. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  307. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
  308. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
  309. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +5 -2
  310. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
  311. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +1 -1
  312. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  313. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +6 -3
  314. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  315. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js +1 -1
  316. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js.map +1 -1
  317. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js +5 -2
  318. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js.map +1 -1
  319. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js +1 -1
  320. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js.map +1 -1
  321. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js +5 -2
  322. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js.map +1 -1
  323. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  324. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  325. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +17 -13
  326. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  327. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  328. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  329. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +46 -41
  330. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  331. package/dist/shared/src/components/VersionUploader/context/VersionUploadContextInstance.cjs.js +2 -0
  332. package/dist/shared/src/components/VersionUploader/context/VersionUploadContextInstance.cjs.js.map +1 -0
  333. package/dist/shared/src/components/VersionUploader/context/VersionUploadContextInstance.es.js +6 -0
  334. package/dist/shared/src/components/VersionUploader/context/VersionUploadContextInstance.es.js.map +1 -0
  335. package/dist/shared/src/components/Watchers/Watchers.cjs.js +1 -1
  336. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  337. package/dist/shared/src/components/Watchers/Watchers.es.js +5 -2
  338. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  339. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  340. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  341. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +18 -14
  342. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  343. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  344. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  345. package/dist/shared/src/containers/Actions/Actions.es.js +117 -102
  346. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  347. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js +2 -2
  348. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
  349. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js +47 -46
  350. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
  351. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  352. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  353. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +18 -14
  354. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  355. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  356. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  357. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +18 -14
  358. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  359. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  360. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  361. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +18 -14
  362. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  363. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  364. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  365. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +18 -14
  366. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  367. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  368. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  369. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +18 -14
  370. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  371. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js +1 -1
  372. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js.map +1 -1
  373. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js +6 -3
  374. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js.map +1 -1
  375. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  376. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  377. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +18 -14
  378. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  379. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js +2 -2
  380. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js.map +1 -1
  381. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js +5 -2
  382. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js.map +1 -1
  383. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  384. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  385. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +17 -13
  386. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  387. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  388. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  389. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +6 -3
  390. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  391. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  392. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  393. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +29 -25
  394. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  395. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  396. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  397. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +18 -14
  398. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  399. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  400. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  401. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +18 -14
  402. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  403. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  404. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  405. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +6 -3
  406. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  407. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js +1 -1
  408. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js.map +1 -1
  409. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js +5 -2
  410. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js.map +1 -1
  411. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  412. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  413. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +6 -3
  414. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  415. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +2 -2
  416. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  417. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +75 -69
  418. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  419. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  420. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  421. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +18 -14
  422. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  423. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  424. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  425. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +18 -14
  426. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  427. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  428. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  429. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +18 -14
  430. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  431. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js +1 -1
  432. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js.map +1 -1
  433. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js +5 -2
  434. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js.map +1 -1
  435. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  436. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  437. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +6 -3
  438. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  439. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js +1 -1
  440. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js.map +1 -1
  441. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js +7 -4
  442. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js.map +1 -1
  443. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  444. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  445. package/dist/shared/src/containers/Feed/Feed.es.js +24 -21
  446. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  447. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  448. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  449. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +18 -14
  450. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  451. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  452. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  453. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +18 -14
  454. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  455. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  456. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  457. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +18 -14
  458. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  459. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js +1 -1
  460. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js.map +1 -1
  461. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js +5 -2
  462. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js.map +1 -1
  463. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js +1 -1
  464. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js.map +1 -1
  465. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js +20 -16
  466. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js.map +1 -1
  467. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  468. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  469. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +6 -3
  470. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  471. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
  472. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  473. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +19 -14
  474. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  475. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  476. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  477. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +22 -18
  478. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  479. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  480. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  481. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +6 -3
  482. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  483. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js +1 -1
  484. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js.map +1 -1
  485. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js +5 -2
  486. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js.map +1 -1
  487. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  488. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  489. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +6 -3
  490. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  491. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +1 -1
  492. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -1
  493. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +6 -3
  494. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -1
  495. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  496. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  497. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +6 -3
  498. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  499. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  500. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  501. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +18 -14
  502. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  503. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.cjs.js +1 -1
  504. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.cjs.js.map +1 -1
  505. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.es.js +5 -2
  506. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.es.js.map +1 -1
  507. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  508. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  509. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +9 -6
  510. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  511. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js +1 -1
  512. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js.map +1 -1
  513. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js +5 -2
  514. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js.map +1 -1
  515. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js +1 -1
  516. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
  517. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js +5 -2
  518. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js.map +1 -1
  519. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +1 -1
  520. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  521. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +5 -2
  522. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  523. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js +1 -1
  524. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js.map +1 -1
  525. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js +5 -2
  526. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js.map +1 -1
  527. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js +1 -1
  528. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js.map +1 -1
  529. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js +5 -2
  530. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js.map +1 -1
  531. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js +1 -1
  532. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js.map +1 -1
  533. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js +5 -2
  534. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js.map +1 -1
  535. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  536. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  537. package/dist/shared/src/containers/ListTable/ListTable.es.js +188 -175
  538. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  539. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  540. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  541. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +15 -11
  542. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  543. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  544. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  545. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +23 -19
  546. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  547. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  548. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  549. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +801 -761
  550. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  551. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +15 -1
  552. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  553. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +16 -0
  554. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  555. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  556. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  557. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +81 -76
  558. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  559. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  560. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  561. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +17 -13
  562. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  563. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  564. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  565. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +19 -15
  566. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  567. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  568. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  569. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +18 -14
  570. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  571. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js +13 -6
  572. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js.map +1 -1
  573. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js +58 -44
  574. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js.map +1 -1
  575. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  576. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  577. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +13 -9
  578. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  579. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +5 -5
  580. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  581. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +94 -88
  582. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  583. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  584. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  585. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +14 -10
  586. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  587. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  588. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  589. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +17 -13
  590. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  591. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContextInstance.cjs.js +2 -0
  592. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContextInstance.cjs.js.map +1 -0
  593. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContextInstance.es.js +6 -0
  594. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContextInstance.es.js.map +1 -0
  595. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +1 -1
  596. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  597. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +338 -7
  598. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  599. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContextInstance.cjs.js +2 -0
  600. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContextInstance.cjs.js.map +1 -0
  601. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContextInstance.es.js +6 -0
  602. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContextInstance.es.js.map +1 -0
  603. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  604. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  605. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +124 -120
  606. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  607. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js +1 -1
  608. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js.map +1 -1
  609. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js +5 -2
  610. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js.map +1 -1
  611. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  612. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  613. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +6 -3
  614. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  615. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  616. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  617. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +162 -134
  618. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  619. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  620. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  621. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +15 -11
  622. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  623. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  624. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  625. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +12 -8
  626. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  627. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  628. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  629. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +13 -9
  630. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  631. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  632. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  633. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +13 -9
  634. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  635. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  636. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  637. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +13 -9
  638. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  639. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  640. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  641. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +454 -237
  642. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  643. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  644. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  645. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +13 -9
  646. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  647. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  648. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  649. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +13 -9
  650. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  651. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupCounts.cjs.js +2 -0
  652. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupCounts.cjs.js.map +1 -0
  653. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupCounts.es.js +141 -0
  654. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupCounts.es.js.map +1 -0
  655. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  656. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  657. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +12 -8
  658. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  659. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  660. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  661. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +12 -8
  662. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  663. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  664. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  665. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +14 -10
  666. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  667. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  668. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  669. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +15 -11
  670. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  671. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  672. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  673. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +13 -9
  674. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  675. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  676. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  677. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +6 -3
  678. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  679. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  680. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  681. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +25 -22
  682. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  683. package/dist/shared/src/containers/ProjectTreeTable/utils/filterError.cjs.js +2 -0
  684. package/dist/shared/src/containers/ProjectTreeTable/utils/filterError.cjs.js.map +1 -0
  685. package/dist/shared/src/containers/ProjectTreeTable/utils/filterError.es.js +30 -0
  686. package/dist/shared/src/containers/ProjectTreeTable/utils/filterError.es.js.map +1 -0
  687. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.cjs.js +2 -0
  688. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.cjs.js.map +1 -0
  689. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.es.js +32 -0
  690. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.es.js.map +1 -0
  691. package/dist/shared/src/containers/ProjectTreeTable/utils/getGroupQueries.cjs.js +2 -0
  692. package/dist/shared/src/containers/ProjectTreeTable/utils/getGroupQueries.cjs.js.map +1 -0
  693. package/dist/shared/src/containers/ProjectTreeTable/utils/getGroupQueries.es.js +36 -0
  694. package/dist/shared/src/containers/ProjectTreeTable/utils/getGroupQueries.es.js.map +1 -0
  695. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.cjs.js +1 -1
  696. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.cjs.js.map +1 -1
  697. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.es.js +4 -5
  698. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.es.js.map +1 -1
  699. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +1 -1
  700. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  701. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +18 -14
  702. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  703. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
  704. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  705. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +16 -12
  706. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  707. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +1 -1
  708. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
  709. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +18 -14
  710. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
  711. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js +10 -10
  712. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js.map +1 -1
  713. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.es.js +36 -32
  714. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.es.js.map +1 -1
  715. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +2 -2
  716. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  717. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +26 -22
  718. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  719. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +1 -1
  720. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
  721. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +6 -3
  722. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
  723. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  724. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  725. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +16 -12
  726. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  727. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  728. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  729. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +13 -9
  730. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  731. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +1 -1
  732. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
  733. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +6 -3
  734. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
  735. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +1 -1
  736. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  737. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +5 -2
  738. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  739. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +1 -1
  740. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  741. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +5 -2
  742. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  743. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  744. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  745. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +75 -49
  746. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  747. package/dist/shared/src/containers/RepresentationsList/versionsToRepresentations.cjs.js +1 -1
  748. package/dist/shared/src/containers/RepresentationsList/versionsToRepresentations.cjs.js.map +1 -1
  749. package/dist/shared/src/containers/RepresentationsList/versionsToRepresentations.es.js +11 -10
  750. package/dist/shared/src/containers/RepresentationsList/versionsToRepresentations.es.js.map +1 -1
  751. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  752. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  753. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +277 -211
  754. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  755. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.cjs.js +83 -5
  756. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.cjs.js.map +1 -1
  757. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.es.js +89 -11
  758. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.es.js.map +1 -1
  759. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.cjs.js +1 -1
  760. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.cjs.js.map +1 -1
  761. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.es.js +149 -97
  762. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.es.js.map +1 -1
  763. package/dist/shared/src/containers/SimpleTable/hooks/useRowKeydown.cjs.js +1 -1
  764. package/dist/shared/src/containers/SimpleTable/hooks/useRowKeydown.cjs.js.map +1 -1
  765. package/dist/shared/src/containers/SimpleTable/hooks/useRowKeydown.es.js +15 -11
  766. package/dist/shared/src/containers/SimpleTable/hooks/useRowKeydown.es.js.map +1 -1
  767. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +1 -1
  768. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
  769. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +6 -3
  770. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
  771. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  772. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  773. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +18 -14
  774. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  775. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  776. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  777. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +62 -58
  778. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  779. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
  780. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
  781. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +6 -3
  782. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
  783. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
  784. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
  785. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +6 -3
  786. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
  787. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js +1 -1
  788. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js.map +1 -1
  789. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js +13 -9
  790. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js.map +1 -1
  791. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
  792. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
  793. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +6 -3
  794. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
  795. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js +1 -1
  796. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js.map +1 -1
  797. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js +6 -3
  798. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js.map +1 -1
  799. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js +1 -1
  800. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js.map +1 -1
  801. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js +6 -3
  802. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js.map +1 -1
  803. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js +1 -1
  804. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js.map +1 -1
  805. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js +6 -3
  806. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js.map +1 -1
  807. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  808. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  809. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +6 -3
  810. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  811. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js +1 -1
  812. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -1
  813. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js +5 -2
  814. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -1
  815. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js +1 -1
  816. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js.map +1 -1
  817. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js +5 -2
  818. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js.map +1 -1
  819. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  820. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  821. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +6 -3
  822. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  823. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  824. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  825. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +16 -12
  826. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  827. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +1 -1
  828. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  829. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +6 -3
  830. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  831. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  832. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  833. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +23 -20
  834. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  835. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js +1 -1
  836. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js.map +1 -1
  837. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js +5 -2
  838. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js.map +1 -1
  839. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
  840. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  841. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +5 -2
  842. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  843. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
  844. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
  845. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +5 -2
  846. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
  847. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  848. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  849. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +9 -6
  850. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  851. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +1 -1
  852. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -1
  853. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +5 -2
  854. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -1
  855. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +1 -1
  856. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  857. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +5 -2
  858. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  859. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  860. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  861. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +5 -2
  862. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  863. package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
  864. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  865. package/dist/shared/src/context/AddonProjectContext.es.js +7 -4
  866. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  867. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  868. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  869. package/dist/shared/src/context/DetailsPanelContext.es.js +20 -17
  870. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  871. package/dist/shared/src/context/GlobalContext.cjs.js +1 -1
  872. package/dist/shared/src/context/GlobalContext.cjs.js.map +1 -1
  873. package/dist/shared/src/context/GlobalContext.es.js +7 -4
  874. package/dist/shared/src/context/GlobalContext.es.js.map +1 -1
  875. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  876. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  877. package/dist/shared/src/context/PowerpackContext.es.js +10 -7
  878. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  879. package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
  880. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
  881. package/dist/shared/src/context/ProjectContext.es.js +16 -13
  882. package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
  883. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  884. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  885. package/dist/shared/src/context/ProjectFoldersContext.es.js +36 -32
  886. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  887. package/dist/shared/src/context/ProjectFoldersContextInstance.cjs.js +2 -0
  888. package/dist/shared/src/context/ProjectFoldersContextInstance.cjs.js.map +1 -0
  889. package/dist/shared/src/context/ProjectFoldersContextInstance.es.js +8 -0
  890. package/dist/shared/src/context/ProjectFoldersContextInstance.es.js.map +1 -0
  891. package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
  892. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  893. package/dist/shared/src/context/RemoteModulesContext.es.js +7 -4
  894. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  895. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  896. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  897. package/dist/shared/src/context/SubtasksModulesContext.es.js +8 -5
  898. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  899. package/dist/shared/src/context/UriContext.cjs.js +1 -1
  900. package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
  901. package/dist/shared/src/context/UriContext.es.js +8 -5
  902. package/dist/shared/src/context/UriContext.es.js.map +1 -1
  903. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  904. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  905. package/dist/shared/src/context/WebsocketContext.es.js +20 -16
  906. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  907. package/dist/shared/src/hooks/useActionTriggers.cjs.js +1 -1
  908. package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
  909. package/dist/shared/src/hooks/useActionTriggers.es.js +5 -2
  910. package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
  911. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  912. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  913. package/dist/shared/src/hooks/useEntityUpdate.es.js +6 -3
  914. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  915. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js +1 -1
  916. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js.map +1 -1
  917. package/dist/shared/src/hooks/useGetEntityGroups.es.js +5 -2
  918. package/dist/shared/src/hooks/useGetEntityGroups.es.js.map +1 -1
  919. package/dist/shared/src/hooks/useGetProductionAddon.cjs.js +1 -1
  920. package/dist/shared/src/hooks/useGetProductionAddon.cjs.js.map +1 -1
  921. package/dist/shared/src/hooks/useGetProductionAddon.es.js +5 -2
  922. package/dist/shared/src/hooks/useGetProductionAddon.es.js.map +1 -1
  923. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  924. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  925. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +15 -21
  926. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  927. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
  928. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
  929. package/dist/shared/src/hooks/useHierarchyTable.es.js +5 -2
  930. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
  931. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js +1 -1
  932. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js.map +1 -1
  933. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js +5 -2
  934. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js.map +1 -1
  935. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +1 -1
  936. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  937. package/dist/shared/src/hooks/useScopedStatuses.es.js +7 -4
  938. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  939. package/dist/shared/src/hooks/useScopedTypes.cjs.js +1 -1
  940. package/dist/shared/src/hooks/useScopedTypes.cjs.js.map +1 -1
  941. package/dist/shared/src/hooks/useScopedTypes.es.js +5 -2
  942. package/dist/shared/src/hooks/useScopedTypes.es.js.map +1 -1
  943. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  944. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  945. package/dist/shared/src/hooks/useUserProjectConfig.es.js +6 -3
  946. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  947. package/dist/shared/src/util/getBundleMode.cjs.js +1 -1
  948. package/dist/shared/src/util/getBundleMode.cjs.js.map +1 -1
  949. package/dist/shared/src/util/getBundleMode.es.js +6 -3
  950. package/dist/shared/src/util/getBundleMode.es.js.map +1 -1
  951. package/dist/shared/src/util/replaceRoot.cjs.js +2 -0
  952. package/dist/shared/src/util/replaceRoot.cjs.js.map +1 -0
  953. package/dist/shared/src/util/replaceRoot.es.js +11 -0
  954. package/dist/shared/src/util/replaceRoot.es.js.map +1 -0
  955. package/dist/types/api/generated/graphql.d.ts +20 -0
  956. package/dist/types/api/generated/graphqlLinks.d.ts +1 -0
  957. package/dist/types/api/queries/activities/getActivities.d.ts +6 -0
  958. package/dist/types/api/queries/bundles/getBundles.d.ts +951 -0
  959. package/dist/types/api/queries/bundles/index.d.ts +2 -0
  960. package/dist/types/api/queries/bundles/updateBundles.d.ts +1027 -0
  961. package/dist/types/api/queries/columnStats/groupCounts.d.ts +17 -0
  962. package/dist/types/api/queries/columnStats/index.d.ts +1 -0
  963. package/dist/types/api/queries/columnStats/metricTargets.d.ts +8 -1
  964. package/dist/types/api/queries/entities/getEntity.d.ts +3 -0
  965. package/dist/types/api/queries/entities/getEntityPanel.d.ts +3 -0
  966. package/dist/types/api/queries/entities/updateEntity.d.ts +3 -0
  967. package/dist/types/api/queries/entityLists/getLists.d.ts +3 -0
  968. package/dist/types/api/queries/index.d.ts +1 -0
  969. package/dist/types/api/queries/overview/getOverview.d.ts +95 -38
  970. package/dist/types/api/queries/project/getProject.d.ts +3 -0
  971. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +3 -0
  972. package/dist/types/api/queries/users/getUsers.d.ts +3 -0
  973. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +6 -0
  974. package/dist/types/components/Feedback/FeedbackContext.d.ts +1 -0
  975. package/dist/types/components/FilterErrorActions/FilterErrorActions.d.ts +5 -0
  976. package/dist/types/components/FilterErrorActions/index.d.ts +2 -0
  977. package/dist/types/components/InfoMessage/InfoMessage.d.ts +14 -0
  978. package/dist/types/components/InfoMessage/InfoMessage.styled.d.ts +1 -0
  979. package/dist/types/components/InfoMessage/index.d.ts +3 -0
  980. package/dist/types/components/VersionUploader/context/VersionUploadContext.d.ts +1 -1
  981. package/dist/types/components/VersionUploader/context/VersionUploadContextInstance.d.ts +2 -0
  982. package/dist/types/components/index.d.ts +2 -0
  983. package/dist/types/containers/Actions/ActionsDropdown/ActionsDropdown.d.ts +2 -1
  984. package/dist/types/containers/EntityPickerDialog/EntityPickerDialog.d.ts +1 -0
  985. package/dist/types/containers/ListTable/ListTable.d.ts +1 -1
  986. package/dist/types/containers/ListTable/ListTable.types.d.ts +4 -1
  987. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +2 -1
  988. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.styled.d.ts +1 -0
  989. package/dist/types/containers/ProjectTreeTable/components/TableFooterRow.d.ts +1 -0
  990. package/dist/types/containers/ProjectTreeTable/context/ProjectDataContextInstance.d.ts +2 -0
  991. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +88 -6
  992. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContextInstance.d.ts +2 -0
  993. package/dist/types/containers/ProjectTreeTable/context/index.d.ts +0 -1
  994. package/dist/types/containers/ProjectTreeTable/hooks/index.d.ts +1 -0
  995. package/dist/types/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.d.ts +5 -2
  996. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +7 -2
  997. package/dist/types/containers/ProjectTreeTable/hooks/useGroupCounts.d.ts +39 -0
  998. package/dist/types/containers/ProjectTreeTable/types/index.d.ts +6 -0
  999. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +7 -2
  1000. package/dist/types/containers/ProjectTreeTable/utils/filterError.d.ts +11 -0
  1001. package/dist/types/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.d.ts +10 -0
  1002. package/dist/types/containers/ProjectTreeTable/utils/getGroupQueries.d.ts +17 -0
  1003. package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +2 -0
  1004. package/dist/types/containers/ProjectTreeTable/utils/pinningUtils.d.ts +0 -1
  1005. package/dist/types/containers/ProjectTreeTable/widgets/GroupHeaderWidget.d.ts +2 -1
  1006. package/dist/types/containers/RepresentationsList/versionsToRepresentations.d.ts +1 -0
  1007. package/dist/types/containers/SimpleTable/SimpleTable.d.ts +1 -64
  1008. package/dist/types/containers/SimpleTable/SimpleTable.types.d.ts +79 -0
  1009. package/dist/types/containers/SimpleTable/SimpleTableRowTemplate.d.ts +13 -1
  1010. package/dist/types/containers/SimpleTable/hooks/useRowKeydown.d.ts +2 -1
  1011. package/dist/types/containers/SimpleTable/index.d.ts +1 -0
  1012. package/dist/types/containers/Slicer/context/SlicerContext.d.ts +6 -1
  1013. package/dist/types/context/ProjectFoldersContextInstance.d.ts +2 -0
  1014. package/dist/types/hooks/useGroupByRemoteModules.d.ts +0 -17
  1015. package/dist/types/util/index.d.ts +1 -0
  1016. package/dist/types/util/replaceRoot.d.ts +1 -0
  1017. package/dist/util.cjs.js +1 -1
  1018. package/dist/util.es.js +21 -19
  1019. package/dist/util.es.js.map +1 -1
  1020. package/package.json +2 -2
  1021. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +0 -2
  1022. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +0 -1
  1023. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +0 -326
  1024. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +0 -1
  1025. package/dist/types/containers/ProjectTreeTable/context/ProjectTableProvider.d.ts +0 -81
@@ -1 +1 @@
1
- {"version":3,"file":"getVersionsProducts.es.js","sources":["../../../../../../src/api/queries/versions/getVersionsProducts.ts"],"sourcesContent":["// QUERIES FOR THE VERSIONS PAGE, FETCHING AND UPDATING DATA\n// Uses a separate graphqlVersionsApi for increased IDE speed\n\n// There are 4 main fetch requests:\n\n// Versions Only:\n// 1. GetVersions - fetches all versions in the project for given filtering and with pagination\n\n// Products and Versions (stacked):\n// 2. GetProducts - fetches all products in the project based on product and version filtering\n// 3. GetVersionsByProducts - when a product is expanded, fetches all versions for the products that are expanded. Uses getVersionsByProductId for each parent id. (uses queryFn)\n// 4. GetVersionsByProductId - get all versions for a specific product. Used by getVersionsByProducts only.\n\n// VersionFragment is used in all version queries to ensure consistent data structure\n\nimport {\n DefinitionsFromApi,\n FetchBaseQueryError,\n InfiniteData,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\nimport {\n GetProductsQuery,\n GetProductsQueryVariables,\n GetProductsColumnStatsQuery,\n GetVersionsByProductIdQueryVariables,\n GetVersionsColumnStatsQuery,\n GetVersionsQuery,\n GetVersionsQueryVariables,\n gqlApi,\n PageInfo,\n VpFolderFragment,\n} from '@shared/api/generated'\nimport {\n parseGQLErrorMessage,\n provideTagsForProductsInfinite,\n provideTagsForProductsResult,\n provideTagsForVersionsInfinite,\n provideTagsForVersionsResult,\n transformProductsResponse,\n transformVersionsResponse,\n} from './getVersionsProductsUtils'\nimport { parseAllAttribs } from '../overview'\nimport PubSub from '@shared/util/pubsub'\nimport { subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport type { FieldStats } from '../columnStats'\nimport {\n normalizeFieldStats,\n mergeFieldStats,\n hasNewTargetFields,\n transformStatsError,\n} from '../columnStats'\n\n// SHARED CACHE UPDATE HELPERS\n// These helpers are used by PubSub handlers to update cached data in real-time\n\n/**\n * Finds the correct insertion index for a new item in a sorted array\n * Used when adding new items to maintain sort order\n */\nfunction findSortedInsertIndex<T>(items: T[], newItem: T, sortBy: keyof T, desc: boolean): number {\n for (let i = 0; i < items.length; i++) {\n const newValue = newItem[sortBy]\n const currentValue = items[i][sortBy]\n const shouldInsert = desc ? newValue > currentValue : newValue < currentValue\n\n if (shouldInsert) {\n return i\n }\n }\n return items.length\n}\n\n/**\n * Updates a paginated cache (draft.pages[].items[]) with a new/updated/deleted item\n * Handles: update existing, delete if not in response, add at sorted position\n *\n * @param pages - Array of page objects containing items arrays\n * @param entityId - ID of the entity to update/delete/add\n * @param updatedItem - The updated item, or undefined if deleted\n * @param itemsKey - Key to access items array in each page ('versions' or 'products')\n * @param sortBy - Property to sort by when inserting new items\n * @param desc - Sort direction (true = descending)\n */\nfunction updatePagedCache<T extends { id: string }>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n pages: any[],\n entityId: string,\n updatedItem: T | undefined,\n itemsKey: string,\n sortBy: keyof T,\n desc: boolean,\n): void {\n // Search for existing item in all pages\n for (const page of pages) {\n const items = page[itemsKey] as T[]\n const index = items.findIndex((item) => item.id === entityId)\n\n if (index !== -1) {\n if (updatedItem) {\n // Update existing item\n items[index] = updatedItem\n } else {\n // Item no longer exists or doesn't match filters - remove it\n items.splice(index, 1)\n }\n return\n }\n }\n\n // Item not found in cache - add at correct sorted position in first page\n if (updatedItem && pages.length > 0) {\n const items = pages[0][itemsKey] as T[]\n const insertIndex = findSortedInsertIndex(items, updatedItem, sortBy, desc)\n items.splice(insertIndex, 0, updatedItem)\n }\n}\n\n/**\n * Updates a flat cache (draft.items[]) with a new/updated/deleted item\n * Handles: update existing, delete if not in response, add new\n */\nfunction updateFlatCache<T extends { id: string }>(\n items: T[],\n entityId: string,\n updatedItem: T | undefined,\n): { index: number; action: 'updated' | 'deleted' | 'added' | 'none' } {\n const index = items.findIndex((item) => item.id === entityId)\n\n if (index !== -1) {\n if (updatedItem) {\n items[index] = updatedItem\n return { index, action: 'updated' }\n } else {\n items.splice(index, 1)\n return { index, action: 'deleted' }\n }\n } else if (updatedItem) {\n items.push(updatedItem)\n return { index: items.length - 1, action: 'added' }\n }\n\n return { index: -1, action: 'none' }\n}\n\n// Query result types\nexport type FolderAttribNode = VpFolderFragment & {\n attrib: Record<string, any> // parsed from allAttrib JSON string\n}\nexport type VersionNodeRAW = GetVersionsQuery['project']['versions']['edges'][0]['node']\nexport type VersionNode = VersionNodeRAW & {\n attrib: Record<string, any> // parsed from allAttrib JSON string\n product: VersionNodeRAW['product'] & {\n attrib: Record<string, any> // parsed from allAttrib JSON string\n folder: FolderAttribNode // folder with parsed attribs\n }\n groups?: { value?: string; hasNextPage?: string }[] // grouping metadata\n}\nexport type ProductNodeRAW = GetProductsQuery['project']['products']['edges'][0]['node']\nexport type ProductNode = Omit<ProductNodeRAW, 'versions'> & {\n attrib: Record<string, any> // parsed from allAttrib JSON string\n featuredVersion?: VersionNode | null // added separately\n folder: FolderAttribNode // folder with parsed attribs\n versions: {\n id: string\n name: string\n version: number\n heroVersionId?: string | null\n }[] // versions with isHero flag\n}\n\nexport type GetVersionsResult = {\n pageInfo?: PageInfo\n versions: VersionNode[]\n errors?: Array<{ productId: string; error: string }>\n}\n\n// for infinite query args\nexport type GetVersionsArgs = Omit<GetVersionsQueryVariables, 'cursor'> & {\n desc?: boolean // sort direction\n}\n\n// for paginated queries in infinite query\ntype VersionsPageParam = {\n cursor: string\n desc?: boolean\n}\n\nexport type GetProductsArgs = Omit<GetProductsQueryVariables, 'cursor' | 'versionIds'> & {\n desc?: boolean // sort direction\n}\n\ntype ProductsPageParam = {\n cursor: string\n desc?: boolean\n}\n\ntype GetVersionsByProductsArgs = GetVersionsByProductIdQueryVariables & {\n productIds: string[]\n desc?: boolean\n}\n\nexport type GetGroupedVersionsListArgs = {\n projectName: string\n groups: { filter: string; count?: number | null; value: string }[]\n groupFilterKey?: string\n versionFilter?: string\n productFilter?: string\n taskFilter?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n featuredOnly?: string[]\n hasReviewables?: boolean\n}\n\nexport type GetGroupedVersionsListResult = {\n versions: VersionNode[]\n}\n\nexport type VersionInfiniteResult = InfiniteData<GetVersionsResult, VersionsPageParam> | undefined\n\nexport type ProductInfiniteResult = InfiniteData<GetProductsResult, ProductsPageParam> | undefined\n\nexport type GetProductsResult = {\n pageInfo: PageInfo\n products: ProductNode[]\n}\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetVersions'> & {\n GetVersions: OverrideResultType<Definitions['GetVersions'], GetVersionsResult>\n GetVersionsByProductId: OverrideResultType<Definitions['GetVersions'], GetVersionsResult>\n GetProducts: OverrideResultType<Definitions['GetProducts'], GetProductsResult>\n GetProductsColumnStats: OverrideResultType<Definitions['GetProductsColumnStats'], FieldStats[]>\n GetVersionsColumnStats: OverrideResultType<Definitions['GetVersionsColumnStats'], FieldStats[]>\n}\n\nconst enhancedVersionsPageApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // used by both stacked and non-stacked views\n GetVersions: {\n transformResponse: transformVersionsResponse,\n providesTags: provideTagsForVersionsResult,\n },\n // used by getVersionsByProducts only\n GetVersionsByProductId: {\n transformResponse: transformVersionsResponse,\n providesTags: provideTagsForVersionsResult,\n },\n // used by getProductsInfinite only\n GetProducts: {\n transformResponse: transformProductsResponse,\n providesTags: provideTagsForProductsResult,\n },\n // footer stats: `targets` excluded from cache key + responses merged,\n // so column toggles reuse cache and only added targets refetch\n GetProductsColumnStats: {\n transformResponse: (res: GetProductsColumnStatsQuery) =>\n normalizeFieldStats(res?.project?.products?.fieldStats ?? []),\n transformErrorResponse: (error: any) => transformStatsError(error, 'product'),\n serializeQueryArgs: ({ queryArgs: { targets: _t, ...rest } }) => rest,\n merge: (cache, incoming) => mergeFieldStats(incoming, cache),\n forceRefetch: ({ currentArg, previousArg }) => hasNewTargetFields(currentArg, previousArg),\n providesTags: (_r, _e, { projectName }) => [{ type: 'productColumnStats', id: projectName }],\n },\n GetVersionsColumnStats: {\n transformResponse: (res: GetVersionsColumnStatsQuery) =>\n normalizeFieldStats(res?.project?.versions?.fieldStats ?? []),\n transformErrorResponse: (error: any) => transformStatsError(error, 'version'),\n serializeQueryArgs: ({ queryArgs: { targets: _t, ...rest } }) => rest,\n merge: (cache, incoming) => mergeFieldStats(incoming, cache),\n forceRefetch: ({ currentArg, previousArg }) => hasNewTargetFields(currentArg, previousArg),\n providesTags: (_r, _e, { projectName }) => [{ type: 'versionColumnStats', id: projectName }],\n },\n },\n})\n\nexport const VP_INFINITE_QUERY_COUNT = 250 // Number of items to fetch per page\nconst VERSIONS_BY_PRODUCT_ID_QUERY_COUNT = 1000 // max number of versions to fetch per product id\nconst MAX_PAGES_PER_PRODUCT = 10 // Hard cutoff to prevent infinite loops\n\nconst VERSION_UPDATE_BATCH_DEBOUNCE = 5000 // ms to wait before processing batched updates\nconst VERSION_UPDATE_ATTRIB_JITTER = 1000 // max ms of random jitter for attribute fetches\nconst VERSION_UPDATE_NEW_DATA_DEBOUNCE = 30000 // ms to wait before fetching new version data in batch\nconst VERSION_UPDATE_NEW_DATA_JITTER = 1500 // max ms of random jitter for new version data fetches\n\n/**\n * Reusable handler for websocket version updates to perform efficient batched cache updates\n */\nfunction createVersionUpdateBatcher(\n projectName: string,\n dispatch: any,\n handlers: {\n checkVersionInCache: (entityId: string, parentId?: string) => boolean\n onBatchUpdate: (changes: {\n deleted?: { entityId: string; parentId?: string }[]\n patched?: { entityId: string; field: string; value: any; parentId?: string }[]\n attribPatched?: { entityId: string; allAttrib: string; parsedAttrib: any }[]\n fullUpdated?: VersionNode[]\n }) => void\n getBaseFilters?: () => any\n },\n) {\n let pendingPatchUpdates: { topic: string; message: any }[] = []\n let patchTimeoutId: ReturnType<typeof setTimeout> | null = null\n\n let pendingFullFetchIds = new Set<string>()\n let fullFetchTimeoutId: ReturnType<typeof setTimeout> | null = null\n\n const processPatches = async () => {\n const updates = [...pendingPatchUpdates]\n pendingPatchUpdates = []\n patchTimeoutId = null\n\n const deleted: { entityId: string; parentId?: string }[] = []\n const patched: { entityId: string; field: string; value: any; parentId?: string }[] = []\n const attribsToFetch = new Set<string>()\n\n for (const { topic, message: msg } of updates) {\n const entityId = msg.summary?.entityId\n const parentId = msg.summary?.parentId\n if (!entityId) continue\n\n if (topic === 'entity.version.deleted') {\n deleted.push({ entityId, parentId })\n } else if (topic.startsWith('entity.version.') && topic.endsWith('_changed')) {\n const versionFound = handlers.checkVersionInCache(entityId, parentId)\n if (!versionFound) continue\n\n const field = topic.split('.')[2].split('_changed')[0]\n\n if (field === 'attrib') {\n attribsToFetch.add(entityId)\n continue\n }\n\n const supportedFields = ['status', 'tags'] as const\n const isFieldSupported = supportedFields.includes(field as any)\n const value = msg.summary?.value\n\n if (!value || !isFieldSupported) {\n pendingFullFetchIds.add(entityId)\n continue\n }\n\n let castValue: any = value\n if (field === 'status') {\n castValue = String(value)\n } else if (field === 'tags') {\n castValue = Array.isArray(value) ? (value as string[]) : []\n }\n\n patched.push({ entityId, field, value: castValue, parentId })\n }\n }\n\n // Trigger full fetch if any unsupported changes were moved there\n if (pendingFullFetchIds.size > 0 && !fullFetchTimeoutId) {\n fullFetchTimeoutId = setTimeout(processFullFetches, VERSION_UPDATE_NEW_DATA_DEBOUNCE)\n }\n\n const attribPatched: { entityId: string; allAttrib: string; parsedAttrib: any }[] = []\n if (attribsToFetch.size > 0 && dispatch) {\n try {\n await new Promise((resolve) =>\n setTimeout(resolve, Math.random() * VERSION_UPDATE_ATTRIB_JITTER),\n )\n\n const versionIds = Array.from(attribsToFetch)\n const result = await dispatch(\n enhancedVersionsPageApi.endpoints.GetVersionsAttribs.initiate(\n { projectName, versionIds },\n { forceRefetch: true },\n ),\n )\n\n if (result.data?.project?.versions?.edges) {\n for (const edge of result.data.project.versions.edges) {\n const node = edge.node\n if (node) {\n attribPatched.push({\n entityId: node.id,\n allAttrib: node.allAttrib,\n parsedAttrib: parseAllAttribs(node.allAttrib),\n })\n }\n }\n }\n } catch (e) {\n console.error('Failed to fetch patched version attribs', e)\n }\n }\n\n if (deleted.length > 0 || patched.length > 0 || attribPatched.length > 0) {\n handlers.onBatchUpdate({ deleted, patched, attribPatched })\n }\n }\n\n const processFullFetches = async () => {\n const versionIds = Array.from(pendingFullFetchIds)\n pendingFullFetchIds.clear()\n fullFetchTimeoutId = null\n\n if (versionIds.length === 0 || !dispatch) return\n\n try {\n // Jitter fetch to prevent thundering herd\n await new Promise((resolve) =>\n setTimeout(resolve, Math.random() * VERSION_UPDATE_NEW_DATA_JITTER),\n )\n\n const baseFilters = handlers.getBaseFilters?.() || {}\n const result = await dispatch(\n enhancedVersionsPageApi.endpoints.GetVersions.initiate({\n ...baseFilters,\n projectName,\n versionIds,\n }),\n )\n\n if (result.data?.versions) {\n handlers.onBatchUpdate({ fullUpdated: result.data.versions })\n }\n } catch (e) {\n console.error('Failed to fetch full version data batch', e)\n }\n }\n\n return (topic: string, message: any) => {\n const project = message.project\n if (project !== projectName) return\n\n const entityId = message.summary?.entityId\n if (!entityId) return\n\n if (topic === 'entity.version.created') {\n pendingFullFetchIds.add(entityId)\n if (!fullFetchTimeoutId) {\n fullFetchTimeoutId = setTimeout(processFullFetches, VERSION_UPDATE_NEW_DATA_DEBOUNCE)\n }\n } else {\n pendingPatchUpdates.push({ topic, message })\n if (patchTimeoutId) clearTimeout(patchTimeoutId)\n patchTimeoutId = setTimeout(processPatches, VERSION_UPDATE_BATCH_DEBOUNCE)\n }\n }\n}\n\nconst injectedVersionsPageApi = enhancedVersionsPageApi.injectEndpoints({\n endpoints: (build) => ({\n // enhance GetVersions with an infinite query\n getVersionsInfinite: build.infiniteQuery<GetVersionsResult, GetVersionsArgs, VersionsPageParam>(\n {\n infiniteQueryOptions: {\n initialPageParam: { cursor: '', desc: false },\n // Calculate the next page param based on current page response and params\n getNextPageParam: (lastPage, _allPages, lastPageParam, _allPageParams) => {\n // Use the endCursor from the query as the next page param\n const pageInfo = lastPage.pageInfo\n const desc = lastPageParam.desc\n const hasNextPage = desc ? pageInfo?.hasPreviousPage : pageInfo?.hasNextPage\n\n if (!hasNextPage || !pageInfo?.endCursor) return undefined\n\n return {\n cursor: pageInfo?.endCursor,\n desc: lastPageParam.desc,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { sortBy, desc, folderIds, ...rest } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetVersions query\n const queryParams: any = {\n ...rest,\n }\n\n // Add cursor-based pagination\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.last = VP_INFINITE_QUERY_COUNT\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = VP_INFINITE_QUERY_COUNT\n }\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = VP_INFINITE_QUERY_COUNT\n }\n\n // if folderIds have a length, add them to the query params\n if (folderIds && folderIds.length) {\n queryParams.folderIds = folderIds\n }\n\n // Call the existing GetVersions gql query\n const result = await api.dispatch(\n enhancedVersionsPageApi.endpoints.GetVersions.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) throw result.error\n const fallback = {\n versions: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n }\n\n // Return the versions directly as required by the infinite query format\n return {\n data: result.data || fallback,\n }\n } catch (e: any) {\n console.error('Error in getVersionsInfiniteQuery queryFn:', e)\n return {\n error: {\n status: 'FETCH_ERROR',\n error: parseGQLErrorMessage(e.message),\n } as FetchBaseQueryError,\n }\n }\n },\n providesTags: provideTagsForVersionsInfinite,\n keepUnusedDataFor: 30,\n // Subscribes to version entity changes and updates cache accordingly\n // Handles: create, update, delete operations\n onCacheEntryAdded: async (\n arg,\n { getCacheEntry, updateCachedData, cacheEntryRemoved, dispatch },\n ) => {\n let unsubscribeThumbnails: (() => void) | undefined\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const relevantMessages = messages.filter((m) => m.project === arg.projectName)\n if (!relevantMessages.length) return\n\n updateCachedData((draft) => {\n relevantMessages.forEach((message) => {\n if (message.summary.entityType === 'version') {\n draft.pages.forEach((page) => {\n const vIndex = page.versions.findIndex(\n (v) => v.id === message.summary.entityId,\n )\n if (vIndex !== -1) {\n page.versions[vIndex].thumbnailHash = message.summary.thumbnailHash || ''\n }\n })\n }\n })\n })\n },\n ['version'],\n )\n\n const token = PubSub.subscribe(\n 'entity.version',\n createVersionUpdateBatcher(arg.projectName, dispatch, {\n getBaseFilters: () => ({\n versionFilter: arg.versionFilter,\n productFilter: arg.productFilter,\n taskFilter: arg.taskFilter,\n folderIds: arg.folderIds?.length ? arg.folderIds : undefined,\n featuredOnly: arg.featuredOnly,\n hasReviewables: arg.hasReviewables,\n sortBy: arg.sortBy,\n }),\n checkVersionInCache: (entityId) => {\n const cacheVersions = getCacheEntry().data\n if (!cacheVersions) return false\n for (const page of cacheVersions.pages || []) {\n if (page.versions.some((v) => v.id === entityId)) return true\n }\n return false\n },\n onBatchUpdate: ({ deleted, patched, attribPatched, fullUpdated }) => {\n updateCachedData((draft) => {\n for (const page of draft?.pages || []) {\n // Handle deletes\n if (deleted) {\n for (const { entityId } of deleted) {\n const vIndex = page.versions.findIndex((v) => v.id === entityId)\n if (vIndex !== -1) page.versions.splice(vIndex, 1)\n }\n }\n // Handle simple patches\n if (patched) {\n for (const { entityId, field, value } of patched) {\n const version = page.versions.find((v) => v.id === entityId)\n if (version) {\n // @ts-expect-error valid field\n version[field] = value\n }\n }\n }\n // Handle attrib patched\n if (attribPatched) {\n for (const { entityId, allAttrib, parsedAttrib } of attribPatched) {\n const version = page.versions.find((v) => v.id === entityId)\n if (version) {\n version.allAttrib = allAttrib\n version.attrib = parsedAttrib\n }\n }\n }\n // Handle full updates\n if (fullUpdated) {\n for (const updatedNode of fullUpdated) {\n const vIndex = page.versions.findIndex((v) => v.id === updatedNode.id)\n if (vIndex !== -1) {\n page.versions[vIndex] = updatedNode\n } else {\n // New version not in cache, try to insert in first page if it fits sort\n // (This is a simplification, full refetch is usually better for new items in pagination)\n const sortKey = (arg.sortBy || 'createdAt') as keyof VersionNode\n const insertIndex = findSortedInsertIndex(\n page.versions,\n updatedNode,\n sortKey,\n arg.desc || false,\n )\n // Only insert if it's within current page bounds or we are on first page\n if (page === draft.pages[0]) {\n page.versions.splice(insertIndex, 0, updatedNode)\n }\n }\n }\n }\n }\n })\n },\n }),\n )\n\n // Cleanup: unsubscribe when cache entry is removed\n await cacheEntryRemoved\n PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n },\n },\n ),\n\n // custom query function that fetches versions by multiple parent ids -not infinite and gets 1000 versions max\n getVersionsByProducts: build.query<GetVersionsResult, GetVersionsByProductsArgs>({\n queryFn: async (args, { dispatch, forced }) => {\n const { productIds = [], desc, ...rest } = args\n\n // Helper function to fetch a page of versions\n const fetchVersionsPage = async (productId: string, cursor?: string) => {\n const queryParams: GetVersionsByProductIdQueryVariables = {\n ...rest,\n productIds: [productId],\n }\n\n if (desc) {\n if (cursor) queryParams.before = cursor\n queryParams.last = VERSIONS_BY_PRODUCT_ID_QUERY_COUNT\n } else {\n if (cursor) queryParams.after = cursor\n queryParams.first = VERSIONS_BY_PRODUCT_ID_QUERY_COUNT\n }\n\n return dispatch(\n enhancedVersionsPageApi.endpoints.GetVersionsByProductId.initiate(queryParams, {\n forceRefetch: forced,\n }),\n )\n }\n\n // for each product id, call getVersionsByProductId\n const promises = productIds.map((productId) => fetchVersionsPage(productId))\n\n // wait for all requests to settle (either fulfilled or rejected)\n const settledResults = await Promise.allSettled(promises)\n\n // Collect all versions from initial queries\n const allVersions: VersionNode[] = []\n const errors: Array<{ productId: string; error: any }> = []\n\n // Check each result for additional pages and fetch them if needed\n for (let i = 0; i < settledResults.length; i++) {\n const settledResult = settledResults[i]\n const productId = productIds[i]\n\n // Handle rejected promises\n if (settledResult.status === 'rejected') {\n console.error(`Error fetching versions for product ${productId}:`, settledResult.reason)\n errors.push({ productId, error: parseGQLErrorMessage(settledResult.reason) })\n continue\n }\n\n // Handle errors in fulfilled promises\n const result = settledResult.value\n if (result.error) {\n console.error(`Error fetching versions for product ${productId}:`, result.error)\n errors.push({\n productId,\n // @ts-expect-error - message\n error: parseGQLErrorMessage(result.error?.message || 'Unknown error'),\n })\n continue\n }\n\n if (!result.data) continue\n\n // Add initial page versions\n allVersions.push(...result.data.versions)\n\n // Check if there are more pages to fetch\n let pageInfo = result.data.pageInfo\n let pageCount = 1\n\n while (pageInfo && pageCount < MAX_PAGES_PER_PRODUCT) {\n const hasNextPage = desc ? pageInfo.hasPreviousPage : pageInfo.hasNextPage\n const cursor = pageInfo.endCursor\n\n if (!hasNextPage || !cursor) break\n\n // Fetch next page\n const nextPageResult = await fetchVersionsPage(productId, cursor)\n\n if (nextPageResult.error) {\n console.error(\n `Error fetching versions page ${pageCount + 1} for product ${productId}:`,\n nextPageResult.error,\n )\n errors.push({ productId, error: nextPageResult.error })\n break\n }\n\n if (!nextPageResult.data) break\n\n allVersions.push(...nextPageResult.data.versions)\n pageInfo = nextPageResult.data.pageInfo\n pageCount++\n }\n }\n\n // If some requests failed but we have data, log warning but return successful data\n if (errors.length > 0) {\n console.warn(\n `Partial success: ${errors.length} of ${productIds.length} products failed to fetch versions`,\n errors,\n )\n }\n\n return {\n data: {\n versions: allVersions,\n pageInfo: undefined, // pageInfo is undefined as we've flattened multiple queries\n errors: errors.length > 0 ? errors : undefined,\n },\n }\n },\n keepUnusedDataFor: 30,\n // Subscribes to version entity changes for expanded products\n // Only updates versions that belong to currently expanded products\n onCacheEntryAdded: async (arg, { updateCachedData, cacheEntryRemoved, dispatch }) => {\n let unsubscribeThumbnails: (() => void) | undefined\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const relevantMessages = messages.filter((m) => m.project === arg.projectName)\n if (!relevantMessages.length) return\n\n updateCachedData((draft) => {\n relevantMessages.forEach((message) => {\n if (message.summary.entityType === 'version') {\n const vIndex = draft.versions.findIndex((v) => v.id === message.summary.entityId)\n if (vIndex !== -1) {\n draft.versions[vIndex].thumbnailHash = message.summary.thumbnailHash || ''\n }\n }\n })\n })\n },\n ['version'],\n )\n\n const token = PubSub.subscribe(\n 'entity.version',\n createVersionUpdateBatcher(arg.projectName, dispatch, {\n getBaseFilters: () => ({\n versionFilter: arg.versionFilter,\n taskFilter: arg.taskFilter,\n productIds: arg.productIds,\n }),\n checkVersionInCache: (entityId, parentId) => {\n if (!parentId || !arg.productIds.includes(parentId)) return false\n let found = false\n updateCachedData((draft) => {\n found = draft.versions.some((v) => v.id === entityId)\n })\n return found\n },\n onBatchUpdate: ({ deleted, patched, attribPatched, fullUpdated }) => {\n updateCachedData((draft) => {\n // Handle deletes\n if (deleted) {\n for (const { entityId } of deleted) {\n const vIndex = draft.versions.findIndex((v) => v.id === entityId)\n if (vIndex !== -1) draft.versions.splice(vIndex, 1)\n }\n }\n // Handle simple patches\n if (patched) {\n for (const { entityId, field, value } of patched) {\n const version = draft.versions.find((v) => v.id === entityId)\n if (version) {\n // @ts-expect-error valid field\n version[field] = value\n }\n }\n }\n // Handle attrib patches\n if (attribPatched) {\n for (const { entityId, allAttrib, parsedAttrib } of attribPatched) {\n const version = draft.versions.find((v) => v.id === entityId)\n if (version) {\n version.allAttrib = allAttrib\n version.attrib = parsedAttrib\n }\n }\n }\n // Handle full updates\n if (fullUpdated) {\n for (const updatedNode of fullUpdated) {\n const index = draft.versions.findIndex((v) => v.id === updatedNode.id)\n if (index !== -1) {\n draft.versions[index] = updatedNode\n } else {\n // Add at correct sorted position\n const sortKey = (arg.sortBy || 'createdAt') as keyof VersionNode\n const insertIndex = findSortedInsertIndex(\n draft.versions,\n updatedNode,\n sortKey,\n arg.desc || false,\n )\n draft.versions.splice(insertIndex, 0, updatedNode)\n }\n }\n }\n })\n },\n }),\n )\n\n // Cleanup: unsubscribe when cache entry is removed\n await cacheEntryRemoved\n PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n },\n providesTags: provideTagsForVersionsResult,\n }),\n\n // enhance GetProducts with an infinite query\n getProductsInfinite: build.infiniteQuery<GetProductsResult, GetProductsArgs, ProductsPageParam>(\n {\n infiniteQueryOptions: {\n initialPageParam: { cursor: '', desc: false },\n // Calculate the next page param based on current page response and params\n getNextPageParam: (lastPage, _allPages, lastPageParam, _allPageParams) => {\n // Use the endCursor from the query as the next page param\n const pageInfo = lastPage.pageInfo\n const desc = lastPageParam.desc\n const hasNextPage = desc ? pageInfo?.hasPreviousPage : pageInfo?.hasNextPage\n\n if (!hasNextPage || !pageInfo?.endCursor) return undefined\n\n return {\n cursor: pageInfo?.endCursor,\n desc: lastPageParam.desc,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n let result\n try {\n const { sortBy, desc, folderIds, ...rest } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetProducts query\n const queryParams: any = {\n ...rest,\n }\n\n // Add cursor-based pagination\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.last = VP_INFINITE_QUERY_COUNT\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = VP_INFINITE_QUERY_COUNT\n }\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = VP_INFINITE_QUERY_COUNT\n }\n\n // if folderIds have a length, add them to the query params\n if (folderIds && folderIds.length) {\n queryParams.folderIds = folderIds\n }\n\n // Call the existing GetProducts gql query\n result = await api.dispatch(\n enhancedVersionsPageApi.endpoints.GetProducts.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) throw result.error\n const fallback = {\n products: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n }\n\n // Return the products directly as required by the infinite query format\n return {\n data: result.data || fallback,\n }\n } catch (e: any) {\n console.error('Error in getProductsInfiniteQuery queryFn:', e)\n return {\n error: {\n status: 'FETCH_ERROR',\n error: parseGQLErrorMessage(e.message),\n } as FetchBaseQueryError,\n }\n }\n },\n providesTags: provideTagsForProductsInfinite,\n keepUnusedDataFor: 30,\n\n // Subscribes to product entity changes and updates cache accordingly\n // Handles: create, update, delete operations\n // Often triggered together with version changes (new product + version)\n\n onCacheEntryAdded: async (arg, { updateCachedData, cacheEntryRemoved, dispatch }) => {\n let unsubscribeThumbnails: (() => void) | undefined\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const relevantMessages = messages.filter((m) => m.project === arg.projectName)\n if (!relevantMessages.length) return\n\n updateCachedData((draft) => {\n relevantMessages.forEach((message) => {\n if (message.summary.entityType === 'version') {\n draft.pages.forEach((page) => {\n page.products.forEach((p) => {\n if (p.featuredVersion?.id === message.summary.entityId) {\n p.featuredVersion.thumbnailHash = message.summary.thumbnailHash || ''\n }\n })\n })\n }\n })\n })\n },\n ['version'],\n )\n\n // Helper to refetch and update a product in cache\n const refetchProduct = async (productId: string) => {\n const queryParams: any = {\n projectName: arg.projectName,\n productIds: [productId],\n productFilter: arg.productFilter,\n versionFilter: arg.versionFilter,\n taskFilter: arg.taskFilter,\n folderIds: arg.folderIds?.length ? arg.folderIds : undefined,\n first: 1,\n }\n\n const result = await dispatch(\n enhancedVersionsPageApi.endpoints.GetProducts.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) return\n\n // Update the cache: update existing, delete if not found, or add new\n updateCachedData((draft) => {\n const updatedProduct = result.data?.products?.[0]\n updatePagedCache(\n draft.pages,\n productId,\n updatedProduct,\n 'products',\n (arg.sortBy || 'createdAt') as keyof ProductNode,\n arg.desc || false,\n )\n })\n }\n\n // Subscribe to product entity changes from websocket\n const productToken = PubSub.subscribe(\n 'entity.product',\n async (_topic: string, message: any) => {\n try {\n const entityId = message.summary?.entityId\n if (!entityId) return\n\n let productExistsInCache = false\n updateCachedData((draft) => {\n productExistsInCache = draft.pages.some((page) =>\n page.products.some((product: ProductNode) => product.id === entityId),\n )\n })\n\n if (!productExistsInCache && _topic !== 'entity.product.created') return\n\n await refetchProduct(entityId)\n } catch (error) {\n // Silently handle errors to prevent UI disruption\n }\n },\n )\n\n // Subscribe to version entity changes - refetch parent product when version changes\n // This ensures product's versions list and featuredVersion stay up-to-date\n const versionToken = PubSub.subscribe(\n 'entity.version',\n createVersionUpdateBatcher(arg.projectName, dispatch, {\n getBaseFilters: () => ({\n versionFilter: arg.versionFilter,\n productFilter: arg.productFilter,\n taskFilter: arg.taskFilter,\n folderIds: arg.folderIds?.length ? arg.folderIds : undefined,\n }),\n checkVersionInCache: (entityId, parentId) => {\n let found = false\n updateCachedData((draft) => {\n found = draft.pages.some((page) =>\n page.products.some(\n (p) => p.id === parentId && p.featuredVersion?.id === entityId,\n ),\n )\n })\n return found\n },\n onBatchUpdate: ({ deleted, patched, attribPatched, fullUpdated }) => {\n updateCachedData((draft) => {\n for (const page of draft?.pages || []) {\n for (const p of page.products) {\n const featuredId = p.featuredVersion?.id\n if (!featuredId) continue\n\n // Handle deletes\n if (deleted) {\n if (deleted.some((d) => d.entityId === featuredId && d.parentId === p.id)) {\n // Version deleted, need to refetch product to update featuredVersion\n // Using a set to track which products need refetch to avoid multiple calls\n productsToRefetch.add(p.id)\n }\n }\n\n // Handle simple patches\n if (patched) {\n for (const { entityId, field, value, parentId } of patched) {\n if (p.id === parentId && featuredId === entityId && p.featuredVersion) {\n // @ts-expect-error valid field\n p.featuredVersion[field] = value\n }\n }\n }\n\n // Handle attrib patches\n if (attribPatched) {\n for (const { entityId, allAttrib, parsedAttrib } of attribPatched) {\n if (featuredId === entityId && p.featuredVersion) {\n p.featuredVersion.allAttrib = allAttrib\n p.featuredVersion.attrib = parsedAttrib\n }\n }\n }\n\n // Handle full updates\n if (fullUpdated) {\n for (const updatedNode of fullUpdated) {\n if (featuredId === updatedNode.id && p.featuredVersion) {\n p.featuredVersion = updatedNode\n }\n }\n }\n }\n }\n })\n\n // If any products need full refetch (due to deletes or new version becoming featured)\n // we trigger that now\n for (const productId of productsToRefetch) {\n refetchProduct(productId)\n }\n productsToRefetch.clear()\n },\n }),\n )\n\n const productsToRefetch = new Set<string>()\n\n // Cleanup: unsubscribe when cache entry is removed\n await cacheEntryRemoved\n PubSub.unsubscribe(productToken)\n PubSub.unsubscribe(versionToken)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n },\n },\n ),\n\n // Grouped versions query - fetches versions for multiple group filters\n getGroupedVersionsList: build.query<GetGroupedVersionsListResult, GetGroupedVersionsListArgs>({\n queryFn: async (\n {\n projectName,\n groups,\n groupFilterKey = 'versionFilter',\n versionFilter, // most of the time overridden by group filters\n productFilter,\n taskFilter,\n folderIds,\n desc,\n sortBy,\n featuredOnly,\n hasReviewables,\n },\n api,\n ) => {\n try {\n const promises = []\n for (const group of groups) {\n const count = group.count || 500\n\n const queryParams: GetVersionsQueryVariables = {\n projectName,\n // base filters\n productFilter,\n taskFilter,\n versionFilter,\n // specific group filter\n [groupFilterKey]: group.filter,\n folderIds: folderIds?.length ? folderIds : undefined,\n sortBy: sortBy,\n featuredOnly,\n hasReviewables,\n // @ts-expect-error - group param used later on\n group: group.value,\n }\n\n if (desc) {\n queryParams.last = count\n } else {\n queryParams.first = count\n }\n\n const promise = api.dispatch(\n enhancedVersionsPageApi.endpoints.GetVersions.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n promises.push(promise)\n }\n\n const result = await Promise.all(promises)\n const versions: VersionNode[] = []\n\n for (const res of result) {\n if (res.error) throw res.error\n\n // get group value\n // @ts-expect-error - we know group does exist on res.originalArgs\n const groupValue = res.originalArgs?.group as string\n\n const hasNextPage =\n res.data?.pageInfo?.hasNextPage || res.data?.pageInfo?.hasPreviousPage || false\n\n const groupVersions =\n res.data?.versions.map((version, i, a) => ({\n ...version,\n groups: [\n {\n value: groupValue,\n hasNextPage: i === a.length - 1 && hasNextPage ? groupValue : undefined,\n },\n ],\n })) || []\n\n versions.push(...groupVersions)\n }\n\n return {\n data: {\n versions,\n },\n }\n } catch (error: any) {\n console.error('Error in getGroupedVersionsList queryFn:', error)\n return {\n error: {\n status: 'FETCH_ERROR',\n error: parseGQLErrorMessage(error.message),\n } as FetchBaseQueryError,\n }\n }\n },\n providesTags: provideTagsForVersionsResult,\n keepUnusedDataFor: 30,\n // Subscribes to version entity changes and updates cache accordingly\n // Handles: create, update, delete operations for grouped versions view\n onCacheEntryAdded: async (arg, { updateCachedData, cacheEntryRemoved, dispatch }) => {\n let unsubscribeThumbnails: (() => void) | undefined\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const relevantMessages = messages.filter((m) => m.project === arg.projectName)\n if (!relevantMessages.length) return\n\n updateCachedData((draft) => {\n relevantMessages.forEach((message) => {\n if (message.summary.entityType === 'version') {\n const vIndex = draft.versions.findIndex((v) => v.id === message.summary.entityId)\n if (vIndex !== -1) {\n draft.versions[vIndex].thumbnailHash = message.summary.thumbnailHash || ''\n }\n }\n })\n })\n },\n ['version'],\n )\n\n const token = PubSub.subscribe(\n 'entity.version',\n createVersionUpdateBatcher(arg.projectName, dispatch, {\n getBaseFilters: () => ({\n versionFilter: arg.versionFilter,\n productFilter: arg.productFilter,\n taskFilter: arg.taskFilter,\n folderIds: arg.folderIds?.length ? arg.folderIds : undefined,\n sortBy: arg.sortBy,\n featuredOnly: arg.featuredOnly,\n hasReviewables: arg.hasReviewables,\n }),\n checkVersionInCache: (entityId) => {\n let found = false\n updateCachedData((draft) => {\n found = draft.versions.some((v) => v.id === entityId)\n })\n return found\n },\n onBatchUpdate: ({ deleted, patched, attribPatched, fullUpdated }) => {\n updateCachedData((draft) => {\n // Handle deletes\n if (deleted) {\n for (const { entityId } of deleted) {\n const vIndex = draft.versions.findIndex((v) => v.id === entityId)\n if (vIndex !== -1) draft.versions.splice(vIndex, 1)\n }\n }\n // Handle patches\n if (patched) {\n for (const { entityId, field, value } of patched) {\n const version = draft.versions.find((v) => v.id === entityId)\n if (version) {\n // @ts-expect-error valid field\n version[field] = value\n }\n }\n }\n // Handle attrib patches\n if (attribPatched) {\n for (const { entityId, allAttrib, parsedAttrib } of attribPatched) {\n const version = draft.versions.find((v) => v.id === entityId)\n if (version) {\n version.allAttrib = allAttrib\n version.attrib = parsedAttrib\n }\n }\n }\n // Handle full updates\n if (fullUpdated) {\n for (const updatedNode of fullUpdated) {\n const index = draft.versions.findIndex((v) => v.id === updatedNode.id)\n if (index !== -1) {\n // Preserve groups when updating\n const originalGroups = draft.versions[index].groups\n draft.versions[index] = { ...updatedNode, groups: originalGroups }\n }\n }\n }\n })\n },\n }),\n )\n\n // Cleanup: unsubscribe when cache entry is removed\n await cacheEntryRemoved\n PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n },\n }),\n }),\n})\n\n// export gql endpoints\nexport const {\n useGetVersionsQuery,\n useGetProductsColumnStatsQuery,\n useGetVersionsColumnStatsQuery,\n} = enhancedVersionsPageApi\n// export custom queries\nexport const {\n useGetVersionsInfiniteInfiniteQuery: useGetVersionsInfiniteQuery,\n useGetVersionsByProductsQuery,\n useGetProductsInfiniteInfiniteQuery: useGetProductsInfiniteQuery,\n useGetGroupedVersionsListQuery,\n} = injectedVersionsPageApi\n\n// export API instances for cache manipulation\nexport { enhancedVersionsPageApi, injectedVersionsPageApi }\n"],"names":["findSortedInsertIndex","items","newItem","sortBy","desc","i","newValue","currentValue","updatePagedCache","pages","entityId","updatedItem","itemsKey","page","index","item","insertIndex","enhancedVersionsPageApi","gqlApi","transformVersionsResponse","provideTagsForVersionsResult","transformProductsResponse","provideTagsForProductsResult","res","normalizeFieldStats","error","transformStatsError","_t","rest","cache","incoming","mergeFieldStats","currentArg","previousArg","hasNewTargetFields","_r","_e","projectName","VP_INFINITE_QUERY_COUNT","VERSIONS_BY_PRODUCT_ID_QUERY_COUNT","MAX_PAGES_PER_PRODUCT","VERSION_UPDATE_BATCH_DEBOUNCE","VERSION_UPDATE_ATTRIB_JITTER","VERSION_UPDATE_NEW_DATA_DEBOUNCE","VERSION_UPDATE_NEW_DATA_JITTER","createVersionUpdateBatcher","dispatch","handlers","pendingPatchUpdates","patchTimeoutId","pendingFullFetchIds","fullFetchTimeoutId","processPatches","updates","deleted","patched","attribsToFetch","topic","msg","parentId","field","isFieldSupported","value","castValue","processFullFetches","attribPatched","resolve","versionIds","result","edge","node","parseAllAttribs","e","baseFilters","message","injectedVersionsPageApi","build","lastPage","_allPages","lastPageParam","_allPageParams","pageInfo","queryArg","pageParam","api","folderIds","cursor","queryParams","fallback","parseGQLErrorMessage","provideTagsForVersionsInfinite","arg","getCacheEntry","updateCachedData","cacheEntryRemoved","unsubscribeThumbnails","subscribeToThumbnailUpdates","messages","relevantMessages","m","draft","vIndex","v","token","PubSub","cacheVersions","fullUpdated","version","allAttrib","parsedAttrib","updatedNode","sortKey","args","forced","productIds","fetchVersionsPage","productId","promises","settledResults","allVersions","errors","settledResult","pageCount","hasNextPage","nextPageResult","found","provideTagsForProductsInfinite","p","refetchProduct","updatedProduct","productToken","_topic","productExistsInCache","product","versionToken","featuredId","d","productsToRefetch","groups","groupFilterKey","versionFilter","productFilter","taskFilter","featuredOnly","hasReviewables","group","count","promise","versions","groupValue","groupVersions","a","originalGroups","useGetVersionsQuery","useGetProductsColumnStatsQuery","useGetVersionsColumnStatsQuery","useGetVersionsInfiniteQuery","useGetVersionsByProductsQuery","useGetProductsInfiniteQuery","useGetGroupedVersionsListQuery"],"mappings":"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"}
1
+ {"version":3,"file":"getVersionsProducts.es.js","sources":["../../../../../../src/api/queries/versions/getVersionsProducts.ts"],"sourcesContent":["// QUERIES FOR THE VERSIONS PAGE, FETCHING AND UPDATING DATA\n// Uses a separate graphqlVersionsApi for increased IDE speed\n\n// There are 4 main fetch requests:\n\n// Versions Only:\n// 1. GetVersions - fetches all versions in the project for given filtering and with pagination\n\n// Products and Versions (stacked):\n// 2. GetProducts - fetches all products in the project based on product and version filtering\n// 3. GetVersionsByProducts - when a product is expanded, fetches all versions for the products that are expanded. Uses getVersionsByProductId for each parent id. (uses queryFn)\n// 4. GetVersionsByProductId - get all versions for a specific product. Used by getVersionsByProducts only.\n\n// VersionFragment is used in all version queries to ensure consistent data structure\n\nimport {\n DefinitionsFromApi,\n FetchBaseQueryError,\n InfiniteData,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\nimport {\n GetProductsQuery,\n GetProductsQueryVariables,\n GetProductsColumnStatsQuery,\n GetVersionsByProductIdQueryVariables,\n GetVersionsColumnStatsQuery,\n GetVersionsQuery,\n GetVersionsQueryVariables,\n gqlApi,\n PageInfo,\n VpFolderFragment,\n} from '@shared/api/generated'\nimport {\n parseGQLErrorMessage,\n provideTagsForProductsInfinite,\n provideTagsForProductsResult,\n provideTagsForVersionsInfinite,\n provideTagsForVersionsResult,\n transformProductsResponse,\n transformVersionsResponse,\n} from './getVersionsProductsUtils'\nimport { parseAllAttribs } from '../overview'\nimport PubSub from '@shared/util/pubsub'\nimport { subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\nimport type { FieldStats } from '../columnStats'\nimport {\n normalizeFieldStats,\n mergeFieldStats,\n hasNewTargetFields,\n transformStatsError,\n} from '../columnStats'\n\n// SHARED CACHE UPDATE HELPERS\n// These helpers are used by PubSub handlers to update cached data in real-time\n\n/**\n * Finds the correct insertion index for a new item in a sorted array\n * Used when adding new items to maintain sort order\n */\nfunction findSortedInsertIndex<T>(items: T[], newItem: T, sortBy: keyof T, desc: boolean): number {\n for (let i = 0; i < items.length; i++) {\n const newValue = newItem[sortBy]\n const currentValue = items[i][sortBy]\n const shouldInsert = desc ? newValue > currentValue : newValue < currentValue\n\n if (shouldInsert) {\n return i\n }\n }\n return items.length\n}\n\n/**\n * Updates a paginated cache (draft.pages[].items[]) with a new/updated/deleted item\n * Handles: update existing, delete if not in response, add at sorted position\n *\n * @param pages - Array of page objects containing items arrays\n * @param entityId - ID of the entity to update/delete/add\n * @param updatedItem - The updated item, or undefined if deleted\n * @param itemsKey - Key to access items array in each page ('versions' or 'products')\n * @param sortBy - Property to sort by when inserting new items\n * @param desc - Sort direction (true = descending)\n */\nfunction updatePagedCache<T extends { id: string }>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n pages: any[],\n entityId: string,\n updatedItem: T | undefined,\n itemsKey: string,\n sortBy: keyof T,\n desc: boolean,\n): void {\n // Search for existing item in all pages\n for (const page of pages) {\n const items = page[itemsKey] as T[]\n const index = items.findIndex((item) => item.id === entityId)\n\n if (index !== -1) {\n if (updatedItem) {\n // Update existing item\n items[index] = updatedItem\n } else {\n // Item no longer exists or doesn't match filters - remove it\n items.splice(index, 1)\n }\n return\n }\n }\n\n // Item not found in cache - add at correct sorted position in first page\n if (updatedItem && pages.length > 0) {\n const items = pages[0][itemsKey] as T[]\n const insertIndex = findSortedInsertIndex(items, updatedItem, sortBy, desc)\n items.splice(insertIndex, 0, updatedItem)\n }\n}\n\n/**\n * Updates a flat cache (draft.items[]) with a new/updated/deleted item\n * Handles: update existing, delete if not in response, add new\n */\nfunction updateFlatCache<T extends { id: string }>(\n items: T[],\n entityId: string,\n updatedItem: T | undefined,\n): { index: number; action: 'updated' | 'deleted' | 'added' | 'none' } {\n const index = items.findIndex((item) => item.id === entityId)\n\n if (index !== -1) {\n if (updatedItem) {\n items[index] = updatedItem\n return { index, action: 'updated' }\n } else {\n items.splice(index, 1)\n return { index, action: 'deleted' }\n }\n } else if (updatedItem) {\n items.push(updatedItem)\n return { index: items.length - 1, action: 'added' }\n }\n\n return { index: -1, action: 'none' }\n}\n\n// Query result types\nexport type FolderAttribNode = VpFolderFragment & {\n attrib: Record<string, any> // parsed from allAttrib JSON string\n}\nexport type VersionNodeRAW = GetVersionsQuery['project']['versions']['edges'][0]['node']\nexport type VersionNode = VersionNodeRAW & {\n attrib: Record<string, any> // parsed from allAttrib JSON string\n product: VersionNodeRAW['product'] & {\n attrib: Record<string, any> // parsed from allAttrib JSON string\n folder: FolderAttribNode // folder with parsed attribs\n }\n groups?: { value?: string; hasNextPage?: string }[] // grouping metadata\n}\nexport type ProductNodeRAW = GetProductsQuery['project']['products']['edges'][0]['node']\nexport type ProductNode = Omit<ProductNodeRAW, 'versions'> & {\n attrib: Record<string, any> // parsed from allAttrib JSON string\n featuredVersion?: VersionNode | null // added separately\n folder: FolderAttribNode // folder with parsed attribs\n versions: {\n id: string\n name: string\n version: number\n heroVersionId?: string | null\n }[] // versions with isHero flag\n}\n\nexport type GetVersionsResult = {\n pageInfo?: PageInfo\n versions: VersionNode[]\n errors?: Array<{ productId: string; error: string }>\n}\n\n// for infinite query args\nexport type GetVersionsArgs = Omit<GetVersionsQueryVariables, 'cursor'> & {\n desc?: boolean // sort direction\n}\n\n// for paginated queries in infinite query\ntype VersionsPageParam = {\n cursor: string\n desc?: boolean\n}\n\nexport type GetProductsArgs = Omit<GetProductsQueryVariables, 'cursor' | 'versionIds'> & {\n desc?: boolean // sort direction\n}\n\ntype ProductsPageParam = {\n cursor: string\n desc?: boolean\n}\n\ntype GetVersionsByProductsArgs = GetVersionsByProductIdQueryVariables & {\n productIds: string[]\n desc?: boolean\n}\n\nexport type GetGroupedVersionsListArgs = {\n projectName: string\n groups: { filter: string; count?: number | null; value: string }[]\n groupFilterKey?: string\n versionFilter?: string\n productFilter?: string\n taskFilter?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n featuredOnly?: string[]\n hasReviewables?: boolean\n}\n\nexport type GetGroupedVersionsListResult = {\n versions: VersionNode[]\n}\n\nexport type VersionInfiniteResult = InfiniteData<GetVersionsResult, VersionsPageParam> | undefined\n\nexport type ProductInfiniteResult = InfiniteData<GetProductsResult, ProductsPageParam> | undefined\n\nexport type GetProductsResult = {\n pageInfo: PageInfo\n products: ProductNode[]\n}\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetVersions'> & {\n GetVersions: OverrideResultType<Definitions['GetVersions'], GetVersionsResult>\n GetVersionsByProductId: OverrideResultType<Definitions['GetVersions'], GetVersionsResult>\n GetProducts: OverrideResultType<Definitions['GetProducts'], GetProductsResult>\n GetProductsColumnStats: OverrideResultType<Definitions['GetProductsColumnStats'], FieldStats[]>\n GetVersionsColumnStats: OverrideResultType<Definitions['GetVersionsColumnStats'], FieldStats[]>\n}\n\nconst enhancedVersionsPageApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // used by both stacked and non-stacked views\n GetVersions: {\n transformResponse: transformVersionsResponse,\n providesTags: provideTagsForVersionsResult,\n },\n // used by getVersionsByProducts only\n GetVersionsByProductId: {\n transformResponse: transformVersionsResponse,\n providesTags: provideTagsForVersionsResult,\n },\n // used by getProductsInfinite only\n GetProducts: {\n transformResponse: transformProductsResponse,\n providesTags: provideTagsForProductsResult,\n },\n // footer stats: `targets` excluded from cache key + responses merged,\n // so column toggles reuse cache and only added targets refetch\n GetProductsColumnStats: {\n transformResponse: (res: GetProductsColumnStatsQuery) =>\n normalizeFieldStats(res?.project?.products?.fieldStats ?? []),\n transformErrorResponse: (error: any) => transformStatsError(error, 'product'),\n serializeQueryArgs: ({ queryArgs: { targets: _t, ...rest } }) => rest,\n merge: (cache, incoming) => mergeFieldStats(incoming, cache),\n forceRefetch: ({ currentArg, previousArg }) => hasNewTargetFields(currentArg, previousArg),\n providesTags: (_r, _e, { projectName }) => [{ type: 'productColumnStats', id: projectName }],\n },\n GetVersionsColumnStats: {\n transformResponse: (res: GetVersionsColumnStatsQuery) =>\n normalizeFieldStats(res?.project?.versions?.fieldStats ?? []),\n transformErrorResponse: (error: any) => transformStatsError(error, 'version'),\n serializeQueryArgs: ({ queryArgs: { targets: _t, ...rest } }) => rest,\n merge: (cache, incoming) => mergeFieldStats(incoming, cache),\n forceRefetch: ({ currentArg, previousArg }) => hasNewTargetFields(currentArg, previousArg),\n providesTags: (_r, _e, { projectName }) => [{ type: 'versionColumnStats', id: projectName }],\n },\n },\n})\n\nexport const VP_INFINITE_QUERY_COUNT = 250 // Number of items to fetch per page\nconst VERSIONS_BY_PRODUCT_ID_QUERY_COUNT = 1000 // max number of versions to fetch per product id\nconst MAX_PAGES_PER_PRODUCT = 10 // Hard cutoff to prevent infinite loops\n\nconst VERSION_UPDATE_BATCH_DEBOUNCE = 5000 // ms to wait before processing batched updates\nconst VERSION_UPDATE_ATTRIB_JITTER = 1000 // max ms of random jitter for attribute fetches\nconst VERSION_UPDATE_NEW_DATA_DEBOUNCE = 30000 // ms to wait before fetching new version data in batch\nconst VERSION_UPDATE_NEW_DATA_JITTER = 1500 // max ms of random jitter for new version data fetches\n\n/**\n * Reusable handler for websocket version updates to perform efficient batched cache updates\n */\nfunction createVersionUpdateBatcher(\n projectName: string,\n dispatch: any,\n handlers: {\n checkVersionInCache: (entityId: string, parentId?: string) => boolean\n onBatchUpdate: (changes: {\n deleted?: { entityId: string; parentId?: string }[]\n patched?: { entityId: string; field: string; value: any; parentId?: string }[]\n attribPatched?: { entityId: string; allAttrib: string; parsedAttrib: any }[]\n fullUpdated?: VersionNode[]\n }) => void\n getBaseFilters?: () => any\n },\n) {\n let pendingPatchUpdates: { topic: string; message: any }[] = []\n let patchTimeoutId: ReturnType<typeof setTimeout> | null = null\n\n let pendingFullFetchIds = new Set<string>()\n let fullFetchTimeoutId: ReturnType<typeof setTimeout> | null = null\n\n const processPatches = async () => {\n const updates = [...pendingPatchUpdates]\n pendingPatchUpdates = []\n patchTimeoutId = null\n\n const deleted: { entityId: string; parentId?: string }[] = []\n const patched: { entityId: string; field: string; value: any; parentId?: string }[] = []\n const attribsToFetch = new Set<string>()\n\n for (const { topic, message: msg } of updates) {\n const entityId = msg.summary?.entityId\n const parentId = msg.summary?.parentId\n if (!entityId) continue\n\n if (topic === 'entity.version.deleted') {\n deleted.push({ entityId, parentId })\n } else if (topic.startsWith('entity.version.') && topic.endsWith('_changed')) {\n const versionFound = handlers.checkVersionInCache(entityId, parentId)\n if (!versionFound) continue\n\n const field = topic.split('.')[2].split('_changed')[0]\n\n if (field === 'attrib') {\n attribsToFetch.add(entityId)\n continue\n }\n\n const supportedFields = ['status', 'tags'] as const\n const isFieldSupported = supportedFields.includes(field as any)\n const value = msg.summary?.value\n\n if (!value || !isFieldSupported) {\n pendingFullFetchIds.add(entityId)\n continue\n }\n\n let castValue: any = value\n if (field === 'status') {\n castValue = String(value)\n } else if (field === 'tags') {\n castValue = Array.isArray(value) ? (value as string[]) : []\n }\n\n patched.push({ entityId, field, value: castValue, parentId })\n }\n }\n\n // Trigger full fetch if any unsupported changes were moved there\n if (pendingFullFetchIds.size > 0 && !fullFetchTimeoutId) {\n fullFetchTimeoutId = setTimeout(processFullFetches, VERSION_UPDATE_NEW_DATA_DEBOUNCE)\n }\n\n const attribPatched: { entityId: string; allAttrib: string; parsedAttrib: any }[] = []\n if (attribsToFetch.size > 0 && dispatch) {\n try {\n await new Promise((resolve) =>\n setTimeout(resolve, Math.random() * VERSION_UPDATE_ATTRIB_JITTER),\n )\n\n const versionIds = Array.from(attribsToFetch)\n const result = await dispatch(\n enhancedVersionsPageApi.endpoints.GetVersionsAttribs.initiate(\n { projectName, versionIds },\n { forceRefetch: true },\n ),\n )\n\n if (result.data?.project?.versions?.edges) {\n for (const edge of result.data.project.versions.edges) {\n const node = edge.node\n if (node) {\n attribPatched.push({\n entityId: node.id,\n allAttrib: node.allAttrib,\n parsedAttrib: parseAllAttribs(node.allAttrib),\n })\n }\n }\n }\n } catch (e) {\n console.error('Failed to fetch patched version attribs', e)\n }\n }\n\n if (deleted.length > 0 || patched.length > 0 || attribPatched.length > 0) {\n handlers.onBatchUpdate({ deleted, patched, attribPatched })\n }\n }\n\n const processFullFetches = async () => {\n const versionIds = Array.from(pendingFullFetchIds)\n pendingFullFetchIds.clear()\n fullFetchTimeoutId = null\n\n if (versionIds.length === 0 || !dispatch) return\n\n try {\n // Jitter fetch to prevent thundering herd\n await new Promise((resolve) =>\n setTimeout(resolve, Math.random() * VERSION_UPDATE_NEW_DATA_JITTER),\n )\n\n const baseFilters = handlers.getBaseFilters?.() || {}\n const result = await dispatch(\n enhancedVersionsPageApi.endpoints.GetVersions.initiate({\n ...baseFilters,\n projectName,\n versionIds,\n }),\n )\n\n if (result.data?.versions) {\n handlers.onBatchUpdate({ fullUpdated: result.data.versions })\n }\n } catch (e) {\n console.error('Failed to fetch full version data batch', e)\n }\n }\n\n return (topic: string, message: any) => {\n const project = message.project\n if (project !== projectName) return\n\n const entityId = message.summary?.entityId\n if (!entityId) return\n\n if (topic === 'entity.version.created') {\n pendingFullFetchIds.add(entityId)\n if (!fullFetchTimeoutId) {\n fullFetchTimeoutId = setTimeout(processFullFetches, VERSION_UPDATE_NEW_DATA_DEBOUNCE)\n }\n } else {\n pendingPatchUpdates.push({ topic, message })\n if (patchTimeoutId) clearTimeout(patchTimeoutId)\n patchTimeoutId = setTimeout(processPatches, VERSION_UPDATE_BATCH_DEBOUNCE)\n }\n }\n}\n\nconst injectedVersionsPageApi = enhancedVersionsPageApi.injectEndpoints({\n endpoints: (build) => ({\n // enhance GetVersions with an infinite query\n getVersionsInfinite: build.infiniteQuery<GetVersionsResult, GetVersionsArgs, VersionsPageParam>(\n {\n infiniteQueryOptions: {\n initialPageParam: { cursor: '', desc: false },\n // Calculate the next page param based on current page response and params\n getNextPageParam: (lastPage, _allPages, lastPageParam, _allPageParams) => {\n // Use the endCursor from the query as the next page param\n const pageInfo = lastPage.pageInfo\n const desc = lastPageParam.desc\n const hasNextPage = desc ? pageInfo?.hasPreviousPage : pageInfo?.hasNextPage\n\n if (!hasNextPage || !pageInfo?.endCursor) return undefined\n\n return {\n cursor: pageInfo?.endCursor,\n desc: lastPageParam.desc,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { sortBy, desc, folderIds, ...rest } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetVersions query\n const queryParams: any = {\n ...rest,\n }\n\n // Add cursor-based pagination\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.last = VP_INFINITE_QUERY_COUNT\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = VP_INFINITE_QUERY_COUNT\n }\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = VP_INFINITE_QUERY_COUNT\n }\n\n // if folderIds have a length, add them to the query params\n if (folderIds && folderIds.length) {\n queryParams.folderIds = folderIds\n }\n\n // Call the existing GetVersions gql query\n const result = await api.dispatch(\n enhancedVersionsPageApi.endpoints.GetVersions.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) throw result.error\n const fallback = {\n versions: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n }\n\n // Return the versions directly as required by the infinite query format\n return {\n data: result.data || fallback,\n }\n } catch (e: any) {\n console.error('Error in getVersionsInfiniteQuery queryFn:', e)\n return {\n error: {\n status: 'FETCH_ERROR',\n error: parseGQLErrorMessage(e.message),\n } as FetchBaseQueryError,\n }\n }\n },\n providesTags: provideTagsForVersionsInfinite,\n keepUnusedDataFor: 30,\n // Subscribes to version entity changes and updates cache accordingly\n // Handles: create, update, delete operations\n onCacheEntryAdded: async (\n arg,\n { getCacheEntry, updateCachedData, cacheEntryRemoved, dispatch },\n ) => {\n let unsubscribeThumbnails: (() => void) | undefined\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const relevantMessages = messages.filter((m) => m.project === arg.projectName)\n if (!relevantMessages.length) return\n\n updateCachedData((draft) => {\n relevantMessages.forEach((message) => {\n if (message.summary.entityType === 'version') {\n draft.pages.forEach((page) => {\n const vIndex = page.versions.findIndex(\n (v) => v.id === message.summary.entityId,\n )\n if (vIndex !== -1) {\n page.versions[vIndex].thumbnailHash = message.summary.thumbnailHash || ''\n }\n })\n }\n })\n })\n },\n ['version'],\n )\n\n const token = PubSub.subscribe(\n 'entity.version',\n createVersionUpdateBatcher(arg.projectName, dispatch, {\n getBaseFilters: () => ({\n versionFilter: arg.versionFilter,\n productFilter: arg.productFilter,\n taskFilter: arg.taskFilter,\n folderIds: arg.folderIds?.length ? arg.folderIds : undefined,\n featuredOnly: arg.featuredOnly,\n hasReviewables: arg.hasReviewables,\n sortBy: arg.sortBy,\n }),\n checkVersionInCache: (entityId) => {\n const cacheVersions = getCacheEntry().data\n if (!cacheVersions) return false\n for (const page of cacheVersions.pages || []) {\n if (page.versions.some((v) => v.id === entityId)) return true\n }\n return false\n },\n onBatchUpdate: ({ deleted, patched, attribPatched, fullUpdated }) => {\n updateCachedData((draft) => {\n for (const page of draft?.pages || []) {\n // Handle deletes\n if (deleted) {\n for (const { entityId } of deleted) {\n const vIndex = page.versions.findIndex((v) => v.id === entityId)\n if (vIndex !== -1) page.versions.splice(vIndex, 1)\n }\n }\n // Handle simple patches\n if (patched) {\n for (const { entityId, field, value } of patched) {\n const version = page.versions.find((v) => v.id === entityId)\n if (version) {\n // @ts-expect-error valid field\n version[field] = value\n }\n }\n }\n // Handle attrib patched\n if (attribPatched) {\n for (const { entityId, allAttrib, parsedAttrib } of attribPatched) {\n const version = page.versions.find((v) => v.id === entityId)\n if (version) {\n version.allAttrib = allAttrib\n version.attrib = parsedAttrib\n }\n }\n }\n // Handle full updates\n if (fullUpdated) {\n for (const updatedNode of fullUpdated) {\n const vIndex = page.versions.findIndex((v) => v.id === updatedNode.id)\n if (vIndex !== -1) {\n page.versions[vIndex] = updatedNode\n } else {\n // New version not in cache, try to insert in first page if it fits sort\n // (This is a simplification, full refetch is usually better for new items in pagination)\n const sortKey = (arg.sortBy || 'createdAt') as keyof VersionNode\n const insertIndex = findSortedInsertIndex(\n page.versions,\n updatedNode,\n sortKey,\n arg.desc || false,\n )\n // Only insert if it's within current page bounds or we are on first page\n if (page === draft.pages[0]) {\n page.versions.splice(insertIndex, 0, updatedNode)\n }\n }\n }\n }\n }\n })\n },\n }),\n )\n\n // Cleanup: unsubscribe when cache entry is removed\n await cacheEntryRemoved\n PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n },\n },\n ),\n\n // custom query function that fetches versions by multiple parent ids -not infinite and gets 1000 versions max\n getVersionsByProducts: build.query<GetVersionsResult, GetVersionsByProductsArgs>({\n queryFn: async (args, { dispatch, forced }) => {\n const { productIds = [], desc, ...rest } = args\n\n // Helper function to fetch a page of versions\n const fetchVersionsPage = async (productId: string, cursor?: string) => {\n const queryParams: GetVersionsByProductIdQueryVariables = {\n ...rest,\n productIds: [productId],\n }\n\n if (desc) {\n if (cursor) queryParams.before = cursor\n queryParams.last = VERSIONS_BY_PRODUCT_ID_QUERY_COUNT\n } else {\n if (cursor) queryParams.after = cursor\n queryParams.first = VERSIONS_BY_PRODUCT_ID_QUERY_COUNT\n }\n\n return dispatch(\n enhancedVersionsPageApi.endpoints.GetVersionsByProductId.initiate(queryParams, {\n forceRefetch: forced,\n }),\n )\n }\n\n // for each product id, call getVersionsByProductId\n const promises = productIds.map((productId) => fetchVersionsPage(productId))\n\n // wait for all requests to settle (either fulfilled or rejected)\n const settledResults = await Promise.allSettled(promises)\n\n // Collect all versions from initial queries\n const allVersions: VersionNode[] = []\n const errors: Array<{ productId: string; error: any }> = []\n\n // Check each result for additional pages and fetch them if needed\n for (let i = 0; i < settledResults.length; i++) {\n const settledResult = settledResults[i]\n const productId = productIds[i]\n\n // Handle rejected promises\n if (settledResult.status === 'rejected') {\n console.error(`Error fetching versions for product ${productId}:`, settledResult.reason)\n errors.push({ productId, error: parseGQLErrorMessage(settledResult.reason) })\n continue\n }\n\n // Handle errors in fulfilled promises\n const result = settledResult.value\n if (result.error) {\n console.error(`Error fetching versions for product ${productId}:`, result.error)\n errors.push({\n productId,\n // @ts-expect-error - message\n error: parseGQLErrorMessage(result.error?.message || 'Unknown error'),\n })\n continue\n }\n\n if (!result.data) continue\n\n // Add initial page versions\n allVersions.push(...result.data.versions)\n\n // Check if there are more pages to fetch\n let pageInfo = result.data.pageInfo\n let pageCount = 1\n\n while (pageInfo && pageCount < MAX_PAGES_PER_PRODUCT) {\n const hasNextPage = desc ? pageInfo.hasPreviousPage : pageInfo.hasNextPage\n const cursor = pageInfo.endCursor\n\n if (!hasNextPage || !cursor) break\n\n // Fetch next page\n const nextPageResult = await fetchVersionsPage(productId, cursor)\n\n if (nextPageResult.error) {\n console.error(\n `Error fetching versions page ${pageCount + 1} for product ${productId}:`,\n nextPageResult.error,\n )\n errors.push({ productId, error: nextPageResult.error })\n break\n }\n\n if (!nextPageResult.data) break\n\n allVersions.push(...nextPageResult.data.versions)\n pageInfo = nextPageResult.data.pageInfo\n pageCount++\n }\n }\n\n // If some requests failed but we have data, log warning but return successful data\n if (errors.length > 0) {\n console.warn(\n `Partial success: ${errors.length} of ${productIds.length} products failed to fetch versions`,\n errors,\n )\n }\n\n return {\n data: {\n versions: allVersions,\n pageInfo: undefined, // pageInfo is undefined as we've flattened multiple queries\n errors: errors.length > 0 ? errors : undefined,\n },\n }\n },\n keepUnusedDataFor: 30,\n // Subscribes to version entity changes for expanded products\n // Only updates versions that belong to currently expanded products\n onCacheEntryAdded: async (arg, { updateCachedData, cacheEntryRemoved, dispatch }) => {\n let unsubscribeThumbnails: (() => void) | undefined\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const relevantMessages = messages.filter((m) => m.project === arg.projectName)\n if (!relevantMessages.length) return\n\n updateCachedData((draft) => {\n relevantMessages.forEach((message) => {\n if (message.summary.entityType === 'version') {\n const vIndex = draft.versions.findIndex((v) => v.id === message.summary.entityId)\n if (vIndex !== -1) {\n draft.versions[vIndex].thumbnailHash = message.summary.thumbnailHash || ''\n }\n }\n })\n })\n },\n ['version'],\n )\n\n const token = PubSub.subscribe(\n 'entity.version',\n createVersionUpdateBatcher(arg.projectName, dispatch, {\n getBaseFilters: () => ({\n versionFilter: arg.versionFilter,\n taskFilter: arg.taskFilter,\n productIds: arg.productIds,\n }),\n checkVersionInCache: (entityId, parentId) => {\n if (!parentId || !arg.productIds.includes(parentId)) return false\n let found = false\n updateCachedData((draft) => {\n found = draft.versions.some((v) => v.id === entityId)\n })\n return found\n },\n onBatchUpdate: ({ deleted, patched, attribPatched, fullUpdated }) => {\n updateCachedData((draft) => {\n // Handle deletes\n if (deleted) {\n for (const { entityId } of deleted) {\n const vIndex = draft.versions.findIndex((v) => v.id === entityId)\n if (vIndex !== -1) draft.versions.splice(vIndex, 1)\n }\n }\n // Handle simple patches\n if (patched) {\n for (const { entityId, field, value } of patched) {\n const version = draft.versions.find((v) => v.id === entityId)\n if (version) {\n // @ts-expect-error valid field\n version[field] = value\n }\n }\n }\n // Handle attrib patches\n if (attribPatched) {\n for (const { entityId, allAttrib, parsedAttrib } of attribPatched) {\n const version = draft.versions.find((v) => v.id === entityId)\n if (version) {\n version.allAttrib = allAttrib\n version.attrib = parsedAttrib\n }\n }\n }\n // Handle full updates\n if (fullUpdated) {\n for (const updatedNode of fullUpdated) {\n const index = draft.versions.findIndex((v) => v.id === updatedNode.id)\n if (index !== -1) {\n draft.versions[index] = updatedNode\n } else {\n // Add at correct sorted position\n const sortKey = (arg.sortBy || 'createdAt') as keyof VersionNode\n const insertIndex = findSortedInsertIndex(\n draft.versions,\n updatedNode,\n sortKey,\n arg.desc || false,\n )\n draft.versions.splice(insertIndex, 0, updatedNode)\n }\n }\n }\n })\n },\n }),\n )\n\n // Cleanup: unsubscribe when cache entry is removed\n await cacheEntryRemoved\n PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n },\n providesTags: provideTagsForVersionsResult,\n }),\n\n // enhance GetProducts with an infinite query\n getProductsInfinite: build.infiniteQuery<GetProductsResult, GetProductsArgs, ProductsPageParam>(\n {\n infiniteQueryOptions: {\n initialPageParam: { cursor: '', desc: false },\n // Calculate the next page param based on current page response and params\n getNextPageParam: (lastPage, _allPages, lastPageParam, _allPageParams) => {\n // Use the endCursor from the query as the next page param\n const pageInfo = lastPage.pageInfo\n const desc = lastPageParam.desc\n const hasNextPage = desc ? pageInfo?.hasPreviousPage : pageInfo?.hasNextPage\n\n if (!hasNextPage || !pageInfo?.endCursor) return undefined\n\n return {\n cursor: pageInfo?.endCursor,\n desc: lastPageParam.desc,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n let result\n try {\n const { sortBy, desc, folderIds, ...rest } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetProducts query\n const queryParams: any = {\n ...rest,\n }\n\n // Add cursor-based pagination\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.last = VP_INFINITE_QUERY_COUNT\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = VP_INFINITE_QUERY_COUNT\n }\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = VP_INFINITE_QUERY_COUNT\n }\n\n // if folderIds have a length, add them to the query params\n if (folderIds && folderIds.length) {\n queryParams.folderIds = folderIds\n }\n\n // Call the existing GetProducts gql query\n result = await api.dispatch(\n enhancedVersionsPageApi.endpoints.GetProducts.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) throw result.error\n const fallback = {\n products: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n }\n\n // Return the products directly as required by the infinite query format\n return {\n data: result.data || fallback,\n }\n } catch (e: any) {\n console.error('Error in getProductsInfiniteQuery queryFn:', e)\n return {\n error: {\n status: 'FETCH_ERROR',\n error: parseGQLErrorMessage(e.message),\n } as FetchBaseQueryError,\n }\n }\n },\n providesTags: provideTagsForProductsInfinite,\n keepUnusedDataFor: 30,\n\n // Subscribes to product entity changes and updates cache accordingly\n // Handles: create, update, delete operations\n // Often triggered together with version changes (new product + version)\n\n onCacheEntryAdded: async (arg, { updateCachedData, cacheEntryRemoved, dispatch }) => {\n let unsubscribeThumbnails: (() => void) | undefined\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const relevantMessages = messages.filter((m) => m.project === arg.projectName)\n if (!relevantMessages.length) return\n\n updateCachedData((draft) => {\n relevantMessages.forEach((message) => {\n if (message.summary.entityType === 'version') {\n draft.pages.forEach((page) => {\n page.products.forEach((p) => {\n if (p.featuredVersion?.id === message.summary.entityId) {\n p.featuredVersion.thumbnailHash = message.summary.thumbnailHash || ''\n }\n })\n })\n }\n })\n })\n },\n ['version'],\n )\n\n // Helper to refetch and update a product in cache\n const refetchProduct = async (productId: string) => {\n const queryParams: any = {\n projectName: arg.projectName,\n productIds: [productId],\n productFilter: arg.productFilter,\n versionFilter: arg.versionFilter,\n taskFilter: arg.taskFilter,\n folderIds: arg.folderIds?.length ? arg.folderIds : undefined,\n first: 1,\n }\n\n const result = await dispatch(\n enhancedVersionsPageApi.endpoints.GetProducts.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) return\n\n // Update the cache: update existing, delete if not found, or add new\n updateCachedData((draft) => {\n const updatedProduct = result.data?.products?.[0]\n updatePagedCache(\n draft.pages,\n productId,\n updatedProduct,\n 'products',\n (arg.sortBy || 'createdAt') as keyof ProductNode,\n arg.desc || false,\n )\n })\n }\n\n // Subscribe to product entity changes from websocket\n const productToken = PubSub.subscribe(\n 'entity.product',\n async (_topic: string, message: any) => {\n try {\n const entityId = message.summary?.entityId\n if (!entityId) return\n\n let productExistsInCache = false\n updateCachedData((draft) => {\n productExistsInCache = draft.pages.some((page) =>\n page.products.some((product: ProductNode) => product.id === entityId),\n )\n })\n\n if (!productExistsInCache && _topic !== 'entity.product.created') return\n\n await refetchProduct(entityId)\n } catch (error) {\n // Silently handle errors to prevent UI disruption\n }\n },\n )\n\n // Subscribe to version entity changes - refetch parent product when version changes\n // This ensures product's versions list and featuredVersion stay up-to-date\n const versionToken = PubSub.subscribe(\n 'entity.version',\n createVersionUpdateBatcher(arg.projectName, dispatch, {\n getBaseFilters: () => ({\n versionFilter: arg.versionFilter,\n productFilter: arg.productFilter,\n taskFilter: arg.taskFilter,\n folderIds: arg.folderIds?.length ? arg.folderIds : undefined,\n }),\n checkVersionInCache: (entityId, parentId) => {\n let found = false\n updateCachedData((draft) => {\n found = draft.pages.some((page) =>\n page.products.some(\n (p) => p.id === parentId && p.featuredVersion?.id === entityId,\n ),\n )\n })\n return found\n },\n onBatchUpdate: ({ deleted, patched, attribPatched, fullUpdated }) => {\n updateCachedData((draft) => {\n for (const page of draft?.pages || []) {\n for (const p of page.products) {\n const featuredId = p.featuredVersion?.id\n if (!featuredId) continue\n\n // Handle deletes\n if (deleted) {\n if (deleted.some((d) => d.entityId === featuredId && d.parentId === p.id)) {\n // Version deleted, need to refetch product to update featuredVersion\n // Using a set to track which products need refetch to avoid multiple calls\n productsToRefetch.add(p.id)\n }\n }\n\n // Handle simple patches\n if (patched) {\n for (const { entityId, field, value, parentId } of patched) {\n if (p.id === parentId && featuredId === entityId && p.featuredVersion) {\n // @ts-expect-error valid field\n p.featuredVersion[field] = value\n }\n }\n }\n\n // Handle attrib patches\n if (attribPatched) {\n for (const { entityId, allAttrib, parsedAttrib } of attribPatched) {\n if (featuredId === entityId && p.featuredVersion) {\n p.featuredVersion.allAttrib = allAttrib\n p.featuredVersion.attrib = parsedAttrib\n }\n }\n }\n\n // Handle full updates\n if (fullUpdated) {\n for (const updatedNode of fullUpdated) {\n if (featuredId === updatedNode.id && p.featuredVersion) {\n p.featuredVersion = updatedNode\n }\n }\n }\n }\n }\n })\n\n // If any products need full refetch (due to deletes or new version becoming featured)\n // we trigger that now\n for (const productId of productsToRefetch) {\n refetchProduct(productId)\n }\n productsToRefetch.clear()\n },\n }),\n )\n\n const productsToRefetch = new Set<string>()\n\n // Cleanup: unsubscribe when cache entry is removed\n await cacheEntryRemoved\n PubSub.unsubscribe(productToken)\n PubSub.unsubscribe(versionToken)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n },\n },\n ),\n\n // Grouped versions query - fetches versions for multiple group filters\n getGroupedVersionsList: build.query<GetGroupedVersionsListResult, GetGroupedVersionsListArgs>({\n queryFn: async (\n {\n projectName,\n groups,\n groupFilterKey = 'versionFilter',\n versionFilter, // most of the time overridden by group filters\n productFilter,\n taskFilter,\n folderIds,\n desc,\n sortBy,\n featuredOnly,\n hasReviewables,\n },\n api,\n ) => {\n try {\n const promises = []\n for (const group of groups) {\n const count = group.count || 500\n\n const queryParams: GetVersionsQueryVariables = {\n projectName,\n // base filters\n productFilter,\n taskFilter,\n versionFilter,\n // specific group filter\n [groupFilterKey]: group.filter,\n folderIds: folderIds?.length ? folderIds : undefined,\n sortBy: sortBy,\n featuredOnly,\n hasReviewables,\n // @ts-expect-error - group param used later on\n group: group.value,\n }\n\n if (desc) {\n queryParams.last = count\n } else {\n queryParams.first = count\n }\n\n const promise = api.dispatch(\n enhancedVersionsPageApi.endpoints.GetVersions.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n promises.push(promise)\n }\n\n const result = await Promise.all(promises)\n const versions: VersionNode[] = []\n\n for (const res of result) {\n if (res.error) throw res.error\n\n // get group value\n // @ts-expect-error - we know group does exist on res.originalArgs\n const groupValue = res.originalArgs?.group as string\n\n const hasNextPage =\n res.data?.pageInfo?.hasNextPage || res.data?.pageInfo?.hasPreviousPage || false\n\n const groupVersions =\n res.data?.versions.map((version, i, a) => ({\n ...version,\n groups: [\n {\n value: groupValue,\n hasNextPage: i === a.length - 1 && hasNextPage ? groupValue : undefined,\n },\n ],\n })) || []\n\n versions.push(...groupVersions)\n }\n\n return {\n data: {\n versions,\n },\n }\n } catch (error: any) {\n console.error('Error in getGroupedVersionsList queryFn:', error)\n return {\n error: {\n status: 'FETCH_ERROR',\n error: parseGQLErrorMessage(error.message),\n } as FetchBaseQueryError,\n }\n }\n },\n providesTags: provideTagsForVersionsResult,\n keepUnusedDataFor: 30,\n // Subscribes to version entity changes and updates cache accordingly\n // Handles: create, update, delete operations for grouped versions view\n onCacheEntryAdded: async (arg, { updateCachedData, cacheEntryRemoved, dispatch }) => {\n let unsubscribeThumbnails: (() => void) | undefined\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n const relevantMessages = messages.filter((m) => m.project === arg.projectName)\n if (!relevantMessages.length) return\n\n updateCachedData((draft) => {\n relevantMessages.forEach((message) => {\n if (message.summary.entityType === 'version') {\n const vIndex = draft.versions.findIndex((v) => v.id === message.summary.entityId)\n if (vIndex !== -1) {\n draft.versions[vIndex].thumbnailHash = message.summary.thumbnailHash || ''\n }\n }\n })\n })\n },\n ['version'],\n )\n\n const token = PubSub.subscribe(\n 'entity.version',\n createVersionUpdateBatcher(arg.projectName, dispatch, {\n getBaseFilters: () => ({\n versionFilter: arg.versionFilter,\n productFilter: arg.productFilter,\n taskFilter: arg.taskFilter,\n folderIds: arg.folderIds?.length ? arg.folderIds : undefined,\n sortBy: arg.sortBy,\n featuredOnly: arg.featuredOnly,\n hasReviewables: arg.hasReviewables,\n }),\n checkVersionInCache: (entityId) => {\n let found = false\n updateCachedData((draft) => {\n found = draft.versions.some((v) => v.id === entityId)\n })\n return found\n },\n onBatchUpdate: ({ deleted, patched, attribPatched, fullUpdated }) => {\n updateCachedData((draft) => {\n // Handle deletes\n if (deleted) {\n for (const { entityId } of deleted) {\n const vIndex = draft.versions.findIndex((v) => v.id === entityId)\n if (vIndex !== -1) draft.versions.splice(vIndex, 1)\n }\n }\n // Handle patches\n if (patched) {\n for (const { entityId, field, value } of patched) {\n const version = draft.versions.find((v) => v.id === entityId)\n if (version) {\n // @ts-expect-error valid field\n version[field] = value\n }\n }\n }\n // Handle attrib patches\n if (attribPatched) {\n for (const { entityId, allAttrib, parsedAttrib } of attribPatched) {\n const version = draft.versions.find((v) => v.id === entityId)\n if (version) {\n version.allAttrib = allAttrib\n version.attrib = parsedAttrib\n }\n }\n }\n // Handle full updates\n if (fullUpdated) {\n for (const updatedNode of fullUpdated) {\n const index = draft.versions.findIndex((v) => v.id === updatedNode.id)\n if (index !== -1) {\n // Preserve groups when updating\n const originalGroups = draft.versions[index].groups\n draft.versions[index] = { ...updatedNode, groups: originalGroups }\n }\n }\n }\n })\n },\n }),\n )\n\n // Cleanup: unsubscribe when cache entry is removed\n await cacheEntryRemoved\n PubSub.unsubscribe(token)\n if (unsubscribeThumbnails) {\n unsubscribeThumbnails()\n }\n },\n }),\n }),\n})\n\n// export gql endpoints\nexport const {\n useGetVersionsQuery,\n useGetProductsColumnStatsQuery,\n useGetVersionsColumnStatsQuery,\n} = enhancedVersionsPageApi\n// export custom queries\nexport const {\n useGetVersionsInfiniteInfiniteQuery: useGetVersionsInfiniteQuery,\n useGetVersionsByProductsQuery,\n useGetProductsInfiniteInfiniteQuery: useGetProductsInfiniteQuery,\n useGetGroupedVersionsListQuery,\n} = injectedVersionsPageApi\n\n// export API instances for cache manipulation\nexport { enhancedVersionsPageApi, injectedVersionsPageApi }\n"],"names":["findSortedInsertIndex","items","newItem","sortBy","desc","i","newValue","currentValue","updatePagedCache","pages","entityId","updatedItem","itemsKey","page","index","item","insertIndex","enhancedVersionsPageApi","gqlApi","transformVersionsResponse","provideTagsForVersionsResult","transformProductsResponse","provideTagsForProductsResult","res","normalizeFieldStats","error","transformStatsError","_t","rest","cache","incoming","mergeFieldStats","currentArg","previousArg","hasNewTargetFields","_r","_e","projectName","VP_INFINITE_QUERY_COUNT","VERSIONS_BY_PRODUCT_ID_QUERY_COUNT","MAX_PAGES_PER_PRODUCT","VERSION_UPDATE_BATCH_DEBOUNCE","VERSION_UPDATE_ATTRIB_JITTER","VERSION_UPDATE_NEW_DATA_DEBOUNCE","VERSION_UPDATE_NEW_DATA_JITTER","createVersionUpdateBatcher","dispatch","handlers","pendingPatchUpdates","patchTimeoutId","pendingFullFetchIds","fullFetchTimeoutId","processPatches","updates","deleted","patched","attribsToFetch","topic","msg","parentId","field","isFieldSupported","value","castValue","processFullFetches","attribPatched","resolve","versionIds","result","edge","node","parseAllAttribs","e","baseFilters","message","injectedVersionsPageApi","build","lastPage","_allPages","lastPageParam","_allPageParams","pageInfo","queryArg","pageParam","api","folderIds","cursor","queryParams","fallback","parseGQLErrorMessage","provideTagsForVersionsInfinite","arg","getCacheEntry","updateCachedData","cacheEntryRemoved","unsubscribeThumbnails","subscribeToThumbnailUpdates","messages","relevantMessages","m","draft","vIndex","v","token","PubSub","cacheVersions","fullUpdated","version","allAttrib","parsedAttrib","updatedNode","sortKey","args","forced","productIds","fetchVersionsPage","productId","promises","settledResults","allVersions","errors","settledResult","pageCount","hasNextPage","nextPageResult","found","provideTagsForProductsInfinite","p","refetchProduct","updatedProduct","productToken","_topic","productExistsInCache","product","versionToken","featuredId","d","productsToRefetch","groups","groupFilterKey","versionFilter","productFilter","taskFilter","featuredOnly","hasReviewables","group","count","promise","versions","groupValue","groupVersions","a","originalGroups","useGetVersionsQuery","useGetProductsColumnStatsQuery","useGetVersionsColumnStatsQuery","useGetVersionsInfiniteQuery","useGetVersionsByProductsQuery","useGetProductsInfiniteQuery","useGetGroupedVersionsListQuery"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("lodash");require("react-toastify");const r=require("../../util/getAttributeIcon.cjs.js");require("uuid");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/dataImport.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/projectFolders.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/columnStats/metricTargets.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/products/getFolderProducts.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/projectFolders/projectFolders.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/tasks/getTasks.cjs.js");require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/teams/getTeams.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");require("../../util/pubsub.cjs.js");const t="__undefined___",u=[{value:"text",label:"Text",icon:r.getAttributeIcon("text","string"),widgets:[{value:t,label:"Short text",isDefault:!0,tooltip:"A short text input"},{value:"markdown",label:"Long text",tooltip:"A multi-line text input with markdown support"}]},{value:"select",label:"Select",icon:r.getAttributeIcon("select","string",!0)},{value:"multi_select",label:"Multi-select",icon:r.getAttributeIcon("multi_select","list_of_strings",!0)},{value:"number",label:"Number",icon:r.getAttributeIcon("number","integer")},{value:"checkbox",label:"Checkbox",icon:r.getAttributeIcon("checkbox","boolean")},{value:"datetime",label:"Date and time",icon:r.getAttributeIcon("datetime","datetime")}],c={text:["minLength","maxLength","regex"],select:["enum"],multi_select:["enum","minItems","maxItems"],number:["ge","gt","le","lt"],checkbox:[],datetime:[]},a={checkbox:["example"]},q=(e,i)=>{switch(e){case"string":return i?.length?"select":"text";case"list_of_strings":return"multi_select";case"integer":case"float":return"number";case"boolean":return"checkbox";case"datetime":return"datetime";default:return"text"}},o=(e,i)=>{switch(e){case"text":return"string";case"select":return"string";case"multi_select":return"list_of_strings";case"number":return i?"float":"integer";case"checkbox":return"boolean";case"datetime":return"datetime"}},s=["string","integer","float","boolean","datetime","list_of_strings"],b=(e,i)=>{if(!e||!s.includes(e))return e??"";const n=q(e,i);return u.find(l=>l.value===n)?.label??e};exports.UI_TYPE_EXCLUDE=a;exports.UI_TYPE_FIELDS=c;exports.UI_TYPE_OPTIONS=u;exports.WIDGET_UNDEFINED_KEY=t;exports.backendToUiType=q;exports.getUiTypeLabel=b;exports.uiTypeToBackend=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("lodash");require("react-toastify");const r=require("../../util/getAttributeIcon.cjs.js");require("uuid");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/dataImport.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/projectFolders.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/bundles/getBundles.cjs.js");require("../../api/queries/bundles/updateBundles.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/columnStats/metricTargets.cjs.js");require("../../api/queries/columnStats/groupCounts.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/products/getFolderProducts.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/projectFolders/projectFolders.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/tasks/getTasks.cjs.js");require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/teams/getTeams.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");require("../../util/pubsub.cjs.js");const u="__undefined___",t=[{value:"text",label:"Text",icon:r.getAttributeIcon("text","string"),widgets:[{value:u,label:"Short text",isDefault:!0,tooltip:"A short text input"},{value:"markdown",label:"Long text",tooltip:"A multi-line text input with markdown support"}]},{value:"select",label:"Select",icon:r.getAttributeIcon("select","string",!0)},{value:"multi_select",label:"Multi-select",icon:r.getAttributeIcon("multi_select","list_of_strings",!0)},{value:"number",label:"Number",icon:r.getAttributeIcon("number","integer")},{value:"checkbox",label:"Checkbox",icon:r.getAttributeIcon("checkbox","boolean")},{value:"datetime",label:"Date and time",icon:r.getAttributeIcon("datetime","datetime")}],c={text:["minLength","maxLength","regex"],select:["enum"],multi_select:["enum","minItems","maxItems"],number:["ge","gt","le","lt"],checkbox:[],datetime:[]},a={checkbox:["example"]},q=(e,i)=>{switch(e){case"string":return i?.length?"select":"text";case"list_of_strings":return"multi_select";case"integer":case"float":return"number";case"boolean":return"checkbox";case"datetime":return"datetime";default:return"text"}},o=(e,i)=>{switch(e){case"text":return"string";case"select":return"string";case"multi_select":return"list_of_strings";case"number":return i?"float":"integer";case"checkbox":return"boolean";case"datetime":return"datetime"}},s=["string","integer","float","boolean","datetime","list_of_strings"],b=(e,i)=>{if(!e||!s.includes(e))return e??"";const n=q(e,i);return t.find(l=>l.value===n)?.label??e};exports.UI_TYPE_EXCLUDE=a;exports.UI_TYPE_FIELDS=c;exports.UI_TYPE_OPTIONS=t;exports.WIDGET_UNDEFINED_KEY=u;exports.backendToUiType=q;exports.getUiTypeLabel=b;exports.uiTypeToBackend=o;
2
2
  //# sourceMappingURL=attributeTypeMap.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attributeTypeMap.cjs.js","sources":["../../../../../src/components/AttributeEditor/attributeTypeMap.ts"],"sourcesContent":["import { AttributeData } from '@shared/api'\nimport { getAttributeIcon } from '@shared/util'\n\nexport type UIAttributeType =\n | 'text'\n | 'select'\n | 'multi_select'\n | 'number'\n | 'checkbox'\n | 'datetime'\n\nexport interface UITypeWidget {\n isDefault?: boolean\n value: string | undefined\n label: string\n icon?: string\n tooltip?: string\n}\n\nexport interface UITypeOption {\n value: UIAttributeType\n label: string\n icon: string\n widgets?: UITypeWidget[]\n}\n\nexport const WIDGET_UNDEFINED_KEY = '__undefined___'\n\nexport const UI_TYPE_OPTIONS: UITypeOption[] = [\n {\n value: 'text',\n label: 'Text',\n icon: getAttributeIcon('text', 'string'),\n widgets: [\n {\n value: WIDGET_UNDEFINED_KEY,\n label: 'Short text',\n isDefault: true,\n tooltip: 'A short text input',\n },\n {\n value: 'markdown',\n label: 'Long text',\n tooltip: 'A multi-line text input with markdown support',\n },\n ],\n },\n { value: 'select', label: 'Select', icon: getAttributeIcon('select', 'string', true) },\n {\n value: 'multi_select',\n label: 'Multi-select',\n icon: getAttributeIcon('multi_select', 'list_of_strings', true),\n },\n { value: 'number', label: 'Number', icon: getAttributeIcon('number', 'integer') },\n { value: 'checkbox', label: 'Checkbox', icon: getAttributeIcon('checkbox', 'boolean') },\n { value: 'datetime', label: 'Date and time', icon: getAttributeIcon('datetime', 'datetime') },\n]\n\nexport const UI_TYPE_FIELDS: Record<UIAttributeType, (keyof AttributeData)[]> = {\n text: ['minLength', 'maxLength', 'regex'],\n select: ['enum'],\n multi_select: ['enum', 'minItems', 'maxItems'],\n number: ['ge', 'gt', 'le', 'lt'],\n checkbox: [],\n datetime: [],\n}\n\nexport const UI_TYPE_EXCLUDE: Partial<Record<UIAttributeType, (keyof AttributeData)[]>> = {\n checkbox: ['example'],\n}\n\nexport const backendToUiType = (\n type: AttributeData['type'] | undefined,\n enumValues?: AttributeData['enum'],\n): UIAttributeType => {\n switch (type) {\n case 'string':\n return enumValues?.length ? 'select' : 'text'\n case 'list_of_strings':\n return 'multi_select'\n case 'integer':\n case 'float':\n return 'number'\n case 'boolean':\n return 'checkbox'\n case 'datetime':\n return 'datetime'\n default:\n return 'text'\n }\n}\n\nexport const uiTypeToBackend = (\n uiType: UIAttributeType,\n isDecimal: boolean,\n): AttributeData['type'] => {\n switch (uiType) {\n case 'text':\n return 'string'\n case 'select':\n return 'string'\n case 'multi_select':\n return 'list_of_strings'\n case 'number':\n return isDecimal ? 'float' : 'integer'\n case 'checkbox':\n return 'boolean'\n case 'datetime':\n return 'datetime'\n }\n}\n\nconst UI_MAPPED_BACKEND_TYPES: ReadonlyArray<AttributeData['type']> = [\n 'string',\n 'integer',\n 'float',\n 'boolean',\n 'datetime',\n 'list_of_strings',\n]\n\nexport const getUiTypeLabel = (\n type: AttributeData['type'] | undefined,\n enumValues?: AttributeData['enum'],\n): string => {\n // Unknown / unsupported backend types fall back to the raw type string\n // so the table doesn't mislabel them (e.g. list_of_integers, dict).\n if (!type || !UI_MAPPED_BACKEND_TYPES.includes(type)) return type ?? ''\n const uiType = backendToUiType(type, enumValues)\n return UI_TYPE_OPTIONS.find((o) => o.value === uiType)?.label ?? type\n}\n"],"names":["WIDGET_UNDEFINED_KEY","UI_TYPE_OPTIONS","getAttributeIcon","UI_TYPE_FIELDS","UI_TYPE_EXCLUDE","backendToUiType","type","enumValues","uiTypeToBackend","uiType","isDecimal","UI_MAPPED_BACKEND_TYPES","getUiTypeLabel","o"],"mappings":"gnKA0BO,MAAMA,EAAuB,iBAEvBC,EAAkC,CAC7C,CACE,MAAO,OACP,MAAO,OACP,KAAMC,EAAAA,iBAAiB,OAAQ,QAAQ,EACvC,QAAS,CACP,CACE,MAAOF,EACP,MAAO,aACP,UAAW,GACX,QAAS,oBAAA,EAEX,CACE,MAAO,WACP,MAAO,YACP,QAAS,+CAAA,CACX,CACF,EAEF,CAAE,MAAO,SAAU,MAAO,SAAU,KAAME,EAAAA,iBAAiB,SAAU,SAAU,EAAI,CAAA,EACnF,CACE,MAAO,eACP,MAAO,eACP,KAAMA,EAAAA,iBAAiB,eAAgB,kBAAmB,EAAI,CAAA,EAEhE,CAAE,MAAO,SAAU,MAAO,SAAU,KAAMA,EAAAA,iBAAiB,SAAU,SAAS,CAAA,EAC9E,CAAE,MAAO,WAAY,MAAO,WAAY,KAAMA,EAAAA,iBAAiB,WAAY,SAAS,CAAA,EACpF,CAAE,MAAO,WAAY,MAAO,gBAAiB,KAAMA,EAAAA,iBAAiB,WAAY,UAAU,CAAA,CAC5F,EAEaC,EAAmE,CAC9E,KAAM,CAAC,YAAa,YAAa,OAAO,EACxC,OAAQ,CAAC,MAAM,EACf,aAAc,CAAC,OAAQ,WAAY,UAAU,EAC7C,OAAQ,CAAC,KAAM,KAAM,KAAM,IAAI,EAC/B,SAAU,CAAA,EACV,SAAU,CAAA,CACZ,EAEaC,EAA6E,CACxF,SAAU,CAAC,SAAS,CACtB,EAEaC,EAAkB,CAC7BC,EACAC,IACoB,CACpB,OAAQD,EAAA,CACN,IAAK,SACH,OAAOC,GAAY,OAAS,SAAW,OACzC,IAAK,kBACH,MAAO,eACT,IAAK,UACL,IAAK,QACH,MAAO,SACT,IAAK,UACH,MAAO,WACT,IAAK,WACH,MAAO,WACT,QACE,MAAO,MAAA,CAEb,EAEaC,EAAkB,CAC7BC,EACAC,IAC0B,CAC1B,OAAQD,EAAA,CACN,IAAK,OACH,MAAO,SACT,IAAK,SACH,MAAO,SACT,IAAK,eACH,MAAO,kBACT,IAAK,SACH,OAAOC,EAAY,QAAU,UAC/B,IAAK,WACH,MAAO,UACT,IAAK,WACH,MAAO,UAAA,CAEb,EAEMC,EAAgE,CACpE,SACA,UACA,QACA,UACA,WACA,iBACF,EAEaC,EAAiB,CAC5BN,EACAC,IACW,CAGX,GAAI,CAACD,GAAQ,CAACK,EAAwB,SAASL,CAAI,SAAUA,GAAQ,GACrE,MAAMG,EAASJ,EAAgBC,EAAMC,CAAU,EAC/C,OAAON,EAAgB,KAAMY,GAAMA,EAAE,QAAUJ,CAAM,GAAG,OAASH,CACnE"}
1
+ {"version":3,"file":"attributeTypeMap.cjs.js","sources":["../../../../../src/components/AttributeEditor/attributeTypeMap.ts"],"sourcesContent":["import { AttributeData } from '@shared/api'\nimport { getAttributeIcon } from '@shared/util'\n\nexport type UIAttributeType =\n | 'text'\n | 'select'\n | 'multi_select'\n | 'number'\n | 'checkbox'\n | 'datetime'\n\nexport interface UITypeWidget {\n isDefault?: boolean\n value: string | undefined\n label: string\n icon?: string\n tooltip?: string\n}\n\nexport interface UITypeOption {\n value: UIAttributeType\n label: string\n icon: string\n widgets?: UITypeWidget[]\n}\n\nexport const WIDGET_UNDEFINED_KEY = '__undefined___'\n\nexport const UI_TYPE_OPTIONS: UITypeOption[] = [\n {\n value: 'text',\n label: 'Text',\n icon: getAttributeIcon('text', 'string'),\n widgets: [\n {\n value: WIDGET_UNDEFINED_KEY,\n label: 'Short text',\n isDefault: true,\n tooltip: 'A short text input',\n },\n {\n value: 'markdown',\n label: 'Long text',\n tooltip: 'A multi-line text input with markdown support',\n },\n ],\n },\n { value: 'select', label: 'Select', icon: getAttributeIcon('select', 'string', true) },\n {\n value: 'multi_select',\n label: 'Multi-select',\n icon: getAttributeIcon('multi_select', 'list_of_strings', true),\n },\n { value: 'number', label: 'Number', icon: getAttributeIcon('number', 'integer') },\n { value: 'checkbox', label: 'Checkbox', icon: getAttributeIcon('checkbox', 'boolean') },\n { value: 'datetime', label: 'Date and time', icon: getAttributeIcon('datetime', 'datetime') },\n]\n\nexport const UI_TYPE_FIELDS: Record<UIAttributeType, (keyof AttributeData)[]> = {\n text: ['minLength', 'maxLength', 'regex'],\n select: ['enum'],\n multi_select: ['enum', 'minItems', 'maxItems'],\n number: ['ge', 'gt', 'le', 'lt'],\n checkbox: [],\n datetime: [],\n}\n\nexport const UI_TYPE_EXCLUDE: Partial<Record<UIAttributeType, (keyof AttributeData)[]>> = {\n checkbox: ['example'],\n}\n\nexport const backendToUiType = (\n type: AttributeData['type'] | undefined,\n enumValues?: AttributeData['enum'],\n): UIAttributeType => {\n switch (type) {\n case 'string':\n return enumValues?.length ? 'select' : 'text'\n case 'list_of_strings':\n return 'multi_select'\n case 'integer':\n case 'float':\n return 'number'\n case 'boolean':\n return 'checkbox'\n case 'datetime':\n return 'datetime'\n default:\n return 'text'\n }\n}\n\nexport const uiTypeToBackend = (\n uiType: UIAttributeType,\n isDecimal: boolean,\n): AttributeData['type'] => {\n switch (uiType) {\n case 'text':\n return 'string'\n case 'select':\n return 'string'\n case 'multi_select':\n return 'list_of_strings'\n case 'number':\n return isDecimal ? 'float' : 'integer'\n case 'checkbox':\n return 'boolean'\n case 'datetime':\n return 'datetime'\n }\n}\n\nconst UI_MAPPED_BACKEND_TYPES: ReadonlyArray<AttributeData['type']> = [\n 'string',\n 'integer',\n 'float',\n 'boolean',\n 'datetime',\n 'list_of_strings',\n]\n\nexport const getUiTypeLabel = (\n type: AttributeData['type'] | undefined,\n enumValues?: AttributeData['enum'],\n): string => {\n // Unknown / unsupported backend types fall back to the raw type string\n // so the table doesn't mislabel them (e.g. list_of_integers, dict).\n if (!type || !UI_MAPPED_BACKEND_TYPES.includes(type)) return type ?? ''\n const uiType = backendToUiType(type, enumValues)\n return UI_TYPE_OPTIONS.find((o) => o.value === uiType)?.label ?? type\n}\n"],"names":["WIDGET_UNDEFINED_KEY","UI_TYPE_OPTIONS","getAttributeIcon","UI_TYPE_FIELDS","UI_TYPE_EXCLUDE","backendToUiType","type","enumValues","uiTypeToBackend","uiType","isDecimal","UI_MAPPED_BACKEND_TYPES","getUiTypeLabel","o"],"mappings":"6xKA0BO,MAAMA,EAAuB,iBAEvBC,EAAkC,CAC7C,CACE,MAAO,OACP,MAAO,OACP,KAAMC,EAAAA,iBAAiB,OAAQ,QAAQ,EACvC,QAAS,CACP,CACE,MAAOF,EACP,MAAO,aACP,UAAW,GACX,QAAS,oBAAA,EAEX,CACE,MAAO,WACP,MAAO,YACP,QAAS,+CAAA,CACX,CACF,EAEF,CAAE,MAAO,SAAU,MAAO,SAAU,KAAME,EAAAA,iBAAiB,SAAU,SAAU,EAAI,CAAA,EACnF,CACE,MAAO,eACP,MAAO,eACP,KAAMA,EAAAA,iBAAiB,eAAgB,kBAAmB,EAAI,CAAA,EAEhE,CAAE,MAAO,SAAU,MAAO,SAAU,KAAMA,EAAAA,iBAAiB,SAAU,SAAS,CAAA,EAC9E,CAAE,MAAO,WAAY,MAAO,WAAY,KAAMA,EAAAA,iBAAiB,WAAY,SAAS,CAAA,EACpF,CAAE,MAAO,WAAY,MAAO,gBAAiB,KAAMA,EAAAA,iBAAiB,WAAY,UAAU,CAAA,CAC5F,EAEaC,EAAmE,CAC9E,KAAM,CAAC,YAAa,YAAa,OAAO,EACxC,OAAQ,CAAC,MAAM,EACf,aAAc,CAAC,OAAQ,WAAY,UAAU,EAC7C,OAAQ,CAAC,KAAM,KAAM,KAAM,IAAI,EAC/B,SAAU,CAAA,EACV,SAAU,CAAA,CACZ,EAEaC,EAA6E,CACxF,SAAU,CAAC,SAAS,CACtB,EAEaC,EAAkB,CAC7BC,EACAC,IACoB,CACpB,OAAQD,EAAA,CACN,IAAK,SACH,OAAOC,GAAY,OAAS,SAAW,OACzC,IAAK,kBACH,MAAO,eACT,IAAK,UACL,IAAK,QACH,MAAO,SACT,IAAK,UACH,MAAO,WACT,IAAK,WACH,MAAO,WACT,QACE,MAAO,MAAA,CAEb,EAEaC,EAAkB,CAC7BC,EACAC,IAC0B,CAC1B,OAAQD,EAAA,CACN,IAAK,OACH,MAAO,SACT,IAAK,SACH,MAAO,SACT,IAAK,eACH,MAAO,kBACT,IAAK,SACH,OAAOC,EAAY,QAAU,UAC/B,IAAK,WACH,MAAO,UACT,IAAK,WACH,MAAO,UAAA,CAEb,EAEMC,EAAgE,CACpE,SACA,UACA,QACA,UACA,WACA,iBACF,EAEaC,EAAiB,CAC5BN,EACAC,IACW,CAGX,GAAI,CAACD,GAAQ,CAACK,EAAwB,SAASL,CAAI,SAAUA,GAAQ,GACrE,MAAMG,EAASJ,EAAgBC,EAAMC,CAAU,EAC/C,OAAON,EAAgB,KAAMY,GAAMA,EAAE,QAAUJ,CAAM,GAAG,OAASH,CACnE"}
@@ -52,8 +52,11 @@ import "../../api/queries/addons/updateAddons.es.js";
52
52
  import "../../api/queries/attributes/getAttributes.es.js";
53
53
  import "../../api/queries/attributes/updateAttributes.es.js";
54
54
  import "../../api/queries/authentication/getAuthentication.es.js";
55
+ import "../../api/queries/bundles/getBundles.es.js";
56
+ import "../../api/queries/bundles/updateBundles.es.js";
55
57
  import "../../api/queries/cloud/cloud.es.js";
56
58
  import "../../api/queries/columnStats/metricTargets.es.js";
59
+ import "../../api/queries/columnStats/groupCounts.es.js";
57
60
  import "../../api/queries/config/getConfig.es.js";
58
61
  import "../../api/queries/config/updateConfig.es.js";
59
62
  import "../../api/queries/entities/getEntity.es.js";
@@ -125,14 +128,14 @@ const m = "__undefined___", p = [
125
128
  { value: "number", label: "Number", icon: i("number", "integer") },
126
129
  { value: "checkbox", label: "Checkbox", icon: i("checkbox", "boolean") },
127
130
  { value: "datetime", label: "Date and time", icon: i("datetime", "datetime") }
128
- ], ti = {
131
+ ], ei = {
129
132
  text: ["minLength", "maxLength", "regex"],
130
133
  select: ["enum"],
131
134
  multi_select: ["enum", "minItems", "maxItems"],
132
135
  number: ["ge", "gt", "le", "lt"],
133
136
  checkbox: [],
134
137
  datetime: []
135
- }, ii = {
138
+ }, oi = {
136
139
  checkbox: ["example"]
137
140
  }, n = (t, r) => {
138
141
  switch (t) {
@@ -150,7 +153,7 @@ const m = "__undefined___", p = [
150
153
  default:
151
154
  return "text";
152
155
  }
153
- }, ri = (t, r) => {
156
+ }, mi = (t, r) => {
154
157
  switch (t) {
155
158
  case "text":
156
159
  return "string";
@@ -172,18 +175,18 @@ const m = "__undefined___", p = [
172
175
  "boolean",
173
176
  "datetime",
174
177
  "list_of_strings"
175
- ], ei = (t, r) => {
178
+ ], pi = (t, r) => {
176
179
  if (!t || !l.includes(t)) return t ?? "";
177
180
  const e = n(t, r);
178
181
  return p.find((o) => o.value === e)?.label ?? t;
179
182
  };
180
183
  export {
181
- ii as UI_TYPE_EXCLUDE,
182
- ti as UI_TYPE_FIELDS,
184
+ oi as UI_TYPE_EXCLUDE,
185
+ ei as UI_TYPE_FIELDS,
183
186
  p as UI_TYPE_OPTIONS,
184
187
  m as WIDGET_UNDEFINED_KEY,
185
188
  n as backendToUiType,
186
- ei as getUiTypeLabel,
187
- ri as uiTypeToBackend
189
+ pi as getUiTypeLabel,
190
+ mi as uiTypeToBackend
188
191
  };
189
192
  //# sourceMappingURL=attributeTypeMap.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attributeTypeMap.es.js","sources":["../../../../../src/components/AttributeEditor/attributeTypeMap.ts"],"sourcesContent":["import { AttributeData } from '@shared/api'\nimport { getAttributeIcon } from '@shared/util'\n\nexport type UIAttributeType =\n | 'text'\n | 'select'\n | 'multi_select'\n | 'number'\n | 'checkbox'\n | 'datetime'\n\nexport interface UITypeWidget {\n isDefault?: boolean\n value: string | undefined\n label: string\n icon?: string\n tooltip?: string\n}\n\nexport interface UITypeOption {\n value: UIAttributeType\n label: string\n icon: string\n widgets?: UITypeWidget[]\n}\n\nexport const WIDGET_UNDEFINED_KEY = '__undefined___'\n\nexport const UI_TYPE_OPTIONS: UITypeOption[] = [\n {\n value: 'text',\n label: 'Text',\n icon: getAttributeIcon('text', 'string'),\n widgets: [\n {\n value: WIDGET_UNDEFINED_KEY,\n label: 'Short text',\n isDefault: true,\n tooltip: 'A short text input',\n },\n {\n value: 'markdown',\n label: 'Long text',\n tooltip: 'A multi-line text input with markdown support',\n },\n ],\n },\n { value: 'select', label: 'Select', icon: getAttributeIcon('select', 'string', true) },\n {\n value: 'multi_select',\n label: 'Multi-select',\n icon: getAttributeIcon('multi_select', 'list_of_strings', true),\n },\n { value: 'number', label: 'Number', icon: getAttributeIcon('number', 'integer') },\n { value: 'checkbox', label: 'Checkbox', icon: getAttributeIcon('checkbox', 'boolean') },\n { value: 'datetime', label: 'Date and time', icon: getAttributeIcon('datetime', 'datetime') },\n]\n\nexport const UI_TYPE_FIELDS: Record<UIAttributeType, (keyof AttributeData)[]> = {\n text: ['minLength', 'maxLength', 'regex'],\n select: ['enum'],\n multi_select: ['enum', 'minItems', 'maxItems'],\n number: ['ge', 'gt', 'le', 'lt'],\n checkbox: [],\n datetime: [],\n}\n\nexport const UI_TYPE_EXCLUDE: Partial<Record<UIAttributeType, (keyof AttributeData)[]>> = {\n checkbox: ['example'],\n}\n\nexport const backendToUiType = (\n type: AttributeData['type'] | undefined,\n enumValues?: AttributeData['enum'],\n): UIAttributeType => {\n switch (type) {\n case 'string':\n return enumValues?.length ? 'select' : 'text'\n case 'list_of_strings':\n return 'multi_select'\n case 'integer':\n case 'float':\n return 'number'\n case 'boolean':\n return 'checkbox'\n case 'datetime':\n return 'datetime'\n default:\n return 'text'\n }\n}\n\nexport const uiTypeToBackend = (\n uiType: UIAttributeType,\n isDecimal: boolean,\n): AttributeData['type'] => {\n switch (uiType) {\n case 'text':\n return 'string'\n case 'select':\n return 'string'\n case 'multi_select':\n return 'list_of_strings'\n case 'number':\n return isDecimal ? 'float' : 'integer'\n case 'checkbox':\n return 'boolean'\n case 'datetime':\n return 'datetime'\n }\n}\n\nconst UI_MAPPED_BACKEND_TYPES: ReadonlyArray<AttributeData['type']> = [\n 'string',\n 'integer',\n 'float',\n 'boolean',\n 'datetime',\n 'list_of_strings',\n]\n\nexport const getUiTypeLabel = (\n type: AttributeData['type'] | undefined,\n enumValues?: AttributeData['enum'],\n): string => {\n // Unknown / unsupported backend types fall back to the raw type string\n // so the table doesn't mislabel them (e.g. list_of_integers, dict).\n if (!type || !UI_MAPPED_BACKEND_TYPES.includes(type)) return type ?? ''\n const uiType = backendToUiType(type, enumValues)\n return UI_TYPE_OPTIONS.find((o) => o.value === uiType)?.label ?? type\n}\n"],"names":["WIDGET_UNDEFINED_KEY","UI_TYPE_OPTIONS","getAttributeIcon","UI_TYPE_FIELDS","UI_TYPE_EXCLUDE","backendToUiType","type","enumValues","uiTypeToBackend","uiType","isDecimal","UI_MAPPED_BACKEND_TYPES","getUiTypeLabel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BO,MAAMA,IAAuB,kBAEvBC,IAAkC;AAAA,EAC7C;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAMC,EAAiB,QAAQ,QAAQ;AAAA,IACvC,SAAS;AAAA,MACP;AAAA,QACE,OAAOF;AAAA,QACP,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS;AAAA,MAAA;AAAA,MAEX;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,EACF;AAAA,EAEF,EAAE,OAAO,UAAU,OAAO,UAAU,MAAME,EAAiB,UAAU,UAAU,EAAI,EAAA;AAAA,EACnF;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAMA,EAAiB,gBAAgB,mBAAmB,EAAI;AAAA,EAAA;AAAA,EAEhE,EAAE,OAAO,UAAU,OAAO,UAAU,MAAMA,EAAiB,UAAU,SAAS,EAAA;AAAA,EAC9E,EAAE,OAAO,YAAY,OAAO,YAAY,MAAMA,EAAiB,YAAY,SAAS,EAAA;AAAA,EACpF,EAAE,OAAO,YAAY,OAAO,iBAAiB,MAAMA,EAAiB,YAAY,UAAU,EAAA;AAC5F,GAEaC,KAAmE;AAAA,EAC9E,MAAM,CAAC,aAAa,aAAa,OAAO;AAAA,EACxC,QAAQ,CAAC,MAAM;AAAA,EACf,cAAc,CAAC,QAAQ,YAAY,UAAU;AAAA,EAC7C,QAAQ,CAAC,MAAM,MAAM,MAAM,IAAI;AAAA,EAC/B,UAAU,CAAA;AAAA,EACV,UAAU,CAAA;AACZ,GAEaC,KAA6E;AAAA,EACxF,UAAU,CAAC,SAAS;AACtB,GAEaC,IAAkB,CAC7BC,GACAC,MACoB;AACpB,UAAQD,GAAA;AAAA,IACN,KAAK;AACH,aAAOC,GAAY,SAAS,WAAW;AAAA,IACzC,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb,GAEaC,KAAkB,CAC7BC,GACAC,MAC0B;AAC1B,UAAQD,GAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAOC,IAAY,UAAU;AAAA,IAC/B,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EAAA;AAEb,GAEMC,IAAgE;AAAA,EACpE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEaC,KAAiB,CAC5BN,GACAC,MACW;AAGX,MAAI,CAACD,KAAQ,CAACK,EAAwB,SAASL,CAAI,UAAUA,KAAQ;AACrE,QAAMG,IAASJ,EAAgBC,GAAMC,CAAU;AAC/C,SAAON,EAAgB,KAAK,CAAC,MAAM,EAAE,UAAUQ,CAAM,GAAG,SAASH;AACnE;"}
1
+ {"version":3,"file":"attributeTypeMap.es.js","sources":["../../../../../src/components/AttributeEditor/attributeTypeMap.ts"],"sourcesContent":["import { AttributeData } from '@shared/api'\nimport { getAttributeIcon } from '@shared/util'\n\nexport type UIAttributeType =\n | 'text'\n | 'select'\n | 'multi_select'\n | 'number'\n | 'checkbox'\n | 'datetime'\n\nexport interface UITypeWidget {\n isDefault?: boolean\n value: string | undefined\n label: string\n icon?: string\n tooltip?: string\n}\n\nexport interface UITypeOption {\n value: UIAttributeType\n label: string\n icon: string\n widgets?: UITypeWidget[]\n}\n\nexport const WIDGET_UNDEFINED_KEY = '__undefined___'\n\nexport const UI_TYPE_OPTIONS: UITypeOption[] = [\n {\n value: 'text',\n label: 'Text',\n icon: getAttributeIcon('text', 'string'),\n widgets: [\n {\n value: WIDGET_UNDEFINED_KEY,\n label: 'Short text',\n isDefault: true,\n tooltip: 'A short text input',\n },\n {\n value: 'markdown',\n label: 'Long text',\n tooltip: 'A multi-line text input with markdown support',\n },\n ],\n },\n { value: 'select', label: 'Select', icon: getAttributeIcon('select', 'string', true) },\n {\n value: 'multi_select',\n label: 'Multi-select',\n icon: getAttributeIcon('multi_select', 'list_of_strings', true),\n },\n { value: 'number', label: 'Number', icon: getAttributeIcon('number', 'integer') },\n { value: 'checkbox', label: 'Checkbox', icon: getAttributeIcon('checkbox', 'boolean') },\n { value: 'datetime', label: 'Date and time', icon: getAttributeIcon('datetime', 'datetime') },\n]\n\nexport const UI_TYPE_FIELDS: Record<UIAttributeType, (keyof AttributeData)[]> = {\n text: ['minLength', 'maxLength', 'regex'],\n select: ['enum'],\n multi_select: ['enum', 'minItems', 'maxItems'],\n number: ['ge', 'gt', 'le', 'lt'],\n checkbox: [],\n datetime: [],\n}\n\nexport const UI_TYPE_EXCLUDE: Partial<Record<UIAttributeType, (keyof AttributeData)[]>> = {\n checkbox: ['example'],\n}\n\nexport const backendToUiType = (\n type: AttributeData['type'] | undefined,\n enumValues?: AttributeData['enum'],\n): UIAttributeType => {\n switch (type) {\n case 'string':\n return enumValues?.length ? 'select' : 'text'\n case 'list_of_strings':\n return 'multi_select'\n case 'integer':\n case 'float':\n return 'number'\n case 'boolean':\n return 'checkbox'\n case 'datetime':\n return 'datetime'\n default:\n return 'text'\n }\n}\n\nexport const uiTypeToBackend = (\n uiType: UIAttributeType,\n isDecimal: boolean,\n): AttributeData['type'] => {\n switch (uiType) {\n case 'text':\n return 'string'\n case 'select':\n return 'string'\n case 'multi_select':\n return 'list_of_strings'\n case 'number':\n return isDecimal ? 'float' : 'integer'\n case 'checkbox':\n return 'boolean'\n case 'datetime':\n return 'datetime'\n }\n}\n\nconst UI_MAPPED_BACKEND_TYPES: ReadonlyArray<AttributeData['type']> = [\n 'string',\n 'integer',\n 'float',\n 'boolean',\n 'datetime',\n 'list_of_strings',\n]\n\nexport const getUiTypeLabel = (\n type: AttributeData['type'] | undefined,\n enumValues?: AttributeData['enum'],\n): string => {\n // Unknown / unsupported backend types fall back to the raw type string\n // so the table doesn't mislabel them (e.g. list_of_integers, dict).\n if (!type || !UI_MAPPED_BACKEND_TYPES.includes(type)) return type ?? ''\n const uiType = backendToUiType(type, enumValues)\n return UI_TYPE_OPTIONS.find((o) => o.value === uiType)?.label ?? type\n}\n"],"names":["WIDGET_UNDEFINED_KEY","UI_TYPE_OPTIONS","getAttributeIcon","UI_TYPE_FIELDS","UI_TYPE_EXCLUDE","backendToUiType","type","enumValues","uiTypeToBackend","uiType","isDecimal","UI_MAPPED_BACKEND_TYPES","getUiTypeLabel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BO,MAAMA,IAAuB,kBAEvBC,IAAkC;AAAA,EAC7C;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAMC,EAAiB,QAAQ,QAAQ;AAAA,IACvC,SAAS;AAAA,MACP;AAAA,QACE,OAAOF;AAAA,QACP,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS;AAAA,MAAA;AAAA,MAEX;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,EACF;AAAA,EAEF,EAAE,OAAO,UAAU,OAAO,UAAU,MAAME,EAAiB,UAAU,UAAU,EAAI,EAAA;AAAA,EACnF;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAMA,EAAiB,gBAAgB,mBAAmB,EAAI;AAAA,EAAA;AAAA,EAEhE,EAAE,OAAO,UAAU,OAAO,UAAU,MAAMA,EAAiB,UAAU,SAAS,EAAA;AAAA,EAC9E,EAAE,OAAO,YAAY,OAAO,YAAY,MAAMA,EAAiB,YAAY,SAAS,EAAA;AAAA,EACpF,EAAE,OAAO,YAAY,OAAO,iBAAiB,MAAMA,EAAiB,YAAY,UAAU,EAAA;AAC5F,GAEaC,KAAmE;AAAA,EAC9E,MAAM,CAAC,aAAa,aAAa,OAAO;AAAA,EACxC,QAAQ,CAAC,MAAM;AAAA,EACf,cAAc,CAAC,QAAQ,YAAY,UAAU;AAAA,EAC7C,QAAQ,CAAC,MAAM,MAAM,MAAM,IAAI;AAAA,EAC/B,UAAU,CAAA;AAAA,EACV,UAAU,CAAA;AACZ,GAEaC,KAA6E;AAAA,EACxF,UAAU,CAAC,SAAS;AACtB,GAEaC,IAAkB,CAC7BC,GACAC,MACoB;AACpB,UAAQD,GAAA;AAAA,IACN,KAAK;AACH,aAAOC,GAAY,SAAS,WAAW;AAAA,IACzC,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb,GAEaC,KAAkB,CAC7BC,GACAC,MAC0B;AAC1B,UAAQD,GAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAOC,IAAY,UAAU;AAAA,IAC/B,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EAAA;AAEb,GAEMC,IAAgE;AAAA,EACpE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEaC,KAAiB,CAC5BN,GACAC,MACW;AAGX,MAAI,CAACD,KAAQ,CAACK,EAAwB,SAASL,CAAI,UAAUA,KAAQ;AACrE,QAAMG,IAASJ,EAAgBC,GAAMC,CAAU;AAC/C,SAAON,EAAgB,KAAK,CAAC,MAAM,EAAE,UAAUQ,CAAM,GAAG,SAASH;AACnE;"}