@ynput/ayon-frontend-shared 0.2.16 → 0.2.18

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 (459) hide show
  1. package/dist/DetailsPanel.cjs.js +15 -13
  2. package/dist/DetailsPanel.cjs.js.map +1 -1
  3. package/dist/DetailsPanel.es.js +15 -13
  4. package/dist/DetailsPanel.es.js.map +1 -1
  5. package/dist/ProjectTreeTable.cjs.js +38 -34
  6. package/dist/ProjectTreeTable.cjs.js.map +1 -1
  7. package/dist/ProjectTreeTable.es.js +20 -16
  8. package/dist/ProjectTreeTable.es.js.map +1 -1
  9. package/dist/api.cjs.js +7 -0
  10. package/dist/api.cjs.js.map +1 -1
  11. package/dist/api.es.js +7 -0
  12. package/dist/api.es.js.map +1 -1
  13. package/dist/components.cjs.js +9 -4
  14. package/dist/components.cjs.js.map +1 -1
  15. package/dist/components.es.js +10 -5
  16. package/dist/components.es.js.map +1 -1
  17. package/dist/index.cjs.js +12 -10
  18. package/dist/index.cjs.js.map +1 -1
  19. package/dist/index.es.js +12 -10
  20. package/dist/index.es.js.map +1 -1
  21. package/dist/node_modules/graphql-request/build/legacy/helpers/analyzeDocument.cjs.js +1 -2
  22. package/dist/node_modules/graphql-request/build/legacy/helpers/analyzeDocument.cjs.js.map +1 -1
  23. package/dist/node_modules/graphql-request/build/legacy/helpers/analyzeDocument.es.js +1 -2
  24. package/dist/node_modules/graphql-request/build/legacy/helpers/analyzeDocument.es.js.map +1 -1
  25. package/dist/shared/src/api/generated/graphql.cjs.js +26 -23
  26. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  27. package/dist/shared/src/api/generated/graphql.es.js +26 -23
  28. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  29. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +4 -1
  30. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  31. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +4 -1
  32. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  33. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +13 -1
  34. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  35. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +13 -1
  36. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  37. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +2 -0
  38. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  39. package/dist/shared/src/api/queries/entities/updateEntity.es.js +2 -0
  40. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  41. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +2 -0
  42. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  43. package/dist/shared/src/api/queries/overview/updateOverview.es.js +2 -0
  44. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  45. package/dist/shared/src/api/queries/products/createProduct.cjs.js +54 -0
  46. package/dist/shared/src/api/queries/products/createProduct.cjs.js.map +1 -0
  47. package/dist/shared/src/api/queries/products/createProduct.es.js +54 -0
  48. package/dist/shared/src/api/queries/products/createProduct.es.js.map +1 -0
  49. package/dist/shared/src/api/queries/users/getUsers.cjs.js +2 -0
  50. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  51. package/dist/shared/src/api/queries/users/getUsers.es.js +2 -0
  52. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  53. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js +80 -0
  54. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -0
  55. package/dist/shared/src/api/queries/versions/updateVersions.es.js +80 -0
  56. package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -0
  57. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +2 -0
  58. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  59. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +2 -0
  60. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  61. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js +2 -0
  62. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js.map +1 -1
  63. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js +2 -0
  64. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js.map +1 -1
  65. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +1 -1
  66. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
  67. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +1 -1
  68. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
  69. package/dist/shared/src/components/EntityPanelUploader/Dropzone.cjs.js +13 -0
  70. package/dist/shared/src/components/EntityPanelUploader/Dropzone.cjs.js.map +1 -0
  71. package/dist/shared/src/components/EntityPanelUploader/Dropzone.es.js +14 -0
  72. package/dist/shared/src/components/EntityPanelUploader/Dropzone.es.js.map +1 -0
  73. package/dist/shared/src/components/{EntityThumbnailUploader/EntityThumbnailUploader.cjs.js → EntityPanelUploader/EntityPanelUploader.cjs.js} +378 -120
  74. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -0
  75. package/dist/shared/src/components/{EntityThumbnailUploader/EntityThumbnailUploader.es.js → EntityPanelUploader/EntityPanelUploader.es.js} +378 -120
  76. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -0
  77. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js +95 -0
  78. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js.map +1 -0
  79. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.styled.es.js +95 -0
  80. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.styled.es.js.map +1 -0
  81. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +76 -0
  82. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -0
  83. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +77 -0
  84. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -0
  85. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +1 -1
  86. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  87. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +1 -1
  88. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  89. package/dist/shared/src/components/ProjectTableSettings/ColumnItem.cjs.js +2 -0
  90. package/dist/shared/src/components/ProjectTableSettings/ColumnItem.cjs.js.map +1 -1
  91. package/dist/shared/src/components/ProjectTableSettings/ColumnItem.es.js +2 -0
  92. package/dist/shared/src/components/ProjectTableSettings/ColumnItem.es.js.map +1 -1
  93. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +5 -1
  94. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  95. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +5 -1
  96. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  97. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +23 -86
  98. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  99. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +23 -86
  100. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  101. package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.cjs.js +2 -0
  102. package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.cjs.js.map +1 -1
  103. package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.es.js +2 -0
  104. package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.es.js.map +1 -1
  105. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +2 -0
  106. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  107. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +2 -0
  108. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  109. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +12 -10
  110. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  111. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +12 -10
  112. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  113. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +35 -109
  114. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  115. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +35 -109
  116. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  117. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +12 -10
  118. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  119. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +12 -10
  120. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  121. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +212 -0
  122. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -0
  123. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +212 -0
  124. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -0
  125. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +2 -0
  126. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  127. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +2 -0
  128. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  129. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js +28 -7
  130. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js.map +1 -1
  131. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js +28 -7
  132. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js.map +1 -1
  133. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +12 -10
  134. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  135. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +12 -10
  136. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  137. package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.cjs.js +85 -0
  138. package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.cjs.js.map +1 -0
  139. package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.es.js +85 -0
  140. package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.es.js.map +1 -0
  141. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +401 -0
  142. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -0
  143. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +401 -0
  144. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -0
  145. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +308 -0
  146. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -0
  147. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +308 -0
  148. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -0
  149. package/dist/shared/src/components/Watchers/Watchers.cjs.js +2 -0
  150. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  151. package/dist/shared/src/components/Watchers/Watchers.es.js +2 -0
  152. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  153. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +12 -10
  154. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  155. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +12 -10
  156. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  157. package/dist/shared/src/containers/Actions/Actions.cjs.js +2 -0
  158. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  159. package/dist/shared/src/containers/Actions/Actions.es.js +2 -0
  160. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  161. package/dist/shared/src/containers/Actions/Actions.styled.cjs.js +1 -1
  162. package/dist/shared/src/containers/Actions/Actions.styled.cjs.js.map +1 -1
  163. package/dist/shared/src/containers/Actions/Actions.styled.es.js +1 -1
  164. package/dist/shared/src/containers/Actions/Actions.styled.es.js.map +1 -1
  165. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +12 -10
  166. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  167. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +12 -10
  168. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  169. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +18 -14
  170. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  171. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +18 -14
  172. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  173. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +12 -10
  174. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  175. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +12 -10
  176. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  177. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +12 -10
  178. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  179. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +12 -10
  180. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  181. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +15 -11
  182. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  183. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +15 -11
  184. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  185. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js +1 -1
  186. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js.map +1 -1
  187. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.es.js +1 -1
  188. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.es.js.map +1 -1
  189. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +2 -0
  190. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  191. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +2 -0
  192. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  193. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +2 -0
  194. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  195. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +2 -0
  196. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  197. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js +2 -2
  198. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js.map +1 -1
  199. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.es.js +2 -2
  200. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.es.js.map +1 -1
  201. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js +1 -1
  202. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js.map +1 -1
  203. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.es.js +1 -1
  204. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.es.js.map +1 -1
  205. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +2 -0
  206. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  207. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +2 -0
  208. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  209. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +2 -0
  210. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  211. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +2 -0
  212. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  213. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +20 -11
  214. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  215. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +20 -11
  216. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  217. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  218. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  219. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +1 -1
  220. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  221. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +11 -10
  222. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  223. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +11 -10
  224. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  225. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.cjs.js +3 -3
  226. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.cjs.js.map +1 -1
  227. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.es.js +3 -3
  228. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.es.js.map +1 -1
  229. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js +1 -174
  230. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
  231. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js +2 -175
  232. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
  233. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +212 -0
  234. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -0
  235. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +212 -0
  236. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -0
  237. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +2 -0
  238. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  239. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +2 -0
  240. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  241. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +1 -185
  242. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  243. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +2 -186
  244. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  245. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +197 -0
  246. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -0
  247. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +197 -0
  248. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -0
  249. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js +1 -79
  250. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js.map +1 -1
  251. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.es.js +2 -80
  252. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.es.js.map +1 -1
  253. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js +84 -0
  254. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js.map +1 -0
  255. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js +84 -0
  256. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js.map +1 -0
  257. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js +1 -277
  258. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js.map +1 -1
  259. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js +2 -278
  260. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js.map +1 -1
  261. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +282 -0
  262. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -0
  263. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +282 -0
  264. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -0
  265. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +2 -0
  266. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  267. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +2 -0
  268. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  269. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +3 -2
  270. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  271. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +3 -2
  272. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  273. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +2 -0
  274. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  275. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +2 -0
  276. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  277. package/dist/shared/src/containers/ProjectTreeTable/hooks/useEntitiesMap.cjs.js.map +1 -1
  278. package/dist/shared/src/containers/ProjectTreeTable/hooks/useEntitiesMap.es.js.map +1 -1
  279. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +2 -0
  280. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  281. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +2 -0
  282. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  283. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.cjs.js +1 -0
  284. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.cjs.js.map +1 -1
  285. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.es.js +1 -0
  286. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.es.js.map +1 -1
  287. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +8 -175
  288. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  289. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +8 -175
  290. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  291. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js +2 -0
  292. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js.map +1 -1
  293. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js +2 -0
  294. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js.map +1 -1
  295. package/dist/shared/src/containers/ProjectTreeTable/{context/ProjectTableModulesContext.cjs.js → hooks/useProjectTableModules.cjs.js} +28 -48
  296. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js.map +1 -0
  297. package/dist/shared/src/containers/ProjectTreeTable/{context/ProjectTableModulesContext.es.js → hooks/useProjectTableModules.es.js} +28 -48
  298. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js.map +1 -0
  299. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +4 -3
  300. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  301. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +4 -3
  302. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  303. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +8 -5
  304. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  305. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +7 -4
  306. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  307. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js +3 -2
  308. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js.map +1 -1
  309. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js +3 -2
  310. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js.map +1 -1
  311. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +1 -1
  312. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  313. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +1 -1
  314. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  315. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js +1 -1
  316. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js.map +1 -1
  317. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.es.js +1 -1
  318. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.es.js.map +1 -1
  319. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +13 -11
  320. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  321. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +13 -11
  322. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  323. package/dist/shared/src/context/AddonProjectContext.cjs.js +2 -0
  324. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  325. package/dist/shared/src/context/AddonProjectContext.es.js +2 -0
  326. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  327. package/dist/shared/src/context/DetailsPanelContext.cjs.js +2 -0
  328. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  329. package/dist/shared/src/context/DetailsPanelContext.es.js +2 -0
  330. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  331. package/dist/shared/src/context/PowerpackContext.cjs.js +2 -0
  332. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  333. package/dist/shared/src/context/PowerpackContext.es.js +2 -0
  334. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  335. package/dist/shared/src/context/RemoteModulesContext.cjs.js +2 -0
  336. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  337. package/dist/shared/src/context/RemoteModulesContext.es.js +3 -1
  338. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  339. package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js +15 -4
  340. package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js.map +1 -1
  341. package/dist/shared/src/context/ThumbnailUploaderContext.es.js +15 -4
  342. package/dist/shared/src/context/ThumbnailUploaderContext.es.js.map +1 -1
  343. package/dist/shared/src/context/pip/PiPWrapper.cjs.js +1 -1
  344. package/dist/shared/src/context/pip/PiPWrapper.cjs.js.map +1 -1
  345. package/dist/shared/src/context/pip/PiPWrapper.es.js +1 -1
  346. package/dist/shared/src/context/pip/PiPWrapper.es.js.map +1 -1
  347. package/dist/shared/src/hooks/useActionTriggers.cjs.js +2 -0
  348. package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
  349. package/dist/shared/src/hooks/useActionTriggers.es.js +2 -0
  350. package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
  351. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +2 -0
  352. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  353. package/dist/shared/src/hooks/useEntityUpdate.es.js +2 -0
  354. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  355. package/dist/shared/src/hooks/useLoadModule.cjs.js +3 -3
  356. package/dist/shared/src/hooks/useLoadModule.cjs.js.map +1 -1
  357. package/dist/shared/src/hooks/useLoadModule.es.js +3 -3
  358. package/dist/shared/src/hooks/useLoadModule.es.js.map +1 -1
  359. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +2 -0
  360. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  361. package/dist/shared/src/hooks/useScopedStatuses.es.js +2 -0
  362. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  363. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +2 -0
  364. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  365. package/dist/shared/src/hooks/useUserProjectConfig.es.js +2 -0
  366. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  367. package/dist/shared/src/util/productTypes.cjs.js +1 -0
  368. package/dist/shared/src/util/productTypes.cjs.js.map +1 -1
  369. package/dist/shared/src/util/productTypes.es.js +1 -0
  370. package/dist/shared/src/util/productTypes.es.js.map +1 -1
  371. package/dist/shared/src/utils/extractVersionFromFilename.cjs.js +32 -0
  372. package/dist/shared/src/utils/extractVersionFromFilename.cjs.js.map +1 -0
  373. package/dist/shared/src/utils/extractVersionFromFilename.es.js +32 -0
  374. package/dist/shared/src/utils/extractVersionFromFilename.es.js.map +1 -0
  375. package/dist/shared/src/utils/versionUploadHelpers.cjs.js +121 -0
  376. package/dist/shared/src/utils/versionUploadHelpers.cjs.js.map +1 -0
  377. package/dist/shared/src/utils/versionUploadHelpers.es.js +121 -0
  378. package/dist/shared/src/utils/versionUploadHelpers.es.js.map +1 -0
  379. package/dist/types/api/generated/graphql.d.ts +47 -36
  380. package/dist/types/api/queries/activities/getActivities.d.ts +4 -4
  381. package/dist/types/api/queries/activities/updateActivities.d.ts +8 -8
  382. package/dist/types/api/queries/entities/getEntity.d.ts +4 -4
  383. package/dist/types/api/queries/entities/getEntityPanel.d.ts +4 -4
  384. package/dist/types/api/queries/entities/updateEntity.d.ts +4 -4
  385. package/dist/types/api/queries/entityLists/getLists.d.ts +4 -4
  386. package/dist/types/api/queries/index.d.ts +2 -0
  387. package/dist/types/api/queries/overview/getOverview.d.ts +4 -4
  388. package/dist/types/api/queries/products/createProduct.d.ts +161 -0
  389. package/dist/types/api/queries/products/index.d.ts +1 -0
  390. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +4 -4
  391. package/dist/types/api/queries/users/getUsers.d.ts +4 -4
  392. package/dist/types/api/queries/versions/index.d.ts +1 -0
  393. package/dist/types/api/queries/versions/updateVersions.d.ts +685 -0
  394. package/dist/types/components/EntityPanelUploader/Dropzone.d.ts +11 -0
  395. package/dist/types/components/{EntityThumbnailUploader/EntityThumbnailUploader.d.ts → EntityPanelUploader/EntityPanelUploader.d.ts} +3 -3
  396. package/dist/types/components/EntityPanelUploader/EntityPanelUploader.styled.d.ts +8 -0
  397. package/dist/types/components/EntityPanelUploader/EntityPanelUploaderDialog.d.ts +10 -0
  398. package/dist/types/components/EntityPanelUploader/index.d.ts +1 -0
  399. package/dist/types/components/ProjectTableSettings/ColumnItem.d.ts +1 -0
  400. package/dist/types/components/ProjectTableSettings/SortableColumnItem.d.ts +1 -0
  401. package/dist/types/components/ReviewablesList/index.d.ts +1 -0
  402. package/dist/types/components/ReviewablesList/useReviewablesUpload.d.ts +19 -0
  403. package/dist/types/components/SettingsPanel/SettingsPanelItemTemplate.d.ts +1 -0
  404. package/dist/types/components/VersionUploader/components/UploadVersionDialog.d.ts +5 -0
  405. package/dist/types/components/VersionUploader/components/UploadVersionForm.d.ts +18 -0
  406. package/dist/types/components/VersionUploader/context/VersionUploadContext.d.ts +54 -0
  407. package/dist/types/components/VersionUploader/index.d.ts +2 -0
  408. package/dist/types/components/index.d.ts +2 -2
  409. package/dist/types/containers/DetailsPanel/DetailsPanel.d.ts +2 -1
  410. package/dist/types/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.d.ts +3 -1
  411. package/dist/types/containers/ProjectTreeTable/components/GroupSettingsFallback.d.ts +9 -2
  412. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +16 -16
  413. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsProvider.d.ts +9 -0
  414. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +6 -61
  415. package/dist/types/containers/ProjectTreeTable/context/ProjectTableProvider.d.ts +60 -0
  416. package/dist/types/containers/ProjectTreeTable/context/SelectedRowsContext.d.ts +3 -8
  417. package/dist/types/containers/ProjectTreeTable/context/SelectedRowsProvider.d.ts +6 -0
  418. package/dist/types/containers/ProjectTreeTable/context/SelectionCellsContext.d.ts +2 -4
  419. package/dist/types/containers/ProjectTreeTable/context/SelectionCellsProvider.d.ts +4 -0
  420. package/dist/types/containers/ProjectTreeTable/context/index.d.ts +4 -2
  421. package/dist/types/containers/ProjectTreeTable/hooks/index.d.ts +1 -0
  422. package/dist/types/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.d.ts +1 -2
  423. package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +2 -1
  424. package/dist/types/containers/ProjectTreeTable/hooks/useEntitiesMap.d.ts +1 -1
  425. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +4 -3
  426. package/dist/types/containers/ProjectTreeTable/hooks/useGetGroupedFields.d.ts +1 -1
  427. package/dist/types/containers/ProjectTreeTable/{context/ProjectTableModulesContext.d.ts → hooks/useProjectTableModules.d.ts} +5 -12
  428. package/dist/types/containers/ProjectTreeTable/index.d.ts +1 -10
  429. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +3 -3
  430. package/dist/types/containers/ProjectTreeTable/utils/getTableFieldOptions.d.ts +2 -1
  431. package/dist/types/context/ThumbnailUploaderContext.d.ts +3 -2
  432. package/dist/types/utils/versionUploadHelpers.d.ts +63 -0
  433. package/package.json +1 -1
  434. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js.map +0 -1
  435. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js.map +0 -1
  436. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.styled.cjs.js +0 -12
  437. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.styled.cjs.js.map +0 -1
  438. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.styled.es.js +0 -12
  439. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.styled.es.js.map +0 -1
  440. package/dist/shared/src/components/ThumbnailUploader/ThumbnailUploader.cjs.js +0 -112
  441. package/dist/shared/src/components/ThumbnailUploader/ThumbnailUploader.cjs.js.map +0 -1
  442. package/dist/shared/src/components/ThumbnailUploader/ThumbnailUploader.es.js +0 -112
  443. package/dist/shared/src/components/ThumbnailUploader/ThumbnailUploader.es.js.map +0 -1
  444. package/dist/shared/src/components/ThumbnailUploader/ThumbnailUploader.styled.cjs.js +0 -104
  445. package/dist/shared/src/components/ThumbnailUploader/ThumbnailUploader.styled.cjs.js.map +0 -1
  446. package/dist/shared/src/components/ThumbnailUploader/ThumbnailUploader.styled.es.js +0 -104
  447. package/dist/shared/src/components/ThumbnailUploader/ThumbnailUploader.styled.es.js.map +0 -1
  448. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.cjs.js.map +0 -1
  449. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.es.js.map +0 -1
  450. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableSelectionContext.cjs.js +0 -33
  451. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableSelectionContext.cjs.js.map +0 -1
  452. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableSelectionContext.es.js +0 -33
  453. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableSelectionContext.es.js.map +0 -1
  454. package/dist/types/components/EntityThumbnailUploader/EntityThumbnailUploader.styled.d.ts +0 -1
  455. package/dist/types/components/EntityThumbnailUploader/index.d.ts +0 -1
  456. package/dist/types/components/ThumbnailUploader/ThumbnailUploader.d.ts +0 -17
  457. package/dist/types/components/ThumbnailUploader/ThumbnailUploader.styled.d.ts +0 -4
  458. package/dist/types/components/ThumbnailUploader/index.d.ts +0 -1
  459. package/dist/types/containers/ProjectTreeTable/context/ProjectTableSelectionContext.d.ts +0 -11
@@ -1 +1 @@
1
- {"version":3,"file":"FeedContext.es.js","sources":["../../../../../../src/containers/Feed/context/FeedContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useState } from 'react'\nimport useGetFeedActivitiesData from '../hooks/useGetFeedActivitiesData'\n\n// Queries\nimport {\n useCreateEntityActivityMutation,\n useDeleteActivityMutation,\n useUpdateActivityMutation,\n useCreateReactionToActivityMutation,\n useDeleteReactionToActivityMutation,\n useGetActivityUsersQuery,\n useGetEntityMentionsQuery,\n useGetEntityTooltipQuery,\n} from '@shared/api'\nimport type { SuggestRequest, SuggestResponse } from '@shared/api'\nimport { ActivityUser } from '../helpers/groupMinorActivities'\nimport { DetailsPanelTab, useScopedDetailsPanel } from '@shared/context'\nimport { getFilterActivityTypes } from '@shared/api'\n\nexport const FEED_NEW_COMMENT = '__new__' as const\n\nexport type EditingState = null | typeof FEED_NEW_COMMENT | string\n\n// Add type for the refTooltip\nexport interface RefTooltip {\n id: string | null\n type: string\n name: string\n label: string\n pos: {\n top: number\n left: number\n }\n}\n\nexport type FeedContextProps = {\n children: React.ReactNode\n projectName: string\n entityType: string\n activityTypes?: string[] | null\n entities: any[]\n projectInfo: any\n scope: string\n userName: string\n userFullName: string\n\n // annotations\n annotations?: Record<string, any>\n removeAnnotation?: (id: string) => void\n exportAnnotationComposite?: (id: string) => Promise<Blob | null>\n // editingId state and functions\n editingId: EditingState\n setEditingId: (id: EditingState) => void\n}\n\ninterface FeedContextType extends Omit<FeedContextProps, 'children'> {\n currentTab: DetailsPanelTab\n // activities data props\n activitiesData: any[]\n isLoadingActivities: boolean\n isLoadingNew: boolean\n isLoadingNextPage: boolean\n hasNextPage: boolean\n loadNextPage?: () => Promise<any>\n // refTooltip state and functions\n refTooltip: RefTooltip | null\n setRefTooltip: (tooltip: RefTooltip | null) => void\n // tooltip data\n entityTooltipData: any\n isFetchingTooltip: boolean\n // query functions\n createEntityActivity: (args: any) => Promise<any>\n updateActivity: (args: any) => Promise<any>\n deleteActivity: (args: any) => Promise<any>\n createReaction: (args: any) => Promise<any>\n deleteReaction: (args: any) => Promise<any>\n isUpdatingActivity: boolean\n // users data\n users: ActivityUser[]\n // mentions data\n mentionSuggestionsData: SuggestResponse\n}\n\nconst FeedContext = createContext<FeedContextType | undefined>(undefined)\n\nexport const FeedProvider = ({ children, ...props }: FeedContextProps) => {\n const { data: users = [] } = useGetActivityUsersQuery({ projects: [props.projectName] })\n const { currentTab } = useScopedDetailsPanel(props.scope)\n\n // queries\n const [createEntityActivityMutation, { isLoading: isLoadingCreate }] =\n useCreateEntityActivityMutation()\n const [updateActivityMutation, { isLoading: isLoadingUpdate }] = useUpdateActivityMutation()\n const [deleteActivityMutation, { isLoading: isLoadingDelete }] = useDeleteActivityMutation()\n const isUpdatingActivity = isLoadingCreate || isLoadingUpdate || isLoadingDelete\n\n const createEntityActivity: FeedContextType['createEntityActivity'] = async (args) =>\n await createEntityActivityMutation(args).unwrap()\n const updateActivity: FeedContextType['updateActivity'] = async (args) =>\n await updateActivityMutation(args).unwrap()\n const deleteActivity: FeedContextType['deleteActivity'] = async (args) =>\n await deleteActivityMutation(args).unwrap()\n\n const [createReactionToActivity] = useCreateReactionToActivityMutation()\n const [deleteReactionToActivity] = useDeleteReactionToActivityMutation()\n\n const createReaction: FeedContextType['createReaction'] = async (args) =>\n await createReactionToActivity(args).unwrap()\n const deleteReaction: FeedContextType['deleteReaction'] = async (args) =>\n await deleteReactionToActivity(args).unwrap()\n\n const activityTypes = getFilterActivityTypes(currentTab)\n\n const activitiesDataProps = useGetFeedActivitiesData({\n entities: props.entities,\n filter: currentTab,\n activityTypes: activityTypes,\n projectName: props.projectName,\n entityType: props.entityType,\n })\n\n const [refTooltip, setRefTooltip] = useState<RefTooltip | null>(null)\n const skip = !props.projectName || !refTooltip?.id || refTooltip.type === 'user'\n const { data: entityTooltipData, isFetching: isFetchingTooltip } = useGetEntityTooltipQuery(\n { entityType: refTooltip?.type, entityId: refTooltip?.id, projectName: props.projectName },\n { skip: skip },\n )\n\n // get all versions that can be mentioned\n const { data: mentionSuggestionsData = {} } = useGetEntityMentionsQuery(\n {\n suggestRequest: {\n entityType: props.entityType as SuggestRequest['entityType'],\n entityId: props.entities[0]?.id,\n },\n projectName: props.projectName,\n },\n { skip: !props.editingId },\n )\n\n return (\n <FeedContext.Provider\n value={{\n ...props,\n ...activitiesDataProps,\n mentionSuggestionsData,\n users,\n isUpdatingActivity,\n entityTooltipData,\n isFetchingTooltip,\n refTooltip,\n activityTypes,\n currentTab,\n setRefTooltip,\n // Query functions\n createEntityActivity,\n updateActivity,\n deleteActivity,\n createReaction,\n deleteReaction,\n }}\n >\n {children}\n </FeedContext.Provider>\n )\n}\n\nexport const useFeedContext = () => {\n const context = useContext(FeedContext)\n if (!context) {\n throw new Error('useFeedContext must be used within a FeedProvider')\n }\n return context\n}\n"],"names":["jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBO,MAAM,mBAAmB;AAgEhC,MAAM,cAAc,cAA2C,MAAS;AAEjE,MAAM,eAAe,CAAC,EAAE,UAAU,GAAG,YAA8B;;AACxE,QAAM,EAAE,MAAM,QAAQ,CAAA,MAAO,yBAAyB,EAAE,UAAU,CAAC,MAAM,WAAW,GAAG;AACvF,QAAM,EAAE,WAAe,IAAA,sBAAsB,MAAM,KAAK;AAGxD,QAAM,CAAC,8BAA8B,EAAE,WAAW,gBAAiB,CAAA,IACjE,gCAAgC;AAClC,QAAM,CAAC,wBAAwB,EAAE,WAAW,gBAAiB,CAAA,IAAI,0BAA0B;AAC3F,QAAM,CAAC,wBAAwB,EAAE,WAAW,gBAAiB,CAAA,IAAI,0BAA0B;AACrF,QAAA,qBAAqB,mBAAmB,mBAAmB;AAEjE,QAAM,uBAAgE,OAAO,SAC3E,MAAM,6BAA6B,IAAI,EAAE,OAAO;AAClD,QAAM,iBAAoD,OAAO,SAC/D,MAAM,uBAAuB,IAAI,EAAE,OAAO;AAC5C,QAAM,iBAAoD,OAAO,SAC/D,MAAM,uBAAuB,IAAI,EAAE,OAAO;AAEtC,QAAA,CAAC,wBAAwB,IAAI,oCAAoC;AACjE,QAAA,CAAC,wBAAwB,IAAI,oCAAoC;AAEvE,QAAM,iBAAoD,OAAO,SAC/D,MAAM,yBAAyB,IAAI,EAAE,OAAO;AAC9C,QAAM,iBAAoD,OAAO,SAC/D,MAAM,yBAAyB,IAAI,EAAE,OAAO;AAExC,QAAA,gBAAgB,uBAAuB,UAAU;AAEvD,QAAM,sBAAsB,yBAAyB;AAAA,IACnD,UAAU,MAAM;AAAA,IAChB,QAAQ;AAAA,IACR;AAAA,IACA,aAAa,MAAM;AAAA,IACnB,YAAY,MAAM;AAAA,EAAA,CACnB;AAED,QAAM,CAAC,YAAY,aAAa,IAAI,SAA4B,IAAI;AAC9D,QAAA,OAAO,CAAC,MAAM,eAAe,EAAC,yCAAY,OAAM,WAAW,SAAS;AAC1E,QAAM,EAAE,MAAM,mBAAmB,YAAY,kBAAsB,IAAA;AAAA,IACjE,EAAE,YAAY,yCAAY,MAAM,UAAU,yCAAY,IAAI,aAAa,MAAM,YAAY;AAAA,IACzF,EAAE,KAAW;AAAA,EACf;AAGA,QAAM,EAAE,MAAM,yBAAyB,CAAA,EAAO,IAAA;AAAA,IAC5C;AAAA,MACE,gBAAgB;AAAA,QACd,YAAY,MAAM;AAAA,QAClB,WAAU,WAAM,SAAS,CAAC,MAAhB,mBAAmB;AAAA,MAC/B;AAAA,MACA,aAAa,MAAM;AAAA,IACrB;AAAA,IACA,EAAE,MAAM,CAAC,MAAM,UAAU;AAAA,EAC3B;AAGE,SAAAA,kCAAA;AAAA,IAAC,YAAY;AAAA,IAAZ;AAAA,MACC,OAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA,IAAA;AAAA,EACH;AAEJ;AAEO,MAAM,iBAAiB,MAAM;AAC5B,QAAA,UAAU,WAAW,WAAW;AACtC,MAAI,CAAC,SAAS;AACN,UAAA,IAAI,MAAM,mDAAmD;AAAA,EAAA;AAE9D,SAAA;AACT;"}
1
+ {"version":3,"file":"FeedContext.es.js","sources":["../../../../../../src/containers/Feed/context/FeedContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useState } from 'react'\nimport useGetFeedActivitiesData from '../hooks/useGetFeedActivitiesData'\n\n// Queries\nimport {\n useCreateEntityActivityMutation,\n useDeleteActivityMutation,\n useUpdateActivityMutation,\n useCreateReactionToActivityMutation,\n useDeleteReactionToActivityMutation,\n useGetActivityUsersQuery,\n useGetEntityMentionsQuery,\n useGetEntityTooltipQuery,\n} from '@shared/api'\nimport type { SuggestRequest, SuggestResponse } from '@shared/api'\nimport { ActivityUser } from '../helpers/groupMinorActivities'\nimport { DetailsPanelTab, useScopedDetailsPanel } from '@shared/context'\nimport { getFilterActivityTypes } from '@shared/api'\n\nexport const FEED_NEW_COMMENT = '__new__' as const\n\nexport type EditingState = null | typeof FEED_NEW_COMMENT | string\n\n// Add type for the refTooltip\nexport interface RefTooltip {\n id: string | null\n type: string\n name: string\n label: string\n pos: {\n top: number\n left: number\n }\n}\n\nexport type FeedContextProps = {\n children: React.ReactNode\n projectName: string\n entityType: string\n activityTypes?: string[] | null\n entities: any[]\n projectInfo: any\n scope: string\n userName: string\n userFullName: string\n\n // annotations\n annotations?: Record<string, any>\n removeAnnotation?: (id: string) => void\n exportAnnotationComposite?: (id: string) => Promise<Blob | null>\n // editingId state and functions\n editingId: EditingState\n setEditingId: (id: EditingState) => void\n}\n\ninterface FeedContextType extends Omit<FeedContextProps, 'children'> {\n currentTab: DetailsPanelTab\n // activities data props\n activitiesData: any[]\n isLoadingActivities: boolean\n isLoadingNew: boolean\n isLoadingNextPage: boolean\n hasNextPage: boolean\n loadNextPage?: () => Promise<any>\n // refTooltip state and functions\n refTooltip: RefTooltip | null\n setRefTooltip: (tooltip: RefTooltip | null) => void\n // tooltip data\n entityTooltipData: any\n isFetchingTooltip: boolean\n // query functions\n createEntityActivity: (args: any) => Promise<any>\n updateActivity: (args: any) => Promise<any>\n deleteActivity: (args: any) => Promise<any>\n createReaction: (args: any) => Promise<any>\n deleteReaction: (args: any) => Promise<any>\n isUpdatingActivity: boolean\n // users data\n users: ActivityUser[]\n // mentions data\n mentionSuggestionsData: SuggestResponse\n}\n\nconst FeedContext = createContext<FeedContextType | undefined>(undefined)\n\nexport const FeedProvider = ({ children, ...props }: FeedContextProps) => {\n const { data: users = [] } = useGetActivityUsersQuery({ projects: [props.projectName] })\n const { currentTab } = useScopedDetailsPanel(props.scope)\n\n // queries\n const [createEntityActivityMutation, { isLoading: isLoadingCreate }] =\n useCreateEntityActivityMutation()\n const [updateActivityMutation, { isLoading: isLoadingUpdate }] = useUpdateActivityMutation()\n const [deleteActivityMutation, { isLoading: isLoadingDelete }] = useDeleteActivityMutation()\n const isUpdatingActivity = isLoadingCreate || isLoadingUpdate || isLoadingDelete\n\n const createEntityActivity: FeedContextType['createEntityActivity'] = async (args) =>\n await createEntityActivityMutation(args).unwrap()\n const updateActivity: FeedContextType['updateActivity'] = async (args) =>\n await updateActivityMutation(args).unwrap()\n const deleteActivity: FeedContextType['deleteActivity'] = async (args) =>\n await deleteActivityMutation(args).unwrap()\n\n const [createReactionToActivity] = useCreateReactionToActivityMutation()\n const [deleteReactionToActivity] = useDeleteReactionToActivityMutation()\n\n const createReaction: FeedContextType['createReaction'] = async (args) =>\n await createReactionToActivity(args).unwrap()\n const deleteReaction: FeedContextType['deleteReaction'] = async (args) =>\n await deleteReactionToActivity(args).unwrap()\n\n const activityTypes = getFilterActivityTypes(currentTab)\n\n const activitiesDataProps = useGetFeedActivitiesData({\n entities: props.entities,\n filter: currentTab,\n activityTypes: activityTypes,\n projectName: props.projectName,\n entityType: props.entityType,\n })\n\n const [refTooltip, setRefTooltip] = useState<RefTooltip | null>(null)\n const skip = !props.projectName || !refTooltip?.id || refTooltip.type === 'user'\n const { data: entityTooltipData, isFetching: isFetchingTooltip } = useGetEntityTooltipQuery(\n { entityType: refTooltip?.type, entityId: refTooltip?.id, projectName: props.projectName },\n { skip: skip },\n )\n\n // get all versions that can be mentioned\n const { data: mentionSuggestionsData = {} } = useGetEntityMentionsQuery(\n {\n suggestRequest: {\n entityType: props.entityType as SuggestRequest['entityType'],\n entityId: props.entities[0]?.id,\n },\n projectName: props.projectName,\n },\n { skip: !props.editingId },\n )\n\n return (\n <FeedContext.Provider\n value={{\n ...props,\n ...activitiesDataProps,\n mentionSuggestionsData,\n users,\n isUpdatingActivity,\n entityTooltipData,\n isFetchingTooltip,\n refTooltip,\n activityTypes,\n currentTab,\n setRefTooltip,\n // Query functions\n createEntityActivity,\n updateActivity,\n deleteActivity,\n createReaction,\n deleteReaction,\n }}\n >\n {children}\n </FeedContext.Provider>\n )\n}\n\nexport const useFeedContext = () => {\n const context = useContext(FeedContext)\n if (!context) {\n throw new Error('useFeedContext must be used within a FeedProvider')\n }\n return context\n}\n"],"names":["jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBO,MAAM,mBAAmB;AAgEhC,MAAM,cAAc,cAA2C,MAAS;AAEjE,MAAM,eAAe,CAAC,EAAE,UAAU,GAAG,YAA8B;;AACxE,QAAM,EAAE,MAAM,QAAQ,CAAA,MAAO,yBAAyB,EAAE,UAAU,CAAC,MAAM,WAAW,GAAG;AACvF,QAAM,EAAE,WAAe,IAAA,sBAAsB,MAAM,KAAK;AAGxD,QAAM,CAAC,8BAA8B,EAAE,WAAW,gBAAiB,CAAA,IACjE,gCAAgC;AAClC,QAAM,CAAC,wBAAwB,EAAE,WAAW,gBAAiB,CAAA,IAAI,0BAA0B;AAC3F,QAAM,CAAC,wBAAwB,EAAE,WAAW,gBAAiB,CAAA,IAAI,0BAA0B;AACrF,QAAA,qBAAqB,mBAAmB,mBAAmB;AAEjE,QAAM,uBAAgE,OAAO,SAC3E,MAAM,6BAA6B,IAAI,EAAE,OAAO;AAClD,QAAM,iBAAoD,OAAO,SAC/D,MAAM,uBAAuB,IAAI,EAAE,OAAO;AAC5C,QAAM,iBAAoD,OAAO,SAC/D,MAAM,uBAAuB,IAAI,EAAE,OAAO;AAEtC,QAAA,CAAC,wBAAwB,IAAI,oCAAoC;AACjE,QAAA,CAAC,wBAAwB,IAAI,oCAAoC;AAEvE,QAAM,iBAAoD,OAAO,SAC/D,MAAM,yBAAyB,IAAI,EAAE,OAAO;AAC9C,QAAM,iBAAoD,OAAO,SAC/D,MAAM,yBAAyB,IAAI,EAAE,OAAO;AAExC,QAAA,gBAAgB,uBAAuB,UAAU;AAEvD,QAAM,sBAAsB,yBAAyB;AAAA,IACnD,UAAU,MAAM;AAAA,IAChB,QAAQ;AAAA,IACR;AAAA,IACA,aAAa,MAAM;AAAA,IACnB,YAAY,MAAM;AAAA,EAAA,CACnB;AAED,QAAM,CAAC,YAAY,aAAa,IAAI,SAA4B,IAAI;AAC9D,QAAA,OAAO,CAAC,MAAM,eAAe,EAAC,yCAAY,OAAM,WAAW,SAAS;AAC1E,QAAM,EAAE,MAAM,mBAAmB,YAAY,kBAAsB,IAAA;AAAA,IACjE,EAAE,YAAY,yCAAY,MAAM,UAAU,yCAAY,IAAI,aAAa,MAAM,YAAY;AAAA,IACzF,EAAE,KAAW;AAAA,EACf;AAGA,QAAM,EAAE,MAAM,yBAAyB,CAAA,EAAO,IAAA;AAAA,IAC5C;AAAA,MACE,gBAAgB;AAAA,QACd,YAAY,MAAM;AAAA,QAClB,WAAU,WAAM,SAAS,CAAC,MAAhB,mBAAmB;AAAA,MAC/B;AAAA,MACA,aAAa,MAAM;AAAA,IACrB;AAAA,IACA,EAAE,MAAM,CAAC,MAAM,UAAU;AAAA,EAC3B;AAGE,SAAAA,kCAAA;AAAA,IAAC,YAAY;AAAA,IAAZ;AAAA,MACC,OAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA,IAAA;AAAA,EACH;AAEJ;AAEO,MAAM,iBAAiB,MAAM;AAC5B,QAAA,UAAU,WAAW,WAAW;AACtC,MAAI,CAAC,SAAS;AACN,UAAA,IAAI,MAAM,mDAAmD;AAAA,EAAA;AAE9D,SAAA;AACT;"}
@@ -66,6 +66,8 @@ require("../../../api/queries/users/updateUsers.cjs.js");
66
66
  require("../../../api/queries/watchers/getWatchers.cjs.js");
67
67
  require("../../../api/queries/permissions/getPermissions.cjs.js");
68
68
  require("../../../api/queries/grouping/getGrouping.cjs.js");
69
+ require("../../../api/queries/versions/updateVersions.cjs.js");
70
+ require("../../../api/queries/products/createProduct.cjs.js");
69
71
  const lodash = require("lodash");
70
72
  const React = require("react");
71
73
  const useGetFeedActivitiesData = ({
@@ -1 +1 @@
1
- {"version":3,"file":"useGetFeedActivitiesData.cjs.js","sources":["../../../../../../src/containers/Feed/hooks/useGetFeedActivitiesData.ts"],"sourcesContent":["import { GetActivitiesQueryVariables, PageInfo } from '@shared/api'\nimport { useGetActivitiesInfiniteInfiniteQuery } from '@shared/api'\nimport { isEqual, union } from 'lodash'\nimport { useMemo } from 'react'\n\nexport type UseGetActivitiesInfiniteInfiniteQuery = (\n queryArgs: Omit<GetActivitiesQueryVariables, 'last' | 'first' | 'cursor'> & { filter?: string },\n options: { skip: boolean },\n) => {\n data: { pages: { activities: any[] }[] } & { pageInfo: PageInfo }\n isLoading: boolean\n isFetchingNextPage: boolean\n currentData: ({ pages: { activities: any[] }[] } & { pageInfo: PageInfo }) | undefined\n fetchNextPage: () => Promise<any>\n hasNextPage: boolean\n}\n\ntype Props = {\n entities: Array<{ id: string; projectName: string }>\n filter: string\n activityTypes?: string[] | null\n projectName: string\n entityType: string\n}\n\nconst useGetFeedActivitiesData = ({\n entities,\n filter,\n activityTypes,\n projectName,\n entityType,\n}: Props) => {\n const entitiesToQuery = useMemo(\n () =>\n entities.map((entity) => ({ id: entity.id, projectName: entity.projectName, entityType })),\n [entities],\n )\n const entityIds = entitiesToQuery.map((entity) => entity.id)\n\n const skip = !entities.length || !filter || !activityTypes || !projectName\n // QUERY MADE TO GET ACTIVITIES\n\n const queryArgs = {\n entityIds: entityIds,\n projectName: projectName,\n referenceTypes: ['origin', 'mention', 'relation'],\n activityTypes: activityTypes,\n filter,\n }\n\n let {\n data: activitiesInfiniteData,\n isLoading: isFetchingActivities,\n isFetchingNextPage,\n currentData,\n fetchNextPage,\n hasNextPage,\n } = useGetActivitiesInfiniteInfiniteQuery(queryArgs, { skip: skip })\n\n // Extract tasks from infinite query data correctly\n const activitiesList = useMemo(() => {\n if (!activitiesInfiniteData?.pages) return []\n return activitiesInfiniteData.pages.flatMap((page) => page.activities || [])\n }, [activitiesInfiniteData?.pages])\n\n const currentActivitiesList = useMemo(() => {\n if (!currentData?.pages) return []\n return currentData.pages.flatMap((page) => page.activities || [])\n }, [currentData?.pages])\n\n const loadNextPage = async () => {\n if (!hasNextPage) {\n console.log('No more activities to load')\n return undefined\n }\n console.log('loading next page...')\n const result = await fetchNextPage()\n\n return result\n }\n\n // check if currentData matches all the entityIds\n // if not, this means we are loading new entity\n const isLoadingNew = useMemo(() => {\n if (!isFetchingActivities) return false\n\n const currentEntityIds = union(\n currentActivitiesList?.flatMap((activity) => (activity.entityId ? activity.entityId : [])),\n )\n\n return !isEqual(currentEntityIds, entityIds)\n }, [currentActivitiesList, entityIds, isFetchingActivities])\n\n if (skip) {\n isFetchingActivities = true\n }\n\n return {\n activitiesData: activitiesList,\n isLoadingActivities: isFetchingActivities,\n isLoadingNew,\n isLoadingNextPage: isFetchingNextPage,\n hasNextPage,\n loadNextPage,\n }\n}\n\nexport default useGetFeedActivitiesData\n"],"names":["useMemo","useGetActivitiesInfiniteInfiniteQuery","union","isEqual"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAM,2BAA2B,CAAC;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAa;AACX,QAAM,kBAAkBA,MAAA;AAAA,IACtB,MACE,SAAS,IAAI,CAAC,YAAY,EAAE,IAAI,OAAO,IAAI,aAAa,OAAO,aAAa,WAAa,EAAA;AAAA,IAC3F,CAAC,QAAQ;AAAA,EACX;AACA,QAAM,YAAY,gBAAgB,IAAI,CAAC,WAAW,OAAO,EAAE;AAErD,QAAA,OAAO,CAAC,SAAS,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC;AAG/D,QAAM,YAAY;AAAA,IAChB;AAAA,IACA;AAAA,IACA,gBAAgB,CAAC,UAAU,WAAW,UAAU;AAAA,IAChD;AAAA,IACA;AAAA,EACF;AAEI,MAAA;AAAA,IACF,MAAM;AAAA,IACN,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACE,IAAAC,oDAAsC,WAAW,EAAE,MAAY;AAG7D,QAAA,iBAAiBD,MAAAA,QAAQ,MAAM;AACnC,QAAI,EAAC,iEAAwB,OAAO,QAAO,CAAC;AACrC,WAAA,uBAAuB,MAAM,QAAQ,CAAC,SAAS,KAAK,cAAc,EAAE;AAAA,EAAA,GAC1E,CAAC,iEAAwB,KAAK,CAAC;AAE5B,QAAA,wBAAwBA,MAAAA,QAAQ,MAAM;AAC1C,QAAI,EAAC,2CAAa,OAAO,QAAO,CAAC;AAC1B,WAAA,YAAY,MAAM,QAAQ,CAAC,SAAS,KAAK,cAAc,EAAE;AAAA,EAAA,GAC/D,CAAC,2CAAa,KAAK,CAAC;AAEvB,QAAM,eAAe,YAAY;AAC/B,QAAI,CAAC,aAAa;AAChB,cAAQ,IAAI,4BAA4B;AACjC,aAAA;AAAA,IAAA;AAET,YAAQ,IAAI,sBAAsB;AAC5B,UAAA,SAAS,MAAM,cAAc;AAE5B,WAAA;AAAA,EACT;AAIM,QAAA,eAAeA,MAAAA,QAAQ,MAAM;AAC7B,QAAA,CAAC,qBAA6B,QAAA;AAElC,UAAM,mBAAmBE,OAAA;AAAA,MACvB,+DAAuB,QAAQ,CAAC,aAAc,SAAS,WAAW,SAAS,WAAW,CAAG;AAAA,IAC3F;AAEO,WAAA,CAACC,OAAAA,QAAQ,kBAAkB,SAAS;AAAA,EAC1C,GAAA,CAAC,uBAAuB,WAAW,oBAAoB,CAAC;AAE3D,MAAI,MAAM;AACe,2BAAA;AAAA,EAAA;AAGlB,SAAA;AAAA,IACL,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB;AAAA,IACA,mBAAmB;AAAA,IACnB;AAAA,IACA;AAAA,EACF;AACF;;"}
1
+ {"version":3,"file":"useGetFeedActivitiesData.cjs.js","sources":["../../../../../../src/containers/Feed/hooks/useGetFeedActivitiesData.ts"],"sourcesContent":["import { GetActivitiesQueryVariables, PageInfo } from '@shared/api'\nimport { useGetActivitiesInfiniteInfiniteQuery } from '@shared/api'\nimport { isEqual, union } from 'lodash'\nimport { useMemo } from 'react'\n\nexport type UseGetActivitiesInfiniteInfiniteQuery = (\n queryArgs: Omit<GetActivitiesQueryVariables, 'last' | 'first' | 'cursor'> & { filter?: string },\n options: { skip: boolean },\n) => {\n data: { pages: { activities: any[] }[] } & { pageInfo: PageInfo }\n isLoading: boolean\n isFetchingNextPage: boolean\n currentData: ({ pages: { activities: any[] }[] } & { pageInfo: PageInfo }) | undefined\n fetchNextPage: () => Promise<any>\n hasNextPage: boolean\n}\n\ntype Props = {\n entities: Array<{ id: string; projectName: string }>\n filter: string\n activityTypes?: string[] | null\n projectName: string\n entityType: string\n}\n\nconst useGetFeedActivitiesData = ({\n entities,\n filter,\n activityTypes,\n projectName,\n entityType,\n}: Props) => {\n const entitiesToQuery = useMemo(\n () =>\n entities.map((entity) => ({ id: entity.id, projectName: entity.projectName, entityType })),\n [entities],\n )\n const entityIds = entitiesToQuery.map((entity) => entity.id)\n\n const skip = !entities.length || !filter || !activityTypes || !projectName\n // QUERY MADE TO GET ACTIVITIES\n\n const queryArgs = {\n entityIds: entityIds,\n projectName: projectName,\n referenceTypes: ['origin', 'mention', 'relation'],\n activityTypes: activityTypes,\n filter,\n }\n\n let {\n data: activitiesInfiniteData,\n isLoading: isFetchingActivities,\n isFetchingNextPage,\n currentData,\n fetchNextPage,\n hasNextPage,\n } = useGetActivitiesInfiniteInfiniteQuery(queryArgs, { skip: skip })\n\n // Extract tasks from infinite query data correctly\n const activitiesList = useMemo(() => {\n if (!activitiesInfiniteData?.pages) return []\n return activitiesInfiniteData.pages.flatMap((page) => page.activities || [])\n }, [activitiesInfiniteData?.pages])\n\n const currentActivitiesList = useMemo(() => {\n if (!currentData?.pages) return []\n return currentData.pages.flatMap((page) => page.activities || [])\n }, [currentData?.pages])\n\n const loadNextPage = async () => {\n if (!hasNextPage) {\n console.log('No more activities to load')\n return undefined\n }\n console.log('loading next page...')\n const result = await fetchNextPage()\n\n return result\n }\n\n // check if currentData matches all the entityIds\n // if not, this means we are loading new entity\n const isLoadingNew = useMemo(() => {\n if (!isFetchingActivities) return false\n\n const currentEntityIds = union(\n currentActivitiesList?.flatMap((activity) => (activity.entityId ? activity.entityId : [])),\n )\n\n return !isEqual(currentEntityIds, entityIds)\n }, [currentActivitiesList, entityIds, isFetchingActivities])\n\n if (skip) {\n isFetchingActivities = true\n }\n\n return {\n activitiesData: activitiesList,\n isLoadingActivities: isFetchingActivities,\n isLoadingNew,\n isLoadingNextPage: isFetchingNextPage,\n hasNextPage,\n loadNextPage,\n }\n}\n\nexport default useGetFeedActivitiesData\n"],"names":["useMemo","useGetActivitiesInfiniteInfiniteQuery","union","isEqual"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAM,2BAA2B,CAAC;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAa;AACX,QAAM,kBAAkBA,MAAA;AAAA,IACtB,MACE,SAAS,IAAI,CAAC,YAAY,EAAE,IAAI,OAAO,IAAI,aAAa,OAAO,aAAa,WAAa,EAAA;AAAA,IAC3F,CAAC,QAAQ;AAAA,EACX;AACA,QAAM,YAAY,gBAAgB,IAAI,CAAC,WAAW,OAAO,EAAE;AAErD,QAAA,OAAO,CAAC,SAAS,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC;AAG/D,QAAM,YAAY;AAAA,IAChB;AAAA,IACA;AAAA,IACA,gBAAgB,CAAC,UAAU,WAAW,UAAU;AAAA,IAChD;AAAA,IACA;AAAA,EACF;AAEI,MAAA;AAAA,IACF,MAAM;AAAA,IACN,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACE,IAAAC,oDAAsC,WAAW,EAAE,MAAY;AAG7D,QAAA,iBAAiBD,MAAAA,QAAQ,MAAM;AACnC,QAAI,EAAC,iEAAwB,OAAO,QAAO,CAAC;AACrC,WAAA,uBAAuB,MAAM,QAAQ,CAAC,SAAS,KAAK,cAAc,EAAE;AAAA,EAAA,GAC1E,CAAC,iEAAwB,KAAK,CAAC;AAE5B,QAAA,wBAAwBA,MAAAA,QAAQ,MAAM;AAC1C,QAAI,EAAC,2CAAa,OAAO,QAAO,CAAC;AAC1B,WAAA,YAAY,MAAM,QAAQ,CAAC,SAAS,KAAK,cAAc,EAAE;AAAA,EAAA,GAC/D,CAAC,2CAAa,KAAK,CAAC;AAEvB,QAAM,eAAe,YAAY;AAC/B,QAAI,CAAC,aAAa;AAChB,cAAQ,IAAI,4BAA4B;AACjC,aAAA;AAAA,IAAA;AAET,YAAQ,IAAI,sBAAsB;AAC5B,UAAA,SAAS,MAAM,cAAc;AAE5B,WAAA;AAAA,EACT;AAIM,QAAA,eAAeA,MAAAA,QAAQ,MAAM;AAC7B,QAAA,CAAC,qBAA6B,QAAA;AAElC,UAAM,mBAAmBE,OAAA;AAAA,MACvB,+DAAuB,QAAQ,CAAC,aAAc,SAAS,WAAW,SAAS,WAAW,CAAG;AAAA,IAC3F;AAEO,WAAA,CAACC,OAAAA,QAAQ,kBAAkB,SAAS;AAAA,EAC1C,GAAA,CAAC,uBAAuB,WAAW,oBAAoB,CAAC;AAE3D,MAAI,MAAM;AACe,2BAAA;AAAA,EAAA;AAGlB,SAAA;AAAA,IACL,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB;AAAA,IACA,mBAAmB;AAAA,IACnB;AAAA,IACA;AAAA,EACF;AACF;;"}
@@ -65,6 +65,8 @@ import "../../../api/queries/users/updateUsers.es.js";
65
65
  import "../../../api/queries/watchers/getWatchers.es.js";
66
66
  import "../../../api/queries/permissions/getPermissions.es.js";
67
67
  import "../../../api/queries/grouping/getGrouping.es.js";
68
+ import "../../../api/queries/versions/updateVersions.es.js";
69
+ import "../../../api/queries/products/createProduct.es.js";
68
70
  import { union, isEqual } from "lodash";
69
71
  import { useMemo } from "react";
70
72
  const useGetFeedActivitiesData = ({
@@ -1 +1 @@
1
- {"version":3,"file":"useGetFeedActivitiesData.es.js","sources":["../../../../../../src/containers/Feed/hooks/useGetFeedActivitiesData.ts"],"sourcesContent":["import { GetActivitiesQueryVariables, PageInfo } from '@shared/api'\nimport { useGetActivitiesInfiniteInfiniteQuery } from '@shared/api'\nimport { isEqual, union } from 'lodash'\nimport { useMemo } from 'react'\n\nexport type UseGetActivitiesInfiniteInfiniteQuery = (\n queryArgs: Omit<GetActivitiesQueryVariables, 'last' | 'first' | 'cursor'> & { filter?: string },\n options: { skip: boolean },\n) => {\n data: { pages: { activities: any[] }[] } & { pageInfo: PageInfo }\n isLoading: boolean\n isFetchingNextPage: boolean\n currentData: ({ pages: { activities: any[] }[] } & { pageInfo: PageInfo }) | undefined\n fetchNextPage: () => Promise<any>\n hasNextPage: boolean\n}\n\ntype Props = {\n entities: Array<{ id: string; projectName: string }>\n filter: string\n activityTypes?: string[] | null\n projectName: string\n entityType: string\n}\n\nconst useGetFeedActivitiesData = ({\n entities,\n filter,\n activityTypes,\n projectName,\n entityType,\n}: Props) => {\n const entitiesToQuery = useMemo(\n () =>\n entities.map((entity) => ({ id: entity.id, projectName: entity.projectName, entityType })),\n [entities],\n )\n const entityIds = entitiesToQuery.map((entity) => entity.id)\n\n const skip = !entities.length || !filter || !activityTypes || !projectName\n // QUERY MADE TO GET ACTIVITIES\n\n const queryArgs = {\n entityIds: entityIds,\n projectName: projectName,\n referenceTypes: ['origin', 'mention', 'relation'],\n activityTypes: activityTypes,\n filter,\n }\n\n let {\n data: activitiesInfiniteData,\n isLoading: isFetchingActivities,\n isFetchingNextPage,\n currentData,\n fetchNextPage,\n hasNextPage,\n } = useGetActivitiesInfiniteInfiniteQuery(queryArgs, { skip: skip })\n\n // Extract tasks from infinite query data correctly\n const activitiesList = useMemo(() => {\n if (!activitiesInfiniteData?.pages) return []\n return activitiesInfiniteData.pages.flatMap((page) => page.activities || [])\n }, [activitiesInfiniteData?.pages])\n\n const currentActivitiesList = useMemo(() => {\n if (!currentData?.pages) return []\n return currentData.pages.flatMap((page) => page.activities || [])\n }, [currentData?.pages])\n\n const loadNextPage = async () => {\n if (!hasNextPage) {\n console.log('No more activities to load')\n return undefined\n }\n console.log('loading next page...')\n const result = await fetchNextPage()\n\n return result\n }\n\n // check if currentData matches all the entityIds\n // if not, this means we are loading new entity\n const isLoadingNew = useMemo(() => {\n if (!isFetchingActivities) return false\n\n const currentEntityIds = union(\n currentActivitiesList?.flatMap((activity) => (activity.entityId ? activity.entityId : [])),\n )\n\n return !isEqual(currentEntityIds, entityIds)\n }, [currentActivitiesList, entityIds, isFetchingActivities])\n\n if (skip) {\n isFetchingActivities = true\n }\n\n return {\n activitiesData: activitiesList,\n isLoadingActivities: isFetchingActivities,\n isLoadingNew,\n isLoadingNextPage: isFetchingNextPage,\n hasNextPage,\n loadNextPage,\n }\n}\n\nexport default useGetFeedActivitiesData\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAM,2BAA2B,CAAC;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAa;AACX,QAAM,kBAAkB;AAAA,IACtB,MACE,SAAS,IAAI,CAAC,YAAY,EAAE,IAAI,OAAO,IAAI,aAAa,OAAO,aAAa,WAAa,EAAA;AAAA,IAC3F,CAAC,QAAQ;AAAA,EACX;AACA,QAAM,YAAY,gBAAgB,IAAI,CAAC,WAAW,OAAO,EAAE;AAErD,QAAA,OAAO,CAAC,SAAS,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC;AAG/D,QAAM,YAAY;AAAA,IAChB;AAAA,IACA;AAAA,IACA,gBAAgB,CAAC,UAAU,WAAW,UAAU;AAAA,IAChD;AAAA,IACA;AAAA,EACF;AAEI,MAAA;AAAA,IACF,MAAM;AAAA,IACN,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACE,IAAA,sCAAsC,WAAW,EAAE,MAAY;AAG7D,QAAA,iBAAiB,QAAQ,MAAM;AACnC,QAAI,EAAC,iEAAwB,OAAO,QAAO,CAAC;AACrC,WAAA,uBAAuB,MAAM,QAAQ,CAAC,SAAS,KAAK,cAAc,EAAE;AAAA,EAAA,GAC1E,CAAC,iEAAwB,KAAK,CAAC;AAE5B,QAAA,wBAAwB,QAAQ,MAAM;AAC1C,QAAI,EAAC,2CAAa,OAAO,QAAO,CAAC;AAC1B,WAAA,YAAY,MAAM,QAAQ,CAAC,SAAS,KAAK,cAAc,EAAE;AAAA,EAAA,GAC/D,CAAC,2CAAa,KAAK,CAAC;AAEvB,QAAM,eAAe,YAAY;AAC/B,QAAI,CAAC,aAAa;AAChB,cAAQ,IAAI,4BAA4B;AACjC,aAAA;AAAA,IAAA;AAET,YAAQ,IAAI,sBAAsB;AAC5B,UAAA,SAAS,MAAM,cAAc;AAE5B,WAAA;AAAA,EACT;AAIM,QAAA,eAAe,QAAQ,MAAM;AAC7B,QAAA,CAAC,qBAA6B,QAAA;AAElC,UAAM,mBAAmB;AAAA,MACvB,+DAAuB,QAAQ,CAAC,aAAc,SAAS,WAAW,SAAS,WAAW,CAAG;AAAA,IAC3F;AAEO,WAAA,CAAC,QAAQ,kBAAkB,SAAS;AAAA,EAC1C,GAAA,CAAC,uBAAuB,WAAW,oBAAoB,CAAC;AAE3D,MAAI,MAAM;AACe,2BAAA;AAAA,EAAA;AAGlB,SAAA;AAAA,IACL,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB;AAAA,IACA,mBAAmB;AAAA,IACnB;AAAA,IACA;AAAA,EACF;AACF;"}
1
+ {"version":3,"file":"useGetFeedActivitiesData.es.js","sources":["../../../../../../src/containers/Feed/hooks/useGetFeedActivitiesData.ts"],"sourcesContent":["import { GetActivitiesQueryVariables, PageInfo } from '@shared/api'\nimport { useGetActivitiesInfiniteInfiniteQuery } from '@shared/api'\nimport { isEqual, union } from 'lodash'\nimport { useMemo } from 'react'\n\nexport type UseGetActivitiesInfiniteInfiniteQuery = (\n queryArgs: Omit<GetActivitiesQueryVariables, 'last' | 'first' | 'cursor'> & { filter?: string },\n options: { skip: boolean },\n) => {\n data: { pages: { activities: any[] }[] } & { pageInfo: PageInfo }\n isLoading: boolean\n isFetchingNextPage: boolean\n currentData: ({ pages: { activities: any[] }[] } & { pageInfo: PageInfo }) | undefined\n fetchNextPage: () => Promise<any>\n hasNextPage: boolean\n}\n\ntype Props = {\n entities: Array<{ id: string; projectName: string }>\n filter: string\n activityTypes?: string[] | null\n projectName: string\n entityType: string\n}\n\nconst useGetFeedActivitiesData = ({\n entities,\n filter,\n activityTypes,\n projectName,\n entityType,\n}: Props) => {\n const entitiesToQuery = useMemo(\n () =>\n entities.map((entity) => ({ id: entity.id, projectName: entity.projectName, entityType })),\n [entities],\n )\n const entityIds = entitiesToQuery.map((entity) => entity.id)\n\n const skip = !entities.length || !filter || !activityTypes || !projectName\n // QUERY MADE TO GET ACTIVITIES\n\n const queryArgs = {\n entityIds: entityIds,\n projectName: projectName,\n referenceTypes: ['origin', 'mention', 'relation'],\n activityTypes: activityTypes,\n filter,\n }\n\n let {\n data: activitiesInfiniteData,\n isLoading: isFetchingActivities,\n isFetchingNextPage,\n currentData,\n fetchNextPage,\n hasNextPage,\n } = useGetActivitiesInfiniteInfiniteQuery(queryArgs, { skip: skip })\n\n // Extract tasks from infinite query data correctly\n const activitiesList = useMemo(() => {\n if (!activitiesInfiniteData?.pages) return []\n return activitiesInfiniteData.pages.flatMap((page) => page.activities || [])\n }, [activitiesInfiniteData?.pages])\n\n const currentActivitiesList = useMemo(() => {\n if (!currentData?.pages) return []\n return currentData.pages.flatMap((page) => page.activities || [])\n }, [currentData?.pages])\n\n const loadNextPage = async () => {\n if (!hasNextPage) {\n console.log('No more activities to load')\n return undefined\n }\n console.log('loading next page...')\n const result = await fetchNextPage()\n\n return result\n }\n\n // check if currentData matches all the entityIds\n // if not, this means we are loading new entity\n const isLoadingNew = useMemo(() => {\n if (!isFetchingActivities) return false\n\n const currentEntityIds = union(\n currentActivitiesList?.flatMap((activity) => (activity.entityId ? activity.entityId : [])),\n )\n\n return !isEqual(currentEntityIds, entityIds)\n }, [currentActivitiesList, entityIds, isFetchingActivities])\n\n if (skip) {\n isFetchingActivities = true\n }\n\n return {\n activitiesData: activitiesList,\n isLoadingActivities: isFetchingActivities,\n isLoadingNew,\n isLoadingNextPage: isFetchingNextPage,\n hasNextPage,\n loadNextPage,\n }\n}\n\nexport default useGetFeedActivitiesData\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAM,2BAA2B,CAAC;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAa;AACX,QAAM,kBAAkB;AAAA,IACtB,MACE,SAAS,IAAI,CAAC,YAAY,EAAE,IAAI,OAAO,IAAI,aAAa,OAAO,aAAa,WAAa,EAAA;AAAA,IAC3F,CAAC,QAAQ;AAAA,EACX;AACA,QAAM,YAAY,gBAAgB,IAAI,CAAC,WAAW,OAAO,EAAE;AAErD,QAAA,OAAO,CAAC,SAAS,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC;AAG/D,QAAM,YAAY;AAAA,IAChB;AAAA,IACA;AAAA,IACA,gBAAgB,CAAC,UAAU,WAAW,UAAU;AAAA,IAChD;AAAA,IACA;AAAA,EACF;AAEI,MAAA;AAAA,IACF,MAAM;AAAA,IACN,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACE,IAAA,sCAAsC,WAAW,EAAE,MAAY;AAG7D,QAAA,iBAAiB,QAAQ,MAAM;AACnC,QAAI,EAAC,iEAAwB,OAAO,QAAO,CAAC;AACrC,WAAA,uBAAuB,MAAM,QAAQ,CAAC,SAAS,KAAK,cAAc,EAAE;AAAA,EAAA,GAC1E,CAAC,iEAAwB,KAAK,CAAC;AAE5B,QAAA,wBAAwB,QAAQ,MAAM;AAC1C,QAAI,EAAC,2CAAa,OAAO,QAAO,CAAC;AAC1B,WAAA,YAAY,MAAM,QAAQ,CAAC,SAAS,KAAK,cAAc,EAAE;AAAA,EAAA,GAC/D,CAAC,2CAAa,KAAK,CAAC;AAEvB,QAAM,eAAe,YAAY;AAC/B,QAAI,CAAC,aAAa;AAChB,cAAQ,IAAI,4BAA4B;AACjC,aAAA;AAAA,IAAA;AAET,YAAQ,IAAI,sBAAsB;AAC5B,UAAA,SAAS,MAAM,cAAc;AAE5B,WAAA;AAAA,EACT;AAIM,QAAA,eAAe,QAAQ,MAAM;AAC7B,QAAA,CAAC,qBAA6B,QAAA;AAElC,UAAM,mBAAmB;AAAA,MACvB,+DAAuB,QAAQ,CAAC,aAAc,SAAS,WAAW,SAAS,WAAW,CAAG;AAAA,IAC3F;AAEO,WAAA,CAAC,QAAQ,kBAAkB,SAAS;AAAA,EAC1C,GAAA,CAAC,uBAAuB,WAAW,oBAAoB,CAAC;AAE3D,MAAI,MAAM;AACe,2BAAA;AAAA,EAAA;AAGlB,SAAA;AAAA,IACL,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB;AAAA,IACA,mBAAmB;AAAA,IACnB;AAAA,IACA;AAAA,EACF;AACF;"}
@@ -43,6 +43,9 @@ const getCommonPinningStyles = (column) => {
43
43
  zIndex: isPinned ? 100 : 0
44
44
  };
45
45
  };
46
+ const getColumnWidth = (rowId, columnId) => {
47
+ return `calc(var(--col-${columnId}-size) * 1px)`;
48
+ };
46
49
  const DRAG_HANDLE_COLUMN_ID = "drag-handle";
47
50
  const ProjectTreeTable = ({
48
51
  scope,
@@ -73,6 +76,7 @@ const ProjectTreeTable = ({
73
76
  columnSizingUpdater,
74
77
  groupBy
75
78
  } = ColumnSettingsContext.useColumnSettingsContext();
79
+ const isGrouping = !!groupBy;
76
80
  const {
77
81
  projectInfo,
78
82
  tableData,
@@ -89,7 +93,8 @@ const ProjectTreeTable = ({
89
93
  sorting,
90
94
  updateSorting,
91
95
  showHierarchy,
92
- fetchNextPage
96
+ fetchNextPage,
97
+ scopes
93
98
  } = ProjectTableContext.useProjectTableContext();
94
99
  const isLoading = isLoadingProp || isLoadingData;
95
100
  const { statuses = [], folderTypes = [], taskTypes = [], tags = [] } = projectInfo || {};
@@ -99,7 +104,8 @@ const ProjectTreeTable = ({
99
104
  statuses,
100
105
  folderTypes,
101
106
  taskTypes,
102
- tags
107
+ tags,
108
+ scopes
103
109
  }),
104
110
  [users, statuses, folderTypes, taskTypes]
105
111
  );
@@ -242,7 +248,6 @@ const ProjectTreeTable = ({
242
248
  tableContainerRef,
243
249
  columnPinning
244
250
  });
245
- console.log(columnVirtualizer);
246
251
  const columnSizeVars = useCustomColumnWidthVars(table, columnSizing);
247
252
  const attribByField = React.useMemo(() => {
248
253
  return attribFields.reduce((acc, attrib) => {
@@ -309,7 +314,8 @@ const ProjectTreeTable = ({
309
314
  onOpenNew,
310
315
  rowOrderIds,
311
316
  sortableRows,
312
- error
317
+ error,
318
+ isGrouping
313
319
  }
314
320
  )
315
321
  ]
@@ -341,7 +347,7 @@ const ProjectTreeTable = ({
341
347
  if (!cell) return null;
342
348
  const cellStyleBase = {
343
349
  ...getCommonPinningStyles(cell.column),
344
- width: `calc(var(--col-${cell.column.id}-size) * 1px)`,
350
+ width: getColumnWidth(overlayRowInstance.id, cell.column.id),
345
351
  display: "flex",
346
352
  alignItems: "center",
347
353
  height: 40
@@ -471,7 +477,7 @@ const TableHeadCell = ({
471
477
  }),
472
478
  style: {
473
479
  ...getCommonPinningStyles(column),
474
- width: `calc(var(--header-${header == null ? void 0 : header.id}-size) * 1px)`
480
+ width: getColumnWidth("", column.id)
475
481
  },
476
482
  children: header.isPlaceholder ? null : /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsxs(ProjectTreeTable_styled.TableCellContent, { className: clsx("bold", "header"), children: [
477
483
  reactTable.flexRender(column.columnDef.header, header.getContext()),
@@ -540,7 +546,8 @@ const TableBody = ({
540
546
  onOpenNew,
541
547
  rowOrderIds,
542
548
  sortableRows,
543
- error
549
+ error,
550
+ isGrouping
544
551
  }) => {
545
552
  const headerLabels = React.useMemo(() => {
546
553
  const allColumns = table.getAllColumns();
@@ -606,7 +613,8 @@ const TableBody = ({
606
613
  rowRef: measureRowElement,
607
614
  dataIndex: virtualRow.index,
608
615
  offsetTop: virtualRow.start,
609
- sortableRows
616
+ sortableRows,
617
+ isGrouping
610
618
  },
611
619
  row.id + i.toString()
612
620
  );
@@ -635,7 +643,8 @@ const TableBodyRow = ({
635
643
  rowRef,
636
644
  dataIndex,
637
645
  offsetTop,
638
- sortableRows
646
+ sortableRows,
647
+ isGrouping = false
639
648
  }) => {
640
649
  const sortable$1 = sortableRows ? sortable.useSortable({ id: row.id }) : null;
641
650
  const combinedRef = React.useCallback(
@@ -692,7 +701,7 @@ const TableBodyRow = ({
692
701
  {
693
702
  style: {
694
703
  ...getCommonPinningStyles(cell.column),
695
- width: `calc(var(--col-${cell.column.id}-size) * 1px)`,
704
+ width: getColumnWidth(row.id, cell.column.id),
696
705
  display: "flex",
697
706
  alignItems: "center",
698
707
  justifyContent: "center",
@@ -786,7 +795,7 @@ const TableCell = ({
786
795
  ),
787
796
  style: {
788
797
  ...getCommonPinningStyles(cell.column),
789
- width: `calc(var(--col-${cell.column.id}-size) * 1px)`,
798
+ width: getColumnWidth(cell.row.id, cell.column.id),
790
799
  height: 40
791
800
  },
792
801
  onMouseDown: (e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectTreeTable.cjs.js","sources":["../../../../../src/containers/ProjectTreeTable/ProjectTreeTable.tsx"],"sourcesContent":["import { useMemo, useRef, useEffect, memo, CSSProperties, useCallback } from 'react' // Added useCallback\nimport { useVirtualizer, VirtualItem, Virtualizer } from '@tanstack/react-virtual'\n// TanStack Table imports\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getExpandedRowModel,\n filterFns,\n flexRender,\n Row,\n getSortedRowModel,\n Cell,\n Column,\n Table,\n Header,\n HeaderGroup,\n RowData,\n} from '@tanstack/react-table'\n\n// Utility imports\nimport clsx from 'clsx'\n\n// Type imports\nimport type { TableRow } from './types/table'\n\n// Component imports\nimport buildTreeTableColumns, {\n DefaultColumns,\n TreeTableExtraColumn,\n} from './buildTreeTableColumns'\nimport * as Styled from './ProjectTreeTable.styled'\nimport HeaderActionButton from './components/HeaderActionButton'\nimport RowDragHandleCellContent from './components/RowDragHandleCellContent' // Added import\nimport EmptyPlaceholder from '../../components/EmptyPlaceholder'\n\n// Context imports\nimport { useCellEditing } from './context/CellEditingContext'\nimport { ROW_SELECTION_COLUMN_ID, useSelectionCellsContext } from './context/SelectionCellsContext'\nimport { ClipboardProvider } from './context/ClipboardContext'\nimport { useSelectedRowsContext } from './context/SelectedRowsContext'\nimport { useColumnSettingsContext } from './context/ColumnSettingsContext'\n\n// Hook imports\nimport useCustomColumnWidthVars from './hooks/useCustomColumnWidthVars'\nimport usePrefetchFolderTasks from './hooks/usePrefetchFolderTasks'\nimport useCellContextMenu, { HeaderLabel } from './hooks/useCellContextMenu'\nimport useColumnVirtualization from './hooks/useColumnVirtualization'\nimport useKeyboardNavigation from './hooks/useKeyboardNavigation'\n\n// Utility function imports\nimport { getCellId } from './utils/cellUtils'\nimport { generateLoadingRows, generateDummyAttributes } from './utils/loadingUtils'\nimport { createPortal } from 'react-dom'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { AttributeEnumItem, ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport { ToggleExpandAll, useProjectTableContext } from './context/ProjectTableContext'\nimport { getReadOnlyLists, getTableFieldOptions } from './utils'\nimport { UpdateTableEntities } from './hooks/useUpdateTableData'\n\n// dnd-kit imports\nimport {\n DragOverlay,\n type UniqueIdentifier,\n // Removed: DndContext, KeyboardSensor, MouseSensor, TouchSensor, closestCenter, DragEndEvent, DragStartEvent, Active, Over, useSensor, useSensors\n} from '@dnd-kit/core'\n// import { restrictToVerticalAxis } from '@dnd-kit/modifiers'\nimport { SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\n\ndeclare module '@tanstack/react-table' {\n interface TableMeta<TData extends RowData> {\n options?: BuiltInFieldOptions\n readOnly?: ProjectTreeTableProps['readOnly']\n projectName?: string\n updateEntities?: UpdateTableEntities\n toggleExpandAll?: ToggleExpandAll\n }\n}\n\n//These are the important styles to make sticky column pinning work!\n//Apply styles like this using your CSS strategy of choice with this kind of logic to head cells, data cells, footer cells, etc.\n//View the index.css file for more needed styles such as border-collapse: separate\nconst getCommonPinningStyles = (column: Column<TableRow, unknown>): CSSProperties => {\n const isPinned = column.getIsPinned()\n const offset =\n column.id !== ROW_SELECTION_COLUMN_ID && column.id !== DRAG_HANDLE_COLUMN_ID ? -30 : 0\n\n return {\n left: isPinned === 'left' ? `${column.getStart('left') + offset}px` : undefined, // Removed offset\n right: isPinned === 'right' ? `${column.getAfter('right')}px` : undefined,\n position: isPinned ? 'sticky' : 'relative',\n width: column.getSize(),\n zIndex: isPinned ? 100 : 0,\n }\n}\n\nexport const DRAG_HANDLE_COLUMN_ID = 'drag-handle'\n\nexport interface ProjectTreeTableProps extends React.HTMLAttributes<HTMLDivElement> {\n scope: string\n sliceId: string\n fetchMoreOnBottomReached: (element: HTMLDivElement | null) => void\n onOpenNew?: (type: 'folder' | 'task') => void\n readOnly?: (DefaultColumns | string)[]\n excludedColumns?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n isLoading?: boolean\n clientSorting?: boolean\n sortableRows?: boolean\n onRowReorder?: (active: UniqueIdentifier, over: UniqueIdentifier | null) => void // Adjusted type for active/over if needed, or keep as Active, Over\n dndActiveId?: UniqueIdentifier | null // Added prop\n pt?: {\n container?: React.HTMLAttributes<HTMLDivElement>\n head?: Partial<TableHeadProps>\n }\n}\n\nexport const ProjectTreeTable = ({\n scope,\n sliceId,\n fetchMoreOnBottomReached,\n onOpenNew,\n readOnly,\n excludedColumns,\n extraColumns,\n isLoading: isLoadingProp,\n clientSorting = false,\n sortableRows = false,\n onRowReorder,\n dndActiveId, // Destructure new prop\n pt,\n ...props\n}: ProjectTreeTableProps) => {\n const {\n columnVisibility,\n columnVisibilityUpdater,\n columnPinning,\n columnPinningUpdater,\n columnOrder,\n columnOrderUpdater,\n columnSizing,\n columnSizingUpdater,\n groupBy,\n } = useColumnSettingsContext()\n\n const {\n projectInfo,\n tableData,\n attribFields,\n entitiesMap,\n users,\n isLoading: isLoadingData,\n error,\n isInitialized,\n expanded,\n projectName,\n updateExpanded,\n toggleExpandAll,\n sorting,\n updateSorting,\n showHierarchy,\n fetchNextPage,\n } = useProjectTableContext()\n\n const isLoading = isLoadingProp || isLoadingData\n\n const { statuses = [], folderTypes = [], taskTypes = [], tags = [] } = projectInfo || {}\n const options: BuiltInFieldOptions = useMemo(\n () =>\n getTableFieldOptions({\n users,\n statuses,\n folderTypes,\n taskTypes,\n tags,\n }),\n [users, statuses, folderTypes, taskTypes],\n )\n\n //The virtualizer needs to know the scrollable container element\n const tableContainerRef = useRef<HTMLDivElement>(null)\n // reference of how many rows are currently rendered in the table\n const tableRowsCountRef = useRef(0)\n\n // Selection context\n const { registerGrid } = useSelectionCellsContext()\n\n // generate loading attrib and rows\n const { loadingAttrib, loadingRows } = useMemo(() => {\n // count the number of children in tbody\n const tableRowsCount = tableContainerRef.current?.querySelectorAll('tbody tr').length || 0\n const loadingAttrib = generateDummyAttributes()\n const loadingRows = generateLoadingRows(\n attribFields,\n showHierarchy && tableData.length > 0\n ? Math.min(tableRowsCount, 50)\n : groupBy\n ? Math.max(tableRowsCountRef.current, 50)\n : 50,\n )\n\n return { loadingAttrib, loadingRows }\n }, [])\n\n const showLoadingRows = !isInitialized || isLoading\n\n // Format readonly columns and attributes\n const { readOnlyColumns, readOnlyAttribs } = useMemo(\n () => getReadOnlyLists(attribFields, readOnly),\n [attribFields, readOnly],\n )\n\n const { updateEntities } = useCellEditing()\n\n const columnAttribs = useMemo(\n () => (isInitialized ? attribFields : loadingAttrib),\n [attribFields, loadingAttrib, isInitialized],\n )\n const columns = useMemo(() => {\n const baseColumns = buildTreeTableColumns({\n attribs: columnAttribs,\n showHierarchy,\n options,\n extraColumns,\n excluded: excludedColumns,\n groupBy,\n })\n\n if (sortableRows) {\n return [\n {\n id: DRAG_HANDLE_COLUMN_ID,\n header: () => null,\n cell: () => null, // Content rendered by TableBodyRow\n size: 24,\n minSize: 24,\n maxSize: 24,\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n enablePinning: false, // Programmatically pinned\n },\n ...baseColumns,\n ]\n }\n return baseColumns\n }, [columnAttribs, showHierarchy, options, extraColumns, excludedColumns, sortableRows])\n\n const table = useReactTable({\n data: showLoadingRows ? loadingRows : tableData,\n columns,\n defaultColumn: {\n minSize: 50,\n size: 150,\n },\n enableRowSelection: true, //enable row selection for all rows\n getRowId: (row) => row.id,\n enableSubRowSelection: false, //disable sub row selection\n getSubRows: (row) => row.subRows,\n getRowCanExpand: () => true,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // EXPANDABLE\n onExpandedChange: updateExpanded,\n // SORTING\n getSortedRowModel: clientSorting ? getSortedRowModel() : undefined,\n onSortingChange: updateSorting,\n columnResizeMode: 'onChange',\n onColumnPinningChange: columnPinningUpdater,\n onColumnSizingChange: columnSizingUpdater,\n onColumnVisibilityChange: columnVisibilityUpdater,\n onColumnOrderChange: columnOrderUpdater,\n // @ts-ignore\n filterFns,\n state: {\n expanded,\n sorting,\n columnPinning: (() => {\n const leftPins: string[] = []\n if (sortableRows) {\n leftPins.push(DRAG_HANDLE_COLUMN_ID)\n }\n leftPins.push(ROW_SELECTION_COLUMN_ID)\n\n // Add other unique pins from context, ensuring they are not the programmatic ones\n const contextLeftPins = (columnPinning.left || []).filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n leftPins.push(...contextLeftPins)\n // Remove duplicates just in case, though filter should handle it\n const uniqueLeftPins = [...new Set(leftPins)]\n\n return {\n left: uniqueLeftPins,\n right: columnPinning.right,\n }\n })(),\n columnSizing,\n columnVisibility,\n columnOrder,\n },\n enableSorting: true,\n meta: {\n projectName,\n options,\n readOnly: readOnlyColumns,\n updateEntities,\n toggleExpandAll,\n loadMoreTasks: fetchNextPage,\n },\n })\n\n // TODO: when there is data (like in error) then we have infinite rendering\n\n const { rows } = table.getRowModel()\n\n // update the tableRowsCountRef with the current number of rows\n useEffect(() => {\n tableRowsCountRef.current = rows.length\n }, [rows.length])\n\n // Register grid structure with selection context when rows or columns change\n useEffect(() => {\n if (!rows.length) return\n const rowIds = rows.map((row) => row.id)\n const colIds = table.getAllLeafColumns().map((col) => col.id)\n const colIdsSortedByPinning = [...colIds].sort((a, b) => {\n if (ROW_SELECTION_COLUMN_ID === b) return 1\n const colA = columnPinning.left?.includes(a) ? 0 : 1\n const colB = columnPinning.left?.includes(b) ? 0 : 1\n return colA - colB\n })\n\n registerGrid(rowIds, colIdsSortedByPinning)\n }, [rows, table.getAllLeafColumns(), columnPinning, ROW_SELECTION_COLUMN_ID, registerGrid])\n\n const visibleColumns = table.getVisibleLeafColumns()\n\n // Use the column virtualization hook\n const { columnVirtualizer, virtualPaddingLeft, virtualPaddingRight } = useColumnVirtualization({\n visibleColumns,\n tableContainerRef,\n columnPinning,\n })\n\n console.log(columnVirtualizer)\n\n const columnSizeVars = useCustomColumnWidthVars(table, columnSizing)\n\n const attribByField = useMemo(() => {\n return attribFields.reduce((acc: Record<string, AttributeEnumItem[]>, attrib) => {\n if (attrib.data?.enum?.length) {\n acc[attrib.name] = attrib.data?.enum\n }\n return acc\n }, {})\n }, [attribFields])\n\n const rowOrderIds = useMemo(() => tableData.map((row) => row.id), [tableData])\n const draggedRowData = useMemo(() => {\n if (!dndActiveId || !sortableRows) return null // Use dndActiveId\n return tableData.find((r) => r.id === dndActiveId) // Use dndActiveId\n }, [dndActiveId, tableData, sortableRows])\n\n const tableUiContent = (\n <ClipboardProvider\n entitiesMap={entitiesMap}\n columnEnums={{ ...options, ...attribByField }}\n columnReadOnly={readOnlyAttribs}\n >\n <Styled.TableWrapper {...props}>\n <Styled.TableContainer\n ref={tableContainerRef}\n style={{ height: '100%', padding: 0 }}\n onScroll={(e) => fetchMoreOnBottomReached(e.currentTarget)}\n {...pt?.container}\n className={clsx('table-container', pt?.container?.className)}\n >\n <table\n style={{\n display: 'grid',\n borderCollapse: 'collapse',\n userSelect: 'none',\n ...columnSizeVars,\n width: table.getTotalSize(),\n }}\n >\n <TableHead\n columnVirtualizer={columnVirtualizer}\n table={table}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n {...pt?.head}\n />\n <TableBody\n columnVirtualizer={columnVirtualizer}\n table={table}\n tableContainerRef={tableContainerRef}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n showHierarchy={showHierarchy}\n attribs={attribFields}\n onOpenNew={onOpenNew}\n rowOrderIds={rowOrderIds}\n sortableRows={sortableRows}\n error={error}\n />\n </table>\n </Styled.TableContainer>\n </Styled.TableWrapper>\n </ClipboardProvider>\n )\n\n // Render DragOverlay if sortableRows and dndActiveId is present\n const dragOverlayPortal =\n sortableRows &&\n dndActiveId &&\n createPortal(\n <DragOverlay dropAnimation={null}>\n {draggedRowData\n ? (() => {\n const overlayRowInstance = table.getRowModel().rows.find((r) => r.id === dndActiveId)\n if (!overlayRowInstance) return null\n\n const tableWidth = table.getTotalSize()\n\n return (\n <table\n style={{\n width: tableWidth,\n borderCollapse: 'collapse',\n backgroundColor: 'var(--md-sys-color-surface-container-high)',\n boxShadow: '0 0 10px rgba(0,0,0,0.2)',\n ...columnSizeVars,\n }}\n >\n <tbody>\n <Styled.TR style={{ display: 'flex', userSelect: 'none' }}>\n {virtualPaddingLeft ? (\n <td style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {columnVirtualizer.getVirtualItems().map((vc) => {\n const cell = overlayRowInstance.getVisibleCells()[vc.index]\n if (!cell) return null\n\n const cellStyleBase: CSSProperties = {\n ...getCommonPinningStyles(cell.column),\n width: `calc(var(--col-${cell.column.id}-size) * 1px)`,\n display: 'flex',\n alignItems: 'center',\n height: 40,\n }\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TableCell\n key={`overlay-drag-${cell.id}`}\n style={{ ...cellStyleBase, justifyContent: 'center' }}\n className={clsx(cell.column.id)}\n >\n <Icon icon=\"drag_handle\" /> {/* Static icon */}\n </Styled.TableCell>\n )\n }\n return (\n <TableCellMemo\n cell={cell}\n cellId={`overlay-${getCellId(overlayRowInstance.id, cell.column.id)}`}\n rowId={overlayRowInstance.id}\n key={`overlay-cell-${cell.id}`}\n showHierarchy={showHierarchy}\n />\n )\n })}\n {virtualPaddingRight ? (\n <td style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.TR>\n </tbody>\n </table>\n )\n })()\n : null}\n </DragOverlay>,\n document.body,\n )\n\n if (sortableRows) {\n return (\n <>\n {tableUiContent}\n {dragOverlayPortal}\n </>\n )\n } else {\n return tableUiContent\n }\n}\n\ninterface TableHeadProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n}\n\nconst TableHead = ({\n columnVirtualizer,\n table,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n ...props\n}: TableHeadProps) => {\n return (\n <Styled.TableHeader {...props}>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableHeadRow\n key={headerGroup.id}\n columnVirtualizer={columnVirtualizer}\n headerGroup={headerGroup}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n />\n ))}\n </Styled.TableHeader>\n )\n}\n\ninterface TableHeadRowProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n headerGroup: HeaderGroup<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n}\n\nconst TableHeadRow = ({\n columnVirtualizer,\n headerGroup,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n}: TableHeadRowProps) => {\n const virtualColumns = columnVirtualizer.getVirtualItems()\n return (\n <Styled.ColumnHeader key={headerGroup.id} style={{ display: 'flex' }}>\n {virtualPaddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {virtualColumns.map((virtualColumn) => {\n const header = headerGroup.headers[virtualColumn.index]\n\n return (\n <TableHeadCell\n key={header.id}\n header={header}\n isLoading={isLoading}\n isReadOnly={readOnlyColumns?.includes(header.id)}\n canSort={header.column.getCanSort()}\n canFilter={header.column.getCanFilter()}\n canHide={header.column.getCanHide()}\n canPin={header.column.getCanPin()}\n canResize={header.column.getCanResize()}\n sortableRows={sortableRows}\n />\n )\n })}\n {virtualPaddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.ColumnHeader>\n )\n}\n\ninterface TableHeadCellProps {\n header: Header<TableRow, unknown>\n isLoading: boolean\n canSort?: boolean\n canFilter?: boolean\n canHide?: boolean\n canPin?: boolean\n canResize?: boolean\n isReadOnly?: boolean\n sortableRows?: boolean\n}\n\nconst TableHeadCell = ({\n header,\n isLoading,\n canFilter,\n canHide,\n canSort,\n canPin,\n canResize,\n isReadOnly,\n sortableRows,\n}: TableHeadCellProps) => {\n const { column } = header\n\n return (\n <Styled.HeaderCell\n className={clsx(header.id, 'shimmer-dark', {\n loading: isLoading,\n 'last-pinned-left': column.getIsPinned() === 'left' && column.getIsLastColumn('left'),\n })}\n key={header.id}\n style={{\n ...getCommonPinningStyles(column),\n width: `calc(var(--header-${header?.id}-size) * 1px)`,\n }}\n >\n {header.isPlaceholder ? null : (\n <Styled.TableCellContent className={clsx('bold', 'header')}>\n {flexRender(column.columnDef.header, header.getContext())}\n {isReadOnly && (\n <Icon icon=\"lock\" data-tooltip={'You only have permission to read this column.'} />\n )}\n\n <Styled.HeaderButtons className=\"actions\">\n {/* COLUMN HIDING */}\n {canHide && (\n <HeaderActionButton\n icon=\"visibility_off\"\n selected={!column.getIsVisible()}\n onClick={column.getToggleVisibilityHandler()}\n />\n )}\n {/* COLUMN PINNING */}\n {canPin && (\n <HeaderActionButton\n icon=\"push_pin\"\n selected={header.column.getIsPinned() === 'left'}\n onClick={() => {\n if (header.column.getIsPinned() === 'left') {\n header.column.pin(false)\n } else {\n header.column.pin('left')\n }\n }}\n />\n )}\n\n {/* COLUMN SORTING */}\n {canSort && (\n <HeaderActionButton\n icon={'sort'}\n style={{\n transform: (column.getIsSorted() as string) === 'asc' ? 'scaleY(-1)' : undefined,\n }}\n onClick={column.getToggleSortingHandler()}\n selected={!!column.getIsSorted()}\n />\n )}\n </Styled.HeaderButtons>\n {canResize && (\n <Styled.ResizedHandler\n {...{\n onDoubleClick: () => column.resetSize(),\n onMouseDown: header.getResizeHandler(),\n onTouchStart: header.getResizeHandler(),\n className: clsx('resize-handle', {\n resizing: column.getIsResizing(),\n }),\n }}\n />\n )}\n </Styled.TableCellContent>\n )}\n </Styled.HeaderCell>\n )\n}\n\ninterface TableBodyProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n tableContainerRef: React.RefObject<HTMLDivElement>\n showHierarchy: boolean\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n attribs: ProjectTableAttribute[]\n onOpenNew?: (type: 'folder' | 'task') => void\n rowOrderIds: UniqueIdentifier[]\n sortableRows: boolean\n error?: string\n}\n\nconst TableBody = ({\n columnVirtualizer,\n table,\n tableContainerRef,\n showHierarchy,\n virtualPaddingLeft,\n virtualPaddingRight,\n attribs,\n onOpenNew,\n rowOrderIds,\n sortableRows,\n error,\n}: TableBodyProps) => {\n const headerLabels = useMemo(() => {\n const allColumns = table.getAllColumns()\n const headers = allColumns\n .map((col) => {\n const headerId = col.id\n const header = col.columnDef.header\n if (typeof header === 'string' || typeof header === 'number') {\n return { label: header, id: headerId }\n }\n return null\n })\n .filter(Boolean)\n\n return headers as HeaderLabel[]\n }, [table.getAllColumns()])\n\n const { handleTableBodyContextMenu } = useCellContextMenu({ attribs, onOpenNew, headerLabels })\n\n const { handlePreFetchTasks } = usePrefetchFolderTasks()\n\n const { rows } = table.getRowModel()\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: () => 40, //estimate row height for accurate scrollbar dragging\n getScrollElement: () => tableContainerRef.current,\n //measure dynamic row height, except in firefox because it measures table border height incorrectly\n measureElement:\n typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 5,\n })\n\n const virtualRows = rowVirtualizer.getVirtualItems()\n\n // Memoize the measureElement callback\n const measureRowElement = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (node) {\n rowVirtualizer.measureElement(node)\n }\n },\n [rowVirtualizer],\n )\n\n useKeyboardNavigation()\n\n const tbodyContent = (\n <tbody\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`,\n position: 'relative',\n display: 'grid',\n }}\n onContextMenu={handleTableBodyContextMenu}\n onMouseOver={(e) => {\n handlePreFetchTasks(e)\n }}\n >\n {virtualRows.map((virtualRow, i) => {\n const row = rows[virtualRow.index] as Row<TableRow>\n // Add a check for row existence to prevent potential errors if data is out of sync\n if (!row) {\n console.warn('Virtualized row data not found for index:', virtualRow.index)\n return null\n }\n return (\n <TableBodyRow\n key={row.id + i.toString()} // dnd-kit needs this key to be stable and match the id in useSortable\n row={row}\n showHierarchy={showHierarchy}\n visibleCells={row.getVisibleCells()}\n virtualColumns={columnVirtualizer.getVirtualItems()}\n paddingLeft={virtualPaddingLeft}\n paddingRight={virtualPaddingRight}\n rowRef={measureRowElement}\n dataIndex={virtualRow.index}\n offsetTop={virtualRow.start}\n sortableRows={sortableRows}\n />\n )\n })}\n </tbody>\n )\n\n if (error) {\n return (\n tableContainerRef.current &&\n createPortal(\n <EmptyPlaceholder message=\"No items found\" error={error} />,\n tableContainerRef.current,\n )\n )\n }\n\n if (sortableRows) {\n return (\n <SortableContext items={rowOrderIds} strategy={verticalListSortingStrategy}>\n {tbodyContent}\n </SortableContext>\n )\n } else {\n return tbodyContent\n }\n}\n\ninterface TableBodyRowProps {\n row: Row<TableRow>\n showHierarchy: boolean\n visibleCells: Cell<TableRow, unknown>[]\n virtualColumns: VirtualItem[]\n paddingLeft: number | undefined\n paddingRight: number | undefined\n rowRef: (node: HTMLTableRowElement | null) => void\n dataIndex: number\n offsetTop: number\n sortableRows: boolean\n}\n\nconst TableBodyRow = ({\n row,\n showHierarchy,\n visibleCells,\n virtualColumns,\n paddingLeft,\n paddingRight,\n rowRef,\n dataIndex,\n offsetTop,\n sortableRows,\n}: TableBodyRowProps) => {\n const sortable = sortableRows ? useSortable({ id: row.id }) : null\n\n const combinedRef = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (sortable) {\n sortable.setNodeRef(node)\n }\n // rowRef for virtualizer measurement\n // only measure if not actively being transformed by dnd-kit\n if (!(sortable && sortable.isDragging)) {\n rowRef(node)\n }\n },\n [sortable, rowRef],\n )\n\n // Attempt to combine dnd-kit transform with virtualizer's offsetTop\n const style: CSSProperties = {\n position: 'absolute', // Use absolute positioning for virtualized items\n top: offsetTop, // Position based on virtualizer's calculation (virtualRow.start)\n left: 0, // Span full width of the relative parent (tbody)\n right: 0, // Span full width\n height: 40, // Explicit height can be beneficial for absolute positioning\n zIndex: sortable && sortable.isDragging ? 0 : 1, // Ensure dragged item is above others\n display: 'flex', // Styled.TR is display:flex\n transform:\n sortable && sortable.transform ? CSS.Transform.toString(sortable.transform) : undefined, // Apply dnd-kit's transform for drag effect\n transition: sortable && sortable.transition ? sortable.transition : undefined,\n visibility: sortable && sortable.isDragging ? 'hidden' : 'visible', // Hide the row being dragged\n }\n\n return (\n <Styled.TR\n ref={combinedRef}\n data-index={dataIndex} //needed for dynamic row height measurement\n style={style}\n className={clsx({ 'group-row': row.original.group })}\n >\n {paddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingLeft }} />\n ) : null}\n {virtualColumns.map((vc, i) => {\n const cell = visibleCells[vc.index]\n if (!cell) return null // Should not happen in normal circumstances\n\n const cellId = getCellId(row.id, cell.column.id)\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TableCell\n key={cell.id + i.toString()}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: `calc(var(--col-${cell.column.id}-size) * 1px)`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: 40,\n }}\n className={clsx(cell.column.id, {\n 'last-pinned-left':\n cell.column.getIsPinned() === 'left' && cell.column.getIsLastColumn('left'),\n })}\n onMouseDown={(e) => e.stopPropagation()} // Prevent selection interference\n onMouseOver={(e) => e.stopPropagation()}\n // Removed onMouseUp stopPropagation to allow dnd-kit to handle it\n onDoubleClick={(e) => e.stopPropagation()}\n onContextMenu={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n <RowDragHandleCellContent\n attributes={sortable?.attributes}\n listeners={sortable?.listeners}\n />\n </Styled.TableCell>\n )\n }\n return (\n <TableCellMemo\n cell={cell}\n cellId={cellId}\n rowId={row.id}\n key={cell.id + i.toString()}\n showHierarchy={showHierarchy}\n sortableRows={sortableRows}\n />\n )\n })}\n\n {paddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingRight }} />\n ) : null}\n </Styled.TR>\n )\n}\n\ninterface TableCellProps {\n cell: Cell<TableRow, unknown>\n cellId: string\n rowId: string\n className?: string\n showHierarchy: boolean\n sortableRows?: boolean\n}\n\nconst TableCell = ({\n cell,\n rowId,\n cellId,\n className,\n showHierarchy,\n sortableRows,\n ...props\n}: TableCellProps) => {\n const {\n isCellSelected,\n isCellFocused,\n startSelection,\n extendSelection,\n endSelection,\n selectCell,\n getCellBorderClasses,\n clearSelection,\n } = useSelectionCellsContext()\n\n const { isRowSelected } = useSelectedRowsContext()\n\n const { isEditing } = useCellEditing()\n\n const borderClasses = getCellBorderClasses(cellId)\n\n const isPinned = cell.column.getIsPinned()\n const isLastLeftPinnedColumn = isPinned === 'left' && cell.column.getIsLastColumn('left')\n const isRowSelectionColumn = cell.column.id === ROW_SELECTION_COLUMN_ID\n const isGroup = cell.row.original.entityType === 'group'\n\n return (\n <Styled.TableCell\n {...props}\n tabIndex={0}\n $isLastPinned={isLastLeftPinnedColumn} // is this column the last pinned column? Custom styling for borders.\n className={clsx(\n cell.column.id,\n {\n selected: isCellSelected(cellId),\n focused: isCellFocused(cellId),\n editing: isEditing(cellId),\n 'last-pinned-left': isLastLeftPinnedColumn,\n 'selected-row': isRowSelected(rowId),\n task: cell.row.original.entityType === 'task',\n },\n className,\n ...borderClasses,\n )}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: `calc(var(--col-${cell.column.id}-size) * 1px)`,\n height: 40,\n }}\n onMouseDown={(e) => {\n // Only process left clicks (button 0), ignore right clicks\n if (e.button !== 0) return\n\n // check we are not clicking on expander\n if ((e.target as HTMLElement).closest('.expander')) return\n\n // only name column can be selected for group rows\n if (isGroup && cell.column.id !== 'name') return clearSelection()\n\n const additive = e.metaKey || e.ctrlKey || isRowSelectionColumn\n if (e.shiftKey) {\n // Shift+click extends selection from anchor cell\n selectCell(cellId, additive, true) // true for range selection\n } else {\n // Normal click starts a new selection\n startSelection(cellId, additive)\n }\n }}\n onMouseOver={(e) => {\n if (e.buttons === 1) {\n // Left button is pressed during mouse move - drag selection\n extendSelection(cellId, isRowSelectionColumn)\n }\n }}\n onMouseUp={() => {\n endSelection(cellId)\n }}\n onDoubleClick={(e) => {\n if (\n cell.column.id === 'name' &&\n !(e.target as HTMLElement).closest('.expander') &&\n !isGroup\n ) {\n // select the row by selecting the row-selection cell\n const rowSelectionCellId = getCellId(cell.row.id, ROW_SELECTION_COLUMN_ID)\n if (!isCellSelected(rowSelectionCellId)) {\n const additive = e.metaKey || e.ctrlKey\n selectCell(rowSelectionCellId, additive, false)\n }\n }\n }}\n onContextMenu={(e) => {\n e.preventDefault()\n // if the cell is not selected, select it and deselect all others\n if (!isCellSelected(cellId)) {\n selectCell(cellId, false, false)\n }\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Styled.TableCell>\n )\n}\n\nconst TableCellMemo = memo(TableCell)\n"],"names":["ROW_SELECTION_COLUMN_ID","useColumnSettingsContext","useProjectTableContext","useMemo","getTableFieldOptions","useRef","useSelectionCellsContext","_a","loadingAttrib","generateDummyAttributes","loadingRows","generateLoadingRows","getReadOnlyLists","useCellEditing","buildTreeTableColumns","useReactTable","getCoreRowModel","getFilteredRowModel","getExpandedRowModel","getSortedRowModel","filterFns","useEffect","jsx","ClipboardProvider","Styled.TableWrapper","Styled.TableContainer","jsxs","createPortal","DragOverlay","Styled.TR","Styled.TableCell","Icon","getCellId","Fragment","Styled.TableHeader","Styled.ColumnHeader","Styled.HeaderCell","Styled.TableCellContent","flexRender","Styled.HeaderButtons","Styled.ResizedHandler","usePrefetchFolderTasks","useVirtualizer","useCallback","EmptyPlaceholder","SortableContext","verticalListSortingStrategy","sortable","useSortable","CSS","useSelectedRowsContext","memo"],"mappings":"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"}
1
+ {"version":3,"file":"ProjectTreeTable.cjs.js","sources":["../../../../../src/containers/ProjectTreeTable/ProjectTreeTable.tsx"],"sourcesContent":["import { useMemo, useRef, useEffect, memo, CSSProperties, useCallback } from 'react' // Added useCallback\nimport { useVirtualizer, VirtualItem, Virtualizer } from '@tanstack/react-virtual'\n// TanStack Table imports\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getExpandedRowModel,\n filterFns,\n flexRender,\n Row,\n getSortedRowModel,\n Cell,\n Column,\n Table,\n Header,\n HeaderGroup,\n RowData,\n} from '@tanstack/react-table'\n\n// Utility imports\nimport clsx from 'clsx'\n\n// Type imports\nimport type { TableRow } from './types/table'\n\n// Component imports\nimport buildTreeTableColumns, {\n DefaultColumns,\n TreeTableExtraColumn,\n} from './buildTreeTableColumns'\nimport * as Styled from './ProjectTreeTable.styled'\nimport HeaderActionButton from './components/HeaderActionButton'\nimport RowDragHandleCellContent from './components/RowDragHandleCellContent' // Added import\nimport EmptyPlaceholder from '../../components/EmptyPlaceholder'\n\n// Context imports\nimport { useCellEditing } from './context/CellEditingContext'\nimport { ROW_SELECTION_COLUMN_ID, useSelectionCellsContext } from './context/SelectionCellsContext'\nimport { ClipboardProvider } from './context/ClipboardContext'\nimport { useSelectedRowsContext } from './context/SelectedRowsContext'\nimport { useColumnSettingsContext } from './context/ColumnSettingsContext'\n\n// Hook imports\nimport useCustomColumnWidthVars from './hooks/useCustomColumnWidthVars'\nimport usePrefetchFolderTasks from './hooks/usePrefetchFolderTasks'\nimport useCellContextMenu, { HeaderLabel } from './hooks/useCellContextMenu'\nimport useColumnVirtualization from './hooks/useColumnVirtualization'\nimport useKeyboardNavigation from './hooks/useKeyboardNavigation'\n\n// Utility function imports\nimport { getCellId } from './utils/cellUtils'\nimport { generateLoadingRows, generateDummyAttributes } from './utils/loadingUtils'\nimport { createPortal } from 'react-dom'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { AttributeEnumItem, ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport { ToggleExpandAll, useProjectTableContext } from './context/ProjectTableContext'\nimport { getReadOnlyLists, getTableFieldOptions } from './utils'\nimport { UpdateTableEntities } from './hooks/useUpdateTableData'\n\n// dnd-kit imports\nimport {\n DragOverlay,\n type UniqueIdentifier,\n // Removed: DndContext, KeyboardSensor, MouseSensor, TouchSensor, closestCenter, DragEndEvent, DragStartEvent, Active, Over, useSensor, useSensors\n} from '@dnd-kit/core'\n// import { restrictToVerticalAxis } from '@dnd-kit/modifiers'\nimport { SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { isGroupId } from './hooks'\n\ndeclare module '@tanstack/react-table' {\n interface TableMeta<TData extends RowData> {\n options?: BuiltInFieldOptions\n readOnly?: ProjectTreeTableProps['readOnly']\n projectName?: string\n updateEntities?: UpdateTableEntities\n toggleExpandAll?: ToggleExpandAll\n }\n}\n\n//These are the important styles to make sticky column pinning work!\n//Apply styles like this using your CSS strategy of choice with this kind of logic to head cells, data cells, footer cells, etc.\n//View the index.css file for more needed styles such as border-collapse: separate\nconst getCommonPinningStyles = (column: Column<TableRow, unknown>): CSSProperties => {\n const isPinned = column.getIsPinned()\n const offset =\n column.id !== ROW_SELECTION_COLUMN_ID && column.id !== DRAG_HANDLE_COLUMN_ID ? -30 : 0\n\n return {\n left: isPinned === 'left' ? `${column.getStart('left') + offset}px` : undefined, // Removed offset\n right: isPinned === 'right' ? `${column.getAfter('right')}px` : undefined,\n position: isPinned ? 'sticky' : 'relative',\n width: column.getSize(),\n zIndex: isPinned ? 100 : 0,\n }\n}\n\nconst getColumnWidth = (rowId: string, columnId: string) => {\n return `calc(var(--col-${columnId}-size) * 1px)`\n}\n// test\n\nexport const DRAG_HANDLE_COLUMN_ID = 'drag-handle'\n\nexport interface ProjectTreeTableProps extends React.HTMLAttributes<HTMLDivElement> {\n scope: string\n sliceId: string\n fetchMoreOnBottomReached: (element: HTMLDivElement | null) => void\n onOpenNew?: (type: 'folder' | 'task') => void\n readOnly?: (DefaultColumns | string)[]\n excludedColumns?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n isLoading?: boolean\n clientSorting?: boolean\n sortableRows?: boolean\n onRowReorder?: (active: UniqueIdentifier, over: UniqueIdentifier | null) => void // Adjusted type for active/over if needed, or keep as Active, Over\n dndActiveId?: UniqueIdentifier | null // Added prop\n pt?: {\n container?: React.HTMLAttributes<HTMLDivElement>\n head?: Partial<TableHeadProps>\n }\n}\n\nexport const ProjectTreeTable = ({\n scope,\n sliceId,\n fetchMoreOnBottomReached,\n onOpenNew,\n readOnly,\n excludedColumns,\n extraColumns,\n isLoading: isLoadingProp,\n clientSorting = false,\n sortableRows = false,\n onRowReorder,\n dndActiveId, // Destructure new prop\n pt,\n ...props\n}: ProjectTreeTableProps) => {\n const {\n columnVisibility,\n columnVisibilityUpdater,\n columnPinning,\n columnPinningUpdater,\n columnOrder,\n columnOrderUpdater,\n columnSizing,\n columnSizingUpdater,\n groupBy,\n } = useColumnSettingsContext()\n const isGrouping = !!groupBy\n\n const {\n projectInfo,\n tableData,\n attribFields,\n entitiesMap,\n users,\n isLoading: isLoadingData,\n error,\n isInitialized,\n expanded,\n projectName,\n updateExpanded,\n toggleExpandAll,\n sorting,\n updateSorting,\n showHierarchy,\n fetchNextPage,\n scopes,\n } = useProjectTableContext()\n\n const isLoading = isLoadingProp || isLoadingData\n\n const { statuses = [], folderTypes = [], taskTypes = [], tags = [] } = projectInfo || {}\n const options: BuiltInFieldOptions = useMemo(\n () =>\n getTableFieldOptions({\n users,\n statuses,\n folderTypes,\n taskTypes,\n tags,\n scopes,\n }),\n [users, statuses, folderTypes, taskTypes],\n )\n\n //The virtualizer needs to know the scrollable container element\n const tableContainerRef = useRef<HTMLDivElement>(null)\n // reference of how many rows are currently rendered in the table\n const tableRowsCountRef = useRef(0)\n\n // Selection context\n const { registerGrid } = useSelectionCellsContext()\n\n // generate loading attrib and rows\n const { loadingAttrib, loadingRows } = useMemo(() => {\n // count the number of children in tbody\n const tableRowsCount = tableContainerRef.current?.querySelectorAll('tbody tr').length || 0\n const loadingAttrib = generateDummyAttributes()\n const loadingRows = generateLoadingRows(\n attribFields,\n showHierarchy && tableData.length > 0\n ? Math.min(tableRowsCount, 50)\n : groupBy\n ? Math.max(tableRowsCountRef.current, 50)\n : 50,\n )\n\n return { loadingAttrib, loadingRows }\n }, [])\n\n const showLoadingRows = !isInitialized || isLoading\n\n // Format readonly columns and attributes\n const { readOnlyColumns, readOnlyAttribs } = useMemo(\n () => getReadOnlyLists(attribFields, readOnly),\n [attribFields, readOnly],\n )\n\n const { updateEntities } = useCellEditing()\n\n const columnAttribs = useMemo(\n () => (isInitialized ? attribFields : loadingAttrib),\n [attribFields, loadingAttrib, isInitialized],\n )\n const columns = useMemo(() => {\n const baseColumns = buildTreeTableColumns({\n attribs: columnAttribs,\n showHierarchy,\n options,\n extraColumns,\n excluded: excludedColumns,\n groupBy,\n })\n\n if (sortableRows) {\n return [\n {\n id: DRAG_HANDLE_COLUMN_ID,\n header: () => null,\n cell: () => null, // Content rendered by TableBodyRow\n size: 24,\n minSize: 24,\n maxSize: 24,\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n enablePinning: false, // Programmatically pinned\n },\n ...baseColumns,\n ]\n }\n return baseColumns\n }, [columnAttribs, showHierarchy, options, extraColumns, excludedColumns, sortableRows])\n\n const table = useReactTable({\n data: showLoadingRows ? loadingRows : tableData,\n columns,\n defaultColumn: {\n minSize: 50,\n size: 150,\n },\n enableRowSelection: true, //enable row selection for all rows\n getRowId: (row) => row.id,\n enableSubRowSelection: false, //disable sub row selection\n getSubRows: (row) => row.subRows,\n getRowCanExpand: () => true,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // EXPANDABLE\n onExpandedChange: updateExpanded,\n // SORTING\n getSortedRowModel: clientSorting ? getSortedRowModel() : undefined,\n onSortingChange: updateSorting,\n columnResizeMode: 'onChange',\n onColumnPinningChange: columnPinningUpdater,\n onColumnSizingChange: columnSizingUpdater,\n onColumnVisibilityChange: columnVisibilityUpdater,\n onColumnOrderChange: columnOrderUpdater,\n // @ts-ignore\n filterFns,\n state: {\n expanded,\n sorting,\n columnPinning: (() => {\n const leftPins: string[] = []\n if (sortableRows) {\n leftPins.push(DRAG_HANDLE_COLUMN_ID)\n }\n leftPins.push(ROW_SELECTION_COLUMN_ID)\n\n // Add other unique pins from context, ensuring they are not the programmatic ones\n const contextLeftPins = (columnPinning.left || []).filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n leftPins.push(...contextLeftPins)\n // Remove duplicates just in case, though filter should handle it\n const uniqueLeftPins = [...new Set(leftPins)]\n\n return {\n left: uniqueLeftPins,\n right: columnPinning.right,\n }\n })(),\n columnSizing,\n columnVisibility,\n columnOrder,\n },\n enableSorting: true,\n meta: {\n projectName,\n options,\n readOnly: readOnlyColumns,\n updateEntities,\n toggleExpandAll,\n loadMoreTasks: fetchNextPage,\n },\n })\n\n // TODO: when there is data (like in error) then we have infinite rendering\n\n const { rows } = table.getRowModel()\n\n // update the tableRowsCountRef with the current number of rows\n useEffect(() => {\n tableRowsCountRef.current = rows.length\n }, [rows.length])\n\n // Register grid structure with selection context when rows or columns change\n useEffect(() => {\n if (!rows.length) return\n const rowIds = rows.map((row) => row.id)\n const colIds = table.getAllLeafColumns().map((col) => col.id)\n const colIdsSortedByPinning = [...colIds].sort((a, b) => {\n if (ROW_SELECTION_COLUMN_ID === b) return 1\n const colA = columnPinning.left?.includes(a) ? 0 : 1\n const colB = columnPinning.left?.includes(b) ? 0 : 1\n return colA - colB\n })\n\n registerGrid(rowIds, colIdsSortedByPinning)\n }, [rows, table.getAllLeafColumns(), columnPinning, ROW_SELECTION_COLUMN_ID, registerGrid])\n\n const visibleColumns = table.getVisibleLeafColumns()\n\n // Use the column virtualization hook\n const { columnVirtualizer, virtualPaddingLeft, virtualPaddingRight } = useColumnVirtualization({\n visibleColumns,\n tableContainerRef,\n columnPinning,\n })\n\n const columnSizeVars = useCustomColumnWidthVars(table, columnSizing)\n\n const attribByField = useMemo(() => {\n return attribFields.reduce((acc: Record<string, AttributeEnumItem[]>, attrib) => {\n if (attrib.data?.enum?.length) {\n acc[attrib.name] = attrib.data?.enum\n }\n return acc\n }, {})\n }, [attribFields])\n\n const rowOrderIds = useMemo(() => tableData.map((row) => row.id), [tableData])\n const draggedRowData = useMemo(() => {\n if (!dndActiveId || !sortableRows) return null // Use dndActiveId\n return tableData.find((r) => r.id === dndActiveId) // Use dndActiveId\n }, [dndActiveId, tableData, sortableRows])\n\n const tableUiContent = (\n <ClipboardProvider\n entitiesMap={entitiesMap}\n columnEnums={{ ...options, ...attribByField }}\n columnReadOnly={readOnlyAttribs}\n >\n <Styled.TableWrapper {...props}>\n <Styled.TableContainer\n ref={tableContainerRef}\n style={{ height: '100%', padding: 0 }}\n onScroll={(e) => fetchMoreOnBottomReached(e.currentTarget)}\n {...pt?.container}\n className={clsx('table-container', pt?.container?.className)}\n >\n <table\n style={{\n display: 'grid',\n borderCollapse: 'collapse',\n userSelect: 'none',\n ...columnSizeVars,\n width: table.getTotalSize(),\n }}\n >\n <TableHead\n columnVirtualizer={columnVirtualizer}\n table={table}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n {...pt?.head}\n />\n <TableBody\n columnVirtualizer={columnVirtualizer}\n table={table}\n tableContainerRef={tableContainerRef}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n showHierarchy={showHierarchy}\n attribs={attribFields}\n onOpenNew={onOpenNew}\n rowOrderIds={rowOrderIds}\n sortableRows={sortableRows}\n error={error}\n isGrouping={isGrouping}\n />\n </table>\n </Styled.TableContainer>\n </Styled.TableWrapper>\n </ClipboardProvider>\n )\n\n // Render DragOverlay if sortableRows and dndActiveId is present\n const dragOverlayPortal =\n sortableRows &&\n dndActiveId &&\n createPortal(\n <DragOverlay dropAnimation={null}>\n {draggedRowData\n ? (() => {\n const overlayRowInstance = table.getRowModel().rows.find((r) => r.id === dndActiveId)\n if (!overlayRowInstance) return null\n\n const tableWidth = table.getTotalSize()\n\n return (\n <table\n style={{\n width: tableWidth,\n borderCollapse: 'collapse',\n backgroundColor: 'var(--md-sys-color-surface-container-high)',\n boxShadow: '0 0 10px rgba(0,0,0,0.2)',\n ...columnSizeVars,\n }}\n >\n <tbody>\n <Styled.TR style={{ display: 'flex', userSelect: 'none' }}>\n {virtualPaddingLeft ? (\n <td style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {columnVirtualizer.getVirtualItems().map((vc) => {\n const cell = overlayRowInstance.getVisibleCells()[vc.index]\n if (!cell) return null\n\n const cellStyleBase: CSSProperties = {\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(overlayRowInstance.id, cell.column.id),\n display: 'flex',\n alignItems: 'center',\n height: 40,\n }\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TableCell\n key={`overlay-drag-${cell.id}`}\n style={{ ...cellStyleBase, justifyContent: 'center' }}\n className={clsx(cell.column.id)}\n >\n <Icon icon=\"drag_handle\" /> {/* Static icon */}\n </Styled.TableCell>\n )\n }\n return (\n <TableCellMemo\n cell={cell}\n cellId={`overlay-${getCellId(overlayRowInstance.id, cell.column.id)}`}\n rowId={overlayRowInstance.id}\n key={`overlay-cell-${cell.id}`}\n showHierarchy={showHierarchy}\n />\n )\n })}\n {virtualPaddingRight ? (\n <td style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.TR>\n </tbody>\n </table>\n )\n })()\n : null}\n </DragOverlay>,\n document.body,\n )\n\n if (sortableRows) {\n return (\n <>\n {tableUiContent}\n {dragOverlayPortal}\n </>\n )\n } else {\n return tableUiContent\n }\n}\n\ninterface TableHeadProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n}\n\nconst TableHead = ({\n columnVirtualizer,\n table,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n ...props\n}: TableHeadProps) => {\n return (\n <Styled.TableHeader {...props}>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableHeadRow\n key={headerGroup.id}\n columnVirtualizer={columnVirtualizer}\n headerGroup={headerGroup}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n />\n ))}\n </Styled.TableHeader>\n )\n}\n\ninterface TableHeadRowProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n headerGroup: HeaderGroup<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n}\n\nconst TableHeadRow = ({\n columnVirtualizer,\n headerGroup,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n}: TableHeadRowProps) => {\n const virtualColumns = columnVirtualizer.getVirtualItems()\n return (\n <Styled.ColumnHeader key={headerGroup.id} style={{ display: 'flex' }}>\n {virtualPaddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {virtualColumns.map((virtualColumn) => {\n const header = headerGroup.headers[virtualColumn.index]\n\n return (\n <TableHeadCell\n key={header.id}\n header={header}\n isLoading={isLoading}\n isReadOnly={readOnlyColumns?.includes(header.id)}\n canSort={header.column.getCanSort()}\n canFilter={header.column.getCanFilter()}\n canHide={header.column.getCanHide()}\n canPin={header.column.getCanPin()}\n canResize={header.column.getCanResize()}\n sortableRows={sortableRows}\n />\n )\n })}\n {virtualPaddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.ColumnHeader>\n )\n}\n\ninterface TableHeadCellProps {\n header: Header<TableRow, unknown>\n isLoading: boolean\n canSort?: boolean\n canFilter?: boolean\n canHide?: boolean\n canPin?: boolean\n canResize?: boolean\n isReadOnly?: boolean\n sortableRows?: boolean\n}\n\nconst TableHeadCell = ({\n header,\n isLoading,\n canFilter,\n canHide,\n canSort,\n canPin,\n canResize,\n isReadOnly,\n sortableRows,\n}: TableHeadCellProps) => {\n const { column } = header\n\n return (\n <Styled.HeaderCell\n className={clsx(header.id, 'shimmer-dark', {\n loading: isLoading,\n 'last-pinned-left': column.getIsPinned() === 'left' && column.getIsLastColumn('left'),\n })}\n key={header.id}\n style={{\n ...getCommonPinningStyles(column),\n width: getColumnWidth('', column.id),\n }}\n >\n {header.isPlaceholder ? null : (\n <Styled.TableCellContent className={clsx('bold', 'header')}>\n {flexRender(column.columnDef.header, header.getContext())}\n {isReadOnly && (\n <Icon icon=\"lock\" data-tooltip={'You only have permission to read this column.'} />\n )}\n\n <Styled.HeaderButtons className=\"actions\">\n {/* COLUMN HIDING */}\n {canHide && (\n <HeaderActionButton\n icon=\"visibility_off\"\n selected={!column.getIsVisible()}\n onClick={column.getToggleVisibilityHandler()}\n />\n )}\n {/* COLUMN PINNING */}\n {canPin && (\n <HeaderActionButton\n icon=\"push_pin\"\n selected={header.column.getIsPinned() === 'left'}\n onClick={() => {\n if (header.column.getIsPinned() === 'left') {\n header.column.pin(false)\n } else {\n header.column.pin('left')\n }\n }}\n />\n )}\n\n {/* COLUMN SORTING */}\n {canSort && (\n <HeaderActionButton\n icon={'sort'}\n style={{\n transform: (column.getIsSorted() as string) === 'asc' ? 'scaleY(-1)' : undefined,\n }}\n onClick={column.getToggleSortingHandler()}\n selected={!!column.getIsSorted()}\n />\n )}\n </Styled.HeaderButtons>\n {canResize && (\n <Styled.ResizedHandler\n {...{\n onDoubleClick: () => column.resetSize(),\n onMouseDown: header.getResizeHandler(),\n onTouchStart: header.getResizeHandler(),\n className: clsx('resize-handle', {\n resizing: column.getIsResizing(),\n }),\n }}\n />\n )}\n </Styled.TableCellContent>\n )}\n </Styled.HeaderCell>\n )\n}\n\ninterface TableBodyProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n tableContainerRef: React.RefObject<HTMLDivElement>\n showHierarchy: boolean\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n attribs: ProjectTableAttribute[]\n onOpenNew?: (type: 'folder' | 'task') => void\n rowOrderIds: UniqueIdentifier[]\n sortableRows: boolean\n error?: string\n isGrouping: boolean\n}\n\nconst TableBody = ({\n columnVirtualizer,\n table,\n tableContainerRef,\n showHierarchy,\n virtualPaddingLeft,\n virtualPaddingRight,\n attribs,\n onOpenNew,\n rowOrderIds,\n sortableRows,\n error,\n isGrouping,\n}: TableBodyProps) => {\n const headerLabels = useMemo(() => {\n const allColumns = table.getAllColumns()\n const headers = allColumns\n .map((col) => {\n const headerId = col.id\n const header = col.columnDef.header\n if (typeof header === 'string' || typeof header === 'number') {\n return { label: header, id: headerId }\n }\n return null\n })\n .filter(Boolean)\n\n return headers as HeaderLabel[]\n }, [table.getAllColumns()])\n\n const { handleTableBodyContextMenu } = useCellContextMenu({ attribs, onOpenNew, headerLabels })\n\n const { handlePreFetchTasks } = usePrefetchFolderTasks()\n\n const { rows } = table.getRowModel()\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: () => 40, //estimate row height for accurate scrollbar dragging\n getScrollElement: () => tableContainerRef.current,\n //measure dynamic row height, except in firefox because it measures table border height incorrectly\n measureElement:\n typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 5,\n })\n\n const virtualRows = rowVirtualizer.getVirtualItems()\n\n // Memoize the measureElement callback\n const measureRowElement = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (node) {\n rowVirtualizer.measureElement(node)\n }\n },\n [rowVirtualizer],\n )\n\n useKeyboardNavigation()\n\n const tbodyContent = (\n <tbody\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`,\n position: 'relative',\n display: 'grid',\n }}\n onContextMenu={handleTableBodyContextMenu}\n onMouseOver={(e) => {\n handlePreFetchTasks(e)\n }}\n >\n {virtualRows.map((virtualRow, i) => {\n const row = rows[virtualRow.index] as Row<TableRow>\n // Add a check for row existence to prevent potential errors if data is out of sync\n if (!row) {\n console.warn('Virtualized row data not found for index:', virtualRow.index)\n return null\n }\n return (\n <TableBodyRow\n key={row.id + i.toString()} // dnd-kit needs this key to be stable and match the id in useSortable\n row={row}\n showHierarchy={showHierarchy}\n visibleCells={row.getVisibleCells()}\n virtualColumns={columnVirtualizer.getVirtualItems()}\n paddingLeft={virtualPaddingLeft}\n paddingRight={virtualPaddingRight}\n rowRef={measureRowElement}\n dataIndex={virtualRow.index}\n offsetTop={virtualRow.start}\n sortableRows={sortableRows}\n isGrouping={isGrouping}\n />\n )\n })}\n </tbody>\n )\n\n if (error) {\n return (\n tableContainerRef.current &&\n createPortal(\n <EmptyPlaceholder message=\"No items found\" error={error} />,\n tableContainerRef.current,\n )\n )\n }\n\n if (sortableRows) {\n return (\n <SortableContext items={rowOrderIds} strategy={verticalListSortingStrategy}>\n {tbodyContent}\n </SortableContext>\n )\n } else {\n return tbodyContent\n }\n}\n\ninterface TableBodyRowProps {\n row: Row<TableRow>\n showHierarchy: boolean\n visibleCells: Cell<TableRow, unknown>[]\n virtualColumns: VirtualItem[]\n paddingLeft: number | undefined\n paddingRight: number | undefined\n rowRef: (node: HTMLTableRowElement | null) => void\n dataIndex: number\n offsetTop: number\n sortableRows: boolean\n isGrouping: boolean\n}\n\nconst TableBodyRow = ({\n row,\n showHierarchy,\n visibleCells,\n virtualColumns,\n paddingLeft,\n paddingRight,\n rowRef,\n dataIndex,\n offsetTop,\n sortableRows,\n isGrouping = false,\n}: TableBodyRowProps) => {\n const sortable = sortableRows ? useSortable({ id: row.id }) : null\n\n const combinedRef = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (sortable) {\n sortable.setNodeRef(node)\n }\n // rowRef for virtualizer measurement\n // only measure if not actively being transformed by dnd-kit\n if (!(sortable && sortable.isDragging)) {\n rowRef(node)\n }\n },\n [sortable, rowRef],\n )\n\n // Attempt to combine dnd-kit transform with virtualizer's offsetTop\n const style: CSSProperties = {\n position: 'absolute', // Use absolute positioning for virtualized items\n top: offsetTop, // Position based on virtualizer's calculation (virtualRow.start)\n left: 0, // Span full width of the relative parent (tbody)\n right: 0, // Span full width\n height: 40, // Explicit height can be beneficial for absolute positioning\n zIndex: sortable && sortable.isDragging ? 0 : 1, // Ensure dragged item is above others\n display: 'flex', // Styled.TR is display:flex\n transform:\n sortable && sortable.transform ? CSS.Transform.toString(sortable.transform) : undefined, // Apply dnd-kit's transform for drag effect\n transition: sortable && sortable.transition ? sortable.transition : undefined,\n visibility: sortable && sortable.isDragging ? 'hidden' : 'visible', // Hide the row being dragged\n }\n\n return (\n <Styled.TR\n ref={combinedRef}\n data-index={dataIndex} //needed for dynamic row height measurement\n style={style}\n className={clsx({ 'group-row': row.original.group })}\n >\n {paddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingLeft }} />\n ) : null}\n {virtualColumns.map((vc, i) => {\n const cell = visibleCells[vc.index]\n if (!cell) return null // Should not happen in normal circumstances\n\n const cellId = getCellId(row.id, cell.column.id)\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TableCell\n key={cell.id + i.toString()}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(row.id, cell.column.id),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: 40,\n }}\n className={clsx(cell.column.id, {\n 'last-pinned-left':\n cell.column.getIsPinned() === 'left' && cell.column.getIsLastColumn('left'),\n })}\n onMouseDown={(e) => e.stopPropagation()} // Prevent selection interference\n onMouseOver={(e) => e.stopPropagation()}\n // Removed onMouseUp stopPropagation to allow dnd-kit to handle it\n onDoubleClick={(e) => e.stopPropagation()}\n onContextMenu={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n <RowDragHandleCellContent\n attributes={sortable?.attributes}\n listeners={sortable?.listeners}\n />\n </Styled.TableCell>\n )\n }\n return (\n <TableCellMemo\n cell={cell}\n cellId={cellId}\n rowId={row.id}\n key={cell.id + i.toString()}\n showHierarchy={showHierarchy}\n sortableRows={sortableRows}\n />\n )\n })}\n\n {paddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingRight }} />\n ) : null}\n </Styled.TR>\n )\n}\n\ninterface TableCellProps {\n cell: Cell<TableRow, unknown>\n cellId: string\n rowId: string\n className?: string\n showHierarchy: boolean\n sortableRows?: boolean\n}\n\nconst TableCell = ({\n cell,\n rowId,\n cellId,\n className,\n showHierarchy,\n sortableRows,\n ...props\n}: TableCellProps) => {\n const {\n isCellSelected,\n isCellFocused,\n startSelection,\n extendSelection,\n endSelection,\n selectCell,\n getCellBorderClasses,\n clearSelection,\n } = useSelectionCellsContext()\n\n const { isRowSelected } = useSelectedRowsContext()\n\n const { isEditing } = useCellEditing()\n\n const borderClasses = getCellBorderClasses(cellId)\n\n const isPinned = cell.column.getIsPinned()\n const isLastLeftPinnedColumn = isPinned === 'left' && cell.column.getIsLastColumn('left')\n const isRowSelectionColumn = cell.column.id === ROW_SELECTION_COLUMN_ID\n const isGroup = cell.row.original.entityType === 'group'\n\n return (\n <Styled.TableCell\n {...props}\n tabIndex={0}\n $isLastPinned={isLastLeftPinnedColumn} // is this column the last pinned column? Custom styling for borders.\n className={clsx(\n cell.column.id,\n {\n selected: isCellSelected(cellId),\n focused: isCellFocused(cellId),\n editing: isEditing(cellId),\n 'last-pinned-left': isLastLeftPinnedColumn,\n 'selected-row': isRowSelected(rowId),\n task: cell.row.original.entityType === 'task',\n },\n className,\n ...borderClasses,\n )}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.row.id, cell.column.id),\n height: 40,\n }}\n onMouseDown={(e) => {\n // Only process left clicks (button 0), ignore right clicks\n if (e.button !== 0) return\n\n // check we are not clicking on expander\n if ((e.target as HTMLElement).closest('.expander')) return\n\n // only name column can be selected for group rows\n if (isGroup && cell.column.id !== 'name') return clearSelection()\n\n const additive = e.metaKey || e.ctrlKey || isRowSelectionColumn\n if (e.shiftKey) {\n // Shift+click extends selection from anchor cell\n selectCell(cellId, additive, true) // true for range selection\n } else {\n // Normal click starts a new selection\n startSelection(cellId, additive)\n }\n }}\n onMouseOver={(e) => {\n if (e.buttons === 1) {\n // Left button is pressed during mouse move - drag selection\n extendSelection(cellId, isRowSelectionColumn)\n }\n }}\n onMouseUp={() => {\n endSelection(cellId)\n }}\n onDoubleClick={(e) => {\n if (\n cell.column.id === 'name' &&\n !(e.target as HTMLElement).closest('.expander') &&\n !isGroup\n ) {\n // select the row by selecting the row-selection cell\n const rowSelectionCellId = getCellId(cell.row.id, ROW_SELECTION_COLUMN_ID)\n if (!isCellSelected(rowSelectionCellId)) {\n const additive = e.metaKey || e.ctrlKey\n selectCell(rowSelectionCellId, additive, false)\n }\n }\n }}\n onContextMenu={(e) => {\n e.preventDefault()\n // if the cell is not selected, select it and deselect all others\n if (!isCellSelected(cellId)) {\n selectCell(cellId, false, false)\n }\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Styled.TableCell>\n )\n}\n\nconst TableCellMemo = memo(TableCell)\n"],"names":["ROW_SELECTION_COLUMN_ID","useColumnSettingsContext","useProjectTableContext","useMemo","getTableFieldOptions","useRef","useSelectionCellsContext","_a","loadingAttrib","generateDummyAttributes","loadingRows","generateLoadingRows","getReadOnlyLists","useCellEditing","buildTreeTableColumns","useReactTable","getCoreRowModel","getFilteredRowModel","getExpandedRowModel","getSortedRowModel","filterFns","useEffect","jsx","ClipboardProvider","Styled.TableWrapper","Styled.TableContainer","jsxs","createPortal","DragOverlay","Styled.TR","Styled.TableCell","Icon","getCellId","Fragment","Styled.TableHeader","Styled.ColumnHeader","Styled.HeaderCell","Styled.TableCellContent","flexRender","Styled.HeaderButtons","Styled.ResizedHandler","usePrefetchFolderTasks","useVirtualizer","useCallback","EmptyPlaceholder","SortableContext","verticalListSortingStrategy","sortable","useSortable","CSS","useSelectedRowsContext","memo"],"mappings":"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"}
@@ -41,6 +41,9 @@ const getCommonPinningStyles = (column) => {
41
41
  zIndex: isPinned ? 100 : 0
42
42
  };
43
43
  };
44
+ const getColumnWidth = (rowId, columnId) => {
45
+ return `calc(var(--col-${columnId}-size) * 1px)`;
46
+ };
44
47
  const DRAG_HANDLE_COLUMN_ID = "drag-handle";
45
48
  const ProjectTreeTable = ({
46
49
  scope,
@@ -71,6 +74,7 @@ const ProjectTreeTable = ({
71
74
  columnSizingUpdater,
72
75
  groupBy
73
76
  } = useColumnSettingsContext();
77
+ const isGrouping = !!groupBy;
74
78
  const {
75
79
  projectInfo,
76
80
  tableData,
@@ -87,7 +91,8 @@ const ProjectTreeTable = ({
87
91
  sorting,
88
92
  updateSorting,
89
93
  showHierarchy,
90
- fetchNextPage
94
+ fetchNextPage,
95
+ scopes
91
96
  } = useProjectTableContext();
92
97
  const isLoading = isLoadingProp || isLoadingData;
93
98
  const { statuses = [], folderTypes = [], taskTypes = [], tags = [] } = projectInfo || {};
@@ -97,7 +102,8 @@ const ProjectTreeTable = ({
97
102
  statuses,
98
103
  folderTypes,
99
104
  taskTypes,
100
- tags
105
+ tags,
106
+ scopes
101
107
  }),
102
108
  [users, statuses, folderTypes, taskTypes]
103
109
  );
@@ -240,7 +246,6 @@ const ProjectTreeTable = ({
240
246
  tableContainerRef,
241
247
  columnPinning
242
248
  });
243
- console.log(columnVirtualizer);
244
249
  const columnSizeVars = useCustomColumnWidthVars(table, columnSizing);
245
250
  const attribByField = useMemo(() => {
246
251
  return attribFields.reduce((acc, attrib) => {
@@ -307,7 +312,8 @@ const ProjectTreeTable = ({
307
312
  onOpenNew,
308
313
  rowOrderIds,
309
314
  sortableRows,
310
- error
315
+ error,
316
+ isGrouping
311
317
  }
312
318
  )
313
319
  ]
@@ -339,7 +345,7 @@ const ProjectTreeTable = ({
339
345
  if (!cell) return null;
340
346
  const cellStyleBase = {
341
347
  ...getCommonPinningStyles(cell.column),
342
- width: `calc(var(--col-${cell.column.id}-size) * 1px)`,
348
+ width: getColumnWidth(overlayRowInstance.id, cell.column.id),
343
349
  display: "flex",
344
350
  alignItems: "center",
345
351
  height: 40
@@ -469,7 +475,7 @@ const TableHeadCell = ({
469
475
  }),
470
476
  style: {
471
477
  ...getCommonPinningStyles(column),
472
- width: `calc(var(--header-${header == null ? void 0 : header.id}-size) * 1px)`
478
+ width: getColumnWidth("", column.id)
473
479
  },
474
480
  children: header.isPlaceholder ? null : /* @__PURE__ */ jsxRuntimeExports.jsxs(TableCellContent, { className: clsx("bold", "header"), children: [
475
481
  flexRender(column.columnDef.header, header.getContext()),
@@ -538,7 +544,8 @@ const TableBody = ({
538
544
  onOpenNew,
539
545
  rowOrderIds,
540
546
  sortableRows,
541
- error
547
+ error,
548
+ isGrouping
542
549
  }) => {
543
550
  const headerLabels = useMemo(() => {
544
551
  const allColumns = table.getAllColumns();
@@ -604,7 +611,8 @@ const TableBody = ({
604
611
  rowRef: measureRowElement,
605
612
  dataIndex: virtualRow.index,
606
613
  offsetTop: virtualRow.start,
607
- sortableRows
614
+ sortableRows,
615
+ isGrouping
608
616
  },
609
617
  row.id + i.toString()
610
618
  );
@@ -633,7 +641,8 @@ const TableBodyRow = ({
633
641
  rowRef,
634
642
  dataIndex,
635
643
  offsetTop,
636
- sortableRows
644
+ sortableRows,
645
+ isGrouping = false
637
646
  }) => {
638
647
  const sortable = sortableRows ? useSortable({ id: row.id }) : null;
639
648
  const combinedRef = useCallback(
@@ -690,7 +699,7 @@ const TableBodyRow = ({
690
699
  {
691
700
  style: {
692
701
  ...getCommonPinningStyles(cell.column),
693
- width: `calc(var(--col-${cell.column.id}-size) * 1px)`,
702
+ width: getColumnWidth(row.id, cell.column.id),
694
703
  display: "flex",
695
704
  alignItems: "center",
696
705
  justifyContent: "center",
@@ -784,7 +793,7 @@ const TableCell = ({
784
793
  ),
785
794
  style: {
786
795
  ...getCommonPinningStyles(cell.column),
787
- width: `calc(var(--col-${cell.column.id}-size) * 1px)`,
796
+ width: getColumnWidth(cell.row.id, cell.column.id),
788
797
  height: 40
789
798
  },
790
799
  onMouseDown: (e) => {