@ynput/ayon-frontend-shared 0.2.20 → 0.2.21

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 (381) hide show
  1. package/dist/DetailsPanel.cjs.js +4 -3
  2. package/dist/DetailsPanel.cjs.js.map +1 -1
  3. package/dist/DetailsPanel.es.js +4 -3
  4. package/dist/DetailsPanel.es.js.map +1 -1
  5. package/dist/ProjectTreeTable.cjs.js +2 -2
  6. package/dist/ProjectTreeTable.es.js +2 -2
  7. package/dist/Views.cjs.js +41 -0
  8. package/dist/Views.cjs.js.map +1 -0
  9. package/dist/Views.es.js +41 -0
  10. package/dist/Views.es.js.map +1 -0
  11. package/dist/_virtual/index.cjs5.js +5 -3
  12. package/dist/_virtual/index.cjs5.js.map +1 -1
  13. package/dist/_virtual/index.cjs6.js +3 -5
  14. package/dist/_virtual/index.cjs6.js.map +1 -1
  15. package/dist/_virtual/index.es5.js +5 -2
  16. package/dist/_virtual/index.es5.js.map +1 -1
  17. package/dist/_virtual/index.es6.js +2 -5
  18. package/dist/_virtual/index.es6.js.map +1 -1
  19. package/dist/api.cjs.js +6 -1
  20. package/dist/api.cjs.js.map +1 -1
  21. package/dist/api.es.js +8 -3
  22. package/dist/components.cjs.js +0 -17
  23. package/dist/components.cjs.js.map +1 -1
  24. package/dist/components.es.js +1 -18
  25. package/dist/components.es.js.map +1 -1
  26. package/dist/index.cjs.js +4 -3
  27. package/dist/index.cjs.js.map +1 -1
  28. package/dist/index.es.js +4 -3
  29. package/dist/index.es.js.map +1 -1
  30. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
  31. package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
  32. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  33. package/dist/node_modules/remove-accents/index.es.js +1 -1
  34. package/dist/shared/node_modules/uuid/dist/esm-browser/native.cjs.js +3 -1
  35. package/dist/shared/node_modules/uuid/dist/esm-browser/native.cjs.js.map +1 -1
  36. package/dist/shared/node_modules/uuid/dist/esm-browser/native.es.js +3 -1
  37. package/dist/shared/node_modules/uuid/dist/esm-browser/native.es.js.map +1 -1
  38. package/dist/shared/node_modules/uuid/dist/esm-browser/rng.cjs.js +2 -2
  39. package/dist/shared/node_modules/uuid/dist/esm-browser/rng.cjs.js.map +1 -1
  40. package/dist/shared/node_modules/uuid/dist/esm-browser/rng.es.js +2 -2
  41. package/dist/shared/node_modules/uuid/dist/esm-browser/rng.es.js.map +1 -1
  42. package/dist/shared/node_modules/uuid/dist/esm-browser/stringify.cjs.js +1 -1
  43. package/dist/shared/node_modules/uuid/dist/esm-browser/stringify.cjs.js.map +1 -1
  44. package/dist/shared/node_modules/uuid/dist/esm-browser/stringify.es.js +1 -1
  45. package/dist/shared/node_modules/uuid/dist/esm-browser/stringify.es.js.map +1 -1
  46. package/dist/shared/node_modules/uuid/dist/esm-browser/v1.cjs.js +41 -58
  47. package/dist/shared/node_modules/uuid/dist/esm-browser/v1.cjs.js.map +1 -1
  48. package/dist/shared/node_modules/uuid/dist/esm-browser/v1.es.js +41 -57
  49. package/dist/shared/node_modules/uuid/dist/esm-browser/v1.es.js.map +1 -1
  50. package/dist/shared/node_modules/uuid/dist/esm-browser/v4.cjs.js +1 -5
  51. package/dist/shared/node_modules/uuid/dist/esm-browser/v4.cjs.js.map +1 -1
  52. package/dist/shared/node_modules/uuid/dist/esm-browser/v4.es.js +1 -5
  53. package/dist/shared/node_modules/uuid/dist/esm-browser/v4.es.js.map +1 -1
  54. package/dist/shared/src/api/generated/views.cjs.js +30 -2
  55. package/dist/shared/src/api/generated/views.cjs.js.map +1 -1
  56. package/dist/shared/src/api/generated/views.es.js +30 -2
  57. package/dist/shared/src/api/generated/views.es.js.map +1 -1
  58. package/dist/shared/src/api/queries/views/getViews.cjs.js +29 -5
  59. package/dist/shared/src/api/queries/views/getViews.cjs.js.map +1 -1
  60. package/dist/shared/src/api/queries/views/getViews.es.js +29 -5
  61. package/dist/shared/src/api/queries/views/getViews.es.js.map +1 -1
  62. package/dist/shared/src/api/queries/views/updateViews.cjs.js +169 -9
  63. package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
  64. package/dist/shared/src/api/queries/views/updateViews.es.js +170 -10
  65. package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
  66. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +4 -3
  67. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  68. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +4 -3
  69. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  70. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -0
  71. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  72. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +1 -0
  73. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  74. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +4 -3
  75. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  76. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +4 -3
  77. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  78. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +4 -3
  79. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  80. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +4 -3
  81. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  82. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +4 -3
  83. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  84. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +4 -3
  85. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  86. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +4 -3
  87. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  88. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +4 -3
  89. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  90. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +4 -3
  91. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  92. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +4 -3
  93. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  94. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +4 -3
  95. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  96. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +4 -3
  97. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  98. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +4 -3
  99. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  100. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +4 -3
  101. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  102. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +4 -3
  103. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  104. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +4 -3
  105. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  106. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +4 -3
  107. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  108. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +4 -3
  109. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  110. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +4 -3
  111. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  112. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +4 -3
  113. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  114. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +4 -3
  115. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  116. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +4 -3
  117. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  118. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +4 -3
  119. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  120. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +4 -3
  121. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  122. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +4 -3
  123. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  124. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +4 -3
  125. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  126. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js +1 -1
  127. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
  128. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +10 -11
  129. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  130. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +10 -11
  131. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  132. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +4 -3
  133. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  134. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +4 -3
  135. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  136. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
  137. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
  138. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +69 -21
  139. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  140. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +69 -21
  141. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  142. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  143. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  144. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +0 -5
  145. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -1
  146. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +0 -5
  147. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -1
  148. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +3 -5
  149. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  150. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +3 -5
  151. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  152. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js +1 -1
  153. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js.map +1 -1
  154. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js +1 -1
  155. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js.map +1 -1
  156. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +18 -10
  157. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  158. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +18 -10
  159. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  160. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js +106 -0
  161. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js.map +1 -0
  162. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js +106 -0
  163. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js.map +1 -0
  164. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +4 -3
  165. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  166. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +4 -3
  167. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  168. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js +49 -0
  169. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js.map +1 -0
  170. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js +49 -0
  171. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js.map +1 -0
  172. package/dist/shared/src/{components → containers}/Views/ViewItem/ViewItem.styled.cjs.js +24 -12
  173. package/dist/shared/src/containers/Views/ViewItem/ViewItem.styled.cjs.js.map +1 -0
  174. package/dist/shared/src/{components → containers}/Views/ViewItem/ViewItem.styled.es.js +24 -12
  175. package/dist/shared/src/containers/Views/ViewItem/ViewItem.styled.es.js.map +1 -0
  176. package/dist/shared/src/{components → containers}/Views/Views.cjs.js +6 -10
  177. package/dist/shared/src/containers/Views/Views.cjs.js.map +1 -0
  178. package/dist/shared/src/{components → containers}/Views/Views.es.js +7 -11
  179. package/dist/shared/src/containers/Views/Views.es.js.map +1 -0
  180. package/dist/shared/src/{components → containers}/Views/Views.styled.cjs.js +4 -3
  181. package/dist/shared/src/containers/Views/Views.styled.cjs.js.map +1 -0
  182. package/dist/shared/src/{components → containers}/Views/Views.styled.es.js +4 -3
  183. package/dist/shared/src/containers/Views/Views.styled.es.js.map +1 -0
  184. package/dist/shared/src/{components → containers}/Views/ViewsButton/ViewsButton.cjs.js +11 -2
  185. package/dist/shared/src/containers/Views/ViewsButton/ViewsButton.cjs.js.map +1 -0
  186. package/dist/shared/src/{components → containers}/Views/ViewsButton/ViewsButton.es.js +11 -2
  187. package/dist/shared/src/containers/Views/ViewsButton/ViewsButton.es.js.map +1 -0
  188. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js +4 -0
  189. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js.map +1 -0
  190. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js +5 -0
  191. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js.map +1 -0
  192. package/dist/shared/src/{components/Views/context/ViewsContext.cjs.js → containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js} +67 -58
  193. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -0
  194. package/dist/shared/src/{components/Views/context/ViewsContext.es.js → containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js} +66 -57
  195. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -0
  196. package/dist/shared/src/{components → containers}/Views/ViewsMenu/ViewsMenu.cjs.js +1 -0
  197. package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.cjs.js.map +1 -0
  198. package/dist/shared/src/{components → containers}/Views/ViewsMenu/ViewsMenu.es.js +1 -0
  199. package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.es.js.map +1 -0
  200. package/dist/shared/src/{components → containers}/Views/ViewsMenu/ViewsMenu.styled.cjs.js.map +1 -1
  201. package/dist/shared/src/{components → containers}/Views/ViewsMenu/ViewsMenu.styled.es.js.map +1 -1
  202. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +105 -0
  203. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -0
  204. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +105 -0
  205. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -0
  206. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +211 -0
  207. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -0
  208. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +211 -0
  209. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -0
  210. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js +52 -0
  211. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js.map +1 -0
  212. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js +52 -0
  213. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js.map +1 -0
  214. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +69 -0
  215. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -0
  216. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +69 -0
  217. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -0
  218. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.cjs.js +44 -0
  219. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.cjs.js.map +1 -0
  220. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.es.js +44 -0
  221. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.es.js.map +1 -0
  222. package/dist/shared/src/{components → containers}/Views/hooks/useBuildViewMenuItems.cjs.js +58 -32
  223. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -0
  224. package/dist/shared/src/{components → containers}/Views/hooks/useBuildViewMenuItems.es.js +59 -33
  225. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -0
  226. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js +33 -0
  227. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -0
  228. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js +33 -0
  229. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -0
  230. package/dist/shared/src/{components/Views/ViewForm/ViewFormContainer.cjs.js → containers/Views/hooks/useSelectedView.cjs.js} +33 -114
  231. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -0
  232. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +108 -0
  233. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -0
  234. package/dist/shared/src/containers/Views/hooks/useViewSettingsChanged.cjs.js +19 -0
  235. package/dist/shared/src/containers/Views/hooks/useViewSettingsChanged.cjs.js.map +1 -0
  236. package/dist/shared/src/containers/Views/hooks/useViewSettingsChanged.es.js +19 -0
  237. package/dist/shared/src/containers/Views/hooks/useViewSettingsChanged.es.js.map +1 -0
  238. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +143 -0
  239. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -0
  240. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +143 -0
  241. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -0
  242. package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.cjs.js +67 -0
  243. package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.cjs.js.map +1 -0
  244. package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.es.js +67 -0
  245. package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.es.js.map +1 -0
  246. package/dist/shared/src/containers/Views/utils/generateWorkingView.cjs.js +13 -0
  247. package/dist/shared/src/containers/Views/utils/generateWorkingView.cjs.js.map +1 -0
  248. package/dist/shared/src/containers/Views/utils/generateWorkingView.es.js +13 -0
  249. package/dist/shared/src/containers/Views/utils/generateWorkingView.es.js.map +1 -0
  250. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.cjs.js.map +1 -0
  251. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.es.js.map +1 -0
  252. package/dist/shared/src/{components → containers}/Views/utils/portalUtils.cjs.js +1 -1
  253. package/dist/shared/src/{components → containers}/Views/utils/portalUtils.cjs.js.map +1 -1
  254. package/dist/shared/src/{components → containers}/Views/utils/portalUtils.es.js +1 -1
  255. package/dist/shared/src/{components → containers}/Views/utils/portalUtils.es.js.map +1 -1
  256. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +125 -0
  257. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -0
  258. package/dist/shared/src/{components/Views/ViewForm/ViewFormContainer.es.js → containers/Views/utils/viewUpdateHelper.es.js} +48 -112
  259. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -0
  260. package/dist/shared/src/context/PowerpackContext.cjs.js +9 -3
  261. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  262. package/dist/shared/src/context/PowerpackContext.es.js +9 -3
  263. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  264. package/dist/shared/src/hooks/useLoadModule.cjs.js +1 -1
  265. package/dist/shared/src/hooks/useLoadModule.cjs.js.map +1 -1
  266. package/dist/shared/src/hooks/useLoadModule.es.js +1 -1
  267. package/dist/shared/src/hooks/useLoadModule.es.js.map +1 -1
  268. package/dist/shared/src/util/columnConfigConverter.cjs.js +116 -0
  269. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -0
  270. package/dist/shared/src/util/columnConfigConverter.es.js +116 -0
  271. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -0
  272. package/dist/types/Views.d.ts +2 -0
  273. package/dist/types/api/generated/powerPack1.1.1Views.d.ts +25 -0
  274. package/dist/types/api/generated/views.d.ts +130 -22
  275. package/dist/types/api/queries/views/getViews.d.ts +161 -22
  276. package/dist/types/api/queries/views/updateViews.d.ts +500 -13
  277. package/dist/types/components/index.d.ts +0 -1
  278. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +15 -5
  279. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsProvider.d.ts +1 -1
  280. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +0 -2
  281. package/dist/types/containers/ProjectTreeTable/context/ProjectTableProvider.d.ts +2 -4
  282. package/dist/types/containers/ProjectTreeTable/hooks/index.d.ts +0 -1
  283. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +3 -5
  284. package/dist/types/containers/ProjectTreeTable/hooks/useProjectTableModules.d.ts +2 -5
  285. package/dist/types/containers/ProjectTreeTable/hooks/useQueryFilters.d.ts +5 -3
  286. package/dist/types/containers/ProjectTreeTable/types/index.d.ts +1 -0
  287. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +5 -6
  288. package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +1 -0
  289. package/dist/types/containers/ProjectTreeTable/utils/queryFilterToClientFilter.d.ts +24 -0
  290. package/dist/types/{components → containers}/Views/ViewItem/ViewItem.d.ts +3 -1
  291. package/dist/types/{components → containers}/Views/ViewItem/ViewItem.styled.d.ts +1 -1
  292. package/dist/types/containers/Views/Views.d.ts +2 -0
  293. package/dist/types/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.d.ts +24 -0
  294. package/dist/types/containers/Views/ViewsDialogContainer/ViewsDialogContainer.d.ts +6 -0
  295. package/dist/types/{components → containers}/Views/ViewsMenu/ViewsMenu.d.ts +1 -2
  296. package/dist/types/{components → containers}/Views/ViewsMenuContainer/ViewsMenuContainer.d.ts +1 -1
  297. package/dist/types/containers/Views/context/ViewsContext.d.ts +46 -0
  298. package/dist/types/containers/Views/hooks/index.d.ts +5 -0
  299. package/dist/types/containers/Views/hooks/pages/useListsViewSettings.d.ts +9 -0
  300. package/dist/types/containers/Views/hooks/pages/useOverviewViewSettings.d.ts +12 -0
  301. package/dist/types/containers/Views/hooks/pages/useTaskProgressViewSettings.d.ts +10 -0
  302. package/dist/types/containers/Views/hooks/pages/viewUpdateHelper.d.ts +0 -0
  303. package/dist/types/containers/Views/hooks/useBuildViewMenuItems.d.ts +22 -0
  304. package/dist/types/containers/Views/hooks/useOverviewViewSettings.d.ts +0 -0
  305. package/dist/types/containers/Views/hooks/useSaveViewFromCurrent.d.ts +12 -0
  306. package/dist/types/containers/Views/hooks/useSelectedView.d.ts +12 -0
  307. package/dist/types/containers/Views/hooks/useViewSettingsChanged.d.ts +6 -0
  308. package/dist/types/containers/Views/hooks/useViewsMutations.d.ts +13 -0
  309. package/dist/types/containers/Views/hooks/useViewsShortcuts.d.ts +13 -0
  310. package/dist/types/containers/Views/index.d.ts +19 -0
  311. package/dist/types/containers/Views/utils/generateWorkingView.d.ts +3 -0
  312. package/dist/types/{components → containers}/Views/utils/getCustomViewsFallback.d.ts +3 -2
  313. package/dist/types/{components → containers}/Views/utils/portalUtils.d.ts +1 -1
  314. package/dist/types/containers/Views/utils/viewUpdateHelper.d.ts +17 -0
  315. package/dist/types/containers/index.d.ts +1 -0
  316. package/dist/types/context/PowerpackContext.d.ts +4 -1
  317. package/dist/types/util/columnConfigConverter.d.ts +15 -0
  318. package/dist/types/util/index.d.ts +1 -0
  319. package/dist/util.cjs.js +3 -0
  320. package/dist/util.cjs.js.map +1 -1
  321. package/dist/util.es.js +3 -0
  322. package/dist/util.es.js.map +1 -1
  323. package/package.json +6 -1
  324. package/dist/shared/src/components/Views/ViewForm/ViewForm.cjs.js +0 -164
  325. package/dist/shared/src/components/Views/ViewForm/ViewForm.cjs.js.map +0 -1
  326. package/dist/shared/src/components/Views/ViewForm/ViewForm.es.js +0 -164
  327. package/dist/shared/src/components/Views/ViewForm/ViewForm.es.js.map +0 -1
  328. package/dist/shared/src/components/Views/ViewForm/ViewForm.styled.cjs.js +0 -71
  329. package/dist/shared/src/components/Views/ViewForm/ViewForm.styled.cjs.js.map +0 -1
  330. package/dist/shared/src/components/Views/ViewForm/ViewForm.styled.es.js +0 -71
  331. package/dist/shared/src/components/Views/ViewForm/ViewForm.styled.es.js.map +0 -1
  332. package/dist/shared/src/components/Views/ViewForm/ViewFormContainer.cjs.js.map +0 -1
  333. package/dist/shared/src/components/Views/ViewForm/ViewFormContainer.es.js.map +0 -1
  334. package/dist/shared/src/components/Views/ViewItem/ViewItem.cjs.js +0 -36
  335. package/dist/shared/src/components/Views/ViewItem/ViewItem.cjs.js.map +0 -1
  336. package/dist/shared/src/components/Views/ViewItem/ViewItem.es.js +0 -36
  337. package/dist/shared/src/components/Views/ViewItem/ViewItem.es.js.map +0 -1
  338. package/dist/shared/src/components/Views/ViewItem/ViewItem.styled.cjs.js.map +0 -1
  339. package/dist/shared/src/components/Views/ViewItem/ViewItem.styled.es.js.map +0 -1
  340. package/dist/shared/src/components/Views/Views.cjs.js.map +0 -1
  341. package/dist/shared/src/components/Views/Views.es.js.map +0 -1
  342. package/dist/shared/src/components/Views/Views.styled.cjs.js.map +0 -1
  343. package/dist/shared/src/components/Views/Views.styled.es.js.map +0 -1
  344. package/dist/shared/src/components/Views/ViewsButton/ViewsButton.cjs.js.map +0 -1
  345. package/dist/shared/src/components/Views/ViewsButton/ViewsButton.es.js.map +0 -1
  346. package/dist/shared/src/components/Views/ViewsMenu/ViewsMenu.cjs.js.map +0 -1
  347. package/dist/shared/src/components/Views/ViewsMenu/ViewsMenu.es.js.map +0 -1
  348. package/dist/shared/src/components/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +0 -132
  349. package/dist/shared/src/components/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +0 -1
  350. package/dist/shared/src/components/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +0 -132
  351. package/dist/shared/src/components/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +0 -1
  352. package/dist/shared/src/components/Views/context/ViewsContext.cjs.js.map +0 -1
  353. package/dist/shared/src/components/Views/context/ViewsContext.es.js.map +0 -1
  354. package/dist/shared/src/components/Views/hooks/useBuildViewMenuItems.cjs.js.map +0 -1
  355. package/dist/shared/src/components/Views/hooks/useBuildViewMenuItems.es.js.map +0 -1
  356. package/dist/shared/src/components/Views/utils/generatePersonalView.cjs.js +0 -13
  357. package/dist/shared/src/components/Views/utils/generatePersonalView.cjs.js.map +0 -1
  358. package/dist/shared/src/components/Views/utils/generatePersonalView.es.js +0 -13
  359. package/dist/shared/src/components/Views/utils/generatePersonalView.es.js.map +0 -1
  360. package/dist/shared/src/components/Views/utils/getCustomViewsFallback.cjs.js.map +0 -1
  361. package/dist/shared/src/components/Views/utils/getCustomViewsFallback.es.js.map +0 -1
  362. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.cjs.js +0 -24
  363. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.cjs.js.map +0 -1
  364. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.es.js +0 -24
  365. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.es.js.map +0 -1
  366. package/dist/types/components/Views/ViewForm/ViewForm.d.ts +0 -14
  367. package/dist/types/components/Views/ViewForm/ViewForm.styled.d.ts +0 -9
  368. package/dist/types/components/Views/ViewForm/ViewFormContainer.d.ts +0 -15
  369. package/dist/types/components/Views/Views.d.ts +0 -8
  370. package/dist/types/components/Views/context/ViewsContext.d.ts +0 -31
  371. package/dist/types/components/Views/hooks/useBuildViewMenuItems.d.ts +0 -14
  372. package/dist/types/components/Views/index.d.ts +0 -11
  373. package/dist/types/components/Views/utils/generatePersonalView.d.ts +0 -3
  374. package/dist/types/containers/ProjectTreeTable/hooks/useColumnSorting.d.ts +0 -12
  375. /package/dist/shared/src/{components → containers}/Views/ViewsMenu/ViewsMenu.styled.cjs.js +0 -0
  376. /package/dist/shared/src/{components → containers}/Views/ViewsMenu/ViewsMenu.styled.es.js +0 -0
  377. /package/dist/shared/src/{components → containers}/Views/utils/getCustomViewsFallback.cjs.js +0 -0
  378. /package/dist/shared/src/{components → containers}/Views/utils/getCustomViewsFallback.es.js +0 -0
  379. /package/dist/types/{components → containers}/Views/Views.styled.d.ts +0 -0
  380. /package/dist/types/{components → containers}/Views/ViewsButton/ViewsButton.d.ts +0 -0
  381. /package/dist/types/{components → containers}/Views/ViewsMenu/ViewsMenu.styled.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectTreeTable.es.js","sources":["../../../../../src/containers/ProjectTreeTable/ProjectTreeTable.tsx"],"sourcesContent":["import { useMemo, useRef, useEffect, memo, CSSProperties, useCallback } from 'react' // Added useCallback\nimport { useVirtualizer, VirtualItem, Virtualizer } from '@tanstack/react-virtual'\n// TanStack Table imports\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getExpandedRowModel,\n filterFns,\n flexRender,\n Row,\n getSortedRowModel,\n Cell,\n Column,\n Table,\n Header,\n HeaderGroup,\n RowData,\n} from '@tanstack/react-table'\n\n// Utility imports\nimport clsx from 'clsx'\n\n// Type imports\nimport type { TableRow } from './types/table'\n\n// Component imports\nimport buildTreeTableColumns, {\n DefaultColumns,\n TreeTableExtraColumn,\n} from './buildTreeTableColumns'\nimport * as Styled from './ProjectTreeTable.styled'\nimport HeaderActionButton from './components/HeaderActionButton'\nimport RowDragHandleCellContent from './components/RowDragHandleCellContent' // Added import\nimport EmptyPlaceholder from '../../components/EmptyPlaceholder'\n\n// Context imports\nimport { useCellEditing } from './context/CellEditingContext'\nimport { ROW_SELECTION_COLUMN_ID, useSelectionCellsContext } from './context/SelectionCellsContext'\nimport { ClipboardProvider } from './context/ClipboardContext'\nimport { useSelectedRowsContext } from './context/SelectedRowsContext'\nimport { useColumnSettingsContext } from './context/ColumnSettingsContext'\n\n// Hook imports\nimport useCustomColumnWidthVars from './hooks/useCustomColumnWidthVars'\nimport usePrefetchFolderTasks from './hooks/usePrefetchFolderTasks'\nimport useCellContextMenu, { HeaderLabel } from './hooks/useCellContextMenu'\nimport useColumnVirtualization from './hooks/useColumnVirtualization'\nimport useKeyboardNavigation from './hooks/useKeyboardNavigation'\n\n// Utility function imports\nimport { getCellId, parseCellId } from './utils/cellUtils'\nimport { generateLoadingRows, generateDummyAttributes } from './utils/loadingUtils'\nimport { createPortal } from 'react-dom'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { AttributeEnumItem, ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport { ToggleExpandAll, useProjectTableContext } from './context/ProjectTableContext'\nimport { 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\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 }\n}\n\n//These are the important styles to make sticky column pinning work!\n//Apply styles like this using your CSS strategy of choice with this kind of logic to head cells, data cells, footer cells, etc.\n//View the index.css file for more needed styles such as border-collapse: separate\nconst getCommonPinningStyles = (column: Column<TableRow, unknown>): CSSProperties => {\n const isPinned = column.getIsPinned()\n const offset =\n column.id !== ROW_SELECTION_COLUMN_ID && column.id !== DRAG_HANDLE_COLUMN_ID ? -30 : 0\n\n return {\n left: isPinned === 'left' ? `${column.getStart('left') + offset}px` : undefined, // Removed offset\n right: isPinned === 'right' ? `${column.getAfter('right')}px` : undefined,\n position: isPinned ? 'sticky' : 'relative',\n width: column.getSize(),\n zIndex: isPinned ? 100 : 0,\n }\n}\n\nconst getColumnWidth = (rowId: string, columnId: string) => {\n return `calc(var(--col-${columnId}-size) * 1px)`\n}\n// test\n\nexport const DRAG_HANDLE_COLUMN_ID = 'drag-handle'\n\nexport interface ProjectTreeTableProps extends React.HTMLAttributes<HTMLDivElement> {\n scope: string\n sliceId: string\n fetchMoreOnBottomReached: (element: HTMLDivElement | null) => void\n onOpenNew?: (type: 'folder' | 'task') => void\n readOnly?: (DefaultColumns | string)[]\n excludedColumns?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n isLoading?: boolean\n clientSorting?: boolean\n sortableRows?: boolean\n onRowReorder?: (active: UniqueIdentifier, over: UniqueIdentifier | null) => void // Adjusted type for active/over if needed, or keep as Active, Over\n dndActiveId?: UniqueIdentifier | null // Added prop\n pt?: {\n container?: React.HTMLAttributes<HTMLDivElement>\n head?: Partial<TableHeadProps>\n }\n}\n\nexport const ProjectTreeTable = ({\n scope,\n sliceId,\n fetchMoreOnBottomReached,\n onOpenNew,\n readOnly,\n excludedColumns,\n extraColumns,\n isLoading: isLoadingProp,\n clientSorting = false,\n sortableRows = false,\n onRowReorder,\n dndActiveId, // Destructure new prop\n pt,\n ...props\n}: ProjectTreeTableProps) => {\n const {\n columnVisibility,\n columnVisibilityUpdater,\n columnPinning,\n columnPinningUpdater,\n columnOrder,\n columnOrderUpdater,\n columnSizing,\n columnSizingUpdater,\n groupBy,\n } = useColumnSettingsContext()\n const isGrouping = !!groupBy\n\n const {\n projectInfo,\n tableData,\n attribFields,\n entitiesMap,\n users,\n isLoading: isLoadingData,\n error,\n isInitialized,\n expanded,\n projectName,\n updateExpanded,\n toggleExpandAll,\n sorting,\n updateSorting,\n showHierarchy,\n fetchNextPage,\n scopes,\n getEntityById,\n } = useProjectTableContext()\n\n const isLoading = isLoadingProp || isLoadingData\n\n const { statuses = [], folderTypes = [], taskTypes = [], tags = [] } = projectInfo || {}\n const options: BuiltInFieldOptions = useMemo(\n () =>\n getTableFieldOptions({\n users,\n statuses,\n folderTypes,\n taskTypes,\n tags,\n scopes,\n }),\n [users, statuses, folderTypes, taskTypes, 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 attribFields,\n showHierarchy && tableData.length > 0\n ? Math.min(tableRowsCount, 50)\n : groupBy\n ? Math.max(tableRowsCountRef.current, 50)\n : 50,\n )\n\n return { loadingAttrib, loadingRows }\n }, [])\n\n const showLoadingRows = !isInitialized || isLoading\n\n // Format readonly columns and attributes\n const { readOnlyColumns, readOnlyAttribs } = useMemo(\n () => getReadOnlyLists(attribFields, readOnly),\n [attribFields, readOnly],\n )\n\n const { 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, type } = entity\n for (const cellId of selectedCells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n\n const entity = getEntityById(rowId || '')\n if (!entity) continue\n\n if (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 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 const columns = useMemo(() => {\n const baseColumns = buildTreeTableColumns({\n attribs: columnAttribs,\n showHierarchy,\n options,\n extraColumns,\n excluded: excludedColumns,\n groupBy,\n })\n\n if (sortableRows) {\n return [\n {\n id: DRAG_HANDLE_COLUMN_ID,\n header: () => null,\n cell: () => null, // Content rendered by TableBodyRow\n size: 24,\n minSize: 24,\n maxSize: 24,\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n enablePinning: false, // Programmatically pinned\n },\n ...baseColumns,\n ]\n }\n return baseColumns\n }, [columnAttribs, showHierarchy, options, extraColumns, excludedColumns, sortableRows])\n\n const table = useReactTable({\n data: showLoadingRows ? loadingRows : tableData,\n columns,\n defaultColumn: {\n minSize: 50,\n size: 150,\n },\n enableRowSelection: true, //enable row selection for all rows\n getRowId: (row) => row.id,\n enableSubRowSelection: false, //disable sub row selection\n getSubRows: (row) => row.subRows,\n getRowCanExpand: () => true,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // EXPANDABLE\n onExpandedChange: updateExpanded,\n // SORTING\n getSortedRowModel: clientSorting ? getSortedRowModel() : undefined,\n onSortingChange: updateSorting,\n columnResizeMode: 'onChange',\n onColumnPinningChange: columnPinningUpdater,\n onColumnSizingChange: columnSizingUpdater,\n onColumnVisibilityChange: columnVisibilityUpdater,\n onColumnOrderChange: columnOrderUpdater,\n // @ts-ignore\n filterFns,\n state: {\n expanded,\n sorting,\n columnPinning: (() => {\n const leftPins: string[] = []\n if (sortableRows) {\n leftPins.push(DRAG_HANDLE_COLUMN_ID)\n }\n leftPins.push(ROW_SELECTION_COLUMN_ID)\n\n // Add other unique pins from context, ensuring they are not the programmatic ones\n const contextLeftPins = (columnPinning.left || []).filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n leftPins.push(...contextLeftPins)\n // Remove duplicates just in case, though filter should handle it\n const uniqueLeftPins = [...new Set(leftPins)]\n\n return {\n left: uniqueLeftPins,\n right: columnPinning.right,\n }\n })(),\n columnSizing,\n columnVisibility,\n columnOrder,\n },\n enableSorting: true,\n meta: {\n projectName,\n options,\n readOnly: readOnlyColumns,\n updateEntities: handleCellUpdate,\n toggleExpandAll,\n loadMoreTasks: fetchNextPage,\n selection: Array.from(selectedCells),\n },\n })\n\n // TODO: when there is data (like in error) then we have infinite rendering\n\n const { rows } = table.getRowModel()\n\n // update the tableRowsCountRef with the current number of rows\n useEffect(() => {\n tableRowsCountRef.current = rows.length\n }, [rows.length])\n\n // Register grid structure with selection context when rows or columns change\n useEffect(() => {\n if (!rows.length) return\n const rowIds = rows.map((row) => row.id)\n const colIds = table.getAllLeafColumns().map((col) => col.id)\n const colIdsSortedByPinning = [...colIds].sort((a, b) => {\n if (ROW_SELECTION_COLUMN_ID === b) return 1\n const colA = columnPinning.left?.includes(a) ? 0 : 1\n const colB = columnPinning.left?.includes(b) ? 0 : 1\n return colA - colB\n })\n\n registerGrid(rowIds, colIdsSortedByPinning)\n }, [rows, table.getAllLeafColumns(), columnPinning, ROW_SELECTION_COLUMN_ID, registerGrid])\n\n const visibleColumns = table.getVisibleLeafColumns()\n\n // Use the column virtualization hook\n const { columnVirtualizer, virtualPaddingLeft, virtualPaddingRight } = useColumnVirtualization({\n visibleColumns,\n tableContainerRef,\n columnPinning,\n })\n\n const columnSizeVars = useCustomColumnWidthVars(table, columnSizing)\n\n const attribByField = useMemo(() => {\n return attribFields.reduce((acc: Record<string, AttributeEnumItem[]>, attrib) => {\n if (attrib.data?.enum?.length) {\n acc[attrib.name] = attrib.data?.enum\n }\n return acc\n }, {})\n }, [attribFields])\n\n const rowOrderIds = useMemo(() => tableData.map((row) => row.id), [tableData])\n const draggedRowData = useMemo(() => {\n if (!dndActiveId || !sortableRows) return null // Use dndActiveId\n return tableData.find((r) => r.id === dndActiveId) // Use dndActiveId\n }, [dndActiveId, tableData, sortableRows])\n\n const tableUiContent = (\n <ClipboardProvider\n entitiesMap={entitiesMap}\n columnEnums={{ ...options, ...attribByField }}\n columnReadOnly={readOnlyAttribs}\n >\n <Styled.TableWrapper {...props}>\n <Styled.TableContainer\n ref={tableContainerRef}\n style={{ height: '100%', padding: 0 }}\n onScroll={(e) => fetchMoreOnBottomReached(e.currentTarget)}\n {...pt?.container}\n className={clsx('table-container', pt?.container?.className)}\n >\n <table\n style={{\n display: 'grid',\n borderCollapse: 'collapse',\n userSelect: 'none',\n ...columnSizeVars,\n width: table.getTotalSize(),\n }}\n >\n <TableHead\n columnVirtualizer={columnVirtualizer}\n table={table}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n {...pt?.head}\n />\n <TableBody\n columnVirtualizer={columnVirtualizer}\n table={table}\n tableContainerRef={tableContainerRef}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n showHierarchy={showHierarchy}\n attribs={attribFields}\n onOpenNew={onOpenNew}\n rowOrderIds={rowOrderIds}\n sortableRows={sortableRows}\n error={error}\n isGrouping={isGrouping}\n />\n </table>\n </Styled.TableContainer>\n </Styled.TableWrapper>\n </ClipboardProvider>\n )\n\n // Render DragOverlay if sortableRows and dndActiveId is present\n const dragOverlayPortal =\n sortableRows &&\n dndActiveId &&\n createPortal(\n <DragOverlay dropAnimation={null}>\n {draggedRowData\n ? (() => {\n const overlayRowInstance = table.getRowModel().rows.find((r) => r.id === dndActiveId)\n if (!overlayRowInstance) return null\n\n const tableWidth = table.getTotalSize()\n\n return (\n <table\n style={{\n width: tableWidth,\n borderCollapse: 'collapse',\n backgroundColor: 'var(--md-sys-color-surface-container-high)',\n boxShadow: '0 0 10px rgba(0,0,0,0.2)',\n ...columnSizeVars,\n }}\n >\n <tbody>\n <Styled.TR style={{ display: 'flex', userSelect: 'none' }}>\n {virtualPaddingLeft ? (\n <td style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {columnVirtualizer.getVirtualItems().map((vc) => {\n const cell = overlayRowInstance.getVisibleCells()[vc.index]\n if (!cell) return null\n\n const cellStyleBase: CSSProperties = {\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(overlayRowInstance.id, cell.column.id),\n display: 'flex',\n alignItems: 'center',\n height: 40,\n }\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TableCell\n key={`overlay-drag-${cell.id}`}\n style={{ ...cellStyleBase, justifyContent: 'center' }}\n className={clsx(cell.column.id)}\n >\n <Icon icon=\"drag_handle\" /> {/* Static icon */}\n </Styled.TableCell>\n )\n }\n return (\n <TableCellMemo\n cell={cell}\n cellId={`overlay-${getCellId(overlayRowInstance.id, cell.column.id)}`}\n rowId={overlayRowInstance.id}\n key={`overlay-cell-${cell.id}`}\n showHierarchy={showHierarchy}\n />\n )\n })}\n {virtualPaddingRight ? (\n <td style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.TR>\n </tbody>\n </table>\n )\n })()\n : null}\n </DragOverlay>,\n document.body,\n )\n\n if (sortableRows) {\n return (\n <>\n {tableUiContent}\n {dragOverlayPortal}\n </>\n )\n } else {\n return tableUiContent\n }\n}\n\ninterface TableHeadProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n}\n\nconst TableHead = ({\n columnVirtualizer,\n table,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n ...props\n}: TableHeadProps) => {\n return (\n <Styled.TableHeader {...props}>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableHeadRow\n key={headerGroup.id}\n columnVirtualizer={columnVirtualizer}\n headerGroup={headerGroup}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n />\n ))}\n </Styled.TableHeader>\n )\n}\n\ninterface TableHeadRowProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n headerGroup: HeaderGroup<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n}\n\nconst TableHeadRow = ({\n columnVirtualizer,\n headerGroup,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n}: TableHeadRowProps) => {\n const virtualColumns = columnVirtualizer.getVirtualItems()\n return (\n <Styled.ColumnHeader key={headerGroup.id} style={{ display: 'flex' }}>\n {virtualPaddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {virtualColumns.map((virtualColumn) => {\n const header = headerGroup.headers[virtualColumn.index]\n\n return (\n <TableHeadCell\n key={header.id}\n header={header}\n isLoading={isLoading}\n isReadOnly={readOnlyColumns?.includes(header.id)}\n canSort={header.column.getCanSort()}\n canFilter={header.column.getCanFilter()}\n canHide={header.column.getCanHide()}\n canPin={header.column.getCanPin()}\n canResize={header.column.getCanResize()}\n sortableRows={sortableRows}\n />\n )\n })}\n {virtualPaddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.ColumnHeader>\n )\n}\n\ninterface TableHeadCellProps {\n header: Header<TableRow, unknown>\n isLoading: boolean\n canSort?: boolean\n canFilter?: boolean\n canHide?: boolean\n canPin?: boolean\n canResize?: boolean\n isReadOnly?: boolean\n sortableRows?: boolean\n}\n\nconst TableHeadCell = ({\n header,\n isLoading,\n canFilter,\n canHide,\n canSort,\n canPin,\n canResize,\n isReadOnly,\n sortableRows,\n}: TableHeadCellProps) => {\n const { column } = header\n\n return (\n <Styled.HeaderCell\n className={clsx(header.id, 'shimmer-dark', {\n loading: isLoading,\n 'last-pinned-left': column.getIsPinned() === 'left' && column.getIsLastColumn('left'),\n })}\n key={header.id}\n style={{\n ...getCommonPinningStyles(column),\n width: getColumnWidth('', column.id),\n }}\n >\n {header.isPlaceholder ? null : (\n <Styled.TableCellContent className={clsx('bold', 'header')}>\n {flexRender(column.columnDef.header, header.getContext())}\n {isReadOnly && (\n <Icon icon=\"lock\" data-tooltip={'You only have permission to read this column.'} />\n )}\n\n <Styled.HeaderButtons className=\"actions\">\n {/* COLUMN HIDING */}\n {canHide && (\n <HeaderActionButton\n icon=\"visibility_off\"\n selected={!column.getIsVisible()}\n onClick={column.getToggleVisibilityHandler()}\n />\n )}\n {/* COLUMN PINNING */}\n {canPin && (\n <HeaderActionButton\n icon=\"push_pin\"\n selected={header.column.getIsPinned() === 'left'}\n onClick={() => {\n if (header.column.getIsPinned() === 'left') {\n header.column.pin(false)\n } else {\n header.column.pin('left')\n }\n }}\n />\n )}\n\n {/* COLUMN SORTING */}\n {canSort && (\n <HeaderActionButton\n icon={'sort'}\n style={{\n transform: (column.getIsSorted() as string) === 'asc' ? 'scaleY(-1)' : undefined,\n }}\n onClick={column.getToggleSortingHandler()}\n selected={!!column.getIsSorted()}\n />\n )}\n </Styled.HeaderButtons>\n {canResize && (\n <Styled.ResizedHandler\n {...{\n onDoubleClick: () => column.resetSize(),\n onMouseDown: header.getResizeHandler(),\n onTouchStart: header.getResizeHandler(),\n className: clsx('resize-handle', {\n resizing: column.getIsResizing(),\n }),\n }}\n />\n )}\n </Styled.TableCellContent>\n )}\n </Styled.HeaderCell>\n )\n}\n\ninterface TableBodyProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n tableContainerRef: React.RefObject<HTMLDivElement>\n showHierarchy: boolean\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n attribs: ProjectTableAttribute[]\n onOpenNew?: (type: 'folder' | 'task') => void\n rowOrderIds: UniqueIdentifier[]\n sortableRows: boolean\n error?: string\n isGrouping: boolean\n}\n\nconst TableBody = ({\n columnVirtualizer,\n table,\n tableContainerRef,\n showHierarchy,\n virtualPaddingLeft,\n virtualPaddingRight,\n attribs,\n onOpenNew,\n rowOrderIds,\n sortableRows,\n error,\n isGrouping,\n}: TableBodyProps) => {\n const headerLabels = useMemo(() => {\n const allColumns = table.getAllColumns()\n const headers = allColumns\n .map((col) => {\n const headerId = col.id\n const header = col.columnDef.header\n if (typeof header === 'string' || typeof header === 'number') {\n return { label: header, id: headerId }\n }\n return null\n })\n .filter(Boolean)\n\n return headers as HeaderLabel[]\n }, [table.getAllColumns()])\n\n const { handleTableBodyContextMenu } = useCellContextMenu({ attribs, onOpenNew, headerLabels })\n\n const { handlePreFetchTasks } = usePrefetchFolderTasks()\n\n const { rows } = table.getRowModel()\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: () => 40, //estimate row height for accurate scrollbar dragging\n getScrollElement: () => tableContainerRef.current,\n //measure dynamic row height, except in firefox because it measures table border height incorrectly\n measureElement:\n typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 5,\n })\n\n const virtualRows = rowVirtualizer.getVirtualItems()\n\n // Memoize the measureElement callback\n const measureRowElement = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (node) {\n rowVirtualizer.measureElement(node)\n }\n },\n [rowVirtualizer],\n )\n\n useKeyboardNavigation()\n\n const tbodyContent = (\n <tbody\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`,\n position: 'relative',\n display: 'grid',\n }}\n onContextMenu={handleTableBodyContextMenu}\n onMouseOver={(e) => {\n handlePreFetchTasks(e)\n }}\n >\n {virtualRows.map((virtualRow, i) => {\n const row = rows[virtualRow.index] as Row<TableRow>\n // Add a check for row existence to prevent potential errors if data is out of sync\n if (!row) {\n console.warn('Virtualized row data not found for index:', virtualRow.index)\n return null\n }\n return (\n <TableBodyRow\n key={row.id + i.toString()} // dnd-kit needs this key to be stable and match the id in useSortable\n row={row}\n showHierarchy={showHierarchy}\n visibleCells={row.getVisibleCells()}\n virtualColumns={columnVirtualizer.getVirtualItems()}\n paddingLeft={virtualPaddingLeft}\n paddingRight={virtualPaddingRight}\n rowRef={measureRowElement}\n dataIndex={virtualRow.index}\n offsetTop={virtualRow.start}\n sortableRows={sortableRows}\n isGrouping={isGrouping}\n />\n )\n })}\n </tbody>\n )\n\n if (error) {\n return (\n tableContainerRef.current &&\n createPortal(\n <EmptyPlaceholder message=\"No items found\" error={error} />,\n tableContainerRef.current,\n )\n )\n }\n\n if (sortableRows) {\n return (\n <SortableContext items={rowOrderIds} strategy={verticalListSortingStrategy}>\n {tbodyContent}\n </SortableContext>\n )\n } else {\n return tbodyContent\n }\n}\n\ninterface TableBodyRowProps {\n row: Row<TableRow>\n showHierarchy: boolean\n visibleCells: Cell<TableRow, unknown>[]\n virtualColumns: VirtualItem[]\n paddingLeft: number | undefined\n paddingRight: number | undefined\n rowRef: (node: HTMLTableRowElement | null) => void\n dataIndex: number\n offsetTop: number\n sortableRows: boolean\n isGrouping: boolean\n}\n\nconst TableBodyRow = ({\n row,\n showHierarchy,\n visibleCells,\n virtualColumns,\n paddingLeft,\n paddingRight,\n rowRef,\n dataIndex,\n offsetTop,\n sortableRows,\n isGrouping = false,\n}: TableBodyRowProps) => {\n const sortable = sortableRows ? useSortable({ id: row.id }) : null\n\n const combinedRef = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (sortable) {\n sortable.setNodeRef(node)\n }\n // rowRef for virtualizer measurement\n // only measure if not actively being transformed by dnd-kit\n if (!(sortable && sortable.isDragging)) {\n rowRef(node)\n }\n },\n [sortable, rowRef],\n )\n\n // Attempt to combine dnd-kit transform with virtualizer's offsetTop\n const style: CSSProperties = {\n position: 'absolute', // Use absolute positioning for virtualized items\n top: offsetTop, // Position based on virtualizer's calculation (virtualRow.start)\n left: 0, // Span full width of the relative parent (tbody)\n right: 0, // Span full width\n height: 40, // Explicit height can be beneficial for absolute positioning\n zIndex: sortable && sortable.isDragging ? 0 : 1, // Ensure dragged item is above others\n display: 'flex', // Styled.TR is display:flex\n transform:\n sortable && sortable.transform ? CSS.Transform.toString(sortable.transform) : undefined, // Apply dnd-kit's transform for drag effect\n transition: sortable && sortable.transition ? sortable.transition : undefined,\n visibility: sortable && sortable.isDragging ? 'hidden' : 'visible', // Hide the row being dragged\n }\n\n return (\n <Styled.TR\n ref={combinedRef}\n data-index={dataIndex} //needed for dynamic row height measurement\n style={style}\n className={clsx({ 'group-row': row.original.group })}\n >\n {paddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingLeft }} />\n ) : null}\n {virtualColumns.map((vc, i) => {\n const cell = visibleCells[vc.index]\n if (!cell) return null // Should not happen in normal circumstances\n\n const cellId = getCellId(row.id, cell.column.id)\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TableCell\n key={cell.id + i.toString()}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(row.id, cell.column.id),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: 40,\n }}\n className={clsx(cell.column.id, {\n 'last-pinned-left':\n cell.column.getIsPinned() === 'left' && cell.column.getIsLastColumn('left'),\n })}\n onMouseDown={(e) => e.stopPropagation()} // Prevent selection interference\n onMouseOver={(e) => e.stopPropagation()}\n // Removed onMouseUp stopPropagation to allow dnd-kit to handle it\n onDoubleClick={(e) => e.stopPropagation()}\n onContextMenu={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n <RowDragHandleCellContent\n attributes={sortable?.attributes}\n listeners={sortable?.listeners}\n />\n </Styled.TableCell>\n )\n }\n return (\n <TableCellMemo\n cell={cell}\n cellId={cellId}\n rowId={row.id}\n key={cell.id + i.toString()}\n showHierarchy={showHierarchy}\n sortableRows={sortableRows}\n />\n )\n })}\n\n {paddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingRight }} />\n ) : null}\n </Styled.TR>\n )\n}\n\ninterface TableCellProps {\n cell: Cell<TableRow, unknown>\n cellId: string\n rowId: string\n className?: string\n showHierarchy: boolean\n sortableRows?: boolean\n}\n\nconst TableCell = ({\n cell,\n rowId,\n cellId,\n className,\n showHierarchy,\n sortableRows,\n ...props\n}: TableCellProps) => {\n const { 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 } = useSelectionCellsContext()\n\n const { isRowSelected } = useSelectedRowsContext()\n\n const { isEditing } = useCellEditing()\n\n const borderClasses = getCellBorderClasses(cellId)\n\n const isPinned = cell.column.getIsPinned()\n const isLastLeftPinnedColumn = isPinned === 'left' && cell.column.getIsLastColumn('left')\n const isRowSelectionColumn = cell.column.id === ROW_SELECTION_COLUMN_ID\n const isGroup = cell.row.original.entityType === 'group'\n\n return (\n <Styled.TableCell\n {...props}\n tabIndex={0}\n $isLastPinned={isLastLeftPinnedColumn} // is this column the last pinned column? Custom styling for borders.\n className={clsx(\n cell.column.id,\n {\n selected: isCellSelected(cellId),\n focused: isCellFocused(cellId),\n editing: isEditing(cellId),\n 'last-pinned-left': isLastLeftPinnedColumn,\n 'selected-row': isRowSelected(rowId),\n task: cell.row.original.entityType === 'task',\n },\n className,\n ...borderClasses,\n )}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.row.id, cell.column.id),\n height: 40,\n }}\n onMouseDown={(e) => {\n // Only process left clicks (button 0), ignore right clicks\n if (e.button !== 0) return\n\n const target = e.target as HTMLElement\n\n // check we are not clicking on expander\n if (target.closest('.expander')) return\n\n // if selection options from a dropdown skip\n if (target.closest('.options')) return\n\n // if selecting dropdown expand icon, make sure it is selected ()\n if (target.closest('.expand')) {\n if (!isCellSelected(cellId)) {\n // select\n selectCell(cellId, false, false)\n // focus\n focusCell(cellId)\n }\n return\n }\n\n // only name column can be selected for group rows\n if (isGroup && cell.column.id !== 'name') return clearSelection()\n\n const additive = e.metaKey || e.ctrlKey || isRowSelectionColumn\n if (e.shiftKey) {\n // Shift+click extends selection from anchor cell\n selectCell(cellId, additive, true) // true for range selection\n } else {\n // Normal click starts a new selection\n startSelection(cellId, additive)\n }\n }}\n onMouseOver={(e) => {\n if (e.buttons === 1) {\n // Left button is pressed during mouse move - drag selection\n extendSelection(cellId, isRowSelectionColumn)\n }\n }}\n onMouseUp={() => {\n endSelection(cellId)\n }}\n onDoubleClick={(e) => {\n // row selection on name column double click\n if (\n cell.column.id === 'name' &&\n !(e.target as HTMLElement).closest('.expander') &&\n !isGroup\n ) {\n // select the row by selecting the row-selection cell\n const rowSelectionCellId = getCellId(cell.row.id, ROW_SELECTION_COLUMN_ID)\n if (!isCellSelected(rowSelectionCellId)) {\n const additive = e.metaKey || e.ctrlKey\n selectCell(rowSelectionCellId, additive, false)\n }\n }\n // open the viewer on thumbnail double click\n if (cell.column.id === 'thumbnail') {\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":["_a","loadingAttrib","loadingRows","entity","jsx","Styled.TableWrapper","Styled.TableContainer","jsxs","Styled.TR","Styled.TableCell","Fragment","Styled.TableHeader","Styled.ColumnHeader","Styled.HeaderCell","Styled.TableCellContent","Styled.HeaderButtons","Styled.ResizedHandler"],"mappings":"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"}
1
+ {"version":3,"file":"ProjectTreeTable.es.js","sources":["../../../../../src/containers/ProjectTreeTable/ProjectTreeTable.tsx"],"sourcesContent":["import { useMemo, useRef, useEffect, memo, CSSProperties, useCallback } from 'react' // Added useCallback\nimport { useVirtualizer, VirtualItem, Virtualizer } from '@tanstack/react-virtual'\n// TanStack Table imports\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getExpandedRowModel,\n filterFns,\n flexRender,\n Row,\n getSortedRowModel,\n Cell,\n Column,\n Table,\n Header,\n HeaderGroup,\n RowData,\n} from '@tanstack/react-table'\n\n// Utility imports\nimport clsx from 'clsx'\n\n// Type imports\nimport type { TableRow } from './types/table'\n\n// Component imports\nimport buildTreeTableColumns, {\n DefaultColumns,\n TreeTableExtraColumn,\n} from './buildTreeTableColumns'\nimport * as Styled from './ProjectTreeTable.styled'\nimport HeaderActionButton from './components/HeaderActionButton'\nimport RowDragHandleCellContent from './components/RowDragHandleCellContent' // Added import\nimport EmptyPlaceholder from '../../components/EmptyPlaceholder'\n\n// Context imports\nimport { useCellEditing } from './context/CellEditingContext'\nimport { ROW_SELECTION_COLUMN_ID, useSelectionCellsContext } from './context/SelectionCellsContext'\nimport { ClipboardProvider } from './context/ClipboardContext'\nimport { useSelectedRowsContext } from './context/SelectedRowsContext'\nimport { useColumnSettingsContext } from './context/ColumnSettingsContext'\n\n// Hook imports\nimport useCustomColumnWidthVars from './hooks/useCustomColumnWidthVars'\nimport usePrefetchFolderTasks from './hooks/usePrefetchFolderTasks'\nimport useCellContextMenu, { HeaderLabel } from './hooks/useCellContextMenu'\nimport useColumnVirtualization from './hooks/useColumnVirtualization'\nimport useKeyboardNavigation from './hooks/useKeyboardNavigation'\n\n// Utility function imports\nimport { getCellId, parseCellId } from './utils/cellUtils'\nimport { generateLoadingRows, generateDummyAttributes } from './utils/loadingUtils'\nimport { createPortal } from 'react-dom'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { AttributeEnumItem, ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport { ToggleExpandAll, useProjectTableContext } from './context/ProjectTableContext'\nimport { 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\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 }\n}\n\n//These are the important styles to make sticky column pinning work!\n//Apply styles like this using your CSS strategy of choice with this kind of logic to head cells, data cells, footer cells, etc.\n//View the index.css file for more needed styles such as border-collapse: separate\nconst getCommonPinningStyles = (column: Column<TableRow, unknown>): CSSProperties => {\n const isPinned = column.getIsPinned()\n const offset =\n column.id !== ROW_SELECTION_COLUMN_ID && column.id !== DRAG_HANDLE_COLUMN_ID ? -30 : 0\n\n return {\n left: isPinned === 'left' ? `${column.getStart('left') + offset}px` : undefined, // Removed offset\n right: isPinned === 'right' ? `${column.getAfter('right')}px` : undefined,\n position: isPinned ? 'sticky' : 'relative',\n width: column.getSize(),\n zIndex: isPinned ? 100 : 0,\n }\n}\n\nconst getColumnWidth = (rowId: string, columnId: string) => {\n return `calc(var(--col-${columnId}-size) * 1px)`\n}\n// test\n\nexport const DRAG_HANDLE_COLUMN_ID = 'drag-handle'\n\nexport interface ProjectTreeTableProps extends React.HTMLAttributes<HTMLDivElement> {\n scope: string\n sliceId: string\n fetchMoreOnBottomReached: (element: HTMLDivElement | null) => void\n onOpenNew?: (type: 'folder' | 'task') => void\n readOnly?: (DefaultColumns | string)[]\n excludedColumns?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n isLoading?: boolean\n clientSorting?: boolean\n sortableRows?: boolean\n onRowReorder?: (active: UniqueIdentifier, over: UniqueIdentifier | null) => void // Adjusted type for active/over if needed, or keep as Active, Over\n dndActiveId?: UniqueIdentifier | null // Added prop\n pt?: {\n container?: React.HTMLAttributes<HTMLDivElement>\n head?: Partial<TableHeadProps>\n }\n}\n\nexport const ProjectTreeTable = ({\n scope,\n sliceId,\n fetchMoreOnBottomReached,\n onOpenNew,\n readOnly,\n excludedColumns,\n extraColumns,\n isLoading: isLoadingProp,\n clientSorting = false,\n sortableRows = false,\n onRowReorder,\n dndActiveId, // Destructure new prop\n pt,\n ...props\n}: ProjectTreeTableProps) => {\n const {\n columnVisibility,\n columnPinning,\n columnOrder,\n columnSizing,\n sortingUpdater,\n sorting,\n createUpdaterWithAllColumns,\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,\n getEntityById,\n } = useProjectTableContext()\n\n const isLoading = isLoadingProp || isLoadingData\n\n const { statuses = [], folderTypes = [], taskTypes = [], tags = [] } = projectInfo || {}\n const options: BuiltInFieldOptions = useMemo(\n () =>\n getTableFieldOptions({\n users,\n statuses,\n folderTypes,\n taskTypes,\n tags,\n scopes,\n }),\n [users, statuses, folderTypes, taskTypes, 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 attribFields,\n showHierarchy && tableData.length > 0\n ? Math.min(tableRowsCount, 50)\n : groupBy\n ? Math.max(tableRowsCountRef.current, 50)\n : 50,\n )\n\n return { loadingAttrib, loadingRows }\n }, [])\n\n const showLoadingRows = !isInitialized || isLoading\n\n // Format readonly columns and attributes\n const { readOnlyColumns, readOnlyAttribs } = useMemo(\n () => getReadOnlyLists(attribFields, readOnly),\n [attribFields, readOnly],\n )\n\n const { 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, type } = entity\n for (const cellId of selectedCells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n\n const entity = getEntityById(rowId || '')\n if (!entity) continue\n\n if (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 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 const columns = useMemo(() => {\n const baseColumns = buildTreeTableColumns({\n attribs: columnAttribs,\n showHierarchy,\n options,\n extraColumns,\n excluded: excludedColumns,\n groupBy,\n })\n\n if (sortableRows) {\n return [\n {\n id: DRAG_HANDLE_COLUMN_ID,\n header: () => null,\n cell: () => null, // Content rendered by TableBodyRow\n size: 24,\n minSize: 24,\n maxSize: 24,\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n enablePinning: false, // Programmatically pinned\n },\n ...baseColumns,\n ]\n }\n return baseColumns\n }, [columnAttribs, showHierarchy, options, extraColumns, excludedColumns, sortableRows])\n\n const table = useReactTable({\n data: showLoadingRows ? loadingRows : tableData,\n columns,\n defaultColumn: {\n minSize: 50,\n size: 150,\n },\n enableRowSelection: true, //enable row selection for all rows\n getRowId: (row) => row.id,\n enableSubRowSelection: false, //disable sub row selection\n getSubRows: (row) => row.subRows,\n getRowCanExpand: () => true,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // EXPANDABLE\n onExpandedChange: updateExpanded,\n // SORTING\n getSortedRowModel: clientSorting ? getSortedRowModel() : undefined,\n onSortingChange: sortingUpdater,\n columnResizeMode: 'onChange',\n onColumnPinningChange: createUpdaterWithAllColumns.columnPinning(columns.map((col) => col.id!)),\n onColumnSizingChange: createUpdaterWithAllColumns.columnSizing(columns.map((col) => col.id!)),\n onColumnVisibilityChange: createUpdaterWithAllColumns.columnVisibility(\n columns.map((col) => col.id!),\n ),\n onColumnOrderChange: createUpdaterWithAllColumns.columnOrder(columns.map((col) => col.id!)),\n // @ts-ignore\n filterFns,\n state: {\n expanded,\n sorting,\n columnPinning: (() => {\n const leftPins: string[] = []\n if (sortableRows) {\n leftPins.push(DRAG_HANDLE_COLUMN_ID)\n }\n leftPins.push(ROW_SELECTION_COLUMN_ID)\n\n // Add other unique pins from context, ensuring they are not the programmatic ones\n const contextLeftPins = (columnPinning.left || []).filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n leftPins.push(...contextLeftPins)\n // Remove duplicates just in case, though filter should handle it\n const uniqueLeftPins = [...new Set(leftPins)]\n\n return {\n left: uniqueLeftPins,\n right: columnPinning.right,\n }\n })(),\n columnSizing,\n columnVisibility,\n columnOrder,\n },\n enableSorting: true,\n meta: {\n projectName,\n options,\n readOnly: readOnlyColumns,\n updateEntities: handleCellUpdate,\n toggleExpandAll,\n loadMoreTasks: fetchNextPage,\n selection: Array.from(selectedCells),\n },\n })\n\n // TODO: when there is data (like in error) then we have infinite rendering\n\n const { rows } = table.getRowModel()\n\n // update the tableRowsCountRef with the current number of rows\n useEffect(() => {\n tableRowsCountRef.current = rows.length\n }, [rows.length])\n\n // Register grid structure with selection context when rows or columns change\n useEffect(() => {\n if (!rows.length) return\n const rowIds = rows.map((row) => row.id)\n const colIds = table.getAllLeafColumns().map((col) => col.id)\n const colIdsSortedByPinning = [...colIds].sort((a, b) => {\n if (ROW_SELECTION_COLUMN_ID === b) return 1\n const colA = columnPinning.left?.includes(a) ? 0 : 1\n const colB = columnPinning.left?.includes(b) ? 0 : 1\n return colA - colB\n })\n\n registerGrid(rowIds, colIdsSortedByPinning)\n }, [rows, table.getAllLeafColumns(), columnPinning, ROW_SELECTION_COLUMN_ID, registerGrid])\n\n const visibleColumns = table.getVisibleLeafColumns()\n\n // Use the column virtualization hook\n const { columnVirtualizer, virtualPaddingLeft, virtualPaddingRight } = useColumnVirtualization({\n visibleColumns,\n tableContainerRef,\n columnPinning,\n })\n\n const columnSizeVars = useCustomColumnWidthVars(table, columnSizing)\n\n const attribByField = useMemo(() => {\n return attribFields.reduce((acc: Record<string, AttributeEnumItem[]>, attrib) => {\n if (attrib.data?.enum?.length) {\n acc[attrib.name] = attrib.data?.enum\n }\n return acc\n }, {})\n }, [attribFields])\n\n const rowOrderIds = useMemo(() => tableData.map((row) => row.id), [tableData])\n const draggedRowData = useMemo(() => {\n if (!dndActiveId || !sortableRows) return null // Use dndActiveId\n return tableData.find((r) => r.id === dndActiveId) // Use dndActiveId\n }, [dndActiveId, tableData, sortableRows])\n\n const tableUiContent = (\n <ClipboardProvider\n entitiesMap={entitiesMap}\n columnEnums={{ ...options, ...attribByField }}\n columnReadOnly={readOnlyAttribs}\n >\n <Styled.TableWrapper {...props}>\n <Styled.TableContainer\n ref={tableContainerRef}\n style={{ height: '100%', padding: 0 }}\n onScroll={(e) => fetchMoreOnBottomReached(e.currentTarget)}\n {...pt?.container}\n className={clsx('table-container', pt?.container?.className)}\n >\n <table\n style={{\n display: 'grid',\n borderCollapse: 'collapse',\n userSelect: 'none',\n ...columnSizeVars,\n width: table.getTotalSize(),\n }}\n >\n <TableHead\n columnVirtualizer={columnVirtualizer}\n table={table}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n {...pt?.head}\n />\n <TableBody\n columnVirtualizer={columnVirtualizer}\n table={table}\n tableContainerRef={tableContainerRef}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n showHierarchy={showHierarchy}\n attribs={attribFields}\n onOpenNew={onOpenNew}\n rowOrderIds={rowOrderIds}\n sortableRows={sortableRows}\n error={error}\n isGrouping={isGrouping}\n />\n </table>\n </Styled.TableContainer>\n </Styled.TableWrapper>\n </ClipboardProvider>\n )\n\n // Render DragOverlay if sortableRows and dndActiveId is present\n const dragOverlayPortal =\n sortableRows &&\n dndActiveId &&\n createPortal(\n <DragOverlay dropAnimation={null}>\n {draggedRowData\n ? (() => {\n const overlayRowInstance = table.getRowModel().rows.find((r) => r.id === dndActiveId)\n if (!overlayRowInstance) return null\n\n const tableWidth = table.getTotalSize()\n\n return (\n <table\n style={{\n width: tableWidth,\n borderCollapse: 'collapse',\n backgroundColor: 'var(--md-sys-color-surface-container-high)',\n boxShadow: '0 0 10px rgba(0,0,0,0.2)',\n ...columnSizeVars,\n }}\n >\n <tbody>\n <Styled.TR style={{ display: 'flex', userSelect: 'none' }}>\n {virtualPaddingLeft ? (\n <td style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {columnVirtualizer.getVirtualItems().map((vc) => {\n const cell = overlayRowInstance.getVisibleCells()[vc.index]\n if (!cell) return null\n\n const cellStyleBase: CSSProperties = {\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(overlayRowInstance.id, cell.column.id),\n display: 'flex',\n alignItems: 'center',\n height: 40,\n }\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TableCell\n key={`overlay-drag-${cell.id}`}\n style={{ ...cellStyleBase, justifyContent: 'center' }}\n className={clsx(cell.column.id)}\n >\n <Icon icon=\"drag_handle\" /> {/* Static icon */}\n </Styled.TableCell>\n )\n }\n return (\n <TableCellMemo\n cell={cell}\n cellId={`overlay-${getCellId(overlayRowInstance.id, cell.column.id)}`}\n rowId={overlayRowInstance.id}\n key={`overlay-cell-${cell.id}`}\n showHierarchy={showHierarchy}\n />\n )\n })}\n {virtualPaddingRight ? (\n <td style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.TR>\n </tbody>\n </table>\n )\n })()\n : null}\n </DragOverlay>,\n document.body,\n )\n\n if (sortableRows) {\n return (\n <>\n {tableUiContent}\n {dragOverlayPortal}\n </>\n )\n } else {\n return tableUiContent\n }\n}\n\ninterface TableHeadProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n}\n\nconst TableHead = ({\n columnVirtualizer,\n table,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n ...props\n}: TableHeadProps) => {\n return (\n <Styled.TableHeader {...props}>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableHeadRow\n key={headerGroup.id}\n columnVirtualizer={columnVirtualizer}\n headerGroup={headerGroup}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n />\n ))}\n </Styled.TableHeader>\n )\n}\n\ninterface TableHeadRowProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n headerGroup: HeaderGroup<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n}\n\nconst TableHeadRow = ({\n columnVirtualizer,\n headerGroup,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n}: TableHeadRowProps) => {\n const virtualColumns = columnVirtualizer.getVirtualItems()\n return (\n <Styled.ColumnHeader key={headerGroup.id} style={{ display: 'flex' }}>\n {virtualPaddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {virtualColumns.map((virtualColumn) => {\n const header = headerGroup.headers[virtualColumn.index]\n\n return (\n <TableHeadCell\n key={header.id}\n header={header}\n isLoading={isLoading}\n isReadOnly={readOnlyColumns?.includes(header.id)}\n canSort={header.column.getCanSort()}\n canFilter={header.column.getCanFilter()}\n canHide={header.column.getCanHide()}\n canPin={header.column.getCanPin()}\n canResize={header.column.getCanResize()}\n sortableRows={sortableRows}\n />\n )\n })}\n {virtualPaddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.ColumnHeader>\n )\n}\n\ninterface TableHeadCellProps {\n header: Header<TableRow, unknown>\n isLoading: boolean\n canSort?: boolean\n canFilter?: boolean\n canHide?: boolean\n canPin?: boolean\n canResize?: boolean\n isReadOnly?: boolean\n sortableRows?: boolean\n}\n\nconst TableHeadCell = ({\n header,\n isLoading,\n canFilter,\n canHide,\n canSort,\n canPin,\n canResize,\n isReadOnly,\n sortableRows,\n}: TableHeadCellProps) => {\n const { column } = header\n\n return (\n <Styled.HeaderCell\n className={clsx(header.id, 'shimmer-dark', {\n loading: isLoading,\n 'last-pinned-left': column.getIsPinned() === 'left' && column.getIsLastColumn('left'),\n })}\n key={header.id}\n style={{\n ...getCommonPinningStyles(column),\n width: getColumnWidth('', column.id),\n }}\n >\n {header.isPlaceholder ? null : (\n <Styled.TableCellContent className={clsx('bold', 'header')}>\n {flexRender(column.columnDef.header, header.getContext())}\n {isReadOnly && (\n <Icon icon=\"lock\" data-tooltip={'You only have permission to read this column.'} />\n )}\n\n <Styled.HeaderButtons className=\"actions\">\n {/* COLUMN HIDING */}\n {canHide && (\n <HeaderActionButton\n icon=\"visibility_off\"\n selected={!column.getIsVisible()}\n onClick={column.getToggleVisibilityHandler()}\n />\n )}\n {/* COLUMN PINNING */}\n {canPin && (\n <HeaderActionButton\n icon=\"push_pin\"\n selected={header.column.getIsPinned() === 'left'}\n onClick={() => {\n if (header.column.getIsPinned() === 'left') {\n header.column.pin(false)\n } else {\n header.column.pin('left')\n }\n }}\n />\n )}\n\n {/* COLUMN SORTING */}\n {canSort && (\n <HeaderActionButton\n icon={'sort'}\n style={{\n transform: (column.getIsSorted() as string) === 'asc' ? 'scaleY(-1)' : undefined,\n }}\n onClick={column.getToggleSortingHandler()}\n selected={!!column.getIsSorted()}\n />\n )}\n </Styled.HeaderButtons>\n {canResize && (\n <Styled.ResizedHandler\n {...{\n onDoubleClick: () => column.resetSize(),\n onMouseDown: header.getResizeHandler(),\n onTouchStart: header.getResizeHandler(),\n className: clsx('resize-handle', {\n resizing: column.getIsResizing(),\n }),\n }}\n />\n )}\n </Styled.TableCellContent>\n )}\n </Styled.HeaderCell>\n )\n}\n\ninterface TableBodyProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n tableContainerRef: React.RefObject<HTMLDivElement>\n showHierarchy: boolean\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n attribs: ProjectTableAttribute[]\n onOpenNew?: (type: 'folder' | 'task') => void\n rowOrderIds: UniqueIdentifier[]\n sortableRows: boolean\n error?: string\n isGrouping: boolean\n}\n\nconst TableBody = ({\n columnVirtualizer,\n table,\n tableContainerRef,\n showHierarchy,\n virtualPaddingLeft,\n virtualPaddingRight,\n attribs,\n onOpenNew,\n rowOrderIds,\n sortableRows,\n error,\n isGrouping,\n}: TableBodyProps) => {\n const headerLabels = useMemo(() => {\n const allColumns = table.getAllColumns()\n const headers = allColumns\n .map((col) => {\n const headerId = col.id\n const header = col.columnDef.header\n if (typeof header === 'string' || typeof header === 'number') {\n return { label: header, id: headerId }\n }\n return null\n })\n .filter(Boolean)\n\n return headers as HeaderLabel[]\n }, [table.getAllColumns()])\n\n const { handleTableBodyContextMenu } = useCellContextMenu({ attribs, onOpenNew, headerLabels })\n\n const { handlePreFetchTasks } = usePrefetchFolderTasks()\n\n const { rows } = table.getRowModel()\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: () => 40, //estimate row height for accurate scrollbar dragging\n getScrollElement: () => tableContainerRef.current,\n //measure dynamic row height, except in firefox because it measures table border height incorrectly\n measureElement:\n typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 5,\n })\n\n const virtualRows = rowVirtualizer.getVirtualItems()\n\n // Memoize the measureElement callback\n const measureRowElement = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (node) {\n rowVirtualizer.measureElement(node)\n }\n },\n [rowVirtualizer],\n )\n\n useKeyboardNavigation()\n\n const tbodyContent = (\n <tbody\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`,\n position: 'relative',\n display: 'grid',\n }}\n onContextMenu={handleTableBodyContextMenu}\n onMouseOver={(e) => {\n handlePreFetchTasks(e)\n }}\n >\n {virtualRows.map((virtualRow, i) => {\n const row = rows[virtualRow.index] as Row<TableRow>\n // Add a check for row existence to prevent potential errors if data is out of sync\n if (!row) {\n console.warn('Virtualized row data not found for index:', virtualRow.index)\n return null\n }\n return (\n <TableBodyRow\n key={row.id + i.toString()} // dnd-kit needs this key to be stable and match the id in useSortable\n row={row}\n showHierarchy={showHierarchy}\n visibleCells={row.getVisibleCells()}\n virtualColumns={columnVirtualizer.getVirtualItems()}\n paddingLeft={virtualPaddingLeft}\n paddingRight={virtualPaddingRight}\n rowRef={measureRowElement}\n dataIndex={virtualRow.index}\n offsetTop={virtualRow.start}\n sortableRows={sortableRows}\n isGrouping={isGrouping}\n />\n )\n })}\n </tbody>\n )\n\n if (error) {\n return (\n tableContainerRef.current &&\n createPortal(\n <EmptyPlaceholder message=\"No items found\" error={error} />,\n tableContainerRef.current,\n )\n )\n }\n\n if (sortableRows) {\n return (\n <SortableContext items={rowOrderIds} strategy={verticalListSortingStrategy}>\n {tbodyContent}\n </SortableContext>\n )\n } else {\n return tbodyContent\n }\n}\n\ninterface TableBodyRowProps {\n row: Row<TableRow>\n showHierarchy: boolean\n visibleCells: Cell<TableRow, unknown>[]\n virtualColumns: VirtualItem[]\n paddingLeft: number | undefined\n paddingRight: number | undefined\n rowRef: (node: HTMLTableRowElement | null) => void\n dataIndex: number\n offsetTop: number\n sortableRows: boolean\n isGrouping: boolean\n}\n\nconst TableBodyRow = ({\n row,\n showHierarchy,\n visibleCells,\n virtualColumns,\n paddingLeft,\n paddingRight,\n rowRef,\n dataIndex,\n offsetTop,\n sortableRows,\n isGrouping = false,\n}: TableBodyRowProps) => {\n const sortable = sortableRows ? useSortable({ id: row.id }) : null\n\n const combinedRef = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (sortable) {\n sortable.setNodeRef(node)\n }\n // rowRef for virtualizer measurement\n // only measure if not actively being transformed by dnd-kit\n if (!(sortable && sortable.isDragging)) {\n rowRef(node)\n }\n },\n [sortable, rowRef],\n )\n\n // Attempt to combine dnd-kit transform with virtualizer's offsetTop\n const style: CSSProperties = {\n position: 'absolute', // Use absolute positioning for virtualized items\n top: offsetTop, // Position based on virtualizer's calculation (virtualRow.start)\n left: 0, // Span full width of the relative parent (tbody)\n right: 0, // Span full width\n height: 40, // Explicit height can be beneficial for absolute positioning\n zIndex: sortable && sortable.isDragging ? 0 : 1, // Ensure dragged item is above others\n display: 'flex', // Styled.TR is display:flex\n transform:\n sortable && sortable.transform ? CSS.Transform.toString(sortable.transform) : undefined, // Apply dnd-kit's transform for drag effect\n transition: sortable && sortable.transition ? sortable.transition : undefined,\n visibility: sortable && sortable.isDragging ? 'hidden' : 'visible', // Hide the row being dragged\n }\n\n return (\n <Styled.TR\n ref={combinedRef}\n data-index={dataIndex} //needed for dynamic row height measurement\n style={style}\n className={clsx({ 'group-row': row.original.group })}\n >\n {paddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingLeft }} />\n ) : null}\n {virtualColumns.map((vc, i) => {\n const cell = visibleCells[vc.index]\n if (!cell) return null // Should not happen in normal circumstances\n\n const cellId = getCellId(row.id, cell.column.id)\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TableCell\n key={cell.id + i.toString()}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(row.id, cell.column.id),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: 40,\n }}\n className={clsx(cell.column.id, {\n 'last-pinned-left':\n cell.column.getIsPinned() === 'left' && cell.column.getIsLastColumn('left'),\n })}\n onMouseDown={(e) => e.stopPropagation()} // Prevent selection interference\n onMouseOver={(e) => e.stopPropagation()}\n // Removed onMouseUp stopPropagation to allow dnd-kit to handle it\n onDoubleClick={(e) => e.stopPropagation()}\n onContextMenu={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n <RowDragHandleCellContent\n attributes={sortable?.attributes}\n listeners={sortable?.listeners}\n />\n </Styled.TableCell>\n )\n }\n return (\n <TableCellMemo\n cell={cell}\n cellId={cellId}\n rowId={row.id}\n key={cell.id + i.toString()}\n showHierarchy={showHierarchy}\n sortableRows={sortableRows}\n />\n )\n })}\n\n {paddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingRight }} />\n ) : null}\n </Styled.TR>\n )\n}\n\ninterface TableCellProps {\n cell: Cell<TableRow, unknown>\n cellId: string\n rowId: string\n className?: string\n showHierarchy: boolean\n sortableRows?: boolean\n}\n\nconst TableCell = ({\n cell,\n rowId,\n cellId,\n className,\n showHierarchy,\n sortableRows,\n ...props\n}: TableCellProps) => {\n const { 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 } = useSelectionCellsContext()\n\n const { isRowSelected } = useSelectedRowsContext()\n\n const { isEditing } = useCellEditing()\n\n const borderClasses = getCellBorderClasses(cellId)\n\n const isPinned = cell.column.getIsPinned()\n const isLastLeftPinnedColumn = isPinned === 'left' && cell.column.getIsLastColumn('left')\n const isRowSelectionColumn = cell.column.id === ROW_SELECTION_COLUMN_ID\n const isGroup = cell.row.original.entityType === 'group'\n\n return (\n <Styled.TableCell\n {...props}\n tabIndex={0}\n $isLastPinned={isLastLeftPinnedColumn} // is this column the last pinned column? Custom styling for borders.\n className={clsx(\n cell.column.id,\n {\n selected: isCellSelected(cellId),\n focused: isCellFocused(cellId),\n editing: isEditing(cellId),\n 'last-pinned-left': isLastLeftPinnedColumn,\n 'selected-row': isRowSelected(rowId),\n task: cell.row.original.entityType === 'task',\n },\n className,\n ...borderClasses,\n )}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.row.id, cell.column.id),\n height: 40,\n }}\n onMouseDown={(e) => {\n // Only process left clicks (button 0), ignore right clicks\n if (e.button !== 0) return\n\n const target = e.target as HTMLElement\n\n // check we are not clicking on expander\n if (target.closest('.expander')) return\n\n // if selection options from a dropdown skip\n if (target.closest('.options')) return\n\n // if selecting dropdown expand icon, make sure it is selected ()\n if (target.closest('.expand')) {\n if (!isCellSelected(cellId)) {\n // select\n selectCell(cellId, false, false)\n // focus\n focusCell(cellId)\n }\n return\n }\n\n // only name column can be selected for group rows\n if (isGroup && cell.column.id !== 'name') return clearSelection()\n\n const additive = e.metaKey || e.ctrlKey || isRowSelectionColumn\n if (e.shiftKey) {\n // Shift+click extends selection from anchor cell\n selectCell(cellId, additive, true) // true for range selection\n } else {\n // Normal click starts a new selection\n startSelection(cellId, additive)\n }\n }}\n onMouseOver={(e) => {\n if (e.buttons === 1) {\n // Left button is pressed during mouse move - drag selection\n extendSelection(cellId, isRowSelectionColumn)\n }\n }}\n onMouseUp={() => {\n endSelection(cellId)\n }}\n onDoubleClick={(e) => {\n // row selection on name column double click\n if (\n cell.column.id === 'name' &&\n !(e.target as HTMLElement).closest('.expander') &&\n !isGroup\n ) {\n // select the row by selecting the row-selection cell\n const rowSelectionCellId = getCellId(cell.row.id, ROW_SELECTION_COLUMN_ID)\n if (!isCellSelected(rowSelectionCellId)) {\n const additive = e.metaKey || e.ctrlKey\n selectCell(rowSelectionCellId, additive, false)\n }\n }\n // open the viewer on thumbnail double click\n if (cell.column.id === 'thumbnail') {\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":["_a","loadingAttrib","loadingRows","entity","jsx","Styled.TableWrapper","Styled.TableContainer","jsxs","Styled.TR","Styled.TableCell","Fragment","Styled.TableHeader","Styled.ColumnHeader","Styled.HeaderCell","Styled.TableCellContent","Styled.HeaderButtons","Styled.ResizedHandler"],"mappings":"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"}
@@ -170,6 +170,10 @@ require("../../DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs
170
170
  require("../../Actions/Actions.styled.cjs.js");
171
171
  require("../../Actions/ActionsDropdown/ActionsDropdown.cjs.js");
172
172
  require("../../Actions/ActionIcon.cjs.js");
173
+ require("../../Views/context/ViewsContext.cjs.js");
174
+ require("../../Views/Views.styled.cjs.js");
175
+ require("../../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");
176
+ require("../../Views/ViewsMenu/ViewsMenu.cjs.js");
173
177
  require("../../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");
174
178
  require("../../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");
175
179
  require("../../../components/EntityPath/EntityPath.styled.cjs.js");
@@ -192,9 +196,6 @@ require("../../../components/VersionUploader/components/UploadVersionDialog.cjs.
192
196
  require("../../../components/VersionUploader/context/VersionUploadContext.cjs.js");
193
197
  require("../../../components/Feedback/FeedbackContext.cjs.js");
194
198
  require("../../../components/Feedback/SupportBubble.cjs.js");
195
- require("../../../components/Views/context/ViewsContext.cjs.js");
196
- require("../../../components/Views/Views.styled.cjs.js");
197
- require("../../../components/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");
198
199
  const styled = require("styled-components");
199
200
  const FieldItem = styled.li`
200
201
  display: flex;
@@ -1 +1 @@
1
- {"version":3,"file":"GroupSettingsFallback.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/components/GroupSettingsFallback.tsx"],"sourcesContent":["import { SettingsPanelItem, TableSettingsFallback } from '../../../components'\nimport { FC } from 'react'\nimport { ColumnSettingsContextType } from '../context'\nimport styled from 'styled-components'\nimport { Button, Icon } from '@ynput/ayon-react-components'\n\nconst FieldItem = styled.li`\n display: flex;\n align-items: center;\n padding: 0;\n margin: 0;\n`\n\nconst FieldButton = styled(Button)`\n width: 100%;\n justify-content: start;\n`\n\nexport type GroupByConfig = {\n showEmpty?: boolean\n}\n\nexport interface GroupSettingsProps {\n fields: SettingsPanelItem[]\n config?: GroupByConfig\n onChange?: ColumnSettingsContextType['updateGroupBy']\n groupBy?: ColumnSettingsContextType['groupBy']\n updateGroupBy?: ColumnSettingsContextType['updateGroupBy']\n onConfigChange?: (config: GroupByConfig) => void\n}\n\nexport interface GroupSettingsFallbackProps extends GroupSettingsProps {\n requiredVersion?: string\n}\n\nexport const GroupSettingsFallback: FC<GroupSettingsFallbackProps> = ({\n requiredVersion,\n fields,\n}) => (\n <TableSettingsFallback feature={'groupAttributes'} requiredVersion={requiredVersion}>\n {fields.map((field) => (\n <FieldItem key={field.value}>\n <FieldButton variant=\"text\" icon={field.icon}>\n {field.label}\n <Icon icon={'bolt'} style={{ marginLeft: 'auto' }} />\n </FieldButton>\n </FieldItem>\n ))}\n </TableSettingsFallback>\n)\n"],"names":["Button","TableSettingsFallback","jsx","jsxs","Icon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAOzB,MAAM,cAAc,OAAOA,0BAAM;AAAA;AAAA;AAAA;AAsB1B,MAAM,wBAAwD,CAAC;AAAA,EACpE;AAAA,EACA;AACF,uDACGC,sBAAAA,uBAAsB,EAAA,SAAS,mBAAmB,iBAChD,iBAAO,IAAI,CAAC,UACXC,2BAAAA,kBAAAA,IAAC,aACC,UAACC,kDAAA,aAAA,EAAY,SAAQ,QAAO,MAAM,MAAM,MACrC,UAAA;AAAA,EAAM,MAAA;AAAA,EACPD,iDAACE,oBAAAA,QAAK,MAAM,QAAQ,OAAO,EAAE,YAAY,SAAU,CAAA;AAAA,EAAA,CACrD,EAJc,GAAA,MAAM,KAKtB,CACD,EACH,CAAA;;"}
1
+ {"version":3,"file":"GroupSettingsFallback.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/components/GroupSettingsFallback.tsx"],"sourcesContent":["import { SettingsPanelItem, TableSettingsFallback } from '../../../components'\nimport { FC } from 'react'\nimport { ColumnSettingsContextType } from '../context'\nimport styled from 'styled-components'\nimport { Button, Icon } from '@ynput/ayon-react-components'\n\nconst FieldItem = styled.li`\n display: flex;\n align-items: center;\n padding: 0;\n margin: 0;\n`\n\nconst FieldButton = styled(Button)`\n width: 100%;\n justify-content: start;\n`\n\nexport type GroupByConfig = {\n showEmpty?: boolean\n}\n\nexport interface GroupSettingsProps {\n fields: SettingsPanelItem[]\n config?: GroupByConfig\n onChange?: ColumnSettingsContextType['updateGroupBy']\n groupBy?: ColumnSettingsContextType['groupBy']\n updateGroupBy?: ColumnSettingsContextType['updateGroupBy']\n onConfigChange?: (config: GroupByConfig) => void\n}\n\nexport interface GroupSettingsFallbackProps extends GroupSettingsProps {\n requiredVersion?: string\n}\n\nexport const GroupSettingsFallback: FC<GroupSettingsFallbackProps> = ({\n requiredVersion,\n fields,\n}) => (\n <TableSettingsFallback feature={'groupAttributes'} requiredVersion={requiredVersion}>\n {fields.map((field) => (\n <FieldItem key={field.value}>\n <FieldButton variant=\"text\" icon={field.icon}>\n {field.label}\n <Icon icon={'bolt'} style={{ marginLeft: 'auto' }} />\n </FieldButton>\n </FieldItem>\n ))}\n </TableSettingsFallback>\n)\n"],"names":["Button","TableSettingsFallback","jsx","jsxs","Icon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAOzB,MAAM,cAAc,OAAOA,0BAAM;AAAA;AAAA;AAAA;AAsB1B,MAAM,wBAAwD,CAAC;AAAA,EACpE;AAAA,EACA;AACF,uDACGC,sBAAAA,uBAAsB,EAAA,SAAS,mBAAmB,iBAChD,iBAAO,IAAI,CAAC,UACXC,2BAAAA,kBAAAA,IAAC,aACC,UAACC,kDAAA,aAAA,EAAY,SAAQ,QAAO,MAAM,MAAM,MACrC,UAAA;AAAA,EAAM,MAAA;AAAA,EACPD,iDAACE,oBAAAA,QAAK,MAAM,QAAQ,OAAO,EAAE,YAAY,SAAU,CAAA;AAAA,EAAA,CACrD,EAJc,GAAA,MAAM,KAKtB,CACD,EACH,CAAA;;"}
@@ -168,6 +168,10 @@ import "../../DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.es.j
168
168
  import "../../Actions/Actions.styled.es.js";
169
169
  import "../../Actions/ActionsDropdown/ActionsDropdown.es.js";
170
170
  import "../../Actions/ActionIcon.es.js";
171
+ import "../../Views/context/ViewsContext.es.js";
172
+ import "../../Views/Views.styled.es.js";
173
+ import "../../Views/ViewsMenuContainer/ViewsMenuContainer.es.js";
174
+ import "../../Views/ViewsMenu/ViewsMenu.es.js";
171
175
  import "../../../components/EntityPanelUploader/EntityPanelUploader.styled.es.js";
172
176
  import "../../../components/SimpleFormDialog/SimpleFormDialog.es.js";
173
177
  import "../../../components/EntityPath/EntityPath.styled.es.js";
@@ -190,9 +194,6 @@ import "../../../components/VersionUploader/components/UploadVersionDialog.es.js
190
194
  import "../../../components/VersionUploader/context/VersionUploadContext.es.js";
191
195
  import "../../../components/Feedback/FeedbackContext.es.js";
192
196
  import "../../../components/Feedback/SupportBubble.es.js";
193
- import "../../../components/Views/context/ViewsContext.es.js";
194
- import "../../../components/Views/Views.styled.es.js";
195
- import "../../../components/Views/ViewsMenuContainer/ViewsMenuContainer.es.js";
196
197
  import styled from "styled-components";
197
198
  const FieldItem = styled.li`
198
199
  display: flex;
@@ -1 +1 @@
1
- {"version":3,"file":"GroupSettingsFallback.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/components/GroupSettingsFallback.tsx"],"sourcesContent":["import { SettingsPanelItem, TableSettingsFallback } from '../../../components'\nimport { FC } from 'react'\nimport { ColumnSettingsContextType } from '../context'\nimport styled from 'styled-components'\nimport { Button, Icon } from '@ynput/ayon-react-components'\n\nconst FieldItem = styled.li`\n display: flex;\n align-items: center;\n padding: 0;\n margin: 0;\n`\n\nconst FieldButton = styled(Button)`\n width: 100%;\n justify-content: start;\n`\n\nexport type GroupByConfig = {\n showEmpty?: boolean\n}\n\nexport interface GroupSettingsProps {\n fields: SettingsPanelItem[]\n config?: GroupByConfig\n onChange?: ColumnSettingsContextType['updateGroupBy']\n groupBy?: ColumnSettingsContextType['groupBy']\n updateGroupBy?: ColumnSettingsContextType['updateGroupBy']\n onConfigChange?: (config: GroupByConfig) => void\n}\n\nexport interface GroupSettingsFallbackProps extends GroupSettingsProps {\n requiredVersion?: string\n}\n\nexport const GroupSettingsFallback: FC<GroupSettingsFallbackProps> = ({\n requiredVersion,\n fields,\n}) => (\n <TableSettingsFallback feature={'groupAttributes'} requiredVersion={requiredVersion}>\n {fields.map((field) => (\n <FieldItem key={field.value}>\n <FieldButton variant=\"text\" icon={field.icon}>\n {field.label}\n <Icon icon={'bolt'} style={{ marginLeft: 'auto' }} />\n </FieldButton>\n </FieldItem>\n ))}\n </TableSettingsFallback>\n)\n"],"names":["jsx","jsxs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAOzB,MAAM,cAAc,OAAO,MAAM;AAAA;AAAA;AAAA;AAsB1B,MAAM,wBAAwD,CAAC;AAAA,EACpE;AAAA,EACA;AACF,4CACG,uBAAsB,EAAA,SAAS,mBAAmB,iBAChD,iBAAO,IAAI,CAAC,UACXA,kCAAAA,IAAC,aACC,UAACC,uCAAA,aAAA,EAAY,SAAQ,QAAO,MAAM,MAAM,MACrC,UAAA;AAAA,EAAM,MAAA;AAAA,EACPD,sCAAC,QAAK,MAAM,QAAQ,OAAO,EAAE,YAAY,SAAU,CAAA;AAAA,EAAA,CACrD,EAJc,GAAA,MAAM,KAKtB,CACD,EACH,CAAA;"}
1
+ {"version":3,"file":"GroupSettingsFallback.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/components/GroupSettingsFallback.tsx"],"sourcesContent":["import { SettingsPanelItem, TableSettingsFallback } from '../../../components'\nimport { FC } from 'react'\nimport { ColumnSettingsContextType } from '../context'\nimport styled from 'styled-components'\nimport { Button, Icon } from '@ynput/ayon-react-components'\n\nconst FieldItem = styled.li`\n display: flex;\n align-items: center;\n padding: 0;\n margin: 0;\n`\n\nconst FieldButton = styled(Button)`\n width: 100%;\n justify-content: start;\n`\n\nexport type GroupByConfig = {\n showEmpty?: boolean\n}\n\nexport interface GroupSettingsProps {\n fields: SettingsPanelItem[]\n config?: GroupByConfig\n onChange?: ColumnSettingsContextType['updateGroupBy']\n groupBy?: ColumnSettingsContextType['groupBy']\n updateGroupBy?: ColumnSettingsContextType['updateGroupBy']\n onConfigChange?: (config: GroupByConfig) => void\n}\n\nexport interface GroupSettingsFallbackProps extends GroupSettingsProps {\n requiredVersion?: string\n}\n\nexport const GroupSettingsFallback: FC<GroupSettingsFallbackProps> = ({\n requiredVersion,\n fields,\n}) => (\n <TableSettingsFallback feature={'groupAttributes'} requiredVersion={requiredVersion}>\n {fields.map((field) => (\n <FieldItem key={field.value}>\n <FieldButton variant=\"text\" icon={field.icon}>\n {field.label}\n <Icon icon={'bolt'} style={{ marginLeft: 'auto' }} />\n </FieldButton>\n </FieldItem>\n ))}\n </TableSettingsFallback>\n)\n"],"names":["jsx","jsxs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAOzB,MAAM,cAAc,OAAO,MAAM;AAAA;AAAA;AAAA;AAsB1B,MAAM,wBAAwD,CAAC;AAAA,EACpE;AAAA,EACA;AACF,4CACG,uBAAsB,EAAA,SAAS,mBAAmB,iBAChD,iBAAO,IAAI,CAAC,UACXA,kCAAAA,IAAC,aACC,UAACC,uCAAA,aAAA,EAAY,SAAQ,QAAO,MAAM,MAAM,MACrC,UAAA;AAAA,EAAM,MAAA;AAAA,EACPD,sCAAC,QAAK,MAAM,QAAQ,OAAO,EAAE,YAAY,SAAU,CAAA;AAAA,EAAA,CACrD,EAJc,GAAA,MAAM,KAKtB,CACD,EACH,CAAA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnSettingsContext.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsContext.tsx"],"sourcesContent":["import React, { createContext, useContext } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n} from '@tanstack/react-table'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\n\nexport interface TableGroupBy {\n desc: boolean\n id: string\n}\n\nexport type ColumnsConfig = {\n columnVisibility: VisibilityState\n columnOrder: ColumnOrderState\n columnPinning: ColumnPinningState\n columnSizing: ColumnSizingState\n groupBy?: TableGroupBy\n groupByConfig?: {\n showEmpty?: boolean\n }\n}\n\nexport interface ColumnSettingsContextType {\n // Column Visibility\n columnVisibility: VisibilityState\n setColumnVisibility: (columnVisibility: VisibilityState) => void\n updateColumnVisibility: (columnVisibility: VisibilityState) => void\n columnVisibilityUpdater: OnChangeFn<VisibilityState>\n\n // Column Pinning\n columnPinning: ColumnPinningState\n setColumnPinning: (columnPinning: ColumnPinningState) => void\n updateColumnPinning: (columnPinning: ColumnPinningState) => void\n columnPinningUpdater: OnChangeFn<ColumnPinningState>\n\n // Column Order\n columnOrder: ColumnOrderState\n setColumnOrder: (columnOrder: ColumnOrderState) => void\n updateColumnOrder: (columnOrder: ColumnOrderState) => void\n columnOrderUpdater: OnChangeFn<ColumnOrderState>\n\n // Column Sizing\n columnSizing: ColumnSizingState\n setColumnSizing: (columnSizing: ColumnSizingState) => void\n columnSizingUpdater: OnChangeFn<ColumnSizingState>\n\n // groupBy\n groupBy?: TableGroupBy\n updateGroupBy: (groupBy: TableGroupBy | undefined) => void\n groupByConfig: GroupByConfig\n updateGroupByConfig: (config: GroupByConfig) => void\n\n // Global change\n setColumnsConfig: (config: ColumnsConfig) => void\n}\n\nexport const ColumnSettingsContext = createContext<ColumnSettingsContextType | undefined>(undefined)\n\nexport const useColumnSettingsContext = (): ColumnSettingsContextType => {\n const context = useContext(ColumnSettingsContext)\n if (!context) {\n throw new Error('useColumnSettingsContext must be used within a ColumnSettingsProvider')\n }\n return context\n}\n"],"names":["createContext","useContext"],"mappings":";;;AA4Da,MAAA,wBAAwBA,oBAAqD,MAAS;AAE5F,MAAM,2BAA2B,MAAiC;AACjE,QAAA,UAAUC,iBAAW,qBAAqB;AAChD,MAAI,CAAC,SAAS;AACN,UAAA,IAAI,MAAM,uEAAuE;AAAA,EAAA;AAElF,SAAA;AACT;;;"}
1
+ {"version":3,"file":"ColumnSettingsContext.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsContext.tsx"],"sourcesContent":["import React, { createContext, useContext } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\n\nexport interface TableGroupBy {\n desc: boolean\n id: string\n}\n\nexport type ColumnsConfig = {\n columnVisibility: VisibilityState\n columnOrder: ColumnOrderState\n columnPinning: ColumnPinningState\n columnSizing: ColumnSizingState\n sorting?: SortingState\n groupBy?: TableGroupBy\n groupByConfig?: {\n showEmpty?: boolean\n }\n}\n\nexport interface ColumnSettingsContextType {\n // Column Visibility\n columnVisibility: VisibilityState\n setColumnVisibility: (columnVisibility: VisibilityState, allColumnIds?: string[]) => void\n updateColumnVisibility: (columnVisibility: VisibilityState) => void\n columnVisibilityUpdater: OnChangeFn<VisibilityState>\n\n // Column Pinning\n columnPinning: ColumnPinningState\n setColumnPinning: (columnPinning: ColumnPinningState, allColumnIds?: string[]) => void\n updateColumnPinning: (columnPinning: ColumnPinningState) => void\n columnPinningUpdater: OnChangeFn<ColumnPinningState>\n\n // Column Order\n columnOrder: ColumnOrderState\n setColumnOrder: (columnOrder: ColumnOrderState, allColumnIds?: string[]) => void\n updateColumnOrder: (columnOrder: ColumnOrderState) => void\n columnOrderUpdater: OnChangeFn<ColumnOrderState>\n\n // Column Sizing\n columnSizing: ColumnSizingState\n setColumnSizing: (columnSizing: ColumnSizingState, allColumnIds?: string[]) => void\n columnSizingUpdater: OnChangeFn<ColumnSizingState>\n\n // Sorting\n sorting: SortingState\n updateSorting: (sorting: SortingState) => void\n sortingUpdater: OnChangeFn<SortingState>\n\n // Unified updaters with all column IDs support\n createUpdaterWithAllColumns: {\n columnVisibility: (allColumnIds: string[]) => OnChangeFn<VisibilityState>\n columnPinning: (allColumnIds: string[]) => OnChangeFn<ColumnPinningState>\n columnOrder: (allColumnIds: string[]) => OnChangeFn<ColumnOrderState>\n columnSizing: (allColumnIds: string[]) => OnChangeFn<ColumnSizingState>\n }\n\n // groupBy\n groupBy?: TableGroupBy\n updateGroupBy: (groupBy: TableGroupBy | undefined) => void\n groupByConfig: GroupByConfig\n updateGroupByConfig: (config: GroupByConfig) => void\n\n // Global change\n setColumnsConfig: (config: ColumnsConfig) => void\n}\n\nexport const ColumnSettingsContext = createContext<ColumnSettingsContextType | undefined>(undefined)\n\nexport const useColumnSettingsContext = (): ColumnSettingsContextType => {\n const context = useContext(ColumnSettingsContext)\n if (!context) {\n throw new Error('useColumnSettingsContext must be used within a ColumnSettingsProvider')\n }\n return context\n}\n"],"names":["createContext","useContext"],"mappings":";;;AA2Ea,MAAA,wBAAwBA,oBAAqD,MAAS;AAE5F,MAAM,2BAA2B,MAAiC;AACjE,QAAA,UAAUC,iBAAW,qBAAqB;AAChD,MAAI,CAAC,SAAS;AACN,UAAA,IAAI,MAAM,uEAAuE;AAAA,EAAA;AAElF,SAAA;AACT;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnSettingsContext.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsContext.tsx"],"sourcesContent":["import React, { createContext, useContext } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n} from '@tanstack/react-table'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\n\nexport interface TableGroupBy {\n desc: boolean\n id: string\n}\n\nexport type ColumnsConfig = {\n columnVisibility: VisibilityState\n columnOrder: ColumnOrderState\n columnPinning: ColumnPinningState\n columnSizing: ColumnSizingState\n groupBy?: TableGroupBy\n groupByConfig?: {\n showEmpty?: boolean\n }\n}\n\nexport interface ColumnSettingsContextType {\n // Column Visibility\n columnVisibility: VisibilityState\n setColumnVisibility: (columnVisibility: VisibilityState) => void\n updateColumnVisibility: (columnVisibility: VisibilityState) => void\n columnVisibilityUpdater: OnChangeFn<VisibilityState>\n\n // Column Pinning\n columnPinning: ColumnPinningState\n setColumnPinning: (columnPinning: ColumnPinningState) => void\n updateColumnPinning: (columnPinning: ColumnPinningState) => void\n columnPinningUpdater: OnChangeFn<ColumnPinningState>\n\n // Column Order\n columnOrder: ColumnOrderState\n setColumnOrder: (columnOrder: ColumnOrderState) => void\n updateColumnOrder: (columnOrder: ColumnOrderState) => void\n columnOrderUpdater: OnChangeFn<ColumnOrderState>\n\n // Column Sizing\n columnSizing: ColumnSizingState\n setColumnSizing: (columnSizing: ColumnSizingState) => void\n columnSizingUpdater: OnChangeFn<ColumnSizingState>\n\n // groupBy\n groupBy?: TableGroupBy\n updateGroupBy: (groupBy: TableGroupBy | undefined) => void\n groupByConfig: GroupByConfig\n updateGroupByConfig: (config: GroupByConfig) => void\n\n // Global change\n setColumnsConfig: (config: ColumnsConfig) => void\n}\n\nexport const ColumnSettingsContext = createContext<ColumnSettingsContextType | undefined>(undefined)\n\nexport const useColumnSettingsContext = (): ColumnSettingsContextType => {\n const context = useContext(ColumnSettingsContext)\n if (!context) {\n throw new Error('useColumnSettingsContext must be used within a ColumnSettingsProvider')\n }\n return context\n}\n"],"names":[],"mappings":";AA4Da,MAAA,wBAAwB,cAAqD,MAAS;AAE5F,MAAM,2BAA2B,MAAiC;AACjE,QAAA,UAAU,WAAW,qBAAqB;AAChD,MAAI,CAAC,SAAS;AACN,UAAA,IAAI,MAAM,uEAAuE;AAAA,EAAA;AAElF,SAAA;AACT;"}
1
+ {"version":3,"file":"ColumnSettingsContext.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsContext.tsx"],"sourcesContent":["import React, { createContext, useContext } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\n\nexport interface TableGroupBy {\n desc: boolean\n id: string\n}\n\nexport type ColumnsConfig = {\n columnVisibility: VisibilityState\n columnOrder: ColumnOrderState\n columnPinning: ColumnPinningState\n columnSizing: ColumnSizingState\n sorting?: SortingState\n groupBy?: TableGroupBy\n groupByConfig?: {\n showEmpty?: boolean\n }\n}\n\nexport interface ColumnSettingsContextType {\n // Column Visibility\n columnVisibility: VisibilityState\n setColumnVisibility: (columnVisibility: VisibilityState, allColumnIds?: string[]) => void\n updateColumnVisibility: (columnVisibility: VisibilityState) => void\n columnVisibilityUpdater: OnChangeFn<VisibilityState>\n\n // Column Pinning\n columnPinning: ColumnPinningState\n setColumnPinning: (columnPinning: ColumnPinningState, allColumnIds?: string[]) => void\n updateColumnPinning: (columnPinning: ColumnPinningState) => void\n columnPinningUpdater: OnChangeFn<ColumnPinningState>\n\n // Column Order\n columnOrder: ColumnOrderState\n setColumnOrder: (columnOrder: ColumnOrderState, allColumnIds?: string[]) => void\n updateColumnOrder: (columnOrder: ColumnOrderState) => void\n columnOrderUpdater: OnChangeFn<ColumnOrderState>\n\n // Column Sizing\n columnSizing: ColumnSizingState\n setColumnSizing: (columnSizing: ColumnSizingState, allColumnIds?: string[]) => void\n columnSizingUpdater: OnChangeFn<ColumnSizingState>\n\n // Sorting\n sorting: SortingState\n updateSorting: (sorting: SortingState) => void\n sortingUpdater: OnChangeFn<SortingState>\n\n // Unified updaters with all column IDs support\n createUpdaterWithAllColumns: {\n columnVisibility: (allColumnIds: string[]) => OnChangeFn<VisibilityState>\n columnPinning: (allColumnIds: string[]) => OnChangeFn<ColumnPinningState>\n columnOrder: (allColumnIds: string[]) => OnChangeFn<ColumnOrderState>\n columnSizing: (allColumnIds: string[]) => OnChangeFn<ColumnSizingState>\n }\n\n // groupBy\n groupBy?: TableGroupBy\n updateGroupBy: (groupBy: TableGroupBy | undefined) => void\n groupByConfig: GroupByConfig\n updateGroupByConfig: (config: GroupByConfig) => void\n\n // Global change\n setColumnsConfig: (config: ColumnsConfig) => void\n}\n\nexport const ColumnSettingsContext = createContext<ColumnSettingsContextType | undefined>(undefined)\n\nexport const useColumnSettingsContext = (): ColumnSettingsContextType => {\n const context = useContext(ColumnSettingsContext)\n if (!context) {\n throw new Error('useColumnSettingsContext must be used within a ColumnSettingsProvider')\n }\n return context\n}\n"],"names":[],"mappings":";AA2Ea,MAAA,wBAAwB,cAAqD,MAAS;AAE5F,MAAM,2BAA2B,MAAiC;AACjE,QAAA,UAAU,WAAW,qBAAqB;AAChD,MAAI,CAAC,SAAS;AACN,UAAA,IAAI,MAAM,uEAAuE;AAAA,EAAA;AAElF,SAAA;AACT;"}
@@ -18,9 +18,11 @@ const ColumnSettingsProvider = ({
18
18
  columnPinning: columnPinningInit = {},
19
19
  columnVisibility: columnVisibilityInit = {},
20
20
  columnSizing: columnsSizingExternal = {},
21
+ sorting: sortingInit = [],
21
22
  groupBy,
22
23
  groupByConfig = {}
23
24
  } = columnsConfig;
25
+ const sorting = [...sortingInit];
24
26
  const columnOrder = [...columnOrderInit];
25
27
  const columnPinning = { ...columnPinningInit };
26
28
  const defaultOrder = ["thumbnail", "name", "subType", "status", "tags"];
@@ -57,37 +59,49 @@ const ColumnSettingsProvider = ({
57
59
  if (groupBy && !columnVisibility.name) {
58
60
  columnVisibility.name = true;
59
61
  }
60
- const setColumnVisibility = (visibility) => {
61
- onChange({
62
- ...columnsConfig,
63
- columnVisibility: visibility
64
- });
62
+ const setColumnVisibility = (visibility, allColumnIds) => {
63
+ onChange(
64
+ {
65
+ ...columnsConfig,
66
+ columnVisibility: visibility
67
+ },
68
+ allColumnIds
69
+ );
65
70
  };
66
- const setColumnOrder = (order) => {
67
- onChange({
68
- ...columnsConfig,
69
- columnOrder: order
70
- });
71
+ const setColumnOrder = (order, allColumnIds) => {
72
+ onChange(
73
+ {
74
+ ...columnsConfig,
75
+ columnOrder: order
76
+ },
77
+ allColumnIds
78
+ );
71
79
  };
72
- const setColumnPinning = (pinning) => {
73
- onChange({
74
- ...columnsConfig,
75
- columnPinning: pinning
76
- });
80
+ const setColumnPinning = (pinning, allColumnIds) => {
81
+ onChange(
82
+ {
83
+ ...columnsConfig,
84
+ columnPinning: pinning
85
+ },
86
+ allColumnIds
87
+ );
77
88
  };
78
89
  const [internalColumnSizing, setInternalColumnSizing] = React.useState(null);
79
90
  const columnSizing = internalColumnSizing || columnsSizingExternal;
80
91
  const resizingTimeoutRef = React.useRef(null);
81
- const setColumnSizing = (sizing) => {
92
+ const setColumnSizing = (sizing, allColumnIds) => {
82
93
  setInternalColumnSizing(sizing);
83
94
  if (resizingTimeoutRef.current) {
84
95
  clearTimeout(resizingTimeoutRef.current);
85
96
  }
86
97
  resizingTimeoutRef.current = setTimeout(() => {
87
- onChange({
88
- ...columnsConfig,
89
- columnSizing: sizing
90
- });
98
+ onChange(
99
+ {
100
+ ...columnsConfig,
101
+ columnSizing: sizing
102
+ },
103
+ allColumnIds
104
+ );
91
105
  setInternalColumnSizing(null);
92
106
  }, 500);
93
107
  };
@@ -142,6 +156,12 @@ const ColumnSettingsProvider = ({
142
156
  columnPinning: pinning
143
157
  });
144
158
  };
159
+ const updateSorting = (sortingState) => {
160
+ onChange({
161
+ ...columnsConfig,
162
+ sorting: sortingState
163
+ });
164
+ };
145
165
  const updateGroupBy = (groupBy2) => {
146
166
  onChange({
147
167
  ...columnsConfig,
@@ -173,6 +193,28 @@ const ColumnSettingsProvider = ({
173
193
  const newSizing = reactTable.functionalUpdate(sizingUpdater, columnSizing);
174
194
  setColumnSizing(newSizing);
175
195
  };
196
+ const sortingUpdater = (sortingUpdater2) => {
197
+ const newSorting = reactTable.functionalUpdate(sortingUpdater2, sorting);
198
+ updateSorting(newSorting);
199
+ };
200
+ const createUpdaterWithAllColumns = {
201
+ columnVisibility: (allColumnIds) => (updater) => {
202
+ const newVisibility = reactTable.functionalUpdate(updater, columnVisibility);
203
+ setColumnVisibility(newVisibility, allColumnIds);
204
+ },
205
+ columnPinning: (allColumnIds) => (updater) => {
206
+ const newPinning = reactTable.functionalUpdate(updater, columnPinning);
207
+ setColumnPinning(newPinning, allColumnIds);
208
+ },
209
+ columnOrder: (allColumnIds) => (updater) => {
210
+ const newOrder = reactTable.functionalUpdate(updater, columnOrder);
211
+ setColumnOrder(newOrder, allColumnIds);
212
+ },
213
+ columnSizing: (allColumnIds) => (updater) => {
214
+ const newSizing = reactTable.functionalUpdate(updater, columnSizing);
215
+ setColumnSizing(newSizing, allColumnIds);
216
+ }
217
+ };
176
218
  return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
177
219
  ColumnSettingsContext.ColumnSettingsContext.Provider,
178
220
  {
@@ -196,13 +238,19 @@ const ColumnSettingsProvider = ({
196
238
  columnSizing,
197
239
  setColumnSizing,
198
240
  columnSizingUpdater,
241
+ // sorting
242
+ sorting,
243
+ updateSorting,
244
+ sortingUpdater,
245
+ // unified updaters
246
+ createUpdaterWithAllColumns,
199
247
  // group by
200
248
  groupBy,
201
249
  updateGroupBy,
202
250
  groupByConfig,
203
251
  updateGroupByConfig,
204
252
  // global change
205
- setColumnsConfig: onChange
253
+ setColumnsConfig: (config2) => onChange(config2)
206
254
  },
207
255
  children
208
256
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnSettingsProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsProvider.tsx"],"sourcesContent":["import React, { ReactNode, useState } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n functionalUpdate,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n} from '@tanstack/react-table'\nimport { ROW_SELECTION_COLUMN_ID } from './SelectionCellsContext'\nimport { DRAG_HANDLE_COLUMN_ID } from '../ProjectTreeTable'\nimport { ColumnsConfig, ColumnSettingsContext, TableGroupBy } from './ColumnSettingsContext'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\n\ninterface ColumnSettingsProviderProps {\n children: ReactNode\n config?: Record<string, any>\n onChange: (config: ColumnsConfig) => void\n}\n\nexport const ColumnSettingsProvider: React.FC<ColumnSettingsProviderProps> = ({\n children,\n config,\n onChange,\n}) => {\n const columnsConfig = config as ColumnsConfig\n const {\n columnOrder: columnOrderInit = [],\n columnPinning: columnPinningInit = {},\n columnVisibility: columnVisibilityInit = {},\n columnSizing: columnsSizingExternal = {},\n groupBy,\n groupByConfig = {},\n } = columnsConfig\n\n const columnOrder = [...columnOrderInit]\n const columnPinning = { ...columnPinningInit }\n const defaultOrder = ['thumbnail', 'name', 'subType', 'status', 'tags']\n // for each default column, if it is not in the columnOrder, find the index of the column before it, if none, add to beginning\n defaultOrder.forEach((col, i) => {\n if (!columnOrder.includes(col)) {\n const defaultBefore = defaultOrder[i - 1]\n const columnAfter = defaultOrder[i + 1]\n if (!defaultBefore || !columnOrder.includes(defaultBefore)) {\n // add to beginning\n columnOrder.unshift(col)\n } else {\n // find the index of that column in the columnOrder\n const index = columnOrder.indexOf(defaultBefore)\n // add the item after that column\n columnOrder.splice(index + 1, 0, col)\n }\n if (columnAfter && columnPinning?.left && columnPinning?.left.includes(columnAfter)) {\n // pin the column\n columnPinning.left = [col, ...(columnPinning?.left || [])]\n }\n }\n })\n\n // if we are in grouping mode, always pin the name column\n // and ensure it is first in column order\n if (groupBy) {\n // ensure name column is pinned and first in pinning order\n if (!columnPinning.left?.includes('name')) {\n columnPinning.left = ['name', ...(columnPinning?.left || [])]\n } else {\n // name is already pinned, but ensure it's first\n const filteredPinned = columnPinning.left.filter((col) => col !== 'name')\n columnPinning.left = ['name', ...filteredPinned]\n }\n\n // ensure name is first in column order\n if (columnOrder.includes('name')) {\n // remove name from its current position\n const nameIndex = columnOrder.indexOf('name')\n columnOrder.splice(nameIndex, 1)\n }\n // add name to the beginning\n columnOrder.unshift('name')\n }\n\n // add drag handle and selection columns to the beginning of the column order\n columnOrder.unshift(...[DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n\n // VISIBILITY STATE MUTATIONS\n const columnVisibility = { ...columnVisibilityInit }\n // if we are in grouping mode, name column must always be visible\n if (groupBy && !columnVisibility.name) {\n columnVisibility.name = true\n }\n\n // DIRECT STATE UPDATES - no side effects\n const setColumnVisibility = (visibility: VisibilityState) => {\n onChange({\n ...columnsConfig,\n columnVisibility: visibility,\n })\n }\n\n const setColumnOrder = (order: ColumnOrderState) => {\n onChange({\n ...columnsConfig,\n columnOrder: order,\n })\n }\n\n const setColumnPinning = (pinning: ColumnPinningState) => {\n onChange({\n ...columnsConfig,\n columnPinning: pinning,\n })\n }\n\n const [internalColumnSizing, setInternalColumnSizing] = useState<ColumnSizingState | null>(null)\n\n // use internalColumnSizing if it exists, otherwise use the external column sizing\n const columnSizing = internalColumnSizing || columnsSizingExternal\n\n const resizingTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n\n const setColumnSizing = (sizing: ColumnSizingState) => {\n setInternalColumnSizing(sizing)\n\n // if there is a timeout already set, clear it\n if (resizingTimeoutRef.current) {\n clearTimeout(resizingTimeoutRef.current)\n }\n // set a timeout that tracks if the column sizing has finished\n resizingTimeoutRef.current = setTimeout(() => {\n // we have finished resizing now!\n // update the external column sizing\n onChange({\n ...columnsConfig,\n columnSizing: sizing,\n })\n // reset the internal column sizing to not be used anymore\n setInternalColumnSizing(null)\n }, 500)\n }\n\n // SIDE EFFECT UTILITIES\n const togglePinningOnVisibilityChange = (visibility: VisibilityState) => {\n // ensure that any columns that are now hidden are removed from the pinning\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const hiddenColumns = Object.keys(visibility).filter((col) => visibility[col] === false)\n const newPinnedColumns = pinnedColumns.filter((col) => !hiddenColumns.includes(col))\n\n return {\n ...newPinning,\n left: newPinnedColumns,\n }\n }\n\n const updatePinningOrderOnOrderChange = (order: ColumnOrderState) => {\n // ensure that the column pinning is in the order of the column order\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const pinnedColumnsOrder = order.filter((col) => pinnedColumns.includes(col))\n\n return {\n ...newPinning,\n left: pinnedColumnsOrder,\n }\n }\n\n const updateOrderOnPinningChange = (pinning: ColumnPinningState) => {\n // we resort the column order based on the pinning\n return [...columnOrder].sort((a, b) => {\n const aPinned = pinning.left?.includes(a) ? 1 : 0\n const bPinned = pinning.left?.includes(b) ? 1 : 0\n return bPinned - aPinned\n })\n }\n\n // UPDATE METHODS WITH SIDE EFFECTS\n const updateColumnVisibility = (visibility: VisibilityState) => {\n const newPinning = togglePinningOnVisibilityChange(visibility)\n onChange({\n ...columnsConfig,\n columnVisibility: visibility,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnOrder = (order: ColumnOrderState) => {\n const newPinning = updatePinningOrderOnOrderChange(order)\n onChange({\n ...columnsConfig,\n columnOrder: order,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnPinning = (pinning: ColumnPinningState) => {\n const newOrder = updateOrderOnPinningChange(pinning)\n onChange({\n ...columnsConfig,\n columnOrder: newOrder,\n columnPinning: pinning,\n })\n }\n\n const updateGroupBy = (groupBy: TableGroupBy | undefined) => {\n onChange({\n ...columnsConfig,\n groupBy: groupBy,\n })\n }\n\n const updateGroupByConfig = (config: GroupByConfig) => {\n onChange({\n ...columnsConfig,\n groupByConfig: {\n ...groupByConfig,\n ...config,\n },\n })\n }\n\n // UPDATER FUNCTIONS\n const columnVisibilityUpdater: OnChangeFn<VisibilityState> = (columnVisibilityUpdater) => {\n const newVisibility = functionalUpdate(columnVisibilityUpdater, columnVisibility)\n updateColumnVisibility(newVisibility)\n }\n\n const columnOrderUpdater: OnChangeFn<ColumnOrderState> = (columnOrderUpdater) => {\n const newOrder = functionalUpdate(columnOrderUpdater, columnOrder)\n updateColumnOrder(newOrder)\n }\n\n const columnPinningUpdater: OnChangeFn<ColumnPinningState> = (columnPinningUpdater) => {\n const newPinning = functionalUpdate(columnPinningUpdater, columnPinning)\n updateColumnPinning(newPinning)\n }\n\n const columnSizingUpdater: OnChangeFn<ColumnSizingState> = (sizingUpdater) => {\n const newSizing = functionalUpdate(sizingUpdater, columnSizing)\n setColumnSizing(newSizing)\n }\n\n return (\n <ColumnSettingsContext.Provider\n value={{\n // column visibility\n columnVisibility,\n setColumnVisibility,\n updateColumnVisibility,\n columnVisibilityUpdater,\n // column pinning\n columnPinning,\n setColumnPinning,\n updateColumnPinning,\n columnPinningUpdater,\n // column order\n columnOrder,\n setColumnOrder,\n updateColumnOrder,\n columnOrderUpdater,\n // column sizing\n columnSizing,\n setColumnSizing,\n columnSizingUpdater,\n // group by\n groupBy,\n updateGroupBy,\n groupByConfig,\n updateGroupByConfig,\n\n // global change\n setColumnsConfig: onChange,\n }}\n >\n {children}\n </ColumnSettingsContext.Provider>\n )\n}\n"],"names":["DRAG_HANDLE_COLUMN_ID","ROW_SELECTION_COLUMN_ID","useState","_a","groupBy","config","columnVisibilityUpdater","functionalUpdate","columnOrderUpdater","columnPinningUpdater","jsx","ColumnSettingsContext"],"mappings":"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"}
1
+ {"version":3,"file":"ColumnSettingsProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsProvider.tsx"],"sourcesContent":["import React, { ReactNode, useState } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n functionalUpdate,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { ROW_SELECTION_COLUMN_ID } from './SelectionCellsContext'\nimport { DRAG_HANDLE_COLUMN_ID } from '../ProjectTreeTable'\nimport { ColumnsConfig, ColumnSettingsContext, TableGroupBy } from './ColumnSettingsContext'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\n\ninterface ColumnSettingsProviderProps {\n children: ReactNode\n config?: Record<string, any>\n onChange: (config: ColumnsConfig, allColumnIds?: string[]) => void\n}\n\nexport const ColumnSettingsProvider: React.FC<ColumnSettingsProviderProps> = ({\n children,\n config,\n onChange,\n}) => {\n const columnsConfig = config as ColumnsConfig\n const {\n columnOrder: columnOrderInit = [],\n columnPinning: columnPinningInit = {},\n columnVisibility: columnVisibilityInit = {},\n columnSizing: columnsSizingExternal = {},\n sorting: sortingInit = [],\n groupBy,\n groupByConfig = {},\n } = columnsConfig\n\n const sorting = [...sortingInit]\n const columnOrder = [...columnOrderInit]\n const columnPinning = { ...columnPinningInit }\n const defaultOrder = ['thumbnail', 'name', 'subType', 'status', 'tags']\n // for each default column, if it is not in the columnOrder, find the index of the column before it, if none, add to beginning\n defaultOrder.forEach((col, i) => {\n if (!columnOrder.includes(col)) {\n const defaultBefore = defaultOrder[i - 1]\n const columnAfter = defaultOrder[i + 1]\n if (!defaultBefore || !columnOrder.includes(defaultBefore)) {\n // add to beginning\n columnOrder.unshift(col)\n } else {\n // find the index of that column in the columnOrder\n const index = columnOrder.indexOf(defaultBefore)\n // add the item after that column\n columnOrder.splice(index + 1, 0, col)\n }\n if (columnAfter && columnPinning?.left && columnPinning?.left.includes(columnAfter)) {\n // pin the column\n columnPinning.left = [col, ...(columnPinning?.left || [])]\n }\n }\n })\n\n // if we are in grouping mode, always pin the name column\n // and ensure it is first in column order\n if (groupBy) {\n // ensure name column is pinned and first in pinning order\n if (!columnPinning.left?.includes('name')) {\n columnPinning.left = ['name', ...(columnPinning?.left || [])]\n } else {\n // name is already pinned, but ensure it's first\n const filteredPinned = columnPinning.left.filter((col) => col !== 'name')\n columnPinning.left = ['name', ...filteredPinned]\n }\n\n // ensure name is first in column order\n if (columnOrder.includes('name')) {\n // remove name from its current position\n const nameIndex = columnOrder.indexOf('name')\n columnOrder.splice(nameIndex, 1)\n }\n // add name to the beginning\n columnOrder.unshift('name')\n }\n\n // add drag handle and selection columns to the beginning of the column order\n columnOrder.unshift(...[DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n\n // VISIBILITY STATE MUTATIONS\n const columnVisibility = { ...columnVisibilityInit }\n // if we are in grouping mode, name column must always be visible\n if (groupBy && !columnVisibility.name) {\n columnVisibility.name = true\n }\n\n // DIRECT STATE UPDATES - no side effects\n const setColumnVisibility = (visibility: VisibilityState, allColumnIds?: string[]) => {\n onChange(\n {\n ...columnsConfig,\n columnVisibility: visibility,\n },\n allColumnIds,\n )\n }\n\n const setColumnOrder = (order: ColumnOrderState, allColumnIds?: string[]) => {\n onChange(\n {\n ...columnsConfig,\n columnOrder: order,\n },\n allColumnIds,\n )\n }\n\n const setColumnPinning = (pinning: ColumnPinningState, allColumnIds?: string[]) => {\n onChange(\n {\n ...columnsConfig,\n columnPinning: pinning,\n },\n allColumnIds,\n )\n }\n\n const [internalColumnSizing, setInternalColumnSizing] = useState<ColumnSizingState | null>(null)\n\n // use internalColumnSizing if it exists, otherwise use the external column sizing\n const columnSizing = internalColumnSizing || columnsSizingExternal\n\n const resizingTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n\n const setColumnSizing = (sizing: ColumnSizingState, allColumnIds?: string[]) => {\n setInternalColumnSizing(sizing)\n\n // if there is a timeout already set, clear it\n if (resizingTimeoutRef.current) {\n clearTimeout(resizingTimeoutRef.current)\n }\n // set a timeout that tracks if the column sizing has finished\n resizingTimeoutRef.current = setTimeout(() => {\n // we have finished resizing now!\n // update the external column sizing\n onChange(\n {\n ...columnsConfig,\n columnSizing: sizing,\n },\n allColumnIds,\n )\n // reset the internal column sizing to not be used anymore\n setInternalColumnSizing(null)\n }, 500)\n }\n\n // SIDE EFFECT UTILITIES\n const togglePinningOnVisibilityChange = (visibility: VisibilityState) => {\n // ensure that any columns that are now hidden are removed from the pinning\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const hiddenColumns = Object.keys(visibility).filter((col) => visibility[col] === false)\n const newPinnedColumns = pinnedColumns.filter((col) => !hiddenColumns.includes(col))\n\n return {\n ...newPinning,\n left: newPinnedColumns,\n }\n }\n\n const updatePinningOrderOnOrderChange = (order: ColumnOrderState) => {\n // ensure that the column pinning is in the order of the column order\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const pinnedColumnsOrder = order.filter((col) => pinnedColumns.includes(col))\n\n return {\n ...newPinning,\n left: pinnedColumnsOrder,\n }\n }\n\n const updateOrderOnPinningChange = (pinning: ColumnPinningState) => {\n // we resort the column order based on the pinning\n return [...columnOrder].sort((a, b) => {\n const aPinned = pinning.left?.includes(a) ? 1 : 0\n const bPinned = pinning.left?.includes(b) ? 1 : 0\n return bPinned - aPinned\n })\n }\n\n // UPDATE METHODS WITH SIDE EFFECTS\n const updateColumnVisibility = (visibility: VisibilityState) => {\n const newPinning = togglePinningOnVisibilityChange(visibility)\n onChange({\n ...columnsConfig,\n columnVisibility: visibility,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnOrder = (order: ColumnOrderState) => {\n const newPinning = updatePinningOrderOnOrderChange(order)\n onChange({\n ...columnsConfig,\n columnOrder: order,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnPinning = (pinning: ColumnPinningState) => {\n const newOrder = updateOrderOnPinningChange(pinning)\n onChange({\n ...columnsConfig,\n columnOrder: newOrder,\n columnPinning: pinning,\n })\n }\n\n const updateSorting = (sortingState: SortingState) => {\n onChange({\n ...columnsConfig,\n sorting: sortingState,\n })\n }\n\n const updateGroupBy = (groupBy: TableGroupBy | undefined) => {\n onChange({\n ...columnsConfig,\n groupBy: groupBy,\n })\n }\n\n const updateGroupByConfig = (config: GroupByConfig) => {\n onChange({\n ...columnsConfig,\n groupByConfig: {\n ...groupByConfig,\n ...config,\n },\n })\n }\n\n // UPDATER FUNCTIONS\n const columnVisibilityUpdater: OnChangeFn<VisibilityState> = (columnVisibilityUpdater) => {\n const newVisibility = functionalUpdate(columnVisibilityUpdater, columnVisibility)\n updateColumnVisibility(newVisibility)\n }\n\n const columnOrderUpdater: OnChangeFn<ColumnOrderState> = (columnOrderUpdater) => {\n const newOrder = functionalUpdate(columnOrderUpdater, columnOrder)\n updateColumnOrder(newOrder)\n }\n\n const columnPinningUpdater: OnChangeFn<ColumnPinningState> = (columnPinningUpdater) => {\n const newPinning = functionalUpdate(columnPinningUpdater, columnPinning)\n updateColumnPinning(newPinning)\n }\n\n const columnSizingUpdater: OnChangeFn<ColumnSizingState> = (sizingUpdater) => {\n const newSizing = functionalUpdate(sizingUpdater, columnSizing)\n setColumnSizing(newSizing)\n }\n\n const sortingUpdater: OnChangeFn<SortingState> = (sortingUpdater) => {\n const newSorting = functionalUpdate(sortingUpdater, sorting)\n updateSorting(newSorting)\n }\n\n // UNIFIED UPDATERS WITH ALL COLUMN IDS\n const createUpdaterWithAllColumns = {\n columnVisibility:\n (allColumnIds: string[]): OnChangeFn<VisibilityState> =>\n (updater) => {\n const newVisibility = functionalUpdate(updater, columnVisibility)\n setColumnVisibility(newVisibility, allColumnIds)\n },\n columnPinning:\n (allColumnIds: string[]): OnChangeFn<ColumnPinningState> =>\n (updater) => {\n const newPinning = functionalUpdate(updater, columnPinning)\n setColumnPinning(newPinning, allColumnIds)\n },\n columnOrder:\n (allColumnIds: string[]): OnChangeFn<ColumnOrderState> =>\n (updater) => {\n const newOrder = functionalUpdate(updater, columnOrder)\n setColumnOrder(newOrder, allColumnIds)\n },\n columnSizing:\n (allColumnIds: string[]): OnChangeFn<ColumnSizingState> =>\n (updater) => {\n const newSizing = functionalUpdate(updater, columnSizing)\n setColumnSizing(newSizing, allColumnIds)\n },\n }\n\n return (\n <ColumnSettingsContext.Provider\n value={{\n // column visibility\n columnVisibility,\n setColumnVisibility,\n updateColumnVisibility,\n columnVisibilityUpdater,\n // column pinning\n columnPinning,\n setColumnPinning,\n updateColumnPinning,\n columnPinningUpdater,\n // column order\n columnOrder,\n setColumnOrder,\n updateColumnOrder,\n columnOrderUpdater,\n // column sizing\n columnSizing,\n setColumnSizing,\n columnSizingUpdater,\n // sorting\n sorting,\n updateSorting,\n sortingUpdater,\n // unified updaters\n createUpdaterWithAllColumns,\n // group by\n groupBy,\n updateGroupBy,\n groupByConfig,\n updateGroupByConfig,\n\n // global change\n setColumnsConfig: (config: ColumnsConfig) => onChange(config),\n }}\n >\n {children}\n </ColumnSettingsContext.Provider>\n )\n}\n"],"names":["DRAG_HANDLE_COLUMN_ID","ROW_SELECTION_COLUMN_ID","useState","_a","groupBy","config","columnVisibilityUpdater","functionalUpdate","columnOrderUpdater","columnPinningUpdater","sortingUpdater","jsx","ColumnSettingsContext"],"mappings":"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"}