@ynput/ayon-frontend-shared 0.3.46 → 0.3.47

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 (735) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +38 -35
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +231 -228
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/Slicer.cjs.js +1 -1
  8. package/dist/Slicer.es.js +193 -25
  9. package/dist/Slicer.es.js.map +1 -1
  10. package/dist/Views.cjs.js +1 -1
  11. package/dist/Views.es.js +27 -26
  12. package/dist/_virtual/index.cjs15.js +1 -1
  13. package/dist/_virtual/index.cjs18.js +1 -1
  14. package/dist/_virtual/index.cjs19.js +1 -1
  15. package/dist/_virtual/index.cjs9.js +1 -1
  16. package/dist/_virtual/index.es10.js +2 -2
  17. package/dist/_virtual/index.es11.js +2 -2
  18. package/dist/_virtual/index.es13.js +2 -2
  19. package/dist/_virtual/index.es14.js +2 -2
  20. package/dist/_virtual/index.es15.js +2 -2
  21. package/dist/_virtual/index.es16.js +2 -2
  22. package/dist/_virtual/index.es17.js +2 -2
  23. package/dist/_virtual/index.es18.js +5 -2
  24. package/dist/_virtual/index.es18.js.map +1 -1
  25. package/dist/_virtual/index.es19.js +2 -2
  26. package/dist/_virtual/index.es9.js +2 -5
  27. package/dist/_virtual/index.es9.js.map +1 -1
  28. package/dist/api.cjs.js +1 -1
  29. package/dist/api.es.js +347 -344
  30. package/dist/api.es.js.map +1 -1
  31. package/dist/components.cjs.js +1 -1
  32. package/dist/components.es.js +41 -39
  33. package/dist/components.es.js.map +1 -1
  34. package/dist/context.cjs.js +1 -1
  35. package/dist/context.es.js +55 -48
  36. package/dist/context.es.js.map +1 -1
  37. package/dist/index.cjs.js +1 -1
  38. package/dist/index.es.js +24 -21
  39. package/dist/index.es.js.map +1 -1
  40. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  41. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  42. package/dist/shared/node_modules/@module-federation/runtime-core/dist/module/index.cjs.js +1 -1
  43. package/dist/shared/node_modules/@module-federation/runtime-core/dist/module/index.es.js +1 -1
  44. package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.cjs.js +1 -1
  45. package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.es.js +1 -1
  46. package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.cjs.js +1 -1
  47. package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.es.js +1 -1
  48. package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.cjs.js +1 -1
  49. package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.es.js +1 -1
  50. package/dist/shared/node_modules/@module-federation/runtime-core/dist/type/index.cjs.js +1 -1
  51. package/dist/shared/node_modules/@module-federation/runtime-core/dist/type/index.es.js +1 -1
  52. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.cjs.js +1 -1
  53. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.es.js +1 -1
  54. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/index.cjs.js +1 -1
  55. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/index.es.js +1 -1
  56. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.cjs.js +1 -1
  57. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.cjs.js.map +1 -1
  58. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.es.js +1 -1
  59. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/utils.cjs.js +1 -1
  60. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/utils.es.js +1 -1
  61. package/dist/shared/node_modules/@module-federation/sdk/dist/index.cjs.js +1 -1
  62. package/dist/shared/node_modules/@module-federation/sdk/dist/index.es.js +1 -1
  63. package/dist/shared/node_modules/@module-federation/sdk/dist/utils.cjs.js +1 -1
  64. package/dist/shared/node_modules/@module-federation/sdk/dist/utils.es.js +1 -1
  65. package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
  66. package/dist/shared/node_modules/prop-types/index.es.js +1 -1
  67. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  68. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  69. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  70. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js.map +1 -1
  71. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  72. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  73. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js.map +1 -1
  74. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  75. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  76. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js.map +1 -1
  77. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  78. package/dist/shared/src/api/generated/graphql.cjs.js +3 -3
  79. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  80. package/dist/shared/src/api/generated/graphql.es.js +3 -3
  81. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  82. package/dist/shared/src/api/queries/actions/refreshActiveAndPurgeOthers.cjs.js +2 -0
  83. package/dist/shared/src/api/queries/actions/refreshActiveAndPurgeOthers.cjs.js.map +1 -0
  84. package/dist/shared/src/api/queries/actions/refreshActiveAndPurgeOthers.es.js +42 -0
  85. package/dist/shared/src/api/queries/actions/refreshActiveAndPurgeOthers.es.js.map +1 -0
  86. package/dist/shared/src/api/queries/activities/getActivities.cjs.js +1 -1
  87. package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
  88. package/dist/shared/src/api/queries/activities/getActivities.es.js +121 -156
  89. package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
  90. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js +1 -1
  91. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js.map +1 -1
  92. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js +93 -68
  93. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js.map +1 -1
  94. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
  95. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
  96. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +63 -56
  97. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
  98. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +1 -1
  99. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  100. package/dist/shared/src/api/queries/entities/updateEntity.es.js +120 -119
  101. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  102. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  103. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  104. package/dist/shared/src/api/queries/entityLists/getLists.es.js +70 -62
  105. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  106. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  107. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  108. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +1 -1
  109. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -1
  110. package/dist/shared/src/api/queries/links/getEntityLinks.es.js +85 -85
  111. package/dist/shared/src/api/queries/links/getEntityLinks.es.js.map +1 -1
  112. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  113. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  114. package/dist/shared/src/api/queries/overview/getOverview.es.js +267 -259
  115. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  116. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  117. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  118. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +85 -79
  119. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  120. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +1 -1
  121. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
  122. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +170 -2
  123. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
  124. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  125. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  126. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +18 -15
  127. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  128. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  129. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  130. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +165 -2
  131. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  132. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +2 -2
  133. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  134. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +164 -2
  135. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  136. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  137. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  138. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +174 -2
  139. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  140. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
  141. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
  142. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +173 -2
  143. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
  144. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  145. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  146. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +5 -2
  147. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  148. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  149. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  150. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +16 -13
  151. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  152. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  153. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  154. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +168 -2
  155. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  156. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  157. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  158. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +260 -89
  159. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  160. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  161. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  162. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +44 -78
  163. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  164. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  165. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  166. package/dist/shared/src/components/LinksManager/LinksManager.es.js +172 -2
  167. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  168. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  169. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  170. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +5 -2
  171. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  172. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  173. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  174. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +173 -2
  175. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  176. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
  177. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
  178. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +158 -2
  179. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
  180. package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
  181. package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
  182. package/dist/shared/src/components/Menu/Menu.es.js +171 -2
  183. package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
  184. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  185. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  186. package/dist/shared/src/components/Menu/MenuItem.es.js +167 -0
  187. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  188. package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
  189. package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
  190. package/dist/shared/src/components/Menu/MenuList.es.js +209 -40
  191. package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
  192. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +1 -1
  193. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  194. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +171 -2
  195. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  196. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  197. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  198. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +170 -2
  199. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  200. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +1 -1
  201. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  202. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +16 -13
  203. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  204. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
  205. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  206. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +82 -79
  207. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  208. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  209. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  210. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +169 -3
  211. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  212. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  213. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  214. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +12 -9
  215. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  216. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  217. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  218. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +5 -2
  219. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  220. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  221. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  222. package/dist/shared/src/components/RenameForm/RenameForm.es.js +5 -2
  223. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  224. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  225. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  226. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +41 -38
  227. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  228. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  229. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  230. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +19 -16
  231. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  232. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  233. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  234. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +17 -14
  235. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  236. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  237. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  238. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +18 -15
  239. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  240. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  241. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  242. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +453 -284
  243. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  244. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +2 -2
  245. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  246. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +172 -2
  247. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  248. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
  249. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  250. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +18 -15
  251. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  252. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  253. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  254. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +18 -15
  255. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  256. package/dist/shared/src/components/SyncButton/SyncButton.cjs.js +52 -0
  257. package/dist/shared/src/components/SyncButton/SyncButton.cjs.js.map +1 -0
  258. package/dist/shared/src/components/SyncButton/SyncButton.es.js +265 -0
  259. package/dist/shared/src/components/SyncButton/SyncButton.es.js.map +1 -0
  260. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +1 -1
  261. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  262. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +171 -2
  263. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  264. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  265. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  266. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +18 -15
  267. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  268. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  269. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  270. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +20 -17
  271. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  272. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  273. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  274. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +18 -15
  275. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  276. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  277. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  278. package/dist/shared/src/containers/Actions/Actions.es.js +213 -44
  279. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  280. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  281. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  282. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +18 -15
  283. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  284. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  285. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  286. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +39 -36
  287. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  288. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  289. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  290. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +18 -15
  291. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  292. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  293. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  294. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +19 -16
  295. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  296. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  297. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  298. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +51 -48
  299. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  300. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js +1 -1
  301. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js.map +1 -1
  302. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js +173 -3
  303. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js.map +1 -1
  304. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  305. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  306. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +18 -15
  307. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  308. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  309. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  310. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +18 -15
  311. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  312. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  313. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  314. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +168 -2
  315. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  316. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  317. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  318. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +32 -29
  319. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  320. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  321. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  322. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +18 -15
  323. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  324. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  325. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  326. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +81 -78
  327. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  328. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  329. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  330. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +144 -2
  331. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  332. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  333. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  334. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +174 -2
  335. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  336. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  337. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  338. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +18 -15
  339. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  340. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  341. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  342. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +18 -15
  343. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  344. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  345. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  346. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +18 -15
  347. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  348. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  349. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  350. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +18 -15
  351. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  352. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  353. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  354. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +178 -7
  355. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  356. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  357. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  358. package/dist/shared/src/containers/Feed/Feed.es.js +206 -59
  359. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  360. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  361. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  362. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +18 -15
  363. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  364. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  365. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  366. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +19 -16
  367. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  368. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  369. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  370. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +18 -15
  371. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  372. package/dist/shared/src/containers/Feed/components/ActivityItem.cjs.js +1 -1
  373. package/dist/shared/src/containers/Feed/components/ActivityItem.cjs.js.map +1 -1
  374. package/dist/shared/src/containers/Feed/components/ActivityItem.es.js +16 -16
  375. package/dist/shared/src/containers/Feed/components/ActivityItem.es.js.map +1 -1
  376. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.cjs.js +1 -1
  377. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.cjs.js.map +1 -1
  378. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.es.js +30 -17
  379. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.es.js.map +1 -1
  380. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusSecondary.cjs.js +11 -0
  381. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusSecondary.cjs.js.map +1 -0
  382. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusSecondary.es.js +27 -0
  383. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusSecondary.es.js.map +1 -0
  384. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js +1 -1
  385. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js.map +1 -1
  386. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js +20 -17
  387. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js.map +1 -1
  388. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  389. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  390. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +218 -39
  391. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  392. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
  393. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  394. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +78 -75
  395. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  396. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  397. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  398. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +22 -19
  399. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  400. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  401. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  402. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +173 -2
  403. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  404. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  405. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  406. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +173 -2
  407. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  408. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +2 -2
  409. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -1
  410. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +181 -14
  411. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -1
  412. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  413. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  414. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +169 -2
  415. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  416. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  417. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  418. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +80 -77
  419. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  420. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  421. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  422. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +197 -26
  423. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  424. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.cjs.js +1 -1
  425. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.cjs.js.map +1 -1
  426. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.es.js +9 -8
  427. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.es.js.map +1 -1
  428. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  429. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  430. package/dist/shared/src/containers/ListTable/ListTable.es.js +24 -21
  431. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  432. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  433. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  434. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +18 -15
  435. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  436. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  437. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  438. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +17 -14
  439. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  440. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  441. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  442. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +5 -2
  443. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  444. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  445. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  446. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +18 -15
  447. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  448. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  449. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  450. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +5 -2
  451. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  452. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  453. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  454. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +84 -81
  455. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  456. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  457. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  458. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +17 -14
  459. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  460. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  461. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  462. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +18 -15
  463. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  464. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +5 -5
  465. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  466. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +508 -321
  467. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  468. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  469. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  470. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +18 -15
  471. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  472. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  473. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  474. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +175 -4
  475. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  476. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +1 -1
  477. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  478. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +176 -6
  479. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  480. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  481. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  482. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +18 -15
  483. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  484. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  485. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  486. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +174 -2
  487. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  488. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  489. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  490. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +21 -18
  491. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  492. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  493. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  494. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +18 -15
  495. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  496. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  497. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  498. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +18 -15
  499. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  500. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  501. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  502. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +18 -15
  503. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  504. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  505. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  506. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +18 -15
  507. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  508. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  509. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  510. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +5 -2
  511. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  512. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  513. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  514. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +408 -396
  515. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  516. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  517. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  518. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +18 -15
  519. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  520. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  521. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  522. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +18 -15
  523. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  524. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  525. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  526. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +19 -17
  527. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  528. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  529. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  530. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +5 -2
  531. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  532. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  533. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  534. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +5 -2
  535. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  536. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  537. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  538. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +18 -15
  539. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  540. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  541. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  542. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +18 -15
  543. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  544. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  545. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  546. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +265 -95
  547. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  548. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  549. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  550. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +29 -26
  551. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  552. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +1 -1
  553. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  554. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +18 -15
  555. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  556. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
  557. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  558. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +94 -91
  559. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  560. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +3 -3
  561. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
  562. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +25 -22
  563. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
  564. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  565. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  566. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +20 -17
  567. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  568. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +4 -4
  569. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
  570. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +188 -34
  571. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
  572. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  573. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  574. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +18 -15
  575. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  576. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  577. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  578. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +25 -22
  579. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  580. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +2 -2
  581. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
  582. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +225 -61
  583. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
  584. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  585. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  586. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +18 -15
  587. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  588. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  589. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  590. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +21 -18
  591. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  592. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.cjs.js +1 -1
  593. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.cjs.js.map +1 -1
  594. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.es.js +37 -37
  595. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.es.js.map +1 -1
  596. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -2
  597. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -1
  598. package/dist/shared/src/containers/Slicer/components/Slicer.es.js +353 -51
  599. package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -1
  600. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +1 -1
  601. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
  602. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +172 -2
  603. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
  604. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  605. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  606. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +18 -15
  607. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  608. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  609. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  610. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +216 -45
  611. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  612. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
  613. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
  614. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +185 -13
  615. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
  616. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
  617. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
  618. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +174 -2
  619. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
  620. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js +1 -1
  621. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js.map +1 -1
  622. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js +40 -289
  623. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js.map +1 -1
  624. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
  625. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
  626. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +174 -2
  627. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
  628. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js +1 -1
  629. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js.map +1 -1
  630. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js +173 -2
  631. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js.map +1 -1
  632. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js +1 -1
  633. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js.map +1 -1
  634. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js +174 -2
  635. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js.map +1 -1
  636. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js +1 -1
  637. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js.map +1 -1
  638. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js +174 -2
  639. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js.map +1 -1
  640. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  641. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  642. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +227 -53
  643. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  644. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  645. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  646. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +176 -6
  647. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  648. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  649. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  650. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +5 -2
  651. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  652. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
  653. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  654. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +185 -18
  655. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  656. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  657. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  658. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +209 -38
  659. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  660. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  661. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  662. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +180 -10
  663. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  664. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  665. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  666. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +107 -73
  667. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  668. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  669. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  670. package/dist/shared/src/context/DetailsPanelContext.es.js +210 -38
  671. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  672. package/dist/shared/src/context/EntityUpdatesContext.cjs.js +2 -0
  673. package/dist/shared/src/context/EntityUpdatesContext.cjs.js.map +1 -0
  674. package/dist/shared/src/context/EntityUpdatesContext.es.js +392 -0
  675. package/dist/shared/src/context/EntityUpdatesContext.es.js.map +1 -0
  676. package/dist/shared/src/context/EntityUpdatesContextInstance.cjs.js +2 -0
  677. package/dist/shared/src/context/EntityUpdatesContextInstance.cjs.js.map +1 -0
  678. package/dist/shared/src/context/EntityUpdatesContextInstance.es.js +6 -0
  679. package/dist/shared/src/context/EntityUpdatesContextInstance.es.js.map +1 -0
  680. package/dist/shared/src/context/MenuContext.es.js +3 -3
  681. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  682. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  683. package/dist/shared/src/context/PowerpackContext.es.js +178 -6
  684. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  685. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  686. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  687. package/dist/shared/src/context/ProjectFoldersContext.es.js +196 -24
  688. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  689. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  690. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  691. package/dist/shared/src/context/SubtasksModulesContext.es.js +176 -4
  692. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  693. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  694. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  695. package/dist/shared/src/context/WebsocketContext.es.js +52 -45
  696. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  697. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  698. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  699. package/dist/shared/src/hooks/useEntityUpdate.es.js +174 -2
  700. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  701. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  702. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  703. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +174 -2
  704. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  705. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
  706. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
  707. package/dist/shared/src/hooks/useHierarchyTable.es.js +174 -2
  708. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
  709. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  710. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  711. package/dist/shared/src/hooks/useUserProjectConfig.es.js +174 -2
  712. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  713. package/dist/types/api/generated/graphql.d.ts +3 -3
  714. package/dist/types/api/queries/actions/index.d.ts +1 -0
  715. package/dist/types/api/queries/actions/refreshActiveAndPurgeOthers.d.ts +11 -0
  716. package/dist/types/api/queries/activities/getActivities.d.ts +65 -855
  717. package/dist/types/api/queries/activities/util/activitiesHelpers.d.ts +19 -0
  718. package/dist/types/api/queries/links/getEntityLinks.d.ts +4 -2
  719. package/dist/types/components/SyncButton/SyncButton.d.ts +11 -0
  720. package/dist/types/components/SyncButton/index.d.ts +1 -0
  721. package/dist/types/components/index.d.ts +1 -0
  722. package/dist/types/containers/Feed/components/ActivityStatusChange/ActivityStatusSecondary.d.ts +7 -0
  723. package/dist/types/containers/Feed/components/ActivityVersions/ActivityVersions.d.ts +3 -0
  724. package/dist/types/containers/Feed/hooks/useGetFeedActivitiesData.d.ts +3 -42
  725. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +4 -4
  726. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +10 -2
  727. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +9 -2
  728. package/dist/types/containers/Slicer/context/SlicerContext.d.ts +1 -0
  729. package/dist/types/containers/Slicer/hooks/useSelectedEntityIds.d.ts +7 -1
  730. package/dist/types/containers/Views/utils/viewUpdateHelper.d.ts +7 -0
  731. package/dist/types/context/EntityUpdatesContext.d.ts +44 -0
  732. package/dist/types/context/EntityUpdatesContextInstance.d.ts +2 -0
  733. package/dist/types/context/ProjectFoldersContext.d.ts +2 -2
  734. package/dist/types/context/index.d.ts +1 -0
  735. package/package.json +1 -1
@@ -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\nconst CACHE_TIME = 10 // seconds\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 keepUnusedDataFor: CACHE_TIME,\n },\n // used by getVersionsByProducts only\n GetVersionsByProductId: {\n transformResponse: transformVersionsResponse,\n providesTags: provideTagsForVersionsResult,\n keepUnusedDataFor: CACHE_TIME,\n },\n // used by getProductsInfinite only\n GetProducts: {\n transformResponse: transformProductsResponse,\n providesTags: provideTagsForProductsResult,\n keepUnusedDataFor: CACHE_TIME,\n },\n // footer stats: `targets` excluded from cache key + responses merged,\n // so column toggles reuse cache and only added targets refetch\n 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 keepUnusedDataFor: CACHE_TIME,\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 keepUnusedDataFor: CACHE_TIME,\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 // 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 keepUnusedDataFor: CACHE_TIME,\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 // 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 keepUnusedDataFor: CACHE_TIME,\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 // 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 keepUnusedDataFor: CACHE_TIME,\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 // 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 keepUnusedDataFor: CACHE_TIME,\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":["CACHE_TIME","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,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../../_virtual/jsx-runtime.cjs.js"),c=require("react"),l=require("@ynput/ayon-react-components"),p=require("styled-components");require("../context/RemoteModulesContext.cjs.js");require("../../../_virtual/runtime.cjs.js");require("../../../_virtual/semver.cjs.js");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("lodash");require("react-toastify");require("react-redux");require("custom-protocol-check");require("../containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("uuid");require("../util/pubsub.cjs.js");require("../context/PowerpackContextInstance.cjs.js");require("../context/UriContext.cjs.js");require("../context/DetailsPanelContextInstance.cjs.js");require("../context/SubtasksModulesContextInstance.cjs.js");require("../context/ThumbnailUploaderContext.cjs.js");require("../context/SettingsPanelContext.cjs.js");require("../context/pip/PiPProvider.cjs.js");require("react-dom");require("../context/pip/PiPWrapper.cjs.js");require("../context/AddonProjectContext.cjs.js");require("../context/AddonContext.cjs.js");require("../context/MoveEntityContext.cjs.js");const x=require("../context/MenuContext.cjs.js");require("../context/WebsocketContext.cjs.js");require("../context/GlobalContext.cjs.js");require("../context/ProjectContext.cjs.js");require("../context/ProjectFoldersContextInstance.cjs.js");const d=require("./Menu/Menu.cjs.js"),g=require("./Menu/MenuContainer.cjs.js");require("./Menu/MenuItem.cjs.js");require("./Menu/Menu.styled.cjs.js");const o=p(l.Button)`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../../_virtual/jsx-runtime.cjs.js"),c=require("react"),l=require("@ynput/ayon-react-components"),p=require("styled-components");require("../context/RemoteModulesContext.cjs.js");require("../../../_virtual/runtime.cjs.js");require("../../../_virtual/semver.cjs.js");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("lodash");require("react-toastify");require("react-redux");require("custom-protocol-check");require("../containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("uuid");require("../util/pubsub.cjs.js");require("../context/PowerpackContextInstance.cjs.js");require("../context/UriContext.cjs.js");require("../context/DetailsPanelContextInstance.cjs.js");require("../context/SubtasksModulesContextInstance.cjs.js");require("../context/ThumbnailUploaderContext.cjs.js");require("../context/SettingsPanelContext.cjs.js");require("../context/pip/PiPProvider.cjs.js");require("react-dom");require("../context/pip/PiPWrapper.cjs.js");require("../context/AddonProjectContext.cjs.js");require("../context/AddonContext.cjs.js");require("../context/MoveEntityContext.cjs.js");const x=require("../context/MenuContext.cjs.js");require("../context/WebsocketContext.cjs.js");require("../context/GlobalContext.cjs.js");require("../context/ProjectContext.cjs.js");require("../context/ProjectFoldersContextInstance.cjs.js");require("../context/EntityUpdatesContextInstance.cjs.js");require("../containers/ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("clsx");require("../containers/Feed/context/FeedContext.cjs.js");require("../containers/Feed/components/Tooltips/UserTooltipItem.cjs.js");require("../containers/Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.styled.cjs.js");require("../containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../containers/Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../containers/Feed/components/CommentInput/CommentInput.cjs.js");require("../containers/Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../containers/Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../containers/Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../containers/Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("./AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("./AccessSearchInput/AccessSearchInput.styled.cjs.js");require("./AccessUser/AccessUser.cjs.js");require("./AttributeEditor/AttributeEditor.cjs.js");require("./AttributeEditor/attributeTypeMap.cjs.js");require("./Badge/Badge.cjs.js");require("./Chips/Chips.cjs.js");require("date-fns");require("./DateRangePicker/DateRangePicker.styled.cjs.js");require("./LinksManager/CellEditingDialog.cjs.js");require("../../../_virtual/index.cjs.js");require("../../../node_modules/refractor/lib/common.cjs.js");require("../../../node_modules/refractor/lib/all.cjs.js");;/* empty css */require("./DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("./DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("react-quill-ayon");require("./DetailsPanelDetails/BorderedSection.cjs.js");require("./QuillListStyles/QuillListStyles.cjs.js");require("./DetailsPanelDetails/DescriptionSection.styles.cjs.js");require("rehype-raw");require("./DetailsPanelDetails/hooks/useMentionSystem.cjs.js");require("../containers/Feed/components/CommentInput/modules/index.cjs.js");require("./DetailsPanelDetails/DetailsSection.cjs.js");require("./DetailsPanelDetails/FieldLabel.cjs.js");require("./DoneCheckbox/DoneCheckbox.cjs.js");require("./EarlyPreview/EarlyPreview.cjs.js");require("./EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("./EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("./InfoMessage/InfoMessage.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("./EnumEditor/EnumEditor.styled.cjs.js");require("./EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("./ReviewablesList/ReviewablesList.styled.cjs.js");require("./ReviewablesList/ReviewablesUpload.styled.cjs.js");require("./EntityPath/EntityPath.styled.cjs.js");require("./EntityPath/SegmentProvider.cjs.js");require("./FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("./Feedback/FeedbackContextInstance.cjs.js");require("./Feedback/SupportBubble.cjs.js");require("./FileThumbnail/FileThumbnail.cjs.js");require("./LegacyBadge/LegacyBadge.cjs.js");require("./LinksManager/LinksManager.styled.cjs.js");require("../containers/EntityPickerDialog/EntityPickerDialog.cjs.js");require("./Powerpack/PowerpackButton.cjs.js");require("./Powerpack/FreeTrialLink.cjs.js");require("./Powerpack/PowerpackDialog.styled.cjs.js");require("./Powerpack/CTAButton.cjs.js");require("./Powerpack/RequiredAddonVersion.cjs.js");require("./ProjectTableSettings/ProjectTableSettings.cjs.js");require("./SizeSlider/SizeSlider.cjs.js");require("react-router-dom");require("../containers/Slicer/components/Slicer.cjs.js");require("../containers/Slicer/context/SlicerContextInstance.cjs.js");require("../containers/Slicer/components/SlicerDropdownFallback.cjs.js");require("../containers/Slicer/hooks/useTableDataBySlice.cjs.js");require("./ReviewableCard/ReviewableCard.cjs.js");require("./ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("./SearchFilter/filterDates.cjs.js");require("./SearchFilter/CustomDateRangeDialog.cjs.js");require("./SettingsPanel/SettingsPanel.cjs.js");require("./SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("./ShareOptionIcon/ShareOptionIcon.cjs.js");require("./SimpleFormDialog/SimpleFormDialog.cjs.js");require("./StyledLink/StyledLink.cjs.js");require("./SyncButton/SyncButton.cjs.js");require("./TableGridSwitch/TableGridSwitch.cjs.js");require("./Thumbnail/Thumbnail.styled.cjs.js");require("./Thumbnail/StackedThumbnails.cjs.js");require("./ThumbnailSimple/ThumbnailSimple.cjs.js");require("./VersionUploader/components/UploadVersionDialog.cjs.js");require("./VersionUploader/context/VersionUploadContextInstance.cjs.js");require("./Watchers/Watchers.cjs.js");const d=require("./Menu/Menu.cjs.js"),g=require("./Menu/MenuContainer.cjs.js");require("./Menu/MenuItem.cjs.js");require("./Menu/Menu.styled.cjs.js");require("./ReviewablesSelector/ReviewablesSelector.cjs.js");require("../containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("../containers/Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../containers/Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../containers/Feed/components/ActivityDate.cjs.js");require("../containers/Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../containers/Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../containers/Feed/components/ActivityStatusChange/ActivityStatusSecondary.cjs.js");require("../containers/Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../containers/Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../containers/Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../containers/Feed/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js");require("../containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../containers/Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../containers/Feed/Feed.styled.cjs.js");require("../containers/Feed/components/FeedSearchFilter.cjs.js");require("@tanstack/react-virtual");require("@tanstack/react-table");require("../containers/ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/DateWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js");require("../containers/ProjectTreeTable/widgets/TextWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/CellWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/LinksWidget.cjs.js");require("short-uuid");require("../containers/ProjectTreeTable/context/CellEditingContext.cjs.js");require("../containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../containers/ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../containers/ProjectTreeTable/context/ClipboardContext.cjs.js");require("../containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../containers/ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../containers/ProjectTreeTable/components/DeleteConfirmContent.cjs.js");require("../containers/ProjectTreeTable/context/ProjectDataContextInstance.cjs.js");require("../containers/ProjectTreeTable/context/ProjectTableContextInstance.cjs.js");require("../containers/ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../containers/ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../containers/ProjectTreeTable/components/SelectionCell.cjs.js");require("../containers/ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../containers/ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../containers/ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../containers/ProjectTreeTable/components/TableFooterRow.cjs.js");require("../containers/DetailsPanel/DetailsPanel.styled.cjs.js");require("../containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.cjs.js");require("../containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("./PlayableIcon/PlayableIcon.cjs.js");require("../containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js");require("../containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("../containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js");require("../containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../containers/Actions/Actions.styled.cjs.js");require("../containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../containers/Actions/ActionIcon.cjs.js");require("../containers/Views/ViewsMenu/ViewsMenu.cjs.js");require("../containers/Views/context/ViewsContextInstance.cjs.js");require("../containers/Views/Views.styled.cjs.js");require("../containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../containers/ListTable/ListTableRow.cjs.js");require("../containers/ListTable/ListTable.styled.cjs.js");const o=p(l.Button)`
2
2
  background-color: unset !important;
3
3
  z-index: 110;
4
4
  position: relative;
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnHeaderMenuUI.cjs.js","sources":["../../../../src/components/ColumnHeaderMenuUI.tsx"],"sourcesContent":["import { useRef } from 'react'\nimport { Button } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport { useMenuContext } from '@shared/context'\nimport { Menu, MenuContainer } from './Menu'\nimport type { MenuItemType } from './Menu'\n\nexport type ColumnMenuItemType = {\n id: string\n label?: string\n icon?: string\n className?: string\n onClick?: () => void\n type?: 'divider'\n selected?: boolean\n}\n\nexport const ColumnMenuButton = styled(Button)<{ $isOpen: boolean }>`\n background-color: unset !important;\n z-index: 110;\n position: relative;\n padding: 2px;\n width: 24px;\n height: 24px;\n\n &.hasIcon {\n padding: 2px;\n }\n\n &:hover,\n &.active {\n background-color: var(--md-sys-color-surface-container-hover) !important;\n }\n\n ${({ $isOpen }) =>\n $isOpen &&\n `\n background-color: var(--md-sys-color-surface-container-hover) !important;\n `}\n`\n\ninterface ColumnHeaderMenuUIProps {\n menuItems: ColumnMenuItemType[]\n menuId: string\n className?: string\n}\n\n/**\n * Self-contained column header menu UI.\n * Uses the shared MenuContainer/Menu infrastructure and MenuContext for open state.\n */\nexport const ColumnHeaderMenuUI = ({ menuItems, menuId, className }: ColumnHeaderMenuUIProps) => {\n const { toggleMenuOpen, menuOpen } = useMenuContext()\n const buttonRef = useRef<HTMLButtonElement>(null)\n const isOpen = menuOpen === menuId\n\n if (menuItems.length === 0) return null\n\n return (\n <>\n <ColumnMenuButton\n ref={buttonRef}\n className={className}\n onClick={(e) => {\n e.stopPropagation()\n toggleMenuOpen(menuId)\n }}\n onPointerDown={(e) => e.stopPropagation()}\n icon=\"more_horiz\"\n $isOpen={isOpen}\n />\n <MenuContainer\n target={buttonRef.current}\n id={menuId}\n align=\"left\"\n onClose={(e: any) => {\n e.stopPropagation()\n toggleMenuOpen(false)\n }}\n >\n <Menu menu={menuItems as MenuItemType[]} onClose={() => toggleMenuOpen(false)} />\n </MenuContainer>\n </>\n )\n}\n"],"names":["ColumnMenuButton","styled","Button","$isOpen","ColumnHeaderMenuUI","menuItems","menuId","className","toggleMenuOpen","menuOpen","useMenuContext","buttonRef","useRef","isOpen","jsxs","Fragment","jsx","MenuContainer","Menu"],"mappings":"kyMAiBO,MAAMA,EAAmBC,EAAOC,QAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAiBzC,CAAC,CAAE,QAAAC,CAAA,IACHA,GACA;AAAA;AAAA,GAED;AAAA,EAaUC,EAAqB,CAAC,CAAE,UAAAC,EAAW,OAAAC,EAAQ,UAAAC,KAAyC,CAC/F,KAAM,CAAE,eAAAC,EAAgB,SAAAC,CAAA,EAAaC,iBAAA,EAC/BC,EAAYC,EAAAA,OAA0B,IAAI,EAC1CC,EAASJ,IAAaH,EAE5B,OAAID,EAAU,SAAW,EAAU,KAGjCS,EAAAA,kBAAAA,KAAAC,6BAAA,CACE,SAAA,CAAAC,EAAAA,kBAAAA,IAAChB,EAAA,CACC,IAAKW,EACL,UAAAJ,EACA,QAAU,GAAM,CACd,EAAE,gBAAA,EACFC,EAAeF,CAAM,CACvB,EACA,cAAgB,GAAM,EAAE,gBAAA,EACxB,KAAK,aACL,QAASO,CAAA,CAAA,EAEXG,EAAAA,kBAAAA,IAACC,EAAAA,cAAA,CACC,OAAQN,EAAU,QAClB,GAAIL,EACJ,MAAM,OACN,QAAU,GAAW,CACnB,EAAE,gBAAA,EACFE,EAAe,EAAK,CACtB,EAEA,SAAAQ,EAAAA,kBAAAA,IAACE,EAAAA,MAAK,KAAMb,EAA6B,QAAS,IAAMG,EAAe,EAAK,CAAA,CAAG,CAAA,CAAA,CACjF,EACF,CAEJ"}
1
+ {"version":3,"file":"ColumnHeaderMenuUI.cjs.js","sources":["../../../../src/components/ColumnHeaderMenuUI.tsx"],"sourcesContent":["import { useRef } from 'react'\nimport { Button } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport { useMenuContext } from '@shared/context'\nimport { Menu, MenuContainer } from './Menu'\nimport type { MenuItemType } from './Menu'\n\nexport type ColumnMenuItemType = {\n id: string\n label?: string\n icon?: string\n className?: string\n onClick?: () => void\n type?: 'divider'\n selected?: boolean\n}\n\nexport const ColumnMenuButton = styled(Button)<{ $isOpen: boolean }>`\n background-color: unset !important;\n z-index: 110;\n position: relative;\n padding: 2px;\n width: 24px;\n height: 24px;\n\n &.hasIcon {\n padding: 2px;\n }\n\n &:hover,\n &.active {\n background-color: var(--md-sys-color-surface-container-hover) !important;\n }\n\n ${({ $isOpen }) =>\n $isOpen &&\n `\n background-color: var(--md-sys-color-surface-container-hover) !important;\n `}\n`\n\ninterface ColumnHeaderMenuUIProps {\n menuItems: ColumnMenuItemType[]\n menuId: string\n className?: string\n}\n\n/**\n * Self-contained column header menu UI.\n * Uses the shared MenuContainer/Menu infrastructure and MenuContext for open state.\n */\nexport const ColumnHeaderMenuUI = ({ menuItems, menuId, className }: ColumnHeaderMenuUIProps) => {\n const { toggleMenuOpen, menuOpen } = useMenuContext()\n const buttonRef = useRef<HTMLButtonElement>(null)\n const isOpen = menuOpen === menuId\n\n if (menuItems.length === 0) return null\n\n return (\n <>\n <ColumnMenuButton\n ref={buttonRef}\n className={className}\n onClick={(e) => {\n e.stopPropagation()\n toggleMenuOpen(menuId)\n }}\n onPointerDown={(e) => e.stopPropagation()}\n icon=\"more_horiz\"\n $isOpen={isOpen}\n />\n <MenuContainer\n target={buttonRef.current}\n id={menuId}\n align=\"left\"\n onClose={(e: any) => {\n e.stopPropagation()\n toggleMenuOpen(false)\n }}\n >\n <Menu menu={menuItems as MenuItemType[]} onClose={() => toggleMenuOpen(false)} />\n </MenuContainer>\n </>\n )\n}\n"],"names":["ColumnMenuButton","styled","Button","$isOpen","ColumnHeaderMenuUI","menuItems","menuId","className","toggleMenuOpen","menuOpen","useMenuContext","buttonRef","useRef","isOpen","jsxs","Fragment","jsx","MenuContainer","Menu"],"mappings":"oqhBAiBO,MAAMA,EAAmBC,EAAOC,QAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAiBzC,CAAC,CAAE,QAAAC,CAAA,IACHA,GACA;AAAA;AAAA,GAED;AAAA,EAaUC,EAAqB,CAAC,CAAE,UAAAC,EAAW,OAAAC,EAAQ,UAAAC,KAAyC,CAC/F,KAAM,CAAE,eAAAC,EAAgB,SAAAC,CAAA,EAAaC,iBAAA,EAC/BC,EAAYC,EAAAA,OAA0B,IAAI,EAC1CC,EAASJ,IAAaH,EAE5B,OAAID,EAAU,SAAW,EAAU,KAGjCS,EAAAA,kBAAAA,KAAAC,6BAAA,CACE,SAAA,CAAAC,EAAAA,kBAAAA,IAAChB,EAAA,CACC,IAAKW,EACL,UAAAJ,EACA,QAAU,GAAM,CACd,EAAE,gBAAA,EACFC,EAAeF,CAAM,CACvB,EACA,cAAgB,GAAM,EAAE,gBAAA,EACxB,KAAK,aACL,QAASO,CAAA,CAAA,EAEXG,EAAAA,kBAAAA,IAACC,EAAAA,cAAA,CACC,OAAQN,EAAU,QAClB,GAAIL,EACJ,MAAM,OACN,QAAU,GAAW,CACnB,EAAE,gBAAA,EACFE,EAAe,EAAK,CACtB,EAEA,SAAAQ,EAAAA,kBAAAA,IAACE,EAAAA,MAAK,KAAMb,EAA6B,QAAS,IAAMG,EAAe,EAAK,CAAA,CAAG,CAAA,CAAA,CACjF,EACF,CAEJ"}