@ynput/ayon-frontend-shared 0.2.37 → 0.2.38

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 (529) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +67 -66
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +182 -167
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/Views.cjs.js.map +1 -1
  8. package/dist/Views.es.js.map +1 -1
  9. package/dist/_virtual/index.cjs10.js +1 -1
  10. package/dist/_virtual/index.cjs11.js +1 -1
  11. package/dist/_virtual/index.cjs12.js +1 -1
  12. package/dist/_virtual/index.es10.js +3 -3
  13. package/dist/_virtual/index.es11.js +5 -5
  14. package/dist/_virtual/index.es12.js +5 -5
  15. package/dist/api.cjs.js +1 -1
  16. package/dist/api.es.js +107 -106
  17. package/dist/components.cjs.js +1 -1
  18. package/dist/components.es.js +135 -133
  19. package/dist/components.es.js.map +1 -1
  20. package/dist/context.cjs.js +1 -1
  21. package/dist/context.es.js +15 -12
  22. package/dist/context.es.js.map +1 -1
  23. package/dist/index.cjs.js +1 -1
  24. package/dist/index.es.js +56 -55
  25. package/dist/index.es.js.map +1 -1
  26. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  27. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  28. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  29. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  30. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  31. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  32. package/dist/shared/src/api/generated/views.cjs.js.map +1 -1
  33. package/dist/shared/src/api/generated/views.es.js.map +1 -1
  34. package/dist/shared/src/api/queries/project/getProject.cjs.js +1 -1
  35. package/dist/shared/src/api/queries/project/getProject.cjs.js.map +1 -1
  36. package/dist/shared/src/api/queries/project/getProject.es.js +7 -1
  37. package/dist/shared/src/api/queries/project/getProject.es.js.map +1 -1
  38. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  39. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  40. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +73 -67
  41. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  42. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  43. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  44. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +131 -114
  45. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  46. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  47. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  48. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +3 -2
  49. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  50. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  51. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  52. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +3 -2
  53. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  54. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +2 -2
  55. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  56. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +61 -50
  57. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  58. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  59. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  60. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +3 -2
  61. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  62. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  63. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  64. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +70 -69
  65. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  66. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  67. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  68. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +3 -2
  69. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  70. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  71. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  72. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +5 -4
  73. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  74. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  75. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  76. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +106 -106
  77. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  78. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  79. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  80. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +53 -52
  81. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  82. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  83. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  84. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +58 -46
  85. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  86. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +1 -1
  87. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  88. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +5 -4
  89. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  90. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  91. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  92. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +44 -43
  93. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  94. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
  95. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  96. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +81 -80
  97. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  98. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  99. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  100. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +43 -42
  101. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  102. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +2 -0
  103. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -0
  104. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +263 -0
  105. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -0
  106. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +2 -2
  107. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  108. package/dist/shared/src/components/RenameForm/RenameForm.es.js +65 -64
  109. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  110. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  111. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  112. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +139 -142
  113. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  114. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  115. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  116. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +49 -48
  117. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  118. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  119. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  120. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +48 -47
  121. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  122. package/dist/shared/src/components/ReviewablesList/getGroupedReviewables.cjs.js +1 -1
  123. package/dist/shared/src/components/ReviewablesList/getGroupedReviewables.cjs.js.map +1 -1
  124. package/dist/shared/src/components/ReviewablesList/getGroupedReviewables.es.js +19 -27
  125. package/dist/shared/src/components/ReviewablesList/getGroupedReviewables.es.js.map +1 -1
  126. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  127. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  128. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +221 -211
  129. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  130. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +1 -1
  131. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  132. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +23 -22
  133. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  134. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  135. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  136. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +47 -46
  137. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  138. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +1 -1
  139. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  140. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +8 -7
  141. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  142. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +6 -6
  143. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  144. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +108 -112
  145. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  146. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  147. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  148. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +22 -23
  149. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  150. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  151. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  152. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +48 -47
  153. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  154. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  155. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  156. package/dist/shared/src/containers/Actions/Actions.es.js +3 -2
  157. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  158. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  159. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  160. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +49 -48
  161. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  162. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  163. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  164. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +164 -166
  165. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  166. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  167. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  168. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +57 -56
  169. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  170. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  171. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  172. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +103 -97
  173. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  174. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  175. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  176. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +87 -86
  177. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  178. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  179. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  180. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +3 -2
  181. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  182. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.cjs.js +1 -1
  183. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.cjs.js.map +1 -1
  184. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.es.js +18 -17
  185. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.es.js.map +1 -1
  186. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js +1 -1
  187. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js.map +1 -1
  188. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js +3 -2
  189. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js.map +1 -1
  190. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.cjs.js +1 -1
  191. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.cjs.js.map +1 -1
  192. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.es.js +25 -22
  193. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.es.js.map +1 -1
  194. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  195. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  196. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +3 -2
  197. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  198. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  199. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  200. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +44 -43
  201. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  202. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  203. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  204. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +48 -47
  205. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  206. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  207. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  208. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +48 -47
  209. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  210. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  211. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  212. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +48 -47
  213. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  214. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  215. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  216. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +44 -46
  217. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  218. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  219. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  220. package/dist/shared/src/containers/Feed/Feed.es.js +4 -3
  221. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  222. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  223. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  224. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +3 -2
  225. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  226. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  227. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  228. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +3 -2
  229. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  230. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  231. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  232. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +110 -109
  233. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  234. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  235. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  236. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +3 -2
  237. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  238. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  239. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  240. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +3 -2
  241. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  242. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  243. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  244. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +12 -11
  245. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  246. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  247. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  248. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +43 -43
  249. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  250. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  251. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  252. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +6 -5
  253. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  254. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js +1 -1
  255. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js.map +1 -1
  256. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js +11 -9
  257. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js.map +1 -1
  258. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  259. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  260. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +333 -333
  261. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  262. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  263. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  264. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +52 -51
  265. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  266. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  267. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  268. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +42 -41
  269. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  270. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  271. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  272. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +52 -51
  273. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  274. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  275. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  276. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +50 -49
  277. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  278. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +3 -3
  279. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  280. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +235 -214
  281. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  282. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  283. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  284. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +45 -40
  285. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  286. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  287. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  288. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +1 -1
  289. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -1
  290. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +160 -156
  291. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -1
  292. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  293. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  294. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +59 -58
  295. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  296. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  297. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  298. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +10 -9
  299. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  300. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  301. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  302. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +65 -66
  303. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  304. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  305. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  306. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +111 -112
  307. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  308. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  309. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  310. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +57 -57
  311. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  312. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  313. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  314. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +50 -49
  315. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  316. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  317. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  318. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +59 -53
  319. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  320. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  321. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  322. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +3 -2
  323. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  324. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js +1 -1
  325. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js.map +1 -1
  326. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js +15 -20
  327. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js.map +1 -1
  328. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  329. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  330. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +49 -48
  331. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  332. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  333. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  334. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +46 -45
  335. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  336. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  337. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  338. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +50 -49
  339. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  340. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  341. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  342. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +51 -50
  343. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  344. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  345. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  346. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +66 -65
  347. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  348. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePrefetchFolderTasks.cjs.js +1 -1
  349. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePrefetchFolderTasks.cjs.js.map +1 -1
  350. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePrefetchFolderTasks.es.js +4 -4
  351. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePrefetchFolderTasks.es.js.map +1 -1
  352. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  353. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  354. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +55 -54
  355. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  356. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  357. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  358. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +130 -116
  359. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  360. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  361. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  362. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +57 -56
  363. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  364. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js +1 -1
  365. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js.map +1 -1
  366. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js +26 -34
  367. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js.map +1 -1
  368. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
  369. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  370. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +108 -220
  371. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  372. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  373. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  374. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +63 -62
  375. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  376. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  377. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  378. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +46 -45
  379. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  380. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +3 -3
  381. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  382. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +58 -62
  383. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  384. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  385. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  386. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +114 -113
  387. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  388. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  389. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  390. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +48 -47
  391. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  392. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  393. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  394. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +3 -2
  395. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  396. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
  397. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  398. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +3 -2
  399. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  400. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  401. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  402. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +92 -87
  403. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  404. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  405. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  406. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +3 -2
  407. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  408. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js +1 -1
  409. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
  410. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js +3 -2
  411. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
  412. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  413. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  414. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  415. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  416. package/dist/shared/src/context/DetailsPanelContext.es.js +5 -4
  417. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  418. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  419. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  420. package/dist/shared/src/context/PowerpackContext.es.js +7 -6
  421. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  422. package/dist/shared/src/context/ProjectContext.cjs.js +2 -0
  423. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -0
  424. package/dist/shared/src/context/ProjectContext.es.js +182 -0
  425. package/dist/shared/src/context/ProjectContext.es.js.map +1 -0
  426. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  427. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  428. package/dist/shared/src/context/WebsocketContext.es.js +47 -46
  429. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  430. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  431. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  432. package/dist/shared/src/hooks/useEntityUpdate.es.js +3 -2
  433. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  434. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js +1 -1
  435. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js.map +1 -1
  436. package/dist/shared/src/hooks/useGetEntityGroups.es.js +6 -5
  437. package/dist/shared/src/hooks/useGetEntityGroups.es.js.map +1 -1
  438. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  439. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  440. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +3 -2
  441. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  442. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  443. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  444. package/dist/shared/src/hooks/useUserProjectConfig.es.js +3 -2
  445. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  446. package/dist/shared/src/util/versionUploadHelpers.cjs.js +1 -1
  447. package/dist/shared/src/util/versionUploadHelpers.cjs.js.map +1 -1
  448. package/dist/shared/src/util/versionUploadHelpers.es.js +24 -34
  449. package/dist/shared/src/util/versionUploadHelpers.es.js.map +1 -1
  450. package/dist/src/components/Menu/MenuComponents/Menu.cjs.js +1 -1
  451. package/dist/src/components/Menu/MenuComponents/Menu.cjs.js.map +1 -1
  452. package/dist/src/components/Menu/MenuComponents/Menu.es.js +3 -2
  453. package/dist/src/components/Menu/MenuComponents/Menu.es.js.map +1 -1
  454. package/dist/src/components/Menu/MenuComponents/MenuItem.cjs.js +1 -1
  455. package/dist/src/components/Menu/MenuComponents/MenuItem.cjs.js.map +1 -1
  456. package/dist/src/components/Menu/MenuComponents/MenuItem.es.js +6 -5
  457. package/dist/src/components/Menu/MenuComponents/MenuItem.es.js.map +1 -1
  458. package/dist/src/components/Menu/MenuComponents/MenuList.cjs.js +1 -1
  459. package/dist/src/components/Menu/MenuComponents/MenuList.cjs.js.map +1 -1
  460. package/dist/src/components/Menu/MenuComponents/MenuList.es.js +3 -2
  461. package/dist/src/components/Menu/MenuComponents/MenuList.es.js.map +1 -1
  462. package/dist/types/api/generated/views.d.ts +13 -21
  463. package/dist/types/api/queries/actions/getActions.d.ts +6 -6
  464. package/dist/types/api/queries/activities/getActivities.d.ts +8 -8
  465. package/dist/types/api/queries/activities/getCategories.d.ts +2 -2
  466. package/dist/types/api/queries/activities/getMentions.d.ts +2 -2
  467. package/dist/types/api/queries/addons/getAddons.d.ts +8 -8
  468. package/dist/types/api/queries/attributes/getAttributes.d.ts +4 -4
  469. package/dist/types/api/queries/authentication/getAuthentication.d.ts +2 -2
  470. package/dist/types/api/queries/cloud/cloud.d.ts +4 -4
  471. package/dist/types/api/queries/entities/getEntity.d.ts +10 -10
  472. package/dist/types/api/queries/entities/getEntityPanel.d.ts +4 -4
  473. package/dist/types/api/queries/entityLists/getLists.d.ts +188 -188
  474. package/dist/types/api/queries/entityLists/getListsAttributes.d.ts +2 -2
  475. package/dist/types/api/queries/entityLists/listFolders.d.ts +2 -2
  476. package/dist/types/api/queries/folders/getFolders.d.ts +4 -4
  477. package/dist/types/api/queries/grouping/getGrouping.d.ts +2 -2
  478. package/dist/types/api/queries/links/getEntityLinks.d.ts +2 -2
  479. package/dist/types/api/queries/overview/getOverview.d.ts +10 -10
  480. package/dist/types/api/queries/permissions/getPermissions.d.ts +4 -4
  481. package/dist/types/api/queries/project/getProject.d.ts +190 -6
  482. package/dist/types/api/queries/review/getReview.d.ts +6 -6
  483. package/dist/types/api/queries/share/share.d.ts +2 -2
  484. package/dist/types/api/queries/system/getSystem.d.ts +6 -6
  485. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +11 -8
  486. package/dist/types/api/queries/users/getUsers.d.ts +20 -20
  487. package/dist/types/api/queries/users/guests.d.ts +2 -2
  488. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +9 -6
  489. package/dist/types/api/queries/versions/getVersionsProductsUtils.d.ts +5 -5
  490. package/dist/types/api/queries/versions/updateVersions.d.ts +2 -2
  491. package/dist/types/api/queries/views/getViews.d.ts +8 -8
  492. package/dist/types/api/queries/watchers/getWatchers.d.ts +2 -2
  493. package/dist/types/components/DetailsPanelDetails/hooks/index.d.ts +0 -1
  494. package/dist/types/components/RemotePage/RemotePageWrapper.d.ts +29 -0
  495. package/dist/types/components/RemotePage/index.d.ts +1 -0
  496. package/dist/types/components/ReviewablesList/getGroupedReviewables.d.ts +1 -2
  497. package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +1 -0
  498. package/dist/types/components/index.d.ts +31 -30
  499. package/dist/types/containers/DetailsPanel/DetailsPanel.d.ts +3 -2
  500. package/dist/types/containers/DetailsPanel/helpers/mergeProjectInfo.d.ts +4 -2
  501. package/dist/types/containers/Feed/mentionHelpers/getMentionVersions.d.ts +2 -1
  502. package/dist/types/containers/ProjectTreeTable/context/ProjectDataContext.d.ts +0 -5
  503. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +0 -4
  504. package/dist/types/containers/ProjectTreeTable/context/ProjectTableProvider.d.ts +1 -7
  505. package/dist/types/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.d.ts +2 -3
  506. package/dist/types/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.d.ts +1 -3
  507. package/dist/types/containers/ProjectTreeTable/hooks/useGetEntityTypeData.d.ts +5 -3
  508. package/dist/types/containers/ProjectTreeTable/utils/getTableFieldOptions.d.ts +3 -2
  509. package/dist/types/containers/Views/index.d.ts +1 -1
  510. package/dist/types/context/AddonProjectContext.d.ts +9 -14
  511. package/dist/types/context/ProjectContext.d.ts +33 -0
  512. package/dist/types/context/index.d.ts +1 -0
  513. package/dist/types/hooks/useGroupByRemoteModules.d.ts +2 -1
  514. package/dist/types/util/index.d.ts +0 -2
  515. package/dist/types/util/versionUploadHelpers.d.ts +0 -1
  516. package/dist/util.cjs.js +1 -1
  517. package/dist/util.es.js +55 -58
  518. package/dist/util.es.js.map +1 -1
  519. package/package.json +1 -1
  520. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityData.cjs.js +0 -2
  521. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityData.cjs.js.map +0 -1
  522. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityData.es.js +0 -113
  523. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityData.es.js.map +0 -1
  524. package/dist/shared/src/util/productTypes.cjs.js +0 -2
  525. package/dist/shared/src/util/productTypes.cjs.js.map +0 -1
  526. package/dist/shared/src/util/productTypes.es.js +0 -25
  527. package/dist/shared/src/util/productTypes.es.js.map +0 -1
  528. package/dist/types/components/DetailsPanelDetails/hooks/useEntityData.d.ts +0 -12
  529. package/dist/types/util/productTypes.d.ts +0 -8
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../../../_virtual/jsx-runtime.cjs.js"),q=require("react"),jr=require("@tanstack/react-virtual"),W=require("@tanstack/react-table"),_=require("clsx"),$e=require("./buildTreeTableColumns.cjs.js"),j=require("./ProjectTreeTable.styled.cjs.js"),br=require("./components/HeaderActionButton.cjs.js"),Er=require("./components/RowDragHandleCellContent.cjs.js");require("./components/RowSelectionHeader.cjs.js");require("./components/SelectionCell.cjs.js");const wr=require("./components/ColumnHeaderMenu.cjs.js"),Ve=require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");const Ge=require("./context/CellEditingContext.cjs.js"),D=require("./context/SelectionCellsContext.cjs.js"),Sr=require("./context/ClipboardContext.cjs.js"),Tr=require("./context/SelectedRowsContext.cjs.js"),Mr=require("./context/ColumnSettingsContext.cjs.js"),Ir=require("../../context/MenuContext.cjs.js"),Pr=require("./hooks/useCustomColumnWidthVars.cjs.js"),Or=require("./hooks/usePrefetchFolderTasks.cjs.js"),Dr=require("./hooks/useCellContextMenu.cjs.js"),Lr=require("./hooks/useColumnVirtualization.cjs.js"),zr=require("./hooks/useKeyboardNavigation.cjs.js"),Nr=require("./hooks/useDynamicRowHeight.cjs.js"),vr=require("../EntityPickerDialog/EntityPickerDialog.cjs.js"),_r=require("./hooks/useMoveEntities.cjs.js");require("../ContextMenu/ContextMenuContext.cjs.js");const ae=require("@ynput/ayon-react-components");;/* empty css */const Re=require("react-dom");require("../Feed/context/FeedContext.cjs.js");require("../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");const kr=require("lodash"),Hr=require("react-toastify");require("uuid");require("../../util/pubsub.cjs.js");require("../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../Feed/components/CommentInput/CommentInput.cjs.js");require("../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");require("../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../Feed/components/ActivityDate.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../Feed/Feed.styled.cjs.js");require("date-fns");require("../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");const Ue=require("./utils/loadingUtils.cjs.js"),Ar=require("./utils/getTableFieldOptions.cjs.js"),Fr=require("./utils/getReadOnlyLists.cjs.js"),ce=require("./utils/cellUtils.cjs.js"),Vr=require("./utils/getEntityViewerIds.cjs.js"),We=require("./utils/restrictedEntity.cjs.js");require("./context/ProjectTableQueriesContext.cjs.js");const Ke=require("./context/ProjectTableContext.cjs.js");require("./context/DetailsPanelEntityContext.cjs.js");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("./components/GroupSettingsFallback.cjs.js");const Ur=require("./context/ProjectDataContext.cjs.js");require("./widgets/CollapsedWidget.cjs.js");require("./widgets/DateWidget.cjs.js");require("./widgets/EnumWidget.cjs.js");require("./widgets/TextWidget.cjs.js");require("./widgets/BooleanWidget.cjs.js");const Be=require("./widgets/CellWidget.cjs.js");require("./widgets/EntityNameWidget.cjs.js");require("./widgets/GroupHeaderWidget.cjs.js");require("./widgets/ThumbnailWidget.cjs.js");require("../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");const Wr=require("@dnd-kit/core"),ye=require("@dnd-kit/sortable"),Br=require("../../../../node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs.js");require("../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("axios");require("../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../components/EntityPath/EntityPath.styled.cjs.js");require("../../components/EntityPath/SegmentProvider.cjs.js");require("../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../components/Watchers/Watchers.cjs.js");require("../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../components/Powerpack/PowerpackButton.cjs.js");require("../../components/Powerpack/PricingLink.cjs.js");require("../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../components/Powerpack/CTAButton.cjs.js");require("../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../components/SizeSlider/SizeSlider.cjs.js");require("../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../components/AttributeEditor/components/MinMaxField.cjs.js");require("../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../components/SearchFilter/filterDates.cjs.js");require("../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../components/Badge/Badge.cjs.js");require("../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../components/Feedback/FeedbackContext.cjs.js");require("../../components/Feedback/SupportBubble.cjs.js");require("../../components/Chips/Chips.cjs.js");require("../../components/LinksManager/LinksManager.styled.cjs.js");require("../../components/StyledLink/StyledLink.cjs.js");require("../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../components/AccessUser/AccessUser.cjs.js");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../components/SortingSetting/SortingSetting.styled.cjs.js");require("../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../components/LinksManager/CellEditingDialog.cjs.js");require("./widgets/EmptyWidget.cjs.js");require("./widgets/ErrorWidget.cjs.js");require("../DetailsPanel/DetailsPanel.styled.cjs.js");require("../DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");require("../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../components/PlayableIcon/PlayableIcon.cjs.js");require("../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../Actions/Actions.styled.cjs.js");require("../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../Actions/ActionIcon.cjs.js");require("../Views/context/ViewsContext.cjs.js");require("../Views/Views.styled.cjs.js");require("../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../Views/ViewsMenu/ViewsMenu.cjs.js");const de=e=>{const a=e.getIsPinned(),i=e.id!==D.ROW_SELECTION_COLUMN_ID&&e.id!==G?-30:0;return{left:a==="left"?`${e.getStart("left")+i}px`:void 0,right:a==="right"?`${e.getAfter("right")}px`:void 0,position:a?"sticky":"relative",width:e.getSize(),zIndex:a?100:0}},qe=(e,a)=>`calc(var(--col-${a}-size) * 1px)`,G="drag-handle",$r=({scope:e,sliceId:a,onScroll:i,onScrollBottom:f,onOpenNew:h,readOnly:p,excludedColumns:R,excludedSorting:b,extraColumns:E,includeLinks:s,isLoading:w,isExpandable:T,clientSorting:o=!1,sortableRows:g=!1,onRowReorder:K,dndActiveId:d,columnsConfig:k,onScrollBottomGroupBy:m,contextMenuItems:X,pt:c,...Q})=>{var Fe;const{columnVisibility:H,columnPinning:M,columnOrder:I,columnSizing:A,setAllColumns:B,sorting:x,sortingOnChange:L,columnPinningOnChange:P,columnSizingOnChange:Y,columnVisibilityOnChange:$,columnOrderOnChange:C,groupBy:S}=Mr.useColumnSettingsContext(),z=!!S,{projectInfo:F,tableData:V,attribFields:N,entitiesMap:Ye,users:je,isLoading:Je,error:Qe,isInitialized:ge,expanded:Ze,projectName:te,updateExpanded:be,toggleExpandAll:er,showHierarchy:U,fetchNextPage:rr,scopes:J,getEntityById:Ee,onResetView:tr}=Ke.useProjectTableContext(),{projectName:ir,writableFields:we}=Ur.useProjectDataContext(),Z=w||Je,{statuses:Se=[],folderTypes:Te=[],taskTypes:Me=[],tags:Ie=[],linkTypes:Pe=[]}=F||{},ie=q.useMemo(()=>Ar.getTableFieldOptions({users:je,statuses:Se,folderTypes:Te,taskTypes:Me,tags:Ie,scopes:J}),[je,Se,Te,Me,J,Ie]),ne=q.useRef(null),Oe=q.useRef(0),{registerGrid:De}=D.useSelectionCellsContext(),{loadingAttrib:Le,loadingRows:nr}=q.useMemo(()=>{var n;const t=((n=ne.current)==null?void 0:n.querySelectorAll("tbody tr").length)||0,l=Ue.generateDummyAttributes(),u=Ue.generateLoadingRows(U&&V.length>0?Math.min(t,50):S?Math.max(Oe.current,50):50);return{loadingAttrib:l,loadingRows:u}},[]),sr=!ge||Z,{readOnlyColumns:ze,readOnlyAttribs:or}=q.useMemo(()=>Fr.getReadOnlyLists(N,we,p),[N,we,p]),{selectedCells:me}=D.useSelectionCellsContext(),{updateEntities:Ne}=Ge.useCellEditing(),ur=q.useCallback(async(t,l)=>{const{selection:u=[]}=l||{},n=[];if(!(u!=null&&u.length))n.push({...t,id:t.rowId});else{const{field:y,value:pe,isAttrib:Ce}=t;for(const ue of me){const{colId:v,rowId:le}=ce.parseCellId(ue)||{};if(v===D.ROW_SELECTION_COLUMN_ID)continue;const he=Ee(le||"");if(!he){console.warn(`Entity with ID ${le} not found for cell update.`);continue}(!(v!=null&&v.includes("attrib_"))||(v==null?void 0:v.replace("attrib_",""))===y)&&le&&n.push({field:y,rowId:le,id:he.entityId,value:pe,isAttrib:Ce,type:he.entityType})}}if(!n.length){console.warn("No entities to update, skipping updateEntities call."),Hr.toast.warn("No entities to update.");return}await Ne(n,!0)},[Ne,Ee,me]),ve=q.useMemo(()=>ge?N:Le,[N,Le,ge]),lr=()=>J.includes("version")?"Product / Version":J.map(t=>kr.upperFirst(t)).join(" / "),xe=q.useMemo(()=>{const t=$e.default({scopes:J,attribs:ve,links:Pe,includeLinks:s,showHierarchy:U,options:ie,extraColumns:E,excluded:R,excludedSorting:b,groupBy:S,nameLabel:lr()});return g?[{id:G,header:()=>null,cell:()=>null,size:24,minSize:24,maxSize:24,enableResizing:!1,enableSorting:!1,enableHiding:!1,enablePinning:!1},...t]:t},[J,ve,U,T,ie,Pe,s,E,R,b,g]);q.useEffect(()=>{const t=xe.map(l=>l.id).filter(Boolean);B(t)},[xe,B]);const O=W.useReactTable({data:sr?nr:V,columns:xe,defaultColumn:{minSize:50,size:150},enableRowSelection:!0,getRowId:t=>t.id,enableSubRowSelection:!1,getSubRows:t=>t.subRows,getRowCanExpand:()=>!!T||U||z,getCoreRowModel:W.getCoreRowModel(),getFilteredRowModel:W.getFilteredRowModel(),getExpandedRowModel:W.getExpandedRowModel(),filterFromLeafRows:!0,onExpandedChange:be,enableSorting:!0,getSortedRowModel:W.getSortedRowModel(),sortDescFirst:!1,manualSorting:!o,onSortingChange:L,columnResizeMode:"onChange",onColumnPinningChange:P,onColumnSizingChange:Y,onColumnVisibilityChange:$,onColumnOrderChange:C,filterFns:W.filterFns,state:{expanded:Ze,sorting:x,columnPinning:(()=>{const t=[];g&&t.push(G),t.push(D.ROW_SELECTION_COLUMN_ID);const l=(M.left||[]).filter(n=>n!==G&&n!==D.ROW_SELECTION_COLUMN_ID);return t.push(...l),{left:[...new Set(t)],right:M.right}})(),columnSizing:A,columnVisibility:H,columnOrder:I},meta:{projectName:te,options:ie,readOnly:ze,updateEntities:ur,toggleExpandAll:er,loadMoreRows:rr,selection:Array.from(me),columnsConfig:k}}),{rows:ee}=O.getRowModel();q.useEffect(()=>{Oe.current=ee.length},[ee.length]),q.useEffect(()=>{if(!ee.length)return;const t=ee.map(n=>n.id),u=[...O.getAllLeafColumns().map(n=>n.id)].sort((n,y)=>{var ue,v;if(D.ROW_SELECTION_COLUMN_ID===y)return 1;const pe=(ue=M.left)!=null&&ue.includes(n)?0:1,Ce=(v=M.left)!=null&&v.includes(y)?0:1;return pe-Ce});De(t,u)},[ee,O.getAllLeafColumns(),M,D.ROW_SELECTION_COLUMN_ID,De]);const _e=O.getVisibleLeafColumns(),{columnVirtualizer:fe,virtualPaddingLeft:se,virtualPaddingRight:oe}=Lr({visibleColumns:_e,tableContainerRef:ne,columnPinning:M,columnSizing:A,columnOrder:I}),ke=Pr(O,A),{getRowHeight:ar,defaultRowHeight:He}=Nr(),cr=q.useMemo(()=>N.reduce((t,l)=>{var u,n,y;return(n=(u=l.data)==null?void 0:u.enum)!=null&&n.length&&(t[l.name]=(y=l.data)==null?void 0:y.enum),t},{}),[N]),dr=q.useMemo(()=>V.map(t=>t.id),[V]),qr=q.useMemo(()=>!d||!g?null:V.find(t=>t.id===d),[d,V,g]),gr=q.useCallback(t=>{if(i==null||i(t),f){const l=t.currentTarget;if(l&&!U&&!S){const{scrollHeight:u,scrollTop:n,clientHeight:y}=l;u-n-y<500&&!Z&&f(t)}}if(m&&S){const l=t.currentTarget,u=l==null?void 0:l.querySelector(".load-more"),n=u==null?void 0:u.getAttribute("id"),y=n==null?void 0:n.split("-")[2];y&&m(y)}},[i,f,m,U,S,Z]),{isEntityPickerOpen:mr,handleMoveSubmit:xr,closeMoveDialog:fr,movingEntities:re,handleMoveToRoot:pr,getDisabledFolderIds:Cr,getDisabledMessage:hr}=_r.useMoveEntities({projectName:ir||te||""}),Rr=t=>{xr(t);const l=t[0];be(u=>typeof u=="boolean"?u||{[l]:!0}:u[l]?u:{...u,[l]:!0})},Ae=r.jsxRuntimeExports.jsxs(Sr.ClipboardProvider,{entitiesMap:Ye,columnEnums:{...ie,...cr},columnReadOnly:or,visibleColumns:_e,children:[r.jsxRuntimeExports.jsx(j.TableWrapper,{...Q,children:r.jsxRuntimeExports.jsx(j.TableContainer,{ref:ne,style:{height:"100%",padding:0},onScroll:gr,...c==null?void 0:c.container,className:_("table-container",{resizing:O.getState().columnSizingInfo.isResizingColumn},(Fe=c==null?void 0:c.container)==null?void 0:Fe.className),children:r.jsxRuntimeExports.jsxs("table",{style:{display:"grid",borderCollapse:"collapse",userSelect:"none",...ke,width:O.getTotalSize(),cursor:O.getState().columnSizingInfo.isResizingColumn?"col-resize":void 0},children:[r.jsxRuntimeExports.jsx(Gr,{columnVirtualizer:fe,table:O,virtualPaddingLeft:se,virtualPaddingRight:oe,isLoading:Z,readOnlyColumns:ze,sortableRows:g,...c==null?void 0:c.head}),r.jsxRuntimeExports.jsx(Yr,{columnVirtualizer:fe,table:O,tableContainerRef:ne,virtualPaddingLeft:se,virtualPaddingRight:oe,showHierarchy:U,attribs:N,onOpenNew:h,rowOrderIds:dr,sortableRows:g,error:Qe,isLoading:Z,isGrouping:z,getRowHeight:ar,defaultRowHeight:He,onResetView:tr,contextMenuItems:X})]})})}),mr&&te&&(re==null?void 0:re.entities)&&re.entities.length>0&&r.jsxRuntimeExports.jsx(vr.EntityPickerDialog,{projectName:te,entityType:"folder",onSubmit:Rr,onClose:fr,showMoveToRoot:re.entities.every(t=>t.entityType==="folder"),onMoveToRoot:pr,disabledIds:Cr(),getDisabledMessage:hr})]}),yr=g&&d&&Re.createPortal(r.jsxRuntimeExports.jsx(Wr.DragOverlay,{dropAnimation:null,children:qr?(()=>{const t=O.getRowModel().rows.find(u=>u.id===d);if(!t)return null;const l=O.getTotalSize();return r.jsxRuntimeExports.jsx("table",{style:{width:l,borderCollapse:"collapse",backgroundColor:"var(--md-sys-color-surface-container-high)",boxShadow:"0 0 10px rgba(0,0,0,0.2)",...ke},children:r.jsxRuntimeExports.jsx("tbody",{children:r.jsxRuntimeExports.jsxs(j.TR,{style:{display:"flex",userSelect:"none"},children:[se?r.jsxRuntimeExports.jsx("td",{style:{display:"flex",width:se}}):null,fe.getVirtualItems().map(u=>{const n=t.getVisibleCells()[u.index];if(!n)return null;const y={...de(n.column),width:qe(t.id,n.column.id),display:"flex",alignItems:"center",height:He};return n.column.id===G?r.jsxRuntimeExports.jsxs(j.TableCell,{style:{...y,justifyContent:"center"},className:_(n.column.id),children:[r.jsxRuntimeExports.jsx(ae.Icon,{icon:"drag_handle"})," "]},`overlay-drag-${n.id}`):r.jsxRuntimeExports.jsx(Xe,{cell:n,cellId:`overlay-${ce.getCellId(t.id,n.column.id)}`,rowId:t.id,showHierarchy:U},`overlay-cell-${n.id}`)}),oe?r.jsxRuntimeExports.jsx("td",{style:{display:"flex",width:oe}}):null]})})})})():null}),document.body);return g?r.jsxRuntimeExports.jsxs(r.jsxRuntimeExports.Fragment,{children:[Ae,yr]}):Ae},Gr=({columnVirtualizer:e,table:a,virtualPaddingLeft:i,virtualPaddingRight:f,isLoading:h,readOnlyColumns:p,sortableRows:R,...b})=>r.jsxRuntimeExports.jsx(j.TableHeader,{...b,children:a.getHeaderGroups().map(E=>r.jsxRuntimeExports.jsx(Kr,{columnVirtualizer:e,headerGroup:E,virtualPaddingLeft:i,virtualPaddingRight:f,isLoading:h,readOnlyColumns:p,sortableRows:R},E.id))}),Kr=({columnVirtualizer:e,headerGroup:a,virtualPaddingLeft:i,virtualPaddingRight:f,isLoading:h,readOnlyColumns:p,sortableRows:R})=>{const b=e.getVirtualItems();return r.jsxRuntimeExports.jsxs(j.ColumnHeader,{style:{display:"flex"},children:[i?r.jsxRuntimeExports.jsx("th",{style:{display:"flex",width:i}}):null,b.map(E=>{const s=a.headers[E.index];return r.jsxRuntimeExports.jsx(Xr,{header:s,isLoading:h,isReadOnly:p==null?void 0:p.includes(s.id),canSort:s.column.getCanSort(),canFilter:s.column.getCanFilter(),canHide:s.column.getCanHide(),canPin:s.column.getCanPin(),canResize:s.column.getCanResize(),sortableRows:R},s.id)}),f?r.jsxRuntimeExports.jsx("th",{style:{display:"flex",width:f}}):null]},a.id)},Xr=({header:e,isLoading:a,canFilter:i,canHide:f,canSort:h,canPin:p,canResize:R,isReadOnly:b,sortableRows:E})=>{const{column:s}=e,w=s.getIsSorted(),T=`column-header-menu-${s.id}`,{menuOpen:o}=Ir.useMenuContext(),g=o===T;return r.jsxRuntimeExports.jsx(j.HeaderCell,{className:_(e.id,"shimmer-dark",{loading:a,"last-pinned-left":s.getIsPinned()==="left"&&s.getIsLastColumn("left"),resizing:s.getIsResizing()}),style:{...de(s),width:qe("",s.id)},children:e.isPlaceholder?null:r.jsxRuntimeExports.jsxs(j.TableCellContent,{className:_("bold","header"),children:[W.flexRender(s.columnDef.header,e.getContext()),b&&r.jsxRuntimeExports.jsx(ae.Icon,{icon:"lock","data-tooltip":"You only have permission to read this column."}),r.jsxRuntimeExports.jsxs(j.HeaderButtons,{className:"actions",$isOpen:g,children:[(f||p||h)&&r.jsxRuntimeExports.jsx(wr.ColumnHeaderMenu,{className:"header-menu",header:e,canHide:f,canPin:p,canSort:h,isResizing:s.getIsResizing(),menuId:T,isOpen:g}),h&&r.jsxRuntimeExports.jsx(br,{icon:"sort",className:_("sort-button",{visible:w}),style:{transform:w==="asc"?"rotate(180deg) scaleX(-1)":"none"},onClick:s.getToggleSortingHandler(),selected:!!s.getIsSorted()})]}),R&&r.jsxRuntimeExports.jsx(j.ResizedHandler,{onDoubleClick:()=>s.resetSize(),onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler(),className:_("resize-handle",{resizing:s.getIsResizing()})})]})},e.id)},Yr=({columnVirtualizer:e,table:a,tableContainerRef:i,showHierarchy:f,virtualPaddingLeft:h,virtualPaddingRight:p,attribs:R,onOpenNew:b,rowOrderIds:E,sortableRows:s,error:w,isLoading:T,isGrouping:o,getRowHeight:g,defaultRowHeight:K,onResetView:d,contextMenuItems:k})=>{const m=q.useMemo(()=>a.getAllColumns().map(P=>{const Y=P.id,$=P.columnDef.header;return typeof $=="string"||typeof $=="number"?{label:$,id:Y}:null}).filter(Boolean),[a.getAllColumns()]),c=Dr({attribs:R,onOpenNew:b,headerLabels:m,contextMenuItems:k}).handleTableBodyContextMenu,{handlePreFetchTasks:Q}=Or.usePrefetchFolderTasks(),{rows:H}=a.getRowModel(),M=jr.useVirtualizer({count:H.length,estimateSize:x=>{const L=H[x];return L?g(L.original):K},getScrollElement:()=>i.current,measureElement:typeof window<"u"&&navigator.userAgent.indexOf("Firefox")===-1?x=>x==null?void 0:x.getBoundingClientRect().height:void 0,overscan:5}),I=M.getVirtualItems(),A=q.useCallback(x=>{x&&M.measureElement(x)},[M]);zr();const B=r.jsxRuntimeExports.jsx("tbody",{style:{height:`${M.getTotalSize()}px`,position:"relative",display:"grid"},onContextMenu:c,onMouseOver:x=>{Q(x)},children:I.map((x,L)=>{const P=H[x.index];return P?r.jsxRuntimeExports.jsx(Jr,{row:P,showHierarchy:f,visibleCells:P.getVisibleCells(),virtualColumns:e.getVirtualItems(),paddingLeft:h,paddingRight:p,rowRef:A,dataIndex:x.index,offsetTop:x.start,sortableRows:s,isGrouping:o,rowHeight:g(P.original)},P.id+L.toString()):(console.warn("Virtualized row data not found for index:",x.index),null)})});return w?i.current&&Re.createPortal(r.jsxRuntimeExports.jsx(j.AnimatedEmptyPlaceholder,{children:r.jsxRuntimeExports.jsx(Ve.EmptyPlaceholder,{message:"No items found",error:w,children:d&&r.jsxRuntimeExports.jsx(ae.Button,{variant:"filled",label:"Reset working view",icon:"restart_alt",onClick:d})})}),i.current):!H.length&&!T?i.current&&Re.createPortal(r.jsxRuntimeExports.jsx(j.AnimatedEmptyPlaceholder,{children:r.jsxRuntimeExports.jsx(Ve.EmptyPlaceholder,{message:"No items found",children:d&&r.jsxRuntimeExports.jsx(ae.Button,{variant:"filled",label:"Reset working view",icon:"restart_alt",onClick:d})})}),i.current):s?r.jsxRuntimeExports.jsx(ye.SortableContext,{items:E,strategy:ye.verticalListSortingStrategy,children:B}):B},Jr=({row:e,showHierarchy:a,visibleCells:i,virtualColumns:f,paddingLeft:h,paddingRight:p,rowRef:R,dataIndex:b,offsetTop:E,sortableRows:s,isGrouping:w=!1,rowHeight:T})=>{const o=s?ye.useSortable({id:e.id}):null,g=q.useCallback(d=>{o&&o.setNodeRef(d),o&&o.isDragging||R(d)},[o,R]),K={position:"absolute",top:E,left:0,right:0,height:T,zIndex:o&&o.isDragging?0:1,display:"flex",transform:o&&o.transform?Br.CSS.Transform.toString(o.transform):void 0,transition:o&&o.transition?o.transition:void 0,visibility:o&&o.isDragging?"hidden":"visible"};return r.jsxRuntimeExports.jsxs(j.TR,{ref:g,"data-index":b,style:K,className:_({"group-row":e.original.group}),children:[h?r.jsxRuntimeExports.jsx("td",{style:{display:"flex",width:h}}):null,f.map((d,k)=>{const m=i[d.index];if(!m)return null;const X=ce.getCellId(e.id,m.column.id);return m.column.id===G?r.jsxRuntimeExports.jsx(j.TableCell,{style:{...de(m.column),width:qe(e.id,m.column.id),display:"flex",alignItems:"center",justifyContent:"center",height:T,pointerEvents:"all",cursor:"grab"},className:_(m.column.id,{"last-pinned-left":m.column.getIsPinned()==="left"&&m.column.getIsLastColumn("left")}),onMouseDown:c=>c.stopPropagation(),onMouseOver:c=>c.stopPropagation(),onDoubleClick:c=>c.stopPropagation(),onContextMenu:c=>{c.preventDefault(),c.stopPropagation()},children:r.jsxRuntimeExports.jsx(Er,{attributes:o==null?void 0:o.attributes,listeners:o==null?void 0:o.listeners})},m.id+k.toString()):r.jsxRuntimeExports.jsx(Xe,{cell:m,cellId:X,rowId:e.id,showHierarchy:a,sortableRows:s,rowHeight:T},m.id+k.toString())}),p?r.jsxRuntimeExports.jsx("td",{style:{display:"flex",width:p}}):null]})},Qr=({cell:e,rowId:a,cellId:i,className:f,showHierarchy:h,sortableRows:p,rowHeight:R,...b})=>{const{getEntityById:E,onOpenPlayer:s}=Ke.useProjectTableContext(),{isCellSelected:w,isCellFocused:T,startSelection:o,extendSelection:g,endSelection:K,selectCell:d,focusCell:k,getCellBorderClasses:m,clearSelection:X,selectedCells:c}=D.useSelectionCellsContext(),{isRowSelected:Q}=Tr.useSelectedRowsContext(),{isEditing:H,setEditingCellId:M}=Ge.useCellEditing(),I=q.useRef(null),A=q.useRef(0),B=m(i),L=e.column.getIsPinned()==="left"&&e.column.getIsLastColumn("left"),P=e.column.id===D.ROW_SELECTION_COLUMN_ID,Y=e.row.original.entityType==="group",$=c.size>1;return r.jsxRuntimeExports.jsx(j.TableCell,{...b,tabIndex:0,$isLastPinned:L,className:_(e.column.id,{selected:w(i),focused:T(i),editing:H(i),"last-pinned-left":L,"selected-row":Q(a),expandable:!!e.row.originalSubRows&&$e.isEntityExpandable(e.row.original.entityType),"multiple-selected":$},f,...B),style:{...de(e.column),width:qe(e.row.id,e.column.id),height:R},onMouseDown:C=>{if(C.button!==0)return;const S=C.target;if(S.closest(".expander"))return;const z=We.isEntityRestricted(e.row.original.entityType);if(S.closest("."+Be.EDIT_TRIGGER_CLASS)){if(w(i)||(d(i,!1,!1),k(i)),z)return;M(i);return}if(S.closest(".options"))return;if(Y&&e.column.id!=="name")return X();I.current&&(clearTimeout(I.current),I.current=null);const F=Date.now(),V=F-A.current;if(A.current=F,V<300)return;const N=C.metaKey||C.ctrlKey||P;C.shiftKey?d(i,N,!0):I.current=setTimeout(()=>{o(i,N),I.current=null},200)},onMouseOver:C=>{if(C.buttons===1){if(C.target.closest("."+Be.EDIT_TRIGGER_CLASS))return;g(i,P)}},onMouseUp:()=>{K(i)},onDoubleClick:C=>{I.current&&(clearTimeout(I.current),I.current=null);const S=We.isEntityRestricted(e.row.original.entityType);if(e.column.id==="name"&&!C.target.closest(".expander")&&!Y&&!S){const z=ce.getCellId(e.row.id,D.ROW_SELECTION_COLUMN_ID),F=C.metaKey||C.ctrlKey;w(z)||d(z,F,!1),w(i)||d(i,!0,!1)}if(e.column.id==="thumbnail"&&!S&&s){const z=E(e.row.original.entityId||e.row.id);if(z){const F=Vr.getEntityViewierIds(z);s(F,{quickView:!0})}}},onContextMenu:C=>{C.preventDefault(),w(i)||d(i,!1,!1)},children:W.flexRender(e.column.columnDef.cell,e.getContext())})},Xe=q.memo(Qr);exports.DRAG_HANDLE_COLUMN_ID=G;exports.ProjectTreeTable=$r;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../../../_virtual/jsx-runtime.cjs.js"),q=require("react"),jr=require("@tanstack/react-virtual"),V=require("@tanstack/react-table"),N=require("clsx"),Ge=require("./buildTreeTableColumns.cjs.js"),j=require("./ProjectTreeTable.styled.cjs.js"),br=require("./components/HeaderActionButton.cjs.js"),Er=require("./components/RowDragHandleCellContent.cjs.js");require("./components/RowSelectionHeader.cjs.js");require("./components/SelectionCell.cjs.js");const wr=require("./components/ColumnHeaderMenu.cjs.js"),Ue=require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");const Ke=require("./context/CellEditingContext.cjs.js"),D=require("./context/SelectionCellsContext.cjs.js"),Tr=require("./context/ClipboardContext.cjs.js"),Sr=require("./context/SelectedRowsContext.cjs.js"),Mr=require("./context/ColumnSettingsContext.cjs.js"),Ir=require("../../context/MenuContext.cjs.js"),Pr=require("./hooks/useCustomColumnWidthVars.cjs.js"),Or=require("./hooks/usePrefetchFolderTasks.cjs.js"),Dr=require("./hooks/useCellContextMenu.cjs.js"),Lr=require("./hooks/useColumnVirtualization.cjs.js"),zr=require("./hooks/useKeyboardNavigation.cjs.js"),vr=require("./hooks/useDynamicRowHeight.cjs.js"),Nr=require("../EntityPickerDialog/EntityPickerDialog.cjs.js"),_r=require("./hooks/useMoveEntities.cjs.js");require("../ContextMenu/ContextMenuContext.cjs.js");const ce=require("@ynput/ayon-react-components");;/* empty css */const ye=require("react-dom");require("../Feed/context/FeedContext.cjs.js");require("../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");const kr=require("../../context/ProjectContext.cjs.js");require("../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../Feed/components/CommentInput/CommentInput.cjs.js");require("../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");const Hr=require("lodash");require("../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");const Ar=require("react-toastify");require("uuid");require("../../util/pubsub.cjs.js");require("react-router-dom");require("../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../Feed/components/ActivityDate.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../Feed/Feed.styled.cjs.js");require("date-fns");require("../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");const We=require("./utils/loadingUtils.cjs.js"),Fr=require("./utils/getTableFieldOptions.cjs.js"),Vr=require("./utils/getReadOnlyLists.cjs.js"),de=require("./utils/cellUtils.cjs.js"),Ur=require("./utils/getEntityViewerIds.cjs.js"),Be=require("./utils/restrictedEntity.cjs.js");require("./context/ProjectTableQueriesContext.cjs.js");const Xe=require("./context/ProjectTableContext.cjs.js");require("./context/DetailsPanelEntityContext.cjs.js");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("./components/GroupSettingsFallback.cjs.js");const Wr=require("./context/ProjectDataContext.cjs.js");require("./widgets/CollapsedWidget.cjs.js");require("./widgets/DateWidget.cjs.js");require("./widgets/EnumWidget.cjs.js");require("./widgets/TextWidget.cjs.js");require("./widgets/BooleanWidget.cjs.js");const $e=require("./widgets/CellWidget.cjs.js");require("./widgets/EntityNameWidget.cjs.js");require("./widgets/GroupHeaderWidget.cjs.js");require("./widgets/ThumbnailWidget.cjs.js");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../components/AccessUser/AccessUser.cjs.js");require("../../components/AttributeEditor/components/MinMaxField.cjs.js");const Br=require("@dnd-kit/core"),je=require("@dnd-kit/sortable"),$r=require("../../../../node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs.js");require("../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../components/Badge/Badge.cjs.js");require("../../components/Chips/Chips.cjs.js");require("../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../../components/EntityPath/EntityPath.styled.cjs.js");require("../../components/EntityPath/SegmentProvider.cjs.js");require("../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../components/Feedback/FeedbackContext.cjs.js");require("../../components/Feedback/SupportBubble.cjs.js");require("../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../components/LinksManager/LinksManager.styled.cjs.js");require("../../components/Powerpack/PowerpackButton.cjs.js");require("../../components/Powerpack/PricingLink.cjs.js");require("../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../components/Powerpack/CTAButton.cjs.js");require("../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../components/SizeSlider/SizeSlider.cjs.js");require("../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../components/SearchFilter/filterDates.cjs.js");require("../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../components/SortingSetting/SortingSetting.styled.cjs.js");require("../../components/StyledLink/StyledLink.cjs.js");require("../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../components/Watchers/Watchers.cjs.js");require("../../components/LinksManager/CellEditingDialog.cjs.js");require("./widgets/EmptyWidget.cjs.js");require("./widgets/ErrorWidget.cjs.js");require("../DetailsPanel/DetailsPanel.styled.cjs.js");require("../DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");require("../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../components/PlayableIcon/PlayableIcon.cjs.js");require("../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../Actions/Actions.styled.cjs.js");require("../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../Actions/ActionIcon.cjs.js");require("../Views/context/ViewsContext.cjs.js");require("../Views/Views.styled.cjs.js");require("../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../Views/ViewsMenu/ViewsMenu.cjs.js");const qe=e=>{const a=e.getIsPinned(),i=e.id!==D.ROW_SELECTION_COLUMN_ID&&e.id!==$?-30:0;return{left:a==="left"?`${e.getStart("left")+i}px`:void 0,right:a==="right"?`${e.getAfter("right")}px`:void 0,position:a?"sticky":"relative",width:e.getSize(),zIndex:a?100:0}},ge=(e,a)=>`calc(var(--col-${a}-size) * 1px)`,$="drag-handle",Gr=({scope:e,sliceId:a,onScroll:i,onScrollBottom:f,onOpenNew:h,readOnly:C,excludedColumns:R,excludedSorting:b,extraColumns:E,includeLinks:s,isLoading:w,isExpandable:S,clientSorting:o=!1,sortableRows:g=!1,onRowReorder:G,dndActiveId:d,columnsConfig:_,onScrollBottomGroupBy:m,contextMenuItems:K,pt:c,...Z})=>{var Ve;const{columnVisibility:k,columnPinning:M,columnOrder:I,columnSizing:H,setAllColumns:U,sorting:x,sortingOnChange:L,columnPinningOnChange:P,columnSizingOnChange:X,columnVisibilityOnChange:W,columnOrderOnChange:p,groupBy:T}=Mr.useColumnSettingsContext(),z=!!T,{productTypes:A,projectName:Y,...ie}=kr.useProjectContext(),{tableData:J,attribFields:B,entitiesMap:Je,users:be,isLoading:Qe,error:Ze,isInitialized:me,expanded:er,updateExpanded:Ee,toggleExpandAll:rr,showHierarchy:F,fetchNextPage:tr,scopes:Q,getEntityById:we,onResetView:ir}=Xe.useProjectTableContext(),{writableFields:Te}=Wr.useProjectDataContext(),ee=w||Qe,{statuses:Se=[],folderTypes:Me=[],taskTypes:Ie=[],tags:Pe=[],linkTypes:Oe=[]}=ie||{},ne=q.useMemo(()=>Fr.getTableFieldOptions({users:be,statuses:Se,folderTypes:Me,taskTypes:Ie,productTypes:A,tags:Pe,scopes:Q}),[be,Se,Me,Ie,Q,Pe]),se=q.useRef(null),De=q.useRef(0),{registerGrid:Le}=D.useSelectionCellsContext(),{loadingAttrib:ze,loadingRows:nr}=q.useMemo(()=>{var n;const t=((n=se.current)==null?void 0:n.querySelectorAll("tbody tr").length)||0,l=We.generateDummyAttributes(),u=We.generateLoadingRows(F&&J.length>0?Math.min(t,50):T?Math.max(De.current,50):50);return{loadingAttrib:l,loadingRows:u}},[]),sr=!me||ee,{readOnlyColumns:ve,readOnlyAttribs:or}=q.useMemo(()=>Vr.getReadOnlyLists(B,Te,C),[B,Te,C]),{selectedCells:xe}=D.useSelectionCellsContext(),{updateEntities:Ne}=Ke.useCellEditing(),ur=q.useCallback(async(t,l)=>{const{selection:u=[]}=l||{},n=[];if(!(u!=null&&u.length))n.push({...t,id:t.rowId});else{const{field:y,value:pe,isAttrib:he}=t;for(const le of xe){const{colId:v,rowId:ae}=de.parseCellId(le)||{};if(v===D.ROW_SELECTION_COLUMN_ID)continue;const Re=we(ae||"");if(!Re){console.warn(`Entity with ID ${ae} not found for cell update.`);continue}(!(v!=null&&v.includes("attrib_"))||(v==null?void 0:v.replace("attrib_",""))===y)&&ae&&n.push({field:y,rowId:ae,id:Re.entityId,value:pe,isAttrib:he,type:Re.entityType})}}if(!n.length){console.warn("No entities to update, skipping updateEntities call."),Ar.toast.warn("No entities to update.");return}await Ne(n,!0)},[Ne,we,xe]),_e=q.useMemo(()=>me?B:ze,[B,ze,me]),lr=()=>Q.includes("version")?"Product / Version":Q.map(t=>Hr.upperFirst(t)).join(" / "),fe=q.useMemo(()=>{const t=Ge.default({scopes:Q,attribs:_e,links:Oe,includeLinks:s,showHierarchy:F,options:ne,extraColumns:E,excluded:R,excludedSorting:b,groupBy:T,nameLabel:lr()});return g?[{id:$,header:()=>null,cell:()=>null,size:24,minSize:24,maxSize:24,enableResizing:!1,enableSorting:!1,enableHiding:!1,enablePinning:!1},...t]:t},[Q,_e,F,S,ne,Oe,s,E,R,b,g]);q.useEffect(()=>{const t=fe.map(l=>l.id).filter(Boolean);U(t)},[fe,U]);const O=V.useReactTable({data:sr?nr:J,columns:fe,defaultColumn:{minSize:50,size:150},enableRowSelection:!0,getRowId:t=>t.id,enableSubRowSelection:!1,getSubRows:t=>t.subRows,getRowCanExpand:()=>!!S||F||z,getCoreRowModel:V.getCoreRowModel(),getFilteredRowModel:V.getFilteredRowModel(),getExpandedRowModel:V.getExpandedRowModel(),filterFromLeafRows:!0,onExpandedChange:Ee,enableSorting:!0,getSortedRowModel:V.getSortedRowModel(),sortDescFirst:!1,manualSorting:!o,onSortingChange:L,columnResizeMode:"onChange",onColumnPinningChange:P,onColumnSizingChange:X,onColumnVisibilityChange:W,onColumnOrderChange:p,filterFns:V.filterFns,state:{expanded:er,sorting:x,columnPinning:(()=>{const t=[];g&&t.push($),t.push(D.ROW_SELECTION_COLUMN_ID);const l=(M.left||[]).filter(n=>n!==$&&n!==D.ROW_SELECTION_COLUMN_ID);return t.push(...l),{left:[...new Set(t)],right:M.right}})(),columnSizing:H,columnVisibility:k,columnOrder:I},meta:{projectName:Y,options:ne,readOnly:ve,updateEntities:ur,toggleExpandAll:rr,loadMoreRows:tr,selection:Array.from(xe),columnsConfig:_}}),{rows:re}=O.getRowModel();q.useEffect(()=>{De.current=re.length},[re.length]),q.useEffect(()=>{if(!re.length)return;const t=re.map(n=>n.id),u=[...O.getAllLeafColumns().map(n=>n.id)].sort((n,y)=>{var le,v;if(D.ROW_SELECTION_COLUMN_ID===y)return 1;const pe=(le=M.left)!=null&&le.includes(n)?0:1,he=(v=M.left)!=null&&v.includes(y)?0:1;return pe-he});Le(t,u)},[re,O.getAllLeafColumns(),M,D.ROW_SELECTION_COLUMN_ID,Le]);const ke=O.getVisibleLeafColumns(),{columnVirtualizer:Ce,virtualPaddingLeft:oe,virtualPaddingRight:ue}=Lr({visibleColumns:ke,tableContainerRef:se,columnPinning:M,columnSizing:H,columnOrder:I}),He=Pr(O,H),{getRowHeight:ar,defaultRowHeight:Ae}=vr(),cr=q.useMemo(()=>B.reduce((t,l)=>{var u,n,y;return(n=(u=l.data)==null?void 0:u.enum)!=null&&n.length&&(t[l.name]=(y=l.data)==null?void 0:y.enum),t},{}),[B]),dr=q.useMemo(()=>J.map(t=>t.id),[J]),qr=q.useMemo(()=>!d||!g?null:J.find(t=>t.id===d),[d,J,g]),gr=q.useCallback(t=>{if(i==null||i(t),f){const l=t.currentTarget;if(l&&!F&&!T){const{scrollHeight:u,scrollTop:n,clientHeight:y}=l;u-n-y<500&&!ee&&f(t)}}if(m&&T){const l=t.currentTarget,u=l==null?void 0:l.querySelector(".load-more"),n=u==null?void 0:u.getAttribute("id"),y=n==null?void 0:n.split("-")[2];y&&m(y)}},[i,f,m,F,T,ee]),{isEntityPickerOpen:mr,handleMoveSubmit:xr,closeMoveDialog:fr,movingEntities:te,handleMoveToRoot:Cr,getDisabledFolderIds:pr,getDisabledMessage:hr}=_r.useMoveEntities({projectName:Y}),Rr=t=>{xr(t);const l=t[0];Ee(u=>typeof u=="boolean"?u||{[l]:!0}:u[l]?u:{...u,[l]:!0})},Fe=r.jsxRuntimeExports.jsxs(Tr.ClipboardProvider,{entitiesMap:Je,columnEnums:{...ne,...cr},columnReadOnly:or,visibleColumns:ke,children:[r.jsxRuntimeExports.jsx(j.TableWrapper,{...Z,children:r.jsxRuntimeExports.jsx(j.TableContainer,{ref:se,style:{height:"100%",padding:0},onScroll:gr,...c==null?void 0:c.container,className:N("table-container",{resizing:O.getState().columnSizingInfo.isResizingColumn},(Ve=c==null?void 0:c.container)==null?void 0:Ve.className),children:r.jsxRuntimeExports.jsxs("table",{style:{display:"grid",borderCollapse:"collapse",userSelect:"none",...He,width:O.getTotalSize(),cursor:O.getState().columnSizingInfo.isResizingColumn?"col-resize":void 0},children:[r.jsxRuntimeExports.jsx(Kr,{columnVirtualizer:Ce,table:O,virtualPaddingLeft:oe,virtualPaddingRight:ue,isLoading:ee,readOnlyColumns:ve,sortableRows:g,...c==null?void 0:c.head}),r.jsxRuntimeExports.jsx(Jr,{columnVirtualizer:Ce,table:O,tableContainerRef:se,virtualPaddingLeft:oe,virtualPaddingRight:ue,showHierarchy:F,attribs:B,onOpenNew:h,rowOrderIds:dr,sortableRows:g,error:Ze,isLoading:ee,isGrouping:z,getRowHeight:ar,defaultRowHeight:Ae,onResetView:ir,contextMenuItems:K})]})})}),mr&&Y&&(te==null?void 0:te.entities)&&te.entities.length>0&&r.jsxRuntimeExports.jsx(Nr.EntityPickerDialog,{projectName:Y,entityType:"folder",onSubmit:Rr,onClose:fr,showMoveToRoot:te.entities.every(t=>t.entityType==="folder"),onMoveToRoot:Cr,disabledIds:pr(),getDisabledMessage:hr})]}),yr=g&&d&&ye.createPortal(r.jsxRuntimeExports.jsx(Br.DragOverlay,{dropAnimation:null,children:qr?(()=>{const t=O.getRowModel().rows.find(u=>u.id===d);if(!t)return null;const l=O.getTotalSize();return r.jsxRuntimeExports.jsx("table",{style:{width:l,borderCollapse:"collapse",backgroundColor:"var(--md-sys-color-surface-container-high)",boxShadow:"0 0 10px rgba(0,0,0,0.2)",...He},children:r.jsxRuntimeExports.jsx("tbody",{children:r.jsxRuntimeExports.jsxs(j.TR,{style:{display:"flex",userSelect:"none"},children:[oe?r.jsxRuntimeExports.jsx("td",{style:{display:"flex",width:oe}}):null,Ce.getVirtualItems().map(u=>{const n=t.getVisibleCells()[u.index];if(!n)return null;const y={...qe(n.column),width:ge(t.id,n.column.id),display:"flex",alignItems:"center",height:Ae};return n.column.id===$?r.jsxRuntimeExports.jsxs(j.TableCell,{style:{...y,justifyContent:"center"},className:N(n.column.id),children:[r.jsxRuntimeExports.jsx(ce.Icon,{icon:"drag_handle"})," "]},`overlay-drag-${n.id}`):r.jsxRuntimeExports.jsx(Ye,{cell:n,cellId:`overlay-${de.getCellId(t.id,n.column.id)}`,rowId:t.id,showHierarchy:F},`overlay-cell-${n.id}`)}),ue?r.jsxRuntimeExports.jsx("td",{style:{display:"flex",width:ue}}):null]})})})})():null}),document.body);return g?r.jsxRuntimeExports.jsxs(r.jsxRuntimeExports.Fragment,{children:[Fe,yr]}):Fe},Kr=({columnVirtualizer:e,table:a,virtualPaddingLeft:i,virtualPaddingRight:f,isLoading:h,readOnlyColumns:C,sortableRows:R,...b})=>r.jsxRuntimeExports.jsx(j.TableHeader,{...b,children:a.getHeaderGroups().map(E=>r.jsxRuntimeExports.jsx(Xr,{columnVirtualizer:e,headerGroup:E,virtualPaddingLeft:i,virtualPaddingRight:f,isLoading:h,readOnlyColumns:C,sortableRows:R},E.id))}),Xr=({columnVirtualizer:e,headerGroup:a,virtualPaddingLeft:i,virtualPaddingRight:f,isLoading:h,readOnlyColumns:C,sortableRows:R})=>{const b=e.getVirtualItems();return r.jsxRuntimeExports.jsxs(j.ColumnHeader,{style:{display:"flex"},children:[i?r.jsxRuntimeExports.jsx("th",{style:{display:"flex",width:i}}):null,b.map(E=>{const s=a.headers[E.index];return r.jsxRuntimeExports.jsx(Yr,{header:s,isLoading:h,isReadOnly:C==null?void 0:C.includes(s.id),canSort:s.column.getCanSort(),canFilter:s.column.getCanFilter(),canHide:s.column.getCanHide(),canPin:s.column.getCanPin(),canResize:s.column.getCanResize(),sortableRows:R},s.id)}),f?r.jsxRuntimeExports.jsx("th",{style:{display:"flex",width:f}}):null]},a.id)},Yr=({header:e,isLoading:a,canFilter:i,canHide:f,canSort:h,canPin:C,canResize:R,isReadOnly:b,sortableRows:E})=>{const{column:s}=e,w=s.getIsSorted(),S=`column-header-menu-${s.id}`,{menuOpen:o}=Ir.useMenuContext(),g=o===S;return r.jsxRuntimeExports.jsx(j.HeaderCell,{className:N(e.id,"shimmer-dark",{loading:a,"last-pinned-left":s.getIsPinned()==="left"&&s.getIsLastColumn("left"),resizing:s.getIsResizing()}),style:{...qe(s),width:ge("",s.id)},children:e.isPlaceholder?null:r.jsxRuntimeExports.jsxs(j.TableCellContent,{className:N("bold","header"),children:[V.flexRender(s.columnDef.header,e.getContext()),b&&r.jsxRuntimeExports.jsx(ce.Icon,{icon:"lock","data-tooltip":"You only have permission to read this column."}),r.jsxRuntimeExports.jsxs(j.HeaderButtons,{className:"actions",$isOpen:g,children:[(f||C||h)&&r.jsxRuntimeExports.jsx(wr.ColumnHeaderMenu,{className:"header-menu",header:e,canHide:f,canPin:C,canSort:h,isResizing:s.getIsResizing(),menuId:S,isOpen:g}),h&&r.jsxRuntimeExports.jsx(br,{icon:"sort",className:N("sort-button",{visible:w}),style:{transform:w==="asc"?"rotate(180deg) scaleX(-1)":"none"},onClick:s.getToggleSortingHandler(),selected:!!s.getIsSorted()})]}),R&&r.jsxRuntimeExports.jsx(j.ResizedHandler,{onDoubleClick:()=>s.resetSize(),onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler(),className:N("resize-handle",{resizing:s.getIsResizing()})})]})},e.id)},Jr=({columnVirtualizer:e,table:a,tableContainerRef:i,showHierarchy:f,virtualPaddingLeft:h,virtualPaddingRight:C,attribs:R,onOpenNew:b,rowOrderIds:E,sortableRows:s,error:w,isLoading:S,isGrouping:o,getRowHeight:g,defaultRowHeight:G,onResetView:d,contextMenuItems:_})=>{const m=q.useMemo(()=>a.getAllColumns().map(P=>{const X=P.id,W=P.columnDef.header;return typeof W=="string"||typeof W=="number"?{label:W,id:X}:null}).filter(Boolean),[a.getAllColumns()]),c=Dr({attribs:R,onOpenNew:b,headerLabels:m,contextMenuItems:_}).handleTableBodyContextMenu,{handlePreFetchTasks:Z}=Or.usePrefetchFolderTasks(),{rows:k}=a.getRowModel(),M=jr.useVirtualizer({count:k.length,estimateSize:x=>{const L=k[x];return L?g(L.original):G},getScrollElement:()=>i.current,measureElement:typeof window<"u"&&navigator.userAgent.indexOf("Firefox")===-1?x=>x==null?void 0:x.getBoundingClientRect().height:void 0,overscan:5}),I=M.getVirtualItems(),H=q.useCallback(x=>{x&&M.measureElement(x)},[M]);zr();const U=r.jsxRuntimeExports.jsx("tbody",{style:{height:`${M.getTotalSize()}px`,position:"relative",display:"grid"},onContextMenu:c,onMouseOver:x=>{Z(x)},children:I.map((x,L)=>{const P=k[x.index];return P?r.jsxRuntimeExports.jsx(Qr,{row:P,showHierarchy:f,visibleCells:P.getVisibleCells(),virtualColumns:e.getVirtualItems(),paddingLeft:h,paddingRight:C,rowRef:H,dataIndex:x.index,offsetTop:x.start,sortableRows:s,isGrouping:o,rowHeight:g(P.original)},P.id+L.toString()):(console.warn("Virtualized row data not found for index:",x.index),null)})});return w?i.current&&ye.createPortal(r.jsxRuntimeExports.jsx(j.AnimatedEmptyPlaceholder,{children:r.jsxRuntimeExports.jsx(Ue.EmptyPlaceholder,{message:"No items found",error:w,children:d&&r.jsxRuntimeExports.jsx(ce.Button,{variant:"filled",label:"Reset working view",icon:"restart_alt",onClick:d})})}),i.current):!k.length&&!S?i.current&&ye.createPortal(r.jsxRuntimeExports.jsx(j.AnimatedEmptyPlaceholder,{children:r.jsxRuntimeExports.jsx(Ue.EmptyPlaceholder,{message:"No items found",children:d&&r.jsxRuntimeExports.jsx(ce.Button,{variant:"filled",label:"Reset working view",icon:"restart_alt",onClick:d})})}),i.current):s?r.jsxRuntimeExports.jsx(je.SortableContext,{items:E,strategy:je.verticalListSortingStrategy,children:U}):U},Qr=({row:e,showHierarchy:a,visibleCells:i,virtualColumns:f,paddingLeft:h,paddingRight:C,rowRef:R,dataIndex:b,offsetTop:E,sortableRows:s,isGrouping:w=!1,rowHeight:S})=>{const o=s?je.useSortable({id:e.id}):null,g=q.useCallback(d=>{o&&o.setNodeRef(d),o&&o.isDragging||R(d)},[o,R]),G={position:"absolute",top:E,left:0,right:0,height:S,zIndex:o&&o.isDragging?0:1,display:"flex",transform:o&&o.transform?$r.CSS.Transform.toString(o.transform):void 0,transition:o&&o.transition?o.transition:void 0,visibility:o&&o.isDragging?"hidden":"visible"};return r.jsxRuntimeExports.jsxs(j.TR,{ref:g,"data-index":b,style:G,className:N({"group-row":e.original.group}),children:[h?r.jsxRuntimeExports.jsx("td",{style:{display:"flex",width:h}}):null,f.map((d,_)=>{const m=i[d.index];if(!m)return null;const K=de.getCellId(e.id,m.column.id);return m.column.id===$?r.jsxRuntimeExports.jsx(j.TableCell,{style:{...qe(m.column),width:ge(e.id,m.column.id),display:"flex",alignItems:"center",justifyContent:"center",height:S,pointerEvents:"all",cursor:"grab"},className:N(m.column.id,{"last-pinned-left":m.column.getIsPinned()==="left"&&m.column.getIsLastColumn("left")}),onMouseDown:c=>c.stopPropagation(),onMouseOver:c=>c.stopPropagation(),onDoubleClick:c=>c.stopPropagation(),onContextMenu:c=>{c.preventDefault(),c.stopPropagation()},children:r.jsxRuntimeExports.jsx(Er,{attributes:o==null?void 0:o.attributes,listeners:o==null?void 0:o.listeners})},m.id+_.toString()):r.jsxRuntimeExports.jsx(Ye,{cell:m,cellId:K,rowId:e.id,showHierarchy:a,sortableRows:s,rowHeight:S},m.id+_.toString())}),C?r.jsxRuntimeExports.jsx("td",{style:{display:"flex",width:C}}):null]})},Zr=({cell:e,rowId:a,cellId:i,className:f,showHierarchy:h,sortableRows:C,rowHeight:R,...b})=>{const{getEntityById:E,onOpenPlayer:s}=Xe.useProjectTableContext(),{isCellSelected:w,isCellFocused:S,startSelection:o,extendSelection:g,endSelection:G,selectCell:d,focusCell:_,getCellBorderClasses:m,clearSelection:K,selectedCells:c}=D.useSelectionCellsContext(),{isRowSelected:Z}=Sr.useSelectedRowsContext(),{isEditing:k,setEditingCellId:M}=Ke.useCellEditing(),I=q.useRef(null),H=q.useRef(0),U=m(i),L=e.column.getIsPinned()==="left"&&e.column.getIsLastColumn("left"),P=e.column.id===D.ROW_SELECTION_COLUMN_ID,X=e.row.original.entityType==="group",W=c.size>1;return r.jsxRuntimeExports.jsx(j.TableCell,{...b,tabIndex:0,$isLastPinned:L,className:N(e.column.id,{selected:w(i),focused:S(i),editing:k(i),"last-pinned-left":L,"selected-row":Z(a),expandable:!!e.row.originalSubRows&&Ge.isEntityExpandable(e.row.original.entityType),"multiple-selected":W},f,...U),style:{...qe(e.column),width:ge(e.row.id,e.column.id),height:R},onMouseDown:p=>{if(p.button!==0)return;const T=p.target;if(T.closest(".expander"))return;const z=Be.isEntityRestricted(e.row.original.entityType);if(T.closest("."+$e.EDIT_TRIGGER_CLASS)){if(w(i)||(d(i,!1,!1),_(i)),z)return;M(i);return}if(T.closest(".options"))return;if(X&&e.column.id!=="name")return K();I.current&&(clearTimeout(I.current),I.current=null);const A=Date.now(),Y=A-H.current;if(H.current=A,Y<300)return;const ie=p.metaKey||p.ctrlKey||P;p.shiftKey?d(i,ie,!0):I.current=setTimeout(()=>{o(i,ie),I.current=null},200)},onMouseOver:p=>{if(p.buttons===1){if(p.target.closest("."+$e.EDIT_TRIGGER_CLASS))return;g(i,P)}},onMouseUp:()=>{G(i)},onDoubleClick:p=>{I.current&&(clearTimeout(I.current),I.current=null);const T=Be.isEntityRestricted(e.row.original.entityType);if(e.column.id==="name"&&!p.target.closest(".expander")&&!X&&!T){const z=de.getCellId(e.row.id,D.ROW_SELECTION_COLUMN_ID),A=p.metaKey||p.ctrlKey;w(z)||d(z,A,!1),w(i)||d(i,!0,!1)}if(e.column.id==="thumbnail"&&!T&&s){const z=E(e.row.original.entityId||e.row.id);if(z){const A=Ur.getEntityViewierIds(z);s(A,{quickView:!0})}}},onContextMenu:p=>{p.preventDefault(),w(i)||d(i,!1,!1)},children:V.flexRender(e.column.columnDef.cell,e.getContext())})},Ye=q.memo(Zr);exports.DRAG_HANDLE_COLUMN_ID=$;exports.ProjectTreeTable=Gr;
2
2
  //# sourceMappingURL=ProjectTreeTable.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectTreeTable.cjs.js","sources":["../../../../../src/containers/ProjectTreeTable/ProjectTreeTable.tsx"],"sourcesContent":["import { useMemo, useRef, useEffect, memo, CSSProperties, useCallback, UIEventHandler } 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 ExpandedState,\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 isEntityExpandable,\n TreeTableExtraColumn,\n} from './buildTreeTableColumns'\nimport * as Styled from './ProjectTreeTable.styled'\nimport { RowDragHandleCellContent, ColumnHeaderMenu } from './components'\nimport EmptyPlaceholder from '../../components/EmptyPlaceholder'\nimport HeaderActionButton from './components/HeaderActionButton'\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'\nimport { useMenuContext } from '../../context/MenuContext'\n\n// Hook imports\nimport useCustomColumnWidthVars from './hooks/useCustomColumnWidthVars'\nimport usePrefetchFolderTasks from './hooks/usePrefetchFolderTasks'\nimport useCellContextMenu, {\n HeaderLabel,\n ContextMenuItemConstructors,\n} from './hooks/useCellContextMenu'\nimport useColumnVirtualization from './hooks/useColumnVirtualization'\nimport useKeyboardNavigation from './hooks/useKeyboardNavigation'\nimport useDynamicRowHeight from './hooks/useDynamicRowHeight'\n\n// EntityPickerDialog import\nimport { EntityPickerDialog } from '../EntityPickerDialog/EntityPickerDialog'\n// Move entity hook\nimport { useMoveEntities } from './hooks/useMoveEntities'\nimport { useProjectDataContext } from '@shared/containers'\n\n// Utility function imports\nimport { getCellId, parseCellId } from './utils/cellUtils'\nimport { generateLoadingRows, generateDummyAttributes } from './utils/loadingUtils'\nimport { isEntityRestricted } from './utils/restrictedEntity'\nimport { createPortal } from 'react-dom'\nimport { Button, Icon } from '@ynput/ayon-react-components'\nimport { AttributeEnumItem, ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport { ToggleExpandAll, useProjectTableContext } from './context/ProjectTableContext'\nimport { getEntityViewierIds, getReadOnlyLists, getTableFieldOptions } from './utils'\nimport { EntityUpdate } 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 { EDIT_TRIGGER_CLASS } from './widgets/CellWidget'\nimport { toast } from 'react-toastify'\nimport { EntityMoveData } from '@shared/context/MoveEntityContext'\nimport { upperFirst } from 'lodash'\nimport { ColumnsConfig } from './types/columnConfig'\n\ntype CellUpdate = (\n entity: Omit<EntityUpdate, 'id'>,\n config?: { selection?: string[] },\n) => Promise<void>\n\ndeclare module '@tanstack/react-table' {\n interface TableMeta<TData extends RowData> {\n options?: BuiltInFieldOptions\n readOnly?: ProjectTreeTableProps['readOnly']\n projectName?: string\n updateEntities?: CellUpdate\n toggleExpandAll?: ToggleExpandAll\n selection?: string[]\n columnsConfig?: ColumnsConfig\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 onScrollBottom?: React.HTMLAttributes<HTMLDivElement>['onScroll']\n onOpenNew?: (type: 'folder' | 'task') => void\n readOnly?: (DefaultColumns | string)[]\n excludedColumns?: (DefaultColumns | string)[]\n excludedSorting?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n includeLinks?: boolean\n isLoading?: boolean\n isExpandable?: boolean // if true, show the expand/collapse icons\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 columnsConfig?: ColumnsConfig // Configure column behavior (display, styling, etc.)\n onScrollBottomGroupBy?: (groupValue: string) => void // Handle scroll to bottom for grouped data\n contextMenuItems?: ContextMenuItemConstructors // Additional context menu items to merge with defaults\n pt?: {\n container?: React.HTMLAttributes<HTMLDivElement>\n head?: Partial<TableHeadProps>\n }\n}\n\nexport const ProjectTreeTable = ({\n scope,\n sliceId,\n onScroll,\n onScrollBottom, // when the user scrolls to the bottom of the table, this callback is called\n onOpenNew,\n readOnly,\n excludedColumns,\n excludedSorting,\n extraColumns,\n includeLinks,\n isLoading: isLoadingProp,\n isExpandable,\n clientSorting = false,\n sortableRows = false,\n onRowReorder,\n dndActiveId, // Destructure new prop\n columnsConfig,\n onScrollBottomGroupBy, // Destructure new prop for group-by load more\n contextMenuItems: propsContextMenuItems, // Additional context menu items from props\n pt,\n ...props\n}: ProjectTreeTableProps) => {\n const {\n columnVisibility,\n columnPinning,\n columnOrder,\n columnSizing,\n setAllColumns,\n sorting,\n sortingOnChange,\n columnPinningOnChange,\n columnSizingOnChange,\n columnVisibilityOnChange,\n columnOrderOnChange,\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 showHierarchy,\n fetchNextPage,\n scopes, // or entityTypes\n getEntityById,\n onResetView,\n } = useProjectTableContext()\n\n const { projectName: contextProjectName, writableFields } = useProjectDataContext()\n\n const isLoading = isLoadingProp || isLoadingData\n\n const {\n statuses = [],\n folderTypes = [],\n taskTypes = [],\n tags = [],\n linkTypes = [],\n } = 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, scopes, tags],\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 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, writableFields, readOnly),\n [attribFields, writableFields, readOnly],\n )\n\n const { selectedCells } = useSelectionCellsContext()\n const { updateEntities } = useCellEditing()\n\n const handleCellUpdate: CellUpdate = useCallback(\n async (entity, config) => {\n const { selection = [] } = config || {}\n const entitiesToUpdate: EntityUpdate[] = []\n if (!selection?.length) {\n entitiesToUpdate.push({ ...entity, id: entity.rowId })\n } else {\n // if includeSelection is true, update all the selected cells with the same columnId\n const { field, value, isAttrib } = entity\n for (const cellId of selectedCells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n\n // ignore row selection column\n if (colId === ROW_SELECTION_COLUMN_ID) continue\n\n const entity = getEntityById(rowId || '')\n if (!entity) {\n console.warn(`Entity with ID ${rowId} not found for cell update.`)\n continue\n }\n\n if ((!colId?.includes('attrib_') || colId?.replace('attrib_', '') === field) && rowId) {\n entitiesToUpdate.push({\n field: field,\n rowId: rowId,\n id: entity.entityId,\n value: value,\n isAttrib: isAttrib,\n type: entity.entityType,\n })\n }\n }\n }\n\n if (!entitiesToUpdate.length) {\n console.warn('No entities to update, skipping updateEntities call.')\n toast.warn('No entities to update.')\n return\n }\n\n await updateEntities(entitiesToUpdate, true)\n },\n [updateEntities, getEntityById, selectedCells],\n )\n\n const columnAttribs = useMemo(\n () => (isInitialized ? attribFields : loadingAttrib),\n [attribFields, loadingAttrib, isInitialized],\n )\n\n const getNameLabelHeader = () => {\n if (scopes.includes('version')) return 'Product / Version'\n return scopes.map((s) => upperFirst(s)).join(' / ')\n }\n\n const columns = useMemo(() => {\n const baseColumns = buildTreeTableColumns({\n scopes,\n attribs: columnAttribs,\n links: linkTypes,\n includeLinks,\n showHierarchy,\n options,\n extraColumns,\n excluded: excludedColumns,\n excludedSorting,\n groupBy,\n nameLabel: getNameLabelHeader(),\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 }, [\n scopes,\n columnAttribs,\n showHierarchy,\n isExpandable,\n options,\n linkTypes,\n includeLinks,\n extraColumns,\n excludedColumns,\n excludedSorting,\n sortableRows,\n ])\n\n // Keep ColumnSettingsProvider's allColumns ref up to date\n useEffect(() => {\n const ids = columns.map((c) => c.id!).filter(Boolean)\n setAllColumns(ids)\n }, [columns, setAllColumns])\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: () => !!isExpandable || showHierarchy || isGrouping,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // EXPANDABLE\n onExpandedChange: updateExpanded,\n // SORTING\n enableSorting: true,\n getSortedRowModel: getSortedRowModel(),\n sortDescFirst: false,\n manualSorting: !clientSorting,\n onSortingChange: sortingOnChange,\n columnResizeMode: 'onChange',\n onColumnPinningChange: columnPinningOnChange,\n onColumnSizingChange: columnSizingOnChange,\n onColumnVisibilityChange: columnVisibilityOnChange,\n onColumnOrderChange: columnOrderOnChange,\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 meta: {\n projectName,\n options,\n readOnly: readOnlyColumns,\n updateEntities: handleCellUpdate,\n toggleExpandAll,\n loadMoreRows: fetchNextPage,\n selection: Array.from(selectedCells),\n columnsConfig,\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 columnSizing,\n columnOrder,\n })\n\n const columnSizeVars = useCustomColumnWidthVars(table, columnSizing)\n\n // Calculate dynamic row height based on user setting from Customize panel\n const { getRowHeight, defaultRowHeight } = useDynamicRowHeight()\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 combinedScrollHandler: UIEventHandler<HTMLDivElement> = useCallback(\n (e) => {\n // Call the original onScroll if provided\n onScroll?.(e)\n\n if (onScrollBottom) {\n const containerRefElement = e.currentTarget\n if (containerRefElement && !showHierarchy && !groupBy) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement\n //once the user has scrolled within 500px of the bottom of the table, fetch more data if we can\n if (scrollHeight - scrollTop - clientHeight < 500 && !isLoading) {\n onScrollBottom(e)\n }\n }\n }\n\n // Handle scroll-to-bottom for grouped data\n if (onScrollBottomGroupBy && groupBy) {\n const containerRefElement = e.currentTarget\n // look for a load more button\n const loadMoreButton = containerRefElement?.querySelector('.load-more')\n // get load more button id\n const loadMoreButtonId = loadMoreButton?.getAttribute('id')\n const groupValue = loadMoreButtonId?.split('-')[2] // assuming the id is in the format 'load-more-groupValue'\n if (groupValue) {\n onScrollBottomGroupBy(groupValue)\n }\n }\n },\n [onScroll, onScrollBottom, onScrollBottomGroupBy, showHierarchy, groupBy, isLoading],\n )\n\n // Get move entity functions for the dialog\n const {\n isEntityPickerOpen,\n handleMoveSubmit,\n closeMoveDialog,\n movingEntities,\n handleMoveToRoot,\n getDisabledFolderIds,\n getDisabledMessage,\n } = useMoveEntities({\n projectName: contextProjectName || projectName || '',\n })\n\n const handleMoveSubmitWithExpand = (selection: string[]) => {\n handleMoveSubmit(selection)\n const folderIdToExpand = selection[0]\n\n updateExpanded((prevExpanded: ExpandedState) => {\n if (typeof prevExpanded === 'boolean') {\n if (prevExpanded) {\n return prevExpanded\n }\n return { [folderIdToExpand]: true }\n }\n\n if (prevExpanded[folderIdToExpand]) {\n return prevExpanded\n }\n\n return {\n ...prevExpanded,\n [folderIdToExpand]: true,\n }\n })\n }\n\n const tableUiContent = (\n <ClipboardProvider\n entitiesMap={entitiesMap}\n columnEnums={{ ...options, ...attribByField }}\n columnReadOnly={readOnlyAttribs}\n visibleColumns={visibleColumns}\n >\n <Styled.TableWrapper {...props}>\n <Styled.TableContainer\n ref={tableContainerRef}\n style={{ height: '100%', padding: 0 }}\n onScroll={combinedScrollHandler}\n {...pt?.container}\n className={clsx(\n 'table-container',\n {\n resizing: table.getState().columnSizingInfo.isResizingColumn,\n },\n pt?.container?.className,\n )}\n >\n <table\n style={{\n display: 'grid',\n borderCollapse: 'collapse',\n userSelect: 'none',\n ...columnSizeVars,\n width: table.getTotalSize(),\n cursor: table.getState().columnSizingInfo.isResizingColumn ? 'col-resize' : undefined,\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 isLoading={isLoading}\n isGrouping={isGrouping}\n getRowHeight={getRowHeight}\n defaultRowHeight={defaultRowHeight}\n onResetView={onResetView}\n contextMenuItems={propsContextMenuItems}\n />\n </table>\n </Styled.TableContainer>\n </Styled.TableWrapper>\n {/* Render EntityPickerDialog alongside table content */}\n {isEntityPickerOpen &&\n projectName &&\n movingEntities?.entities &&\n movingEntities.entities.length > 0 && (\n <EntityPickerDialog\n projectName={projectName}\n entityType=\"folder\"\n onSubmit={handleMoveSubmitWithExpand}\n onClose={closeMoveDialog}\n showMoveToRoot={movingEntities.entities.every(\n (entity: EntityMoveData) => entity.entityType === 'folder',\n )}\n onMoveToRoot={handleMoveToRoot}\n disabledIds={getDisabledFolderIds()}\n getDisabledMessage={getDisabledMessage}\n />\n )}\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: defaultRowHeight,\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 const sorting = column.getIsSorted()\n const menuId = `column-header-menu-${column.id}`\n const { menuOpen } = useMenuContext()\n const isOpen = menuOpen === menuId\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 resizing: column.getIsResizing(),\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\" $isOpen={isOpen}>\n {(canHide || canPin || canSort) && (\n <ColumnHeaderMenu\n className=\"header-menu\"\n header={header}\n canHide={canHide}\n canPin={canPin}\n canSort={canSort}\n isResizing={column.getIsResizing()}\n menuId={menuId}\n isOpen={isOpen}\n />\n )}\n\n {/* COLUMN SORTING */}\n {canSort && (\n <HeaderActionButton\n icon=\"sort\"\n className={clsx('sort-button', { visible: sorting })}\n style={{\n transform: sorting === 'asc' ? 'rotate(180deg) scaleX(-1)' : 'none',\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 isLoading: boolean\n isGrouping: boolean\n getRowHeight: (row: TableRow) => number\n defaultRowHeight: number\n onResetView?: () => void\n contextMenuItems?: ContextMenuItemConstructors\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 isLoading,\n isGrouping,\n getRowHeight,\n defaultRowHeight,\n onResetView,\n contextMenuItems,\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 cellContextMenuHook = useCellContextMenu({\n attribs,\n onOpenNew,\n headerLabels,\n contextMenuItems,\n })\n\n const handleTableBodyContextMenu = cellContextMenuHook.handleTableBodyContextMenu\n\n const { handlePreFetchTasks } = usePrefetchFolderTasks()\n\n const { rows } = table.getRowModel()\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: (index) => {\n // Calculate dynamic row height based on specific row data\n const row = rows[index]\n return row ? getRowHeight(row.original) : defaultRowHeight\n },\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 rowHeight={getRowHeight(row.original)}\n />\n )\n })}\n </tbody>\n )\n\n if (error) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n <EmptyPlaceholder message=\"No items found\" error={error}>\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset working view\"\n icon=\"restart_alt\"\n onClick={onResetView}\n />\n )}\n </EmptyPlaceholder>\n </Styled.AnimatedEmptyPlaceholder>,\n tableContainerRef.current,\n )\n )\n }\n\n if (!rows.length && !isLoading) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n <EmptyPlaceholder message=\"No items found\">\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset working view\"\n icon=\"restart_alt\"\n onClick={onResetView}\n />\n )}\n </EmptyPlaceholder>\n </Styled.AnimatedEmptyPlaceholder>,\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 rowHeight: number\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 rowHeight,\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: rowHeight, // Use dynamic row height\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: rowHeight,\n pointerEvents: 'all',\n cursor: 'grab',\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 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 rowHeight={rowHeight}\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 rowHeight?: number\n}\n\nconst TableCell = ({\n cell,\n rowId,\n cellId,\n className,\n showHierarchy,\n sortableRows,\n rowHeight,\n ...props\n}: TableCellProps) => {\n const { getEntityById, onOpenPlayer } = useProjectTableContext()\n\n const {\n isCellSelected,\n isCellFocused,\n startSelection,\n extendSelection,\n endSelection,\n selectCell,\n focusCell,\n getCellBorderClasses,\n clearSelection,\n selectedCells,\n } = useSelectionCellsContext()\n\n const { isRowSelected } = useSelectedRowsContext()\n\n const { isEditing, setEditingCellId } = useCellEditing()\n\n // Track clicks to prevent selection from interfering with double-click\n const clickTimerRef = useRef<NodeJS.Timeout | null>(null)\n const lastClickTimeRef = useRef<number>(0)\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 const isMultipleSelected = selectedCells.size > 1\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 expandable:\n !!cell.row.originalSubRows && isEntityExpandable(cell.row.original.entityType),\n 'multiple-selected': isMultipleSelected,\n },\n className,\n ...borderClasses,\n )}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.row.id, cell.column.id),\n height: rowHeight,\n }}\n onMouseDown={(e) => {\n // Only process left clicks (button 0), ignore right clicks\n if (e.button !== 0) return\n\n const target = e.target as HTMLElement\n\n // check we are not clicking on expander\n if (target.closest('.expander')) return\n\n // check if this is a restricted entity - prevent editing\n const isRestricted = isEntityRestricted(cell.row.original.entityType)\n\n // if we are clicking on an edit trigger, we need to start editing\n if (target.closest('.' + EDIT_TRIGGER_CLASS)) {\n if (!isCellSelected(cellId)) {\n // if the cell is not selected, select it and deselect all others\n selectCell(cellId, false, false)\n focusCell(cellId)\n }\n // skip if restricted\n if (isRestricted) return\n setEditingCellId(cellId)\n\n return\n }\n\n // check we are not clicking in a dropdown\n if (target.closest('.options')) return\n\n // only name column can be selected for group rows\n if (isGroup && cell.column.id !== 'name') return clearSelection()\n\n // Clear any pending selection timer\n if (clickTimerRef.current) {\n clearTimeout(clickTimerRef.current)\n clickTimerRef.current = null\n }\n\n const now = Date.now()\n const timeSinceLastClick = now - lastClickTimeRef.current\n lastClickTimeRef.current = now\n\n // If this is potentially a double-click (within 300ms), don't start selection yet\n // The double-click handler will handle the action\n if (timeSinceLastClick < 300) {\n return\n }\n\n const additive = e.metaKey || e.ctrlKey || isRowSelectionColumn\n\n if (e.shiftKey) {\n // Shift+click extends selection from anchor cell immediately\n selectCell(cellId, additive, true) // true for range selection\n } else {\n // Delay normal selection to allow double-click to be detected\n clickTimerRef.current = setTimeout(() => {\n startSelection(cellId, additive)\n clickTimerRef.current = null\n }, 200) // 200ms delay to detect double-click\n }\n }}\n onMouseOver={(e) => {\n if (e.buttons === 1) {\n // check not selecting am edit trigger\n const target = e.target as HTMLElement\n if (target.closest('.' + EDIT_TRIGGER_CLASS)) return\n\n // Left button is pressed during mouse move - drag selection\n // Note: extendSelection is always called to allow drag to continue through cells\n // Restricted cells will be filtered out later\n extendSelection(cellId, isRowSelectionColumn)\n }\n }}\n onMouseUp={() => {\n endSelection(cellId)\n }}\n onDoubleClick={(e) => {\n // Cancel any pending selection timer\n if (clickTimerRef.current) {\n clearTimeout(clickTimerRef.current)\n clickTimerRef.current = null\n }\n\n // check if this is a restricted entity - prevent opening details/viewer\n const isRestricted = isEntityRestricted(cell.row.original.entityType)\n\n // row selection on name column double click\n if (\n cell.column.id === 'name' &&\n !(e.target as HTMLElement).closest('.expander') &&\n !isGroup &&\n !isRestricted\n ) {\n // select the row by selecting the row-selection cell\n const rowSelectionCellId = getCellId(cell.row.id, ROW_SELECTION_COLUMN_ID)\n const additive = e.metaKey || e.ctrlKey\n\n // Select both the row-selection cell and the name cell\n if (!isCellSelected(rowSelectionCellId)) {\n selectCell(rowSelectionCellId, additive, false)\n }\n if (!isCellSelected(cellId)) {\n selectCell(cellId, true, false) // additive=true to keep row-selection\n }\n }\n // open the viewer on thumbnail double click\n if (cell.column.id === 'thumbnail' && !isRestricted) {\n if (onOpenPlayer) {\n const entity = getEntityById(cell.row.original.entityId || cell.row.id)\n if (entity) {\n const targetIds = getEntityViewierIds(entity)\n onOpenPlayer(targetIds, { quickView: true })\n }\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":["getCommonPinningStyles","column","isPinned","offset","ROW_SELECTION_COLUMN_ID","DRAG_HANDLE_COLUMN_ID","getColumnWidth","rowId","columnId","ProjectTreeTable","scope","sliceId","onScroll","onScrollBottom","onOpenNew","readOnly","excludedColumns","excludedSorting","extraColumns","includeLinks","isLoadingProp","isExpandable","clientSorting","sortableRows","onRowReorder","dndActiveId","columnsConfig","onScrollBottomGroupBy","propsContextMenuItems","pt","props","columnVisibility","columnPinning","columnOrder","columnSizing","setAllColumns","sorting","sortingOnChange","columnPinningOnChange","columnSizingOnChange","columnVisibilityOnChange","columnOrderOnChange","groupBy","useColumnSettingsContext","isGrouping","projectInfo","tableData","attribFields","entitiesMap","users","isLoadingData","error","isInitialized","expanded","projectName","updateExpanded","toggleExpandAll","showHierarchy","fetchNextPage","scopes","getEntityById","onResetView","useProjectTableContext","contextProjectName","writableFields","useProjectDataContext","isLoading","statuses","folderTypes","taskTypes","tags","linkTypes","options","useMemo","getTableFieldOptions","tableContainerRef","useRef","tableRowsCountRef","registerGrid","useSelectionCellsContext","loadingAttrib","loadingRows","tableRowsCount","_a","generateDummyAttributes","generateLoadingRows","showLoadingRows","readOnlyColumns","readOnlyAttribs","getReadOnlyLists","selectedCells","updateEntities","useCellEditing","handleCellUpdate","useCallback","entity","config","selection","entitiesToUpdate","field","value","isAttrib","cellId","colId","parseCellId","toast","columnAttribs","getNameLabelHeader","s","upperFirst","columns","baseColumns","buildTreeTableColumns","useEffect","ids","c","table","useReactTable","row","getCoreRowModel","getFilteredRowModel","getExpandedRowModel","getSortedRowModel","filterFns","leftPins","contextLeftPins","id","rows","rowIds","colIdsSortedByPinning","col","a","b","colA","colB","_b","visibleColumns","columnVirtualizer","virtualPaddingLeft","virtualPaddingRight","useColumnVirtualization","columnSizeVars","useCustomColumnWidthVars","getRowHeight","defaultRowHeight","useDynamicRowHeight","attribByField","acc","attrib","_c","rowOrderIds","draggedRowData","r","combinedScrollHandler","e","containerRefElement","scrollHeight","scrollTop","clientHeight","loadMoreButton","loadMoreButtonId","groupValue","isEntityPickerOpen","handleMoveSubmit","closeMoveDialog","movingEntities","handleMoveToRoot","getDisabledFolderIds","getDisabledMessage","useMoveEntities","handleMoveSubmitWithExpand","folderIdToExpand","prevExpanded","tableUiContent","jsxs","ClipboardProvider","jsx","Styled.TableWrapper","Styled.TableContainer","clsx","TableHead","TableBody","EntityPickerDialog","dragOverlayPortal","createPortal","DragOverlay","overlayRowInstance","tableWidth","Styled.TR","vc","cell","cellStyleBase","Styled.TableCell","Icon","TableCellMemo","getCellId","Fragment","Styled.TableHeader","headerGroup","TableHeadRow","virtualColumns","Styled.ColumnHeader","virtualColumn","header","TableHeadCell","canFilter","canHide","canSort","canPin","canResize","isReadOnly","menuId","menuOpen","useMenuContext","isOpen","Styled.HeaderCell","Styled.TableCellContent","flexRender","Styled.HeaderButtons","ColumnHeaderMenu","HeaderActionButton","Styled.ResizedHandler","attribs","contextMenuItems","headerLabels","headerId","handleTableBodyContextMenu","useCellContextMenu","handlePreFetchTasks","usePrefetchFolderTasks","rowVirtualizer","useVirtualizer","index","element","virtualRows","measureRowElement","node","useKeyboardNavigation","tbodyContent","virtualRow","i","TableBodyRow","Styled.AnimatedEmptyPlaceholder","EmptyPlaceholder","Button","SortableContext","verticalListSortingStrategy","visibleCells","paddingLeft","paddingRight","rowRef","dataIndex","offsetTop","rowHeight","sortable","useSortable","combinedRef","style","CSS","RowDragHandleCellContent","TableCell","className","onOpenPlayer","isCellSelected","isCellFocused","startSelection","extendSelection","endSelection","selectCell","focusCell","getCellBorderClasses","clearSelection","isRowSelected","useSelectedRowsContext","isEditing","setEditingCellId","clickTimerRef","lastClickTimeRef","borderClasses","isLastLeftPinnedColumn","isRowSelectionColumn","isGroup","isMultipleSelected","isEntityExpandable","target","isRestricted","isEntityRestricted","EDIT_TRIGGER_CLASS","now","timeSinceLastClick","additive","rowSelectionCellId","targetIds","getEntityViewierIds","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, UIEventHandler } 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 ExpandedState,\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 isEntityExpandable,\n TreeTableExtraColumn,\n} from './buildTreeTableColumns'\nimport * as Styled from './ProjectTreeTable.styled'\nimport { RowDragHandleCellContent, ColumnHeaderMenu } from './components'\nimport EmptyPlaceholder from '../../components/EmptyPlaceholder'\nimport HeaderActionButton from './components/HeaderActionButton'\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'\nimport { useMenuContext } from '../../context/MenuContext'\n\n// Hook imports\nimport useCustomColumnWidthVars from './hooks/useCustomColumnWidthVars'\nimport usePrefetchFolderTasks from './hooks/usePrefetchFolderTasks'\nimport useCellContextMenu, {\n HeaderLabel,\n ContextMenuItemConstructors,\n} from './hooks/useCellContextMenu'\nimport useColumnVirtualization from './hooks/useColumnVirtualization'\nimport useKeyboardNavigation from './hooks/useKeyboardNavigation'\nimport useDynamicRowHeight from './hooks/useDynamicRowHeight'\n\n// EntityPickerDialog import\nimport { EntityPickerDialog } from '../EntityPickerDialog/EntityPickerDialog'\n// Move entity hook\nimport { useMoveEntities } from './hooks/useMoveEntities'\nimport { useProjectDataContext } from '@shared/containers'\n\n// Utility function imports\nimport { getCellId, parseCellId } from './utils/cellUtils'\nimport { generateLoadingRows, generateDummyAttributes } from './utils/loadingUtils'\nimport { isEntityRestricted } from './utils/restrictedEntity'\nimport { createPortal } from 'react-dom'\nimport { Button, Icon } from '@ynput/ayon-react-components'\nimport { AttributeEnumItem, ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport { ToggleExpandAll, useProjectTableContext } from './context/ProjectTableContext'\nimport { getEntityViewierIds, getReadOnlyLists, getTableFieldOptions } from './utils'\nimport { EntityUpdate } 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\nimport { useProjectContext } from '@shared/context'\nimport { EDIT_TRIGGER_CLASS } from './widgets/CellWidget'\nimport { toast } from 'react-toastify'\nimport { EntityMoveData } from '@shared/context/MoveEntityContext'\nimport { upperFirst } from 'lodash'\nimport { ColumnsConfig } from './types/columnConfig'\n\ntype CellUpdate = (\n entity: Omit<EntityUpdate, 'id'>,\n config?: { selection?: string[] },\n) => Promise<void>\n\ndeclare module '@tanstack/react-table' {\n interface TableMeta<TData extends RowData> {\n options?: BuiltInFieldOptions\n readOnly?: ProjectTreeTableProps['readOnly']\n projectName?: string\n updateEntities?: CellUpdate\n toggleExpandAll?: ToggleExpandAll\n selection?: string[]\n columnsConfig?: ColumnsConfig\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 onScrollBottom?: React.HTMLAttributes<HTMLDivElement>['onScroll']\n onOpenNew?: (type: 'folder' | 'task') => void\n readOnly?: (DefaultColumns | string)[]\n excludedColumns?: (DefaultColumns | string)[]\n excludedSorting?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n includeLinks?: boolean\n isLoading?: boolean\n isExpandable?: boolean // if true, show the expand/collapse icons\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 columnsConfig?: ColumnsConfig // Configure column behavior (display, styling, etc.)\n onScrollBottomGroupBy?: (groupValue: string) => void // Handle scroll to bottom for grouped data\n contextMenuItems?: ContextMenuItemConstructors // Additional context menu items to merge with defaults\n pt?: {\n container?: React.HTMLAttributes<HTMLDivElement>\n head?: Partial<TableHeadProps>\n }\n}\n\nexport const ProjectTreeTable = ({\n scope,\n sliceId,\n onScroll,\n onScrollBottom, // when the user scrolls to the bottom of the table, this callback is called\n onOpenNew,\n readOnly,\n excludedColumns,\n excludedSorting,\n extraColumns,\n includeLinks,\n isLoading: isLoadingProp,\n isExpandable,\n clientSorting = false,\n sortableRows = false,\n onRowReorder,\n dndActiveId, // Destructure new prop\n columnsConfig,\n onScrollBottomGroupBy, // Destructure new prop for group-by load more\n contextMenuItems: propsContextMenuItems, // Additional context menu items from props\n pt,\n ...props\n}: ProjectTreeTableProps) => {\n const {\n columnVisibility,\n columnPinning,\n columnOrder,\n columnSizing,\n setAllColumns,\n sorting,\n sortingOnChange,\n columnPinningOnChange,\n columnSizingOnChange,\n columnVisibilityOnChange,\n columnOrderOnChange,\n groupBy,\n } = useColumnSettingsContext()\n const isGrouping = !!groupBy\n const { productTypes, projectName, ...projectInfo } = useProjectContext()\n\n const {\n tableData,\n attribFields,\n entitiesMap,\n users,\n isLoading: isLoadingData,\n error,\n isInitialized,\n expanded,\n updateExpanded,\n toggleExpandAll,\n showHierarchy,\n fetchNextPage,\n scopes, // or entityTypes\n getEntityById,\n onResetView,\n } = useProjectTableContext()\n\n const { writableFields } = useProjectDataContext()\n\n const isLoading = isLoadingProp || isLoadingData\n\n const {\n statuses = [],\n folderTypes = [],\n taskTypes = [],\n tags = [],\n linkTypes = [],\n } = projectInfo || {}\n const options: BuiltInFieldOptions = useMemo(\n () =>\n getTableFieldOptions({\n users,\n statuses,\n folderTypes,\n taskTypes,\n productTypes,\n tags,\n scopes,\n }),\n [users, statuses, folderTypes, taskTypes, scopes, tags],\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 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, writableFields, readOnly),\n [attribFields, writableFields, readOnly],\n )\n\n const { selectedCells } = useSelectionCellsContext()\n const { updateEntities } = useCellEditing()\n\n const handleCellUpdate: CellUpdate = useCallback(\n async (entity, config) => {\n const { selection = [] } = config || {}\n const entitiesToUpdate: EntityUpdate[] = []\n if (!selection?.length) {\n entitiesToUpdate.push({ ...entity, id: entity.rowId })\n } else {\n // if includeSelection is true, update all the selected cells with the same columnId\n const { field, value, isAttrib } = entity\n for (const cellId of selectedCells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n\n // ignore row selection column\n if (colId === ROW_SELECTION_COLUMN_ID) continue\n\n const entity = getEntityById(rowId || '')\n if (!entity) {\n console.warn(`Entity with ID ${rowId} not found for cell update.`)\n continue\n }\n\n if ((!colId?.includes('attrib_') || colId?.replace('attrib_', '') === field) && rowId) {\n entitiesToUpdate.push({\n field: field,\n rowId: rowId,\n id: entity.entityId,\n value: value,\n isAttrib: isAttrib,\n type: entity.entityType,\n })\n }\n }\n }\n\n if (!entitiesToUpdate.length) {\n console.warn('No entities to update, skipping updateEntities call.')\n toast.warn('No entities to update.')\n return\n }\n\n await updateEntities(entitiesToUpdate, true)\n },\n [updateEntities, getEntityById, selectedCells],\n )\n\n const columnAttribs = useMemo(\n () => (isInitialized ? attribFields : loadingAttrib),\n [attribFields, loadingAttrib, isInitialized],\n )\n\n const getNameLabelHeader = () => {\n if (scopes.includes('version')) return 'Product / Version'\n return scopes.map((s) => upperFirst(s)).join(' / ')\n }\n\n const columns = useMemo(() => {\n const baseColumns = buildTreeTableColumns({\n scopes,\n attribs: columnAttribs,\n links: linkTypes,\n includeLinks,\n showHierarchy,\n options,\n extraColumns,\n excluded: excludedColumns,\n excludedSorting,\n groupBy,\n nameLabel: getNameLabelHeader(),\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 }, [\n scopes,\n columnAttribs,\n showHierarchy,\n isExpandable,\n options,\n linkTypes,\n includeLinks,\n extraColumns,\n excludedColumns,\n excludedSorting,\n sortableRows,\n ])\n\n // Keep ColumnSettingsProvider's allColumns ref up to date\n useEffect(() => {\n const ids = columns.map((c) => c.id!).filter(Boolean)\n setAllColumns(ids)\n }, [columns, setAllColumns])\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: () => !!isExpandable || showHierarchy || isGrouping,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // EXPANDABLE\n onExpandedChange: updateExpanded,\n // SORTING\n enableSorting: true,\n getSortedRowModel: getSortedRowModel(),\n sortDescFirst: false,\n manualSorting: !clientSorting,\n onSortingChange: sortingOnChange,\n columnResizeMode: 'onChange',\n onColumnPinningChange: columnPinningOnChange,\n onColumnSizingChange: columnSizingOnChange,\n onColumnVisibilityChange: columnVisibilityOnChange,\n onColumnOrderChange: columnOrderOnChange,\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 meta: {\n projectName,\n options,\n readOnly: readOnlyColumns,\n updateEntities: handleCellUpdate,\n toggleExpandAll,\n loadMoreRows: fetchNextPage,\n selection: Array.from(selectedCells),\n columnsConfig,\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 columnSizing,\n columnOrder,\n })\n\n const columnSizeVars = useCustomColumnWidthVars(table, columnSizing)\n\n // Calculate dynamic row height based on user setting from Customize panel\n const { getRowHeight, defaultRowHeight } = useDynamicRowHeight()\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 combinedScrollHandler: UIEventHandler<HTMLDivElement> = useCallback(\n (e) => {\n // Call the original onScroll if provided\n onScroll?.(e)\n\n if (onScrollBottom) {\n const containerRefElement = e.currentTarget\n if (containerRefElement && !showHierarchy && !groupBy) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement\n //once the user has scrolled within 500px of the bottom of the table, fetch more data if we can\n if (scrollHeight - scrollTop - clientHeight < 500 && !isLoading) {\n onScrollBottom(e)\n }\n }\n }\n\n // Handle scroll-to-bottom for grouped data\n if (onScrollBottomGroupBy && groupBy) {\n const containerRefElement = e.currentTarget\n // look for a load more button\n const loadMoreButton = containerRefElement?.querySelector('.load-more')\n // get load more button id\n const loadMoreButtonId = loadMoreButton?.getAttribute('id')\n const groupValue = loadMoreButtonId?.split('-')[2] // assuming the id is in the format 'load-more-groupValue'\n if (groupValue) {\n onScrollBottomGroupBy(groupValue)\n }\n }\n },\n [onScroll, onScrollBottom, onScrollBottomGroupBy, showHierarchy, groupBy, isLoading],\n )\n\n // Get move entity functions for the dialog\n const {\n isEntityPickerOpen,\n handleMoveSubmit,\n closeMoveDialog,\n movingEntities,\n handleMoveToRoot,\n getDisabledFolderIds,\n getDisabledMessage,\n } = useMoveEntities({\n projectName,\n })\n\n const handleMoveSubmitWithExpand = (selection: string[]) => {\n handleMoveSubmit(selection)\n const folderIdToExpand = selection[0]\n\n updateExpanded((prevExpanded: ExpandedState) => {\n if (typeof prevExpanded === 'boolean') {\n if (prevExpanded) {\n return prevExpanded\n }\n return { [folderIdToExpand]: true }\n }\n\n if (prevExpanded[folderIdToExpand]) {\n return prevExpanded\n }\n\n return {\n ...prevExpanded,\n [folderIdToExpand]: true,\n }\n })\n }\n\n const tableUiContent = (\n <ClipboardProvider\n entitiesMap={entitiesMap}\n columnEnums={{ ...options, ...attribByField }}\n columnReadOnly={readOnlyAttribs}\n visibleColumns={visibleColumns}\n >\n <Styled.TableWrapper {...props}>\n <Styled.TableContainer\n ref={tableContainerRef}\n style={{ height: '100%', padding: 0 }}\n onScroll={combinedScrollHandler}\n {...pt?.container}\n className={clsx(\n 'table-container',\n {\n resizing: table.getState().columnSizingInfo.isResizingColumn,\n },\n pt?.container?.className,\n )}\n >\n <table\n style={{\n display: 'grid',\n borderCollapse: 'collapse',\n userSelect: 'none',\n ...columnSizeVars,\n width: table.getTotalSize(),\n cursor: table.getState().columnSizingInfo.isResizingColumn ? 'col-resize' : undefined,\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 isLoading={isLoading}\n isGrouping={isGrouping}\n getRowHeight={getRowHeight}\n defaultRowHeight={defaultRowHeight}\n onResetView={onResetView}\n contextMenuItems={propsContextMenuItems}\n />\n </table>\n </Styled.TableContainer>\n </Styled.TableWrapper>\n {/* Render EntityPickerDialog alongside table content */}\n {isEntityPickerOpen &&\n projectName &&\n movingEntities?.entities &&\n movingEntities.entities.length > 0 && (\n <EntityPickerDialog\n projectName={projectName}\n entityType=\"folder\"\n onSubmit={handleMoveSubmitWithExpand}\n onClose={closeMoveDialog}\n showMoveToRoot={movingEntities.entities.every(\n (entity: EntityMoveData) => entity.entityType === 'folder',\n )}\n onMoveToRoot={handleMoveToRoot}\n disabledIds={getDisabledFolderIds()}\n getDisabledMessage={getDisabledMessage}\n />\n )}\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: defaultRowHeight,\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 const sorting = column.getIsSorted()\n const menuId = `column-header-menu-${column.id}`\n const { menuOpen } = useMenuContext()\n const isOpen = menuOpen === menuId\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 resizing: column.getIsResizing(),\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\" $isOpen={isOpen}>\n {(canHide || canPin || canSort) && (\n <ColumnHeaderMenu\n className=\"header-menu\"\n header={header}\n canHide={canHide}\n canPin={canPin}\n canSort={canSort}\n isResizing={column.getIsResizing()}\n menuId={menuId}\n isOpen={isOpen}\n />\n )}\n\n {/* COLUMN SORTING */}\n {canSort && (\n <HeaderActionButton\n icon=\"sort\"\n className={clsx('sort-button', { visible: sorting })}\n style={{\n transform: sorting === 'asc' ? 'rotate(180deg) scaleX(-1)' : 'none',\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 isLoading: boolean\n isGrouping: boolean\n getRowHeight: (row: TableRow) => number\n defaultRowHeight: number\n onResetView?: () => void\n contextMenuItems?: ContextMenuItemConstructors\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 isLoading,\n isGrouping,\n getRowHeight,\n defaultRowHeight,\n onResetView,\n contextMenuItems,\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 cellContextMenuHook = useCellContextMenu({\n attribs,\n onOpenNew,\n headerLabels,\n contextMenuItems,\n })\n\n const handleTableBodyContextMenu = cellContextMenuHook.handleTableBodyContextMenu\n\n const { handlePreFetchTasks } = usePrefetchFolderTasks()\n\n const { rows } = table.getRowModel()\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: (index) => {\n // Calculate dynamic row height based on specific row data\n const row = rows[index]\n return row ? getRowHeight(row.original) : defaultRowHeight\n },\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 rowHeight={getRowHeight(row.original)}\n />\n )\n })}\n </tbody>\n )\n\n if (error) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n <EmptyPlaceholder message=\"No items found\" error={error}>\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset working view\"\n icon=\"restart_alt\"\n onClick={onResetView}\n />\n )}\n </EmptyPlaceholder>\n </Styled.AnimatedEmptyPlaceholder>,\n tableContainerRef.current,\n )\n )\n }\n\n if (!rows.length && !isLoading) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n <EmptyPlaceholder message=\"No items found\">\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset working view\"\n icon=\"restart_alt\"\n onClick={onResetView}\n />\n )}\n </EmptyPlaceholder>\n </Styled.AnimatedEmptyPlaceholder>,\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 rowHeight: number\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 rowHeight,\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: rowHeight, // Use dynamic row height\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: rowHeight,\n pointerEvents: 'all',\n cursor: 'grab',\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 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 rowHeight={rowHeight}\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 rowHeight?: number\n}\n\nconst TableCell = ({\n cell,\n rowId,\n cellId,\n className,\n showHierarchy,\n sortableRows,\n rowHeight,\n ...props\n}: TableCellProps) => {\n const { getEntityById, onOpenPlayer } = useProjectTableContext()\n\n const {\n isCellSelected,\n isCellFocused,\n startSelection,\n extendSelection,\n endSelection,\n selectCell,\n focusCell,\n getCellBorderClasses,\n clearSelection,\n selectedCells,\n } = useSelectionCellsContext()\n\n const { isRowSelected } = useSelectedRowsContext()\n\n const { isEditing, setEditingCellId } = useCellEditing()\n\n // Track clicks to prevent selection from interfering with double-click\n const clickTimerRef = useRef<NodeJS.Timeout | null>(null)\n const lastClickTimeRef = useRef<number>(0)\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 const isMultipleSelected = selectedCells.size > 1\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 expandable:\n !!cell.row.originalSubRows && isEntityExpandable(cell.row.original.entityType),\n 'multiple-selected': isMultipleSelected,\n },\n className,\n ...borderClasses,\n )}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.row.id, cell.column.id),\n height: rowHeight,\n }}\n onMouseDown={(e) => {\n // Only process left clicks (button 0), ignore right clicks\n if (e.button !== 0) return\n\n const target = e.target as HTMLElement\n\n // check we are not clicking on expander\n if (target.closest('.expander')) return\n\n // check if this is a restricted entity - prevent editing\n const isRestricted = isEntityRestricted(cell.row.original.entityType)\n\n // if we are clicking on an edit trigger, we need to start editing\n if (target.closest('.' + EDIT_TRIGGER_CLASS)) {\n if (!isCellSelected(cellId)) {\n // if the cell is not selected, select it and deselect all others\n selectCell(cellId, false, false)\n focusCell(cellId)\n }\n // skip if restricted\n if (isRestricted) return\n setEditingCellId(cellId)\n\n return\n }\n\n // check we are not clicking in a dropdown\n if (target.closest('.options')) return\n\n // only name column can be selected for group rows\n if (isGroup && cell.column.id !== 'name') return clearSelection()\n\n // Clear any pending selection timer\n if (clickTimerRef.current) {\n clearTimeout(clickTimerRef.current)\n clickTimerRef.current = null\n }\n\n const now = Date.now()\n const timeSinceLastClick = now - lastClickTimeRef.current\n lastClickTimeRef.current = now\n\n // If this is potentially a double-click (within 300ms), don't start selection yet\n // The double-click handler will handle the action\n if (timeSinceLastClick < 300) {\n return\n }\n\n const additive = e.metaKey || e.ctrlKey || isRowSelectionColumn\n\n if (e.shiftKey) {\n // Shift+click extends selection from anchor cell immediately\n selectCell(cellId, additive, true) // true for range selection\n } else {\n // Delay normal selection to allow double-click to be detected\n clickTimerRef.current = setTimeout(() => {\n startSelection(cellId, additive)\n clickTimerRef.current = null\n }, 200) // 200ms delay to detect double-click\n }\n }}\n onMouseOver={(e) => {\n if (e.buttons === 1) {\n // check not selecting am edit trigger\n const target = e.target as HTMLElement\n if (target.closest('.' + EDIT_TRIGGER_CLASS)) return\n\n // Left button is pressed during mouse move - drag selection\n // Note: extendSelection is always called to allow drag to continue through cells\n // Restricted cells will be filtered out later\n extendSelection(cellId, isRowSelectionColumn)\n }\n }}\n onMouseUp={() => {\n endSelection(cellId)\n }}\n onDoubleClick={(e) => {\n // Cancel any pending selection timer\n if (clickTimerRef.current) {\n clearTimeout(clickTimerRef.current)\n clickTimerRef.current = null\n }\n\n // check if this is a restricted entity - prevent opening details/viewer\n const isRestricted = isEntityRestricted(cell.row.original.entityType)\n\n // row selection on name column double click\n if (\n cell.column.id === 'name' &&\n !(e.target as HTMLElement).closest('.expander') &&\n !isGroup &&\n !isRestricted\n ) {\n // select the row by selecting the row-selection cell\n const rowSelectionCellId = getCellId(cell.row.id, ROW_SELECTION_COLUMN_ID)\n const additive = e.metaKey || e.ctrlKey\n\n // Select both the row-selection cell and the name cell\n if (!isCellSelected(rowSelectionCellId)) {\n selectCell(rowSelectionCellId, additive, false)\n }\n if (!isCellSelected(cellId)) {\n selectCell(cellId, true, false) // additive=true to keep row-selection\n }\n }\n // open the viewer on thumbnail double click\n if (cell.column.id === 'thumbnail' && !isRestricted) {\n if (onOpenPlayer) {\n const entity = getEntityById(cell.row.original.entityId || cell.row.id)\n if (entity) {\n const targetIds = getEntityViewierIds(entity)\n onOpenPlayer(targetIds, { quickView: true })\n }\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":["getCommonPinningStyles","column","isPinned","offset","ROW_SELECTION_COLUMN_ID","DRAG_HANDLE_COLUMN_ID","getColumnWidth","rowId","columnId","ProjectTreeTable","scope","sliceId","onScroll","onScrollBottom","onOpenNew","readOnly","excludedColumns","excludedSorting","extraColumns","includeLinks","isLoadingProp","isExpandable","clientSorting","sortableRows","onRowReorder","dndActiveId","columnsConfig","onScrollBottomGroupBy","propsContextMenuItems","pt","props","columnVisibility","columnPinning","columnOrder","columnSizing","setAllColumns","sorting","sortingOnChange","columnPinningOnChange","columnSizingOnChange","columnVisibilityOnChange","columnOrderOnChange","groupBy","useColumnSettingsContext","isGrouping","productTypes","projectName","projectInfo","useProjectContext","tableData","attribFields","entitiesMap","users","isLoadingData","error","isInitialized","expanded","updateExpanded","toggleExpandAll","showHierarchy","fetchNextPage","scopes","getEntityById","onResetView","useProjectTableContext","writableFields","useProjectDataContext","isLoading","statuses","folderTypes","taskTypes","tags","linkTypes","options","useMemo","getTableFieldOptions","tableContainerRef","useRef","tableRowsCountRef","registerGrid","useSelectionCellsContext","loadingAttrib","loadingRows","tableRowsCount","_a","generateDummyAttributes","generateLoadingRows","showLoadingRows","readOnlyColumns","readOnlyAttribs","getReadOnlyLists","selectedCells","updateEntities","useCellEditing","handleCellUpdate","useCallback","entity","config","selection","entitiesToUpdate","field","value","isAttrib","cellId","colId","parseCellId","toast","columnAttribs","getNameLabelHeader","s","upperFirst","columns","baseColumns","buildTreeTableColumns","useEffect","ids","c","table","useReactTable","row","getCoreRowModel","getFilteredRowModel","getExpandedRowModel","getSortedRowModel","filterFns","leftPins","contextLeftPins","id","rows","rowIds","colIdsSortedByPinning","col","a","b","colA","colB","_b","visibleColumns","columnVirtualizer","virtualPaddingLeft","virtualPaddingRight","useColumnVirtualization","columnSizeVars","useCustomColumnWidthVars","getRowHeight","defaultRowHeight","useDynamicRowHeight","attribByField","acc","attrib","_c","rowOrderIds","draggedRowData","r","combinedScrollHandler","e","containerRefElement","scrollHeight","scrollTop","clientHeight","loadMoreButton","loadMoreButtonId","groupValue","isEntityPickerOpen","handleMoveSubmit","closeMoveDialog","movingEntities","handleMoveToRoot","getDisabledFolderIds","getDisabledMessage","useMoveEntities","handleMoveSubmitWithExpand","folderIdToExpand","prevExpanded","tableUiContent","jsxs","ClipboardProvider","jsx","Styled.TableWrapper","Styled.TableContainer","clsx","TableHead","TableBody","EntityPickerDialog","dragOverlayPortal","createPortal","DragOverlay","overlayRowInstance","tableWidth","Styled.TR","vc","cell","cellStyleBase","Styled.TableCell","Icon","TableCellMemo","getCellId","Fragment","Styled.TableHeader","headerGroup","TableHeadRow","virtualColumns","Styled.ColumnHeader","virtualColumn","header","TableHeadCell","canFilter","canHide","canSort","canPin","canResize","isReadOnly","menuId","menuOpen","useMenuContext","isOpen","Styled.HeaderCell","Styled.TableCellContent","flexRender","Styled.HeaderButtons","ColumnHeaderMenu","HeaderActionButton","Styled.ResizedHandler","attribs","contextMenuItems","headerLabels","headerId","handleTableBodyContextMenu","useCellContextMenu","handlePreFetchTasks","usePrefetchFolderTasks","rowVirtualizer","useVirtualizer","index","element","virtualRows","measureRowElement","node","useKeyboardNavigation","tbodyContent","virtualRow","i","TableBodyRow","Styled.AnimatedEmptyPlaceholder","EmptyPlaceholder","Button","SortableContext","verticalListSortingStrategy","visibleCells","paddingLeft","paddingRight","rowRef","dataIndex","offsetTop","rowHeight","sortable","useSortable","combinedRef","style","CSS","RowDragHandleCellContent","TableCell","className","onOpenPlayer","isCellSelected","isCellFocused","startSelection","extendSelection","endSelection","selectCell","focusCell","getCellBorderClasses","clearSelection","isRowSelected","useSelectedRowsContext","isEditing","setEditingCellId","clickTimerRef","lastClickTimeRef","borderClasses","isLastLeftPinnedColumn","isRowSelectionColumn","isGroup","isMultipleSelected","isEntityExpandable","target","isRestricted","isEntityRestricted","EDIT_TRIGGER_CLASS","now","timeSinceLastClick","additive","rowSelectionCellId","targetIds","getEntityViewierIds","memo"],"mappings":"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"}