@ynput/ayon-frontend-shared 0.2.26 → 0.2.28

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 (367) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +25 -22
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/Views.cjs.js +1 -1
  5. package/dist/Views.cjs.js.map +1 -1
  6. package/dist/Views.es.js +13 -11
  7. package/dist/Views.es.js.map +1 -1
  8. package/dist/api.cjs.js +1 -1
  9. package/dist/api.es.js +153 -151
  10. package/dist/components.cjs.js +1 -1
  11. package/dist/components.es.js +62 -51
  12. package/dist/components.es.js.map +1 -1
  13. package/dist/index.cjs.js +1 -1
  14. package/dist/index.es.js +12 -6
  15. package/dist/index.es.js.map +1 -1
  16. package/dist/shared/src/api/generated/entityLists.cjs.js.map +1 -1
  17. package/dist/shared/src/api/generated/entityLists.es.js.map +1 -1
  18. package/dist/shared/src/api/generated/users.cjs.js.map +1 -1
  19. package/dist/shared/src/api/generated/users.es.js.map +1 -1
  20. package/dist/shared/src/api/generated/views.cjs.js.map +1 -1
  21. package/dist/shared/src/api/generated/views.es.js.map +1 -1
  22. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  23. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  24. package/dist/shared/src/api/queries/entityLists/getLists.es.js +142 -117
  25. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  26. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js +1 -1
  27. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
  28. package/dist/shared/src/api/queries/entityLists/updateLists.es.js +110 -95
  29. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
  30. package/dist/shared/src/api/queries/users/getUsers.cjs.js +1 -1
  31. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  32. package/dist/shared/src/api/queries/users/getUsers.es.js +21 -17
  33. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  34. package/dist/shared/src/components/AccessUser/AccessUser.cjs.js +2 -0
  35. package/dist/shared/src/components/AccessUser/AccessUser.cjs.js.map +1 -0
  36. package/dist/shared/src/components/AccessUser/AccessUser.es.js +33 -0
  37. package/dist/shared/src/components/AccessUser/AccessUser.es.js.map +1 -0
  38. package/dist/shared/src/components/AccessUser/AccessUser.styled.cjs.js +42 -0
  39. package/dist/shared/src/components/AccessUser/AccessUser.styled.cjs.js.map +1 -0
  40. package/dist/shared/src/components/AccessUser/AccessUser.styled.es.js +46 -0
  41. package/dist/shared/src/components/AccessUser/AccessUser.styled.es.js.map +1 -0
  42. package/dist/shared/src/components/DetailsMetaData/DetailsMetaData.cjs.js +34 -0
  43. package/dist/shared/src/components/DetailsMetaData/DetailsMetaData.cjs.js.map +1 -0
  44. package/dist/shared/src/components/DetailsMetaData/DetailsMetaData.es.js +46 -0
  45. package/dist/shared/src/components/DetailsMetaData/DetailsMetaData.es.js.map +1 -0
  46. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +20 -10
  47. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
  48. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +81 -67
  49. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
  50. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +3 -3
  51. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  52. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +59 -52
  53. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  54. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  55. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  56. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +5 -2
  57. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  58. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  59. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  60. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +5 -2
  61. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  62. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  63. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  64. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +5 -2
  65. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  66. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +2 -0
  67. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -0
  68. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +205 -0
  69. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -0
  70. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +2 -0
  71. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -0
  72. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +25 -0
  73. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -0
  74. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +3 -3
  75. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  76. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +5 -5
  77. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  78. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  79. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  80. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +5 -2
  81. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  82. package/dist/shared/src/components/Powerpack/RequiredPowerpackVersion.cjs.js +9 -0
  83. package/dist/shared/src/components/Powerpack/RequiredPowerpackVersion.cjs.js.map +1 -0
  84. package/dist/shared/src/components/Powerpack/RequiredPowerpackVersion.es.js +25 -0
  85. package/dist/shared/src/components/Powerpack/RequiredPowerpackVersion.es.js.map +1 -0
  86. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  87. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  88. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +7 -4
  89. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  90. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  91. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  92. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +18 -21
  93. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  94. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  95. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  96. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +5 -2
  97. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  98. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  99. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  100. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +6 -3
  101. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  102. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  103. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  104. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +5 -2
  105. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  106. package/dist/shared/src/components/ShareOptionIcon/ShareOptionIcon.cjs.js +2 -0
  107. package/dist/shared/src/components/ShareOptionIcon/ShareOptionIcon.cjs.js.map +1 -0
  108. package/dist/shared/src/components/ShareOptionIcon/ShareOptionIcon.es.js +17 -0
  109. package/dist/shared/src/components/ShareOptionIcon/ShareOptionIcon.es.js.map +1 -0
  110. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +2 -2
  111. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  112. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +5 -2
  113. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  114. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  115. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  116. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +5 -2
  117. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  118. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  119. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  120. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +5 -2
  121. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  122. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  123. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  124. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +5 -2
  125. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  126. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  127. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  128. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +146 -157
  129. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  130. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.styled.cjs.js +7 -1
  131. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.styled.cjs.js.map +1 -1
  132. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.styled.es.js +13 -6
  133. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.styled.es.js.map +1 -1
  134. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  135. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  136. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +5 -2
  137. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  138. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  139. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  140. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +6 -3
  141. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  142. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  143. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  144. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +6 -3
  145. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  146. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  147. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  148. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +5 -2
  149. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  150. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  151. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  152. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +5 -2
  153. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  154. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  155. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  156. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +5 -2
  157. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  158. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  159. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  160. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +5 -2
  161. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  162. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  163. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  164. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +413 -396
  165. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  166. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +104 -25
  167. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  168. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +131 -52
  169. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  170. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  171. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  172. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +136 -129
  173. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  174. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +16 -53
  175. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  176. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +100 -120
  177. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  178. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  179. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  180. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +5 -2
  181. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  182. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.cjs.js +7 -3
  183. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.cjs.js.map +1 -1
  184. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.es.js +12 -8
  185. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.es.js.map +1 -1
  186. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  187. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  188. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +5 -2
  189. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  190. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +3 -3
  191. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  192. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +250 -235
  193. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  194. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  195. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  196. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +24 -21
  197. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  198. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  199. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  200. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +5 -2
  201. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  202. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.cjs.js.map +1 -1
  203. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.es.js.map +1 -1
  204. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js +1 -1
  205. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js.map +1 -1
  206. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js +10 -10
  207. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js.map +1 -1
  208. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  209. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  210. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +13 -9
  211. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  212. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  213. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  214. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +65 -60
  215. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  216. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  217. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  218. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +5 -2
  219. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  220. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  221. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  222. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +5 -2
  223. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  224. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  225. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  226. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +5 -2
  227. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  228. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  229. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  230. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +5 -2
  231. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  232. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  233. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  234. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +5 -2
  235. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  236. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  237. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  238. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +5 -2
  239. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  240. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  241. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  242. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +16 -13
  243. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  244. package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.cjs.js +1 -1
  245. package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.cjs.js.map +1 -1
  246. package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.es.js +41 -14
  247. package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.es.js.map +1 -1
  248. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +1 -1
  249. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  250. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +7 -7
  251. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  252. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
  253. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  254. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +110 -104
  255. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  256. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +2 -2
  257. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
  258. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +8 -8
  259. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
  260. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +2 -2
  261. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  262. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +44 -43
  263. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  264. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  265. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  266. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +7 -4
  267. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  268. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  269. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  270. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +5 -2
  271. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  272. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  273. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  274. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +118 -103
  275. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  276. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.cjs.js +16 -4
  277. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.cjs.js.map +1 -1
  278. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.es.js +13 -1
  279. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.es.js.map +1 -1
  280. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.cjs.js +1 -1
  281. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.cjs.js.map +1 -1
  282. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.es.js +62 -50
  283. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.es.js.map +1 -1
  284. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  285. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  286. package/dist/shared/src/containers/Views/hooks/pages/useReportsViewSettings.cjs.js +2 -0
  287. package/dist/shared/src/containers/Views/hooks/pages/useReportsViewSettings.cjs.js.map +1 -0
  288. package/dist/shared/src/containers/Views/hooks/pages/useReportsViewSettings.es.js +64 -0
  289. package/dist/shared/src/containers/Views/hooks/pages/useReportsViewSettings.es.js.map +1 -0
  290. package/dist/shared/src/context/MenuContext.cjs.js +2 -0
  291. package/dist/shared/src/context/MenuContext.cjs.js.map +1 -0
  292. package/dist/shared/src/context/MenuContext.es.js +28 -0
  293. package/dist/shared/src/context/MenuContext.es.js.map +1 -0
  294. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  295. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  296. package/dist/shared/src/context/PowerpackContext.es.js +20 -15
  297. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  298. package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
  299. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  300. package/dist/shared/src/context/RemoteModulesContext.es.js +19 -19
  301. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  302. package/dist/shared/src/hooks/useLoadModule.cjs.js.map +1 -1
  303. package/dist/shared/src/hooks/useLoadModule.es.js.map +1 -1
  304. package/dist/src/components/Menu/MenuComponents/Menu.cjs.js +2 -0
  305. package/dist/src/components/Menu/MenuComponents/Menu.cjs.js.map +1 -0
  306. package/dist/src/components/Menu/MenuComponents/Menu.es.js +55 -0
  307. package/dist/src/components/Menu/MenuComponents/Menu.es.js.map +1 -0
  308. package/dist/src/components/Menu/MenuComponents/Menu.styled.cjs.js +254 -0
  309. package/dist/src/components/Menu/MenuComponents/Menu.styled.cjs.js.map +1 -0
  310. package/dist/src/components/Menu/MenuComponents/Menu.styled.es.js +265 -0
  311. package/dist/src/components/Menu/MenuComponents/Menu.styled.es.js.map +1 -0
  312. package/dist/src/components/Menu/MenuComponents/MenuContainer2.cjs.js +2 -0
  313. package/dist/src/components/Menu/MenuComponents/MenuContainer2.cjs.js.map +1 -0
  314. package/dist/src/components/Menu/MenuComponents/MenuContainer2.es.js +80 -0
  315. package/dist/src/components/Menu/MenuComponents/MenuContainer2.es.js.map +1 -0
  316. package/dist/src/components/Menu/MenuComponents/MenuItem.cjs.js +2 -0
  317. package/dist/src/components/Menu/MenuComponents/MenuItem.cjs.js.map +1 -0
  318. package/dist/src/components/Menu/MenuComponents/MenuItem.es.js +59 -0
  319. package/dist/src/components/Menu/MenuComponents/MenuItem.es.js.map +1 -0
  320. package/dist/src/components/Menu/MenuComponents/MenuList.cjs.js +2 -0
  321. package/dist/src/components/Menu/MenuComponents/MenuList.cjs.js.map +1 -0
  322. package/dist/src/components/Menu/MenuComponents/MenuList.es.js +112 -0
  323. package/dist/src/components/Menu/MenuComponents/MenuList.es.js.map +1 -0
  324. package/dist/src/components/Menu/MenuComponents/useMenuPosition.cjs.js +2 -0
  325. package/dist/src/components/Menu/MenuComponents/useMenuPosition.cjs.js.map +1 -0
  326. package/dist/src/components/Menu/MenuComponents/useMenuPosition.es.js +35 -0
  327. package/dist/src/components/Menu/MenuComponents/useMenuPosition.es.js.map +1 -0
  328. package/dist/types/api/generated/entityLists.d.ts +8 -8
  329. package/dist/types/api/generated/users.d.ts +18 -14
  330. package/dist/types/api/generated/views.d.ts +47 -9
  331. package/dist/types/api/queries/entityLists/getLists.d.ts +133 -0
  332. package/dist/types/api/queries/entityLists/types.d.ts +2 -1
  333. package/dist/types/api/queries/permissions/getPermissions.d.ts +22 -22
  334. package/dist/types/api/queries/users/getUsers.d.ts +132 -0
  335. package/dist/types/api/queries/users/updateUsers.d.ts +3 -3
  336. package/dist/types/components/AccessUser/AccessUser.d.ts +22 -0
  337. package/dist/types/components/AccessUser/AccessUser.styled.d.ts +1 -0
  338. package/dist/types/components/AccessUser/index.d.ts +1 -0
  339. package/dist/types/components/DetailsMetaData/DetailsMetaData.d.ts +8 -0
  340. package/dist/types/components/DetailsMetaData/index.d.ts +1 -0
  341. package/dist/types/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.d.ts +4 -0
  342. package/dist/types/components/ListAttributeForm/ListAttributeForm.d.ts +13 -0
  343. package/dist/types/components/ListAttributeForm/index.d.ts +1 -0
  344. package/dist/types/components/ListMetaData/ListMetaData.d.ts +8 -0
  345. package/dist/types/components/ListMetaData/index.d.ts +1 -0
  346. package/dist/types/components/Powerpack/RequiredPowerpackVersion.d.ts +5 -0
  347. package/dist/types/components/Powerpack/index.d.ts +1 -0
  348. package/dist/types/components/ShareOptionIcon/ShareOptionIcon.d.ts +10 -0
  349. package/dist/types/components/ShareOptionIcon/index.d.ts +2 -0
  350. package/dist/types/components/index.d.ts +4 -0
  351. package/dist/types/containers/DetailsPanel/DetailsPanel.styled.d.ts +7 -0
  352. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.styled.d.ts +3 -1
  353. package/dist/types/containers/ProjectTreeTable/components/ColumnHeaderMenu.d.ts +4 -1
  354. package/dist/types/containers/ProjectTreeTable/context/ProjectDataContext.d.ts +1 -0
  355. package/dist/types/containers/ProjectTreeTable/context/clipboard/clipboardTypes.d.ts +3 -1
  356. package/dist/types/containers/ProjectTreeTable/hooks/useAttributesList.d.ts +1 -0
  357. package/dist/types/containers/ProjectTreeTable/utils/getReadOnlyLists.d.ts +1 -1
  358. package/dist/types/containers/ProjectTreeTable/widgets/BooleanWidget.d.ts +1 -0
  359. package/dist/types/containers/ProjectTreeTable/widgets/EnumCellValue.d.ts +2 -2
  360. package/dist/types/containers/SimpleTable/SimpleTable.d.ts +3 -0
  361. package/dist/types/containers/SimpleTable/SimpleTableRowTemplate.d.ts +5 -1
  362. package/dist/types/containers/Views/hooks/pages/useReportsViewSettings.d.ts +11 -0
  363. package/dist/types/containers/Views/index.d.ts +6 -2
  364. package/dist/types/context/MenuContext.d.ts +12 -0
  365. package/dist/types/context/PowerpackContext.d.ts +1 -1
  366. package/dist/types/index.d.ts +1 -0
  367. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"buildTreeTableColumns.es.js","sources":["../../../../../src/containers/ProjectTreeTable/buildTreeTableColumns.tsx"],"sourcesContent":["import { ColumnDef, FilterFnOption, Row, SortingFn, sortingFns } from '@tanstack/react-table'\nimport { TableRow } from './types/table'\nimport { AttributeData, ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport { CellWidget, EntityNameWidget, GroupHeaderWidget, ThumbnailWidget } from './widgets'\nimport { getCellId, getCellValue } from './utils/cellUtils'\nimport { LinkColumnHeader, TableCellContent } from './ProjectTreeTable.styled'\nimport clsx from 'clsx'\nimport { SelectionCell } from './components/SelectionCell'\nimport RowSelectionHeader from './components/RowSelectionHeader'\nimport { ROW_SELECTION_COLUMN_ID } from './context/SelectionCellsContext'\nimport { TableGroupBy } from './context'\nimport { NEXT_PAGE_ID } from './hooks/useBuildGroupByTableData'\nimport LoadMoreWidget from './widgets/LoadMoreWidget'\nimport { LinkTypeModel } from '@shared/api'\nimport { LinkWidgetData } from './widgets/LinksWidget'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { getEntityTypeIcon } from '@shared/util'\n\nconst MIN_SIZE = 50\n\n// Wrapper function for sorting that pushes isLoading rows to the bottom\nconst withLoadingStateSort = (sortFn: SortingFn<any>): SortingFn<any> => {\n return (rowA, rowB, ...args) => {\n // If row loading states differ, prioritize non-loading rows\n if (rowA.original.isLoading !== rowB.original.isLoading) {\n return rowA.original.isLoading ? 1 : -1\n }\n // Otherwise, use the original sort function\n return sortFn(rowA, rowB, ...args)\n }\n}\n\nconst nameSort: SortingFn<any> = (rowA, rowB) => {\n const labelA = rowA.original.label || rowA.original.name\n const labelB = rowB.original.label || rowB.original.name\n // sort alphabetically by label\n return labelA.localeCompare(labelB)\n}\nconst pathSort: SortingFn<any> = (rowA, rowB) => {\n const labelA = rowA.original.path || rowA.original.name\n const labelB = rowB.original.path || rowB.original.name\n // sort alphabetically by label\n return labelA.localeCompare(labelB)\n}\n\ntype AttribSortingFn = (rowA: any, rowB: any, columnId: string, attribute?: AttributeData) => number\n// sort by the order of the enum options\nconst attribSort: AttribSortingFn = (rowA, rowB, columnId, attrib) => {\n const valueA = getCellValue(rowA.original, columnId)\n const valueB = getCellValue(rowB.original, columnId)\n // if attrib is defined and has enum options, use them\n if (attrib && attrib.enum) {\n const indexA = attrib.enum.findIndex((o) => o.value === valueA)\n const indexB = attrib.enum.findIndex((o) => o.value === valueB)\n return indexA - indexB < 0 ? 1 : -1\n } else if (attrib?.type === 'datetime') {\n return sortingFns.datetime(rowA, rowB, columnId)\n } else if (attrib?.type === 'boolean') {\n const boolA = valueA === true ? 1 : 0\n const boolB = valueB === true ? 1 : 0\n return boolA - boolB\n } else {\n // default sorting\n return sortingFns.alphanumeric(rowA, rowB, columnId)\n }\n}\n\nexport const getLinkLabel = (\n link: Pick<LinkTypeModel, 'linkType'>,\n direction: 'in' | 'out' | string,\n) => `${link.linkType.charAt(0).toUpperCase() + link.linkType.slice(1)} (${direction})`\n\nexport const getLinkKey = (link: Pick<LinkTypeModel, 'name'>, direction: 'in' | 'out' | string) =>\n `${link.name.replaceAll('_', '').replaceAll('-', '').replaceAll('|', '_')}_${direction}`\n\nexport const getLinkColumnId = (\n link: Pick<LinkTypeModel, 'name'>,\n direction: 'in' | 'out' | string,\n) => `link_${getLinkKey(link, direction)}`\n\nexport type DefaultColumns =\n | typeof ROW_SELECTION_COLUMN_ID\n | 'thumbnail'\n | 'name'\n | 'status'\n | 'subType'\n | 'assignees'\n | 'tags'\n\nexport type TreeTableExtraColumn = { column: ColumnDef<TableRow>; position?: number }\n\nexport type BuildTreeTableColumnsProps = {\n attribs: ProjectTableAttribute[]\n links: LinkTypeModel[]\n showHierarchy: boolean\n options: BuiltInFieldOptions\n excluded?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n groupBy?: TableGroupBy\n}\n\nconst buildTreeTableColumns = ({\n attribs,\n links = [],\n showHierarchy,\n options,\n excluded,\n extraColumns,\n groupBy,\n}: BuildTreeTableColumnsProps) => {\n const staticColumns: ColumnDef<TableRow>[] = []\n\n // Helper to check if a column should be included\n const isIncluded = (id: DefaultColumns | string) => !excluded?.includes(id)\n\n // Conditionally add static columns\n if (isIncluded(ROW_SELECTION_COLUMN_ID)) {\n staticColumns.push({\n id: ROW_SELECTION_COLUMN_ID,\n enableResizing: false,\n enableSorting: false,\n enablePinning: false,\n enableHiding: false,\n\n header: () => <RowSelectionHeader />,\n cell: ({ row }) => {\n if (row.original.entityType === 'group') return null\n return <SelectionCell />\n },\n size: 20,\n })\n }\n\n if (isIncluded('thumbnail')) {\n staticColumns.push({\n id: 'thumbnail',\n header: 'Thumbnail',\n size: 63,\n minSize: 64,\n enableResizing: true,\n enableSorting: false,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n if (!meta) return null\n const cellId = getCellId(row.id, column.id)\n return (\n <ThumbnailWidget\n id={cellId}\n entityId={row.original.entityId || row.id}\n entityType={row.original.entityType}\n updatedAt={row.original.updatedAt}\n icon={row.original.icon}\n projectName={meta?.projectName as string}\n className={clsx('thumbnail', {\n loading: row.original.isLoading,\n })}\n isPlayable={row.original.hasReviewables}\n />\n )\n },\n })\n }\n\n if (isIncluded('name')) {\n staticColumns.push({\n id: 'name',\n accessorKey: 'name',\n header: 'Folder / Task',\n minSize: MIN_SIZE,\n sortingFn: withLoadingStateSort(showHierarchy ? nameSort : pathSort),\n enableSorting: groupBy ? false : true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: groupBy ? false : true,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const cellId = getCellId(row.id, column.id)\n\n if (row.original.entityType === NEXT_PAGE_ID && row.original.group) {\n return (\n <LoadMoreWidget\n label={'Load more tasks'}\n id={row.original.group.value}\n onLoadMore={(id) => meta?.loadMoreTasks?.(id)}\n />\n )\n }\n\n return (\n <TableCellContent\n id={cellId}\n className={clsx('large', row.original.entityType, {\n loading: row.original.isLoading,\n hierarchy: showHierarchy,\n })}\n style={{\n paddingLeft: `calc(${row.depth * 1}rem + 8px)`,\n }}\n tabIndex={0}\n >\n {row.original.group ? (\n <GroupHeaderWidget\n id={row.id}\n label={row.original.group.label}\n name={row.original.name}\n icon={row.original.group.icon}\n img={row.original.group.img}\n color={row.original.group.color}\n count={row.original.group.count}\n isExpanded={row.getIsExpanded()}\n isEmpty={row.subRows.length === 0}\n toggleExpanded={row.getToggleExpandedHandler()}\n />\n ) : (\n <EntityNameWidget\n id={row.id}\n label={row.original.label}\n name={row.original.name}\n path={!showHierarchy ? '/' + row.original.parents?.join('/') : undefined}\n showHierarchy={showHierarchy}\n icon={row.original.icon}\n type={row.original.entityType}\n isExpanded={row.getIsExpanded()}\n toggleExpandAll={() => meta?.toggleExpandAll?.([row.id])}\n toggleExpanded={row.getToggleExpandedHandler()}\n />\n )}\n </TableCellContent>\n )\n },\n })\n }\n\n if (isIncluded('status')) {\n staticColumns.push({\n id: 'status',\n accessorKey: 'status',\n minSize: MIN_SIZE,\n header: 'Status',\n sortingFn: withLoadingStateSort((a, b, c) =>\n attribSort(a, b, c, { enum: options.status, type: 'string' }),\n ),\n sortDescFirst: true,\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n const meta = table.options.meta\n if (['group', NEXT_PAGE_ID].includes(type)) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('status', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'string' }}\n options={meta?.options?.status.filter((s) => s.scope?.includes(type))}\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: column.id, value, type, rowId: id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id)}\n pt={{\n enum: {\n pt: {\n template: {\n pt: {\n icon: {\n style: {\n fontVariationSettings: \"'FILL' 1, 'wght' 200, 'GRAD' 200, 'opsz' 20\",\n },\n },\n },\n },\n },\n },\n }}\n />\n )\n },\n })\n }\n\n if (isIncluded('subType')) {\n staticColumns.push({\n id: 'subType',\n accessorKey: 'subType',\n header: 'Type',\n minSize: MIN_SIZE,\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type)) return null\n const fieldId = type === 'folder' ? 'folderType' : 'taskType'\n const meta = table.options.meta\n return (\n <CellWidget\n rowId={id}\n className={clsx('subType', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'string' }}\n options={\n type === 'folder'\n ? meta?.options?.folderType\n : type === 'task'\n ? meta?.options?.taskType\n : []\n }\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: fieldId, value, type, rowId: row.id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id)}\n />\n )\n },\n })\n }\n\n if (isIncluded('assignees')) {\n staticColumns.push({\n id: 'assignees',\n accessorKey: 'assignees',\n header: 'Assignees',\n minSize: MIN_SIZE,\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type)) return null\n\n if (type === 'folder')\n return (\n <CellWidget\n rowId={id}\n className={clsx('assignees', { loading: row.original.isLoading })}\n columnId={column.id}\n value=\"\"\n isPlaceholder\n />\n )\n return (\n <CellWidget\n rowId={id}\n className={clsx('assignees', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'list_of_strings' }}\n options={meta?.options?.assignee}\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: column.id, value, type, rowId: row.id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id)}\n pt={{\n enum: {\n multiSelectClose: value?.length === 0, // close the dropdown on first assignment\n search: true, // enable search at all times\n multipleOverride: false,\n },\n }}\n />\n )\n },\n })\n }\n\n if (isIncluded('tags')) {\n staticColumns.push({\n id: 'tags',\n accessorKey: 'tags',\n header: 'Tags',\n minSize: MIN_SIZE,\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type)) return null\n return (\n <CellWidget\n rowId={id}\n className={clsx('tags', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'list_of_strings' }}\n options={meta?.options?.tag}\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: column.id, value, type, rowId: row.id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id)}\n enableCustomValues\n />\n )\n },\n })\n }\n\n const attributeColumns: ColumnDef<TableRow>[] = attribs\n .filter((attrib) => {\n const columnId = 'attrib_' + attrib.name\n // Check if the specific attribute column is excluded\n // or if all built-in attributes are excluded and this is a built-in attribute\n if (!isIncluded(columnId)) return false\n if (attrib.builtin && !isIncluded('attrib')) return false\n return true\n })\n .map((attrib) => {\n const attribColumn: ColumnDef<TableRow> = {\n id: 'attrib_' + attrib.name,\n accessorKey: 'attrib.' + attrib.name,\n header: attrib.data.title || attrib.name,\n minSize: MIN_SIZE,\n filterFn: 'fuzzy' as FilterFnOption<TableRow>,\n sortingFn: withLoadingStateSort((a, b, c) => attribSort(a, b, c, attrib.data)),\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const columnIdParsed = column.id.replace('attrib_', '')\n const { value, id, type } = getValueIdType(row, columnIdParsed, 'attrib')\n const isInherited = !row.original.ownAttrib?.includes(columnIdParsed)\n if (['group', NEXT_PAGE_ID].includes(type)) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('attrib', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: attrib.data.type || 'string' }}\n options={attrib.data.enum || []}\n isCollapsed={!!row.original.childOnlyMatch}\n isInherited={isInherited && ['folder', 'task'].includes(type)}\n isReadOnly={\n attrib.readOnly ||\n meta?.readOnly?.some(\n (id) => id === columnIdParsed || (id === 'attrib' && attrib.builtin),\n )\n }\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: columnIdParsed, value, type, isAttrib: true, rowId: row.id },\n { selection: !!attrib.data.enum?.length ? meta?.selection : undefined },\n )\n }\n />\n )\n },\n }\n return attribColumn\n })\n\n const linkColumns: ColumnDef<TableRow>[] = links\n .filter((link) => {\n // Check if the link type is excluded\n if (!isIncluded(link.linkType) || !isIncluded('link')) return false\n return true\n })\n .flatMap((link) => {\n const createLinkColumn = (direction: 'in' | 'out'): ColumnDef<TableRow> => {\n return {\n id: getLinkColumnId(link, direction),\n accessorKey: `links.${getLinkKey(link, direction)}`,\n header: () => (\n <LinkColumnHeader>\n {getLinkLabel(link, direction)}{' '}\n <Icon\n icon={getEntityTypeIcon(direction === 'in' ? link.inputType : link.outputType)}\n />\n </LinkColumnHeader>\n ),\n minSize: MIN_SIZE,\n enableSorting: false,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column }) => {\n const columnIdParsed = column.id.replace('link_', '')\n\n const { id, value } = getValueIdType(row, columnIdParsed, 'links')\n const cellValue = value?.map((v: any) => v.label)\n const valueData: LinkWidgetData = {\n links: value,\n direction: direction,\n entityId: row.original.entityId || row.original.id,\n entityType: row.original.entityType,\n link: {\n label: link.linkType,\n linkType: link.name,\n targetEntityType: direction === 'in' ? link.inputType : link.outputType,\n },\n }\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('links', { loading: row.original.isLoading })}\n columnId={column.id}\n value={cellValue}\n valueData={valueData}\n folderId={row.original.folderId}\n attributeData={{ type: 'links' }}\n />\n )\n },\n }\n }\n\n return [createLinkColumn('in'), createLinkColumn('out')]\n })\n\n const allColumns = [...staticColumns, ...attributeColumns, ...linkColumns]\n\n // Add extra columns if provided\n if (extraColumns) {\n extraColumns.forEach(({ column, position = -1 }) => {\n if (position >= 0 && position < allColumns.length) {\n allColumns.splice(position, 0, column)\n } else {\n allColumns.push(column)\n }\n })\n }\n\n return allColumns\n}\n\nexport default buildTreeTableColumns\n\nexport const getValueIdType = (\n row: Row<TableRow>,\n field: string,\n nestedField?: keyof TableRow,\n): {\n value: any\n id: string\n type: string\n} => ({\n value: nestedField\n ? (row.original[nestedField as keyof TableRow] as any)?.[field]\n : (row.original[field as keyof TableRow] as any),\n id: row.id,\n type: row.original.entityType,\n})\n"],"names":["MIN_SIZE","withLoadingStateSort","sortFn","rowA","rowB","args","nameSort","labelA","labelB","pathSort","attribSort","columnId","attrib","valueA","getCellValue","valueB","indexA","o","indexB","sortingFns","getLinkLabel","link","direction","getLinkKey","getLinkColumnId","buildTreeTableColumns","attribs","links","showHierarchy","options","excluded","extraColumns","groupBy","staticColumns","isIncluded","id","ROW_SELECTION_COLUMN_ID","jsx","RowSelectionHeader","row","SelectionCell","column","table","meta","cellId","getCellId","ThumbnailWidget","clsx","NEXT_PAGE_ID","LoadMoreWidget","_a","TableCellContent","GroupHeaderWidget","EntityNameWidget","a","b","c","value","type","getValueIdType","CellWidget","s","_b","fieldId","_c","attributeColumns","columnIdParsed","isInherited","linkColumns","createLinkColumn","jsxs","LinkColumnHeader","Icon","getEntityTypeIcon","cellValue","v","valueData","allColumns","position","field","nestedField"],"mappings":"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"}
1
+ {"version":3,"file":"buildTreeTableColumns.es.js","sources":["../../../../../src/containers/ProjectTreeTable/buildTreeTableColumns.tsx"],"sourcesContent":["import { ColumnDef, FilterFnOption, Row, SortingFn, sortingFns } from '@tanstack/react-table'\nimport { TableRow } from './types/table'\nimport { AttributeData, ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport { CellWidget, EntityNameWidget, GroupHeaderWidget, ThumbnailWidget } from './widgets'\nimport { getCellId, getCellValue } from './utils/cellUtils'\nimport { LinkColumnHeader, TableCellContent } from './ProjectTreeTable.styled'\nimport clsx from 'clsx'\nimport { SelectionCell } from './components/SelectionCell'\nimport RowSelectionHeader from './components/RowSelectionHeader'\nimport { ROW_SELECTION_COLUMN_ID } from './context/SelectionCellsContext'\nimport { TableGroupBy } from './context'\nimport { NEXT_PAGE_ID } from './hooks/useBuildGroupByTableData'\nimport LoadMoreWidget from './widgets/LoadMoreWidget'\nimport { LinkTypeModel } from '@shared/api'\nimport { LinkWidgetData } from './widgets/LinksWidget'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { getEntityTypeIcon } from '@shared/util'\n\nconst MIN_SIZE = 50\n\n// Wrapper function for sorting that pushes isLoading rows to the bottom\nconst withLoadingStateSort = (sortFn: SortingFn<any>): SortingFn<any> => {\n return (rowA, rowB, ...args) => {\n // If row loading states differ, prioritize non-loading rows\n if (rowA.original.isLoading !== rowB.original.isLoading) {\n return rowA.original.isLoading ? 1 : -1\n }\n // Otherwise, use the original sort function\n return sortFn(rowA, rowB, ...args)\n }\n}\n\nconst nameSort: SortingFn<any> = (rowA, rowB) => {\n const labelA = rowA.original.label || rowA.original.name\n const labelB = rowB.original.label || rowB.original.name\n // sort alphabetically by label\n return labelA.localeCompare(labelB)\n}\nconst pathSort: SortingFn<any> = (rowA, rowB) => {\n const labelA = rowA.original.path || rowA.original.name\n const labelB = rowB.original.path || rowB.original.name\n // sort alphabetically by label\n return labelA.localeCompare(labelB)\n}\n\ntype AttribSortingFn = (rowA: any, rowB: any, columnId: string, attribute?: AttributeData) => number\n// sort by the order of the enum options\nconst attribSort: AttribSortingFn = (rowA, rowB, columnId, attrib) => {\n const valueA = getCellValue(rowA.original, columnId)\n const valueB = getCellValue(rowB.original, columnId)\n // if attrib is defined and has enum options, use them\n if (attrib && attrib.enum) {\n const indexA = attrib.enum.findIndex((o) => o.value === valueA)\n const indexB = attrib.enum.findIndex((o) => o.value === valueB)\n return indexA - indexB < 0 ? 1 : -1\n } else if (attrib?.type === 'datetime') {\n return sortingFns.datetime(rowA, rowB, columnId)\n } else if (attrib?.type === 'boolean') {\n const boolA = valueA === true ? 1 : 0\n const boolB = valueB === true ? 1 : 0\n return boolA - boolB\n } else {\n // default sorting\n return sortingFns.alphanumeric(rowA, rowB, columnId)\n }\n}\n\nexport const getLinkLabel = (\n link: Pick<LinkTypeModel, 'linkType'>,\n direction: 'in' | 'out' | string,\n) => `${link.linkType.charAt(0).toUpperCase() + link.linkType.slice(1)} (${direction})`\n\nexport const getLinkKey = (link: Pick<LinkTypeModel, 'name'>, direction: 'in' | 'out' | string) =>\n `${link.name.replaceAll('_', '').replaceAll('-', '').replaceAll('|', '_')}_${direction}`\n\nexport const getLinkColumnId = (\n link: Pick<LinkTypeModel, 'name'>,\n direction: 'in' | 'out' | string,\n) => `link_${getLinkKey(link, direction)}`\n\nexport type DefaultColumns =\n | typeof ROW_SELECTION_COLUMN_ID\n | 'thumbnail'\n | 'name'\n | 'status'\n | 'subType'\n | 'assignees'\n | 'tags'\n\nexport type TreeTableExtraColumn = { column: ColumnDef<TableRow>; position?: number }\n\nexport type BuildTreeTableColumnsProps = {\n attribs: ProjectTableAttribute[]\n links: LinkTypeModel[]\n showHierarchy: boolean\n options: BuiltInFieldOptions\n excluded?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n groupBy?: TableGroupBy\n}\n\nconst buildTreeTableColumns = ({\n attribs,\n links = [],\n showHierarchy,\n options,\n excluded,\n extraColumns,\n groupBy,\n}: BuildTreeTableColumnsProps) => {\n const staticColumns: ColumnDef<TableRow>[] = []\n\n // Helper to check if a column should be included\n const isIncluded = (id: DefaultColumns | string) => !excluded?.includes(id)\n\n // Conditionally add static columns\n if (isIncluded(ROW_SELECTION_COLUMN_ID)) {\n staticColumns.push({\n id: ROW_SELECTION_COLUMN_ID,\n enableResizing: false,\n enableSorting: false,\n enablePinning: false,\n enableHiding: false,\n\n header: () => <RowSelectionHeader />,\n cell: ({ row }) => {\n if (row.original.entityType === 'group') return null\n return <SelectionCell />\n },\n size: 20,\n })\n }\n\n if (isIncluded('thumbnail')) {\n staticColumns.push({\n id: 'thumbnail',\n header: 'Thumbnail',\n size: 63,\n minSize: 64,\n enableResizing: true,\n enableSorting: false,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n if (!meta) return null\n const cellId = getCellId(row.id, column.id)\n return (\n <ThumbnailWidget\n id={cellId}\n entityId={row.original.entityId || row.id}\n entityType={row.original.entityType}\n updatedAt={row.original.updatedAt}\n icon={row.original.icon}\n projectName={meta?.projectName as string}\n className={clsx('thumbnail', {\n loading: row.original.isLoading,\n })}\n isPlayable={row.original.hasReviewables}\n />\n )\n },\n })\n }\n\n if (isIncluded('name')) {\n staticColumns.push({\n id: 'name',\n accessorKey: 'name',\n header: 'Folder / Task',\n minSize: MIN_SIZE,\n sortingFn: withLoadingStateSort(showHierarchy ? nameSort : pathSort),\n enableSorting: groupBy ? false : true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: groupBy ? false : true,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const cellId = getCellId(row.id, column.id)\n\n if (row.original.entityType === NEXT_PAGE_ID && row.original.group) {\n return (\n <LoadMoreWidget\n label={'Load more tasks'}\n id={row.original.group.value}\n onLoadMore={(id) => meta?.loadMoreTasks?.(id)}\n />\n )\n }\n\n return (\n <TableCellContent\n id={cellId}\n className={clsx('large', row.original.entityType, {\n loading: row.original.isLoading,\n hierarchy: showHierarchy,\n })}\n style={{\n paddingLeft: `calc(${row.depth * 1}rem + 8px)`,\n }}\n tabIndex={0}\n >\n {row.original.group ? (\n <GroupHeaderWidget\n id={row.id}\n label={row.original.group.label}\n name={row.original.name}\n icon={row.original.group.icon}\n img={row.original.group.img}\n color={row.original.group.color}\n count={row.original.group.count}\n isExpanded={row.getIsExpanded()}\n isEmpty={row.subRows.length === 0}\n toggleExpanded={row.getToggleExpandedHandler()}\n />\n ) : (\n <EntityNameWidget\n id={row.id}\n label={row.original.label}\n name={row.original.name}\n path={!showHierarchy ? '/' + row.original.parents?.join('/') : undefined}\n showHierarchy={showHierarchy}\n icon={row.original.icon}\n type={row.original.entityType}\n isExpanded={row.getIsExpanded()}\n toggleExpandAll={() => meta?.toggleExpandAll?.([row.id])}\n toggleExpanded={row.getToggleExpandedHandler()}\n />\n )}\n </TableCellContent>\n )\n },\n })\n }\n\n if (isIncluded('status')) {\n staticColumns.push({\n id: 'status',\n accessorKey: 'status',\n minSize: MIN_SIZE,\n header: 'Status',\n sortingFn: withLoadingStateSort((a, b, c) =>\n attribSort(a, b, c, { enum: options.status, type: 'string' }),\n ),\n sortDescFirst: true,\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n const meta = table.options.meta\n if (['group', NEXT_PAGE_ID].includes(type)) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('status', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'string' }}\n options={meta?.options?.status.filter((s) => s.scope?.includes(type))}\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: column.id, value, type, rowId: id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id)}\n pt={{\n enum: {\n pt: {\n template: {\n pt: {\n icon: {\n style: {\n fontVariationSettings: \"'FILL' 1, 'wght' 200, 'GRAD' 200, 'opsz' 20\",\n },\n },\n },\n },\n },\n },\n }}\n />\n )\n },\n })\n }\n\n if (isIncluded('subType')) {\n staticColumns.push({\n id: 'subType',\n accessorKey: 'subType',\n header: 'Type',\n minSize: MIN_SIZE,\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type)) return null\n const fieldId = type === 'folder' ? 'folderType' : 'taskType'\n const meta = table.options.meta\n return (\n <CellWidget\n rowId={id}\n className={clsx('subType', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'string' }}\n options={\n type === 'folder'\n ? meta?.options?.folderType\n : type === 'task'\n ? meta?.options?.taskType\n : []\n }\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: fieldId, value, type, rowId: row.id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id) || meta?.readOnly?.includes(fieldId)}\n />\n )\n },\n })\n }\n\n if (isIncluded('assignees')) {\n staticColumns.push({\n id: 'assignees',\n accessorKey: 'assignees',\n header: 'Assignees',\n minSize: MIN_SIZE,\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type)) return null\n\n if (type === 'folder')\n return (\n <CellWidget\n rowId={id}\n className={clsx('assignees', { loading: row.original.isLoading })}\n columnId={column.id}\n value=\"\"\n isPlaceholder\n />\n )\n return (\n <CellWidget\n rowId={id}\n className={clsx('assignees', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'list_of_strings' }}\n options={meta?.options?.assignee}\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: column.id, value, type, rowId: row.id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id)}\n pt={{\n enum: {\n multiSelectClose: value?.length === 0, // close the dropdown on first assignment\n search: true, // enable search at all times\n multipleOverride: false,\n },\n }}\n />\n )\n },\n })\n }\n\n if (isIncluded('tags')) {\n staticColumns.push({\n id: 'tags',\n accessorKey: 'tags',\n header: 'Tags',\n minSize: MIN_SIZE,\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type)) return null\n return (\n <CellWidget\n rowId={id}\n className={clsx('tags', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'list_of_strings' }}\n options={meta?.options?.tag}\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: column.id, value, type, rowId: row.id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id)}\n enableCustomValues\n />\n )\n },\n })\n }\n\n const attributeColumns: ColumnDef<TableRow>[] = attribs\n .filter((attrib) => {\n const columnId = 'attrib_' + attrib.name\n // Check if the specific attribute column is excluded\n // or if all built-in attributes are excluded and this is a built-in attribute\n if (!isIncluded(columnId)) return false\n if (attrib.builtin && !isIncluded('attrib')) return false\n return true\n })\n .map((attrib) => {\n const attribColumn: ColumnDef<TableRow> = {\n id: 'attrib_' + attrib.name,\n accessorKey: 'attrib.' + attrib.name,\n header: attrib.data.title || attrib.name,\n minSize: MIN_SIZE,\n filterFn: 'fuzzy' as FilterFnOption<TableRow>,\n sortingFn: withLoadingStateSort((a, b, c) => attribSort(a, b, c, attrib.data)),\n enableSorting: true,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const columnIdParsed = column.id.replace('attrib_', '')\n const { value, id, type } = getValueIdType(row, columnIdParsed, 'attrib')\n const isInherited = !row.original.ownAttrib?.includes(columnIdParsed)\n if (['group', NEXT_PAGE_ID].includes(type)) return null\n const isTypeInScope = attrib.scope?.includes(type as (typeof attrib.scope)[number])\n\n // if the attribute is not in scope, we should nothing\n if (!isTypeInScope) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('attrib', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: attrib.data.type || 'string' }}\n options={attrib.data.enum || []}\n isCollapsed={!!row.original.childOnlyMatch}\n isInherited={isInherited && ['folder', 'task'].includes(type)}\n isReadOnly={\n // check attrib is not read only\n attrib.readOnly ||\n // check if there is any other reason the cell should be read only\n meta?.readOnly?.some(\n (id) => id === columnIdParsed || (id === 'attrib' && attrib.builtin),\n )\n }\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: columnIdParsed, value, type, isAttrib: true, rowId: row.id },\n { selection: !!attrib.data.enum?.length ? meta?.selection : undefined },\n )\n }\n />\n )\n },\n }\n return attribColumn\n })\n\n const linkColumns: ColumnDef<TableRow>[] = links\n .filter((link) => {\n // Check if the link type is excluded\n if (!isIncluded(link.linkType) || !isIncluded('link')) return false\n return true\n })\n .flatMap((link) => {\n const createLinkColumn = (direction: 'in' | 'out'): ColumnDef<TableRow> => {\n return {\n id: getLinkColumnId(link, direction),\n accessorKey: `links.${getLinkKey(link, direction)}`,\n header: () => (\n <LinkColumnHeader>\n {getLinkLabel(link, direction)}{' '}\n <Icon\n icon={getEntityTypeIcon(direction === 'in' ? link.inputType : link.outputType)}\n />\n </LinkColumnHeader>\n ),\n minSize: MIN_SIZE,\n enableSorting: false,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column }) => {\n const columnIdParsed = column.id.replace('link_', '')\n\n const { id, value } = getValueIdType(row, columnIdParsed, 'links')\n const cellValue = value?.map((v: any) => v.label)\n const valueData: LinkWidgetData = {\n links: value,\n direction: direction,\n entityId: row.original.entityId || row.original.id,\n entityType: row.original.entityType,\n link: {\n label: link.linkType,\n linkType: link.name,\n targetEntityType: direction === 'in' ? link.inputType : link.outputType,\n },\n }\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('links', { loading: row.original.isLoading })}\n columnId={column.id}\n value={cellValue}\n valueData={valueData}\n folderId={row.original.folderId}\n attributeData={{ type: 'links' }}\n />\n )\n },\n }\n }\n\n return [createLinkColumn('in'), createLinkColumn('out')]\n })\n\n const allColumns = [...staticColumns, ...attributeColumns, ...linkColumns]\n\n // Add extra columns if provided\n if (extraColumns) {\n extraColumns.forEach(({ column, position = -1 }) => {\n if (position >= 0 && position < allColumns.length) {\n allColumns.splice(position, 0, column)\n } else {\n allColumns.push(column)\n }\n })\n }\n\n return allColumns\n}\n\nexport default buildTreeTableColumns\n\nexport const getValueIdType = (\n row: Row<TableRow>,\n field: string,\n nestedField?: keyof TableRow,\n): {\n value: any\n id: string\n type: string\n} => ({\n value: nestedField\n ? (row.original[nestedField as keyof TableRow] as any)?.[field]\n : (row.original[field as keyof TableRow] as any),\n id: row.id,\n type: row.original.entityType,\n})\n"],"names":["MIN_SIZE","withLoadingStateSort","sortFn","rowA","rowB","args","nameSort","labelA","labelB","pathSort","attribSort","columnId","attrib","valueA","getCellValue","valueB","indexA","o","indexB","sortingFns","getLinkLabel","link","direction","getLinkKey","getLinkColumnId","buildTreeTableColumns","attribs","links","showHierarchy","options","excluded","extraColumns","groupBy","staticColumns","isIncluded","id","ROW_SELECTION_COLUMN_ID","jsx","RowSelectionHeader","row","SelectionCell","column","table","meta","cellId","getCellId","ThumbnailWidget","clsx","NEXT_PAGE_ID","LoadMoreWidget","_a","TableCellContent","GroupHeaderWidget","EntityNameWidget","a","b","c","value","type","getValueIdType","CellWidget","s","_b","fieldId","_c","_d","attributeColumns","columnIdParsed","isInherited","linkColumns","createLinkColumn","jsxs","LinkColumnHeader","Icon","getEntityTypeIcon","cellValue","v","valueData","allColumns","position","field","nestedField"],"mappings":"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"}
@@ -1,59 +1,22 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../../../../_virtual/jsx-runtime.cjs.js"),p=require("@ynput/ayon-react-components"),r=require("styled-components"),v=r.div`
2
- display: flex;
3
- align-items: center;
4
- gap: 8px;
5
- height: 32px;
6
- padding: 0 12px;
7
- cursor: pointer;
8
- border-radius: 4px;
9
-
10
- &:hover {
11
- background-color: var(--md-sys-color-surface-container);
12
- }
13
-
14
- .icon {
15
- font-size: 16px;
16
- color: var(--md-sys-color-on-surface);
17
- }
18
-
19
- span {
20
- font-size: 14px;
21
- color: var(--md-sys-color-on-surface);
22
- }
23
- `,b=r.div`
24
- height: 1px;
25
- background-color: #41474D;
26
- `,y=r(p.Dropdown)`
27
- height: 24px;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../../../../../_virtual/jsx-runtime.cjs.js"),b=require("@ynput/ayon-react-components"),v=require("styled-components"),C=require("react"),j=require("../../../context/MenuContext.cjs.js"),y=require("../../../../../src/components/Menu/MenuComponents/Menu.cjs.js"),M=require("../../../../../src/components/Menu/MenuComponents/MenuContainer2.cjs.js"),R=v(b.Button)`
2
+ background-color: unset !important;
3
+ z-index: 110;
4
+ position: relative;
5
+ padding: 2px;
28
6
  width: 24px;
7
+ height: 24px;
29
8
 
30
- button {
31
- background-color: transparent;
32
- border: none;
33
- padding: 0;
34
- min-height: 24px;
35
- width: 24px;
36
- display: flex;
37
- align-items: center;
38
- justify-content: center;
39
-
40
- &:hover {
41
- background-color: var(--md-sys-color-surface-container);
42
- }
43
-
44
- & > div {
45
- border: none;
46
- padding: 0;
47
- gap: 0;
48
- display: flex;
49
- align-items: center;
50
- justify-content: center;
51
- }
9
+ &.hasIcon {
10
+ padding: 2px;
52
11
  }
53
12
 
54
- .icon {
55
- font-size: 16px;
56
- color: var(--md-sys-color-on-surface);
13
+ &:hover,
14
+ &.active {
15
+ background-color: var(--md-sys-color-surface-container-hover) !important;
57
16
  }
58
- `,j=({header:f,canHide:l,canPin:c,canSort:t,isResizing:x})=>{const{column:i}=f;if(x)return null;const a=i.getIsPinned(),d=i.getIsVisible(),e=[];if(c){const n=a==="left";e.push({value:"pin",label:n?"Unpin column":"Pin column",icon:"push_pin"})}if(c&&t&&e.push({value:"divider1",label:"",icon:""}),t&&(e.push({value:"sort-asc",label:"Sort ascending",icon:"sort"}),e.push({value:"sort-desc",label:"Sort descending",icon:"sort"})),t&&l&&e.push({value:"divider2",label:"",icon:""}),l&&e.push({value:"hide",label:d?"Hide column":"Show column",icon:d?"visibility_off":"visibility"}),e.length===0)return null;const g=n=>{const o=n[0];o==="hide"?i.toggleVisibility():o==="pin"?a==="left"?i.pin(!1):i.pin("left"):o==="sort-asc"?i.toggleSorting(!1):o==="sort-desc"&&i.toggleSorting(!0)};return s.jsxRuntimeExports.jsx(y,{value:[],options:e,onChange:g,dropIcon:"more_horiz",multiSelect:!1,listStyle:{minWidth:"160px",border:"none",display:"flex",flexDirection:"column",gap:"8px",padding:"8px"},placeholder:"",itemTemplate:n=>{if(n.value.startsWith("divider"))return s.jsxRuntimeExports.jsx(b,{});const o=e.findIndex(h=>h.value===n.value),u=o===0,m=o===e.length-1;return s.jsxRuntimeExports.jsxs(v,{isFirst:u,isLast:m,children:[s.jsxRuntimeExports.jsx(p.Icon,{icon:n.icon}),s.jsxRuntimeExports.jsx("span",{children:n.label})]})}})};exports.ColumnHeaderMenu=j;
17
+
18
+ ${({$isOpen:s})=>s&&`
19
+ background-color: var(--md-sys-color-surface-container-hover) !important;
20
+ `}
21
+ `,k=({header:s,canHide:c,canPin:u,canSort:r,isResizing:f,className:g,menuId:l,isOpen:m})=>{const{column:n}=s,{toggleMenuOpen:x}=j.useMenuContext(),a=C.useRef(null);if(f)return null;const t=(e=!0)=>{x(e&&l||!1)},h=n.getIsPinned(),d=n.getIsVisible(),p=n.getIsSorted(),o=[];if(u){const e=h==="left";o.push({id:"pin",label:e?"Unpin column":"Pin column",icon:"push_pin",selected:e,onClick:()=>{e?n.pin(!1):n.pin("left"),t(!1)}})}return u&&r&&o.push({id:"divider",type:"divider"}),r&&(o.push({id:"sort-asc",label:"Sort ascending",icon:"sort",className:"sort-asc-icon",selected:p==="asc",onClick:()=>{n.toggleSorting(!1),t(!1)}}),o.push({id:"sort-desc",label:"Sort descending",icon:"sort",className:"sort-desc-icon",selected:p==="desc",onClick:()=>{n.toggleSorting(!0),t(!1)}})),r&&c&&o.push({id:"divider",type:"divider"}),c&&o.push({id:"hide",label:d?"Hide column":"Show column",icon:d?"visibility_off":"visibility",onClick:()=>{n.toggleVisibility(),t(!1)}}),o.length===0?null:i.jsxRuntimeExports.jsxs(i.jsxRuntimeExports.Fragment,{children:[i.jsxRuntimeExports.jsx(R,{ref:a,className:g,onClick:e=>{e.stopPropagation(),t()},icon:"more_horiz",id:l,$isOpen:m||!1}),i.jsxRuntimeExports.jsx(M,{target:a.current,id:l,align:"left",onClose:e=>{e.stopPropagation(),t(!1)},children:i.jsxRuntimeExports.jsx(y,{menu:o,onClose:()=>t(!1)})})]})};exports.ColumnHeaderMenu=k;
59
22
  //# sourceMappingURL=ColumnHeaderMenu.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnHeaderMenu.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/components/ColumnHeaderMenu.tsx"],"sourcesContent":["import { Dropdown, Icon } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport { Header } from '@tanstack/react-table'\nimport type { TableRow } from '../types/table'\n\nconst MenuItem = styled.div<{ isFirst?: boolean; isLast?: boolean }>`\n display: flex;\n align-items: center;\n gap: 8px;\n height: 32px;\n padding: 0 12px;\n cursor: pointer;\n border-radius: 4px;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container);\n }\n\n .icon {\n font-size: 16px;\n color: var(--md-sys-color-on-surface);\n }\n\n span {\n font-size: 14px;\n color: var(--md-sys-color-on-surface);\n }\n`\n\nconst Divider = styled.div`\n height: 1px;\n background-color: #41474D;\n`\n\nconst StyledDropdown = styled(Dropdown)`\n height: 24px;\n width: 24px;\n\n button {\n background-color: transparent;\n border: none;\n padding: 0;\n min-height: 24px;\n width: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container);\n }\n\n & > div {\n border: none;\n padding: 0;\n gap: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n\n .icon {\n font-size: 16px;\n color: var(--md-sys-color-on-surface);\n }\n`\n\ninterface MenuOption {\n value: string\n label: string\n icon: string\n}\n\ninterface ColumnHeaderMenuProps {\n header: Header<TableRow, unknown>\n canHide?: boolean\n canPin?: boolean\n canSort?: boolean\n isResizing?: boolean\n}\n\nexport const ColumnHeaderMenu = ({\n header,\n canHide,\n canPin,\n canSort,\n isResizing,\n}: ColumnHeaderMenuProps) => {\n const { column } = header\n\n // Hide the menu when resizing\n if (isResizing) {\n return null\n }\n\n // Get current column state - we need to call these methods directly to get fresh state\n const isPinned = column.getIsPinned()\n const isVisible = column.getIsVisible()\n\n const menuOptions: MenuOption[] = []\n\n if (canPin) {\n const isPinnedLeft = isPinned === 'left'\n menuOptions.push({\n value: 'pin',\n label: isPinnedLeft ? 'Unpin column' : 'Pin column',\n icon: 'push_pin',\n })\n }\n\n if (canPin && canSort) {\n menuOptions.push({\n value: 'divider1',\n label: '',\n icon: '',\n })\n }\n\n if (canSort) {\n menuOptions.push({\n value: 'sort-asc',\n label: 'Sort ascending',\n icon: 'sort',\n })\n\n menuOptions.push({\n value: 'sort-desc',\n label: 'Sort descending',\n icon: 'sort',\n })\n }\n\n if (canSort && canHide) {\n menuOptions.push({\n value: 'divider2',\n label: '',\n icon: '',\n })\n }\n\n if (canHide) {\n menuOptions.push({\n value: 'hide',\n label: isVisible ? 'Hide column' : 'Show column',\n icon: isVisible ? 'visibility_off' : 'visibility',\n })\n }\n\n if (menuOptions.length === 0) {\n return null\n }\n\n const handleMenuChange = (value: string[]) => {\n const selectedValue = value[0]\n\n if (selectedValue === 'hide') {\n // Toggle column visibility directly\n column.toggleVisibility()\n } else if (selectedValue === 'pin') {\n const isPinnedLeft = isPinned === 'left'\n if (isPinnedLeft) {\n // Unpin the column\n column.pin(false)\n } else {\n // Pin the column to the left\n column.pin('left')\n }\n } else if (selectedValue === 'sort-asc') {\n column.toggleSorting(false) // false for ascending\n } else if (selectedValue === 'sort-desc') {\n column.toggleSorting(true) // true for descending\n }\n }\n\n return (\n <StyledDropdown\n value={[]}\n options={menuOptions}\n onChange={handleMenuChange}\n dropIcon=\"more_horiz\"\n multiSelect={false}\n listStyle={{\n minWidth: '160px',\n border: 'none',\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n padding: '8px',\n }}\n placeholder=\"\"\n itemTemplate={(option) => {\n // Check if this is a divider\n if (option.value.startsWith('divider')) {\n return <Divider />\n }\n\n const menuItemIndex = menuOptions.findIndex((item) => item.value === option.value)\n const isFirst = menuItemIndex === 0\n const isLast = menuItemIndex === menuOptions.length - 1\n\n return (\n <MenuItem isFirst={isFirst} isLast={isLast}>\n <Icon icon={option.icon} />\n <span>{option.label}</span>\n </MenuItem>\n )\n }}\n />\n )\n}\n"],"names":["MenuItem","styled","Divider","StyledDropdown","Dropdown","ColumnHeaderMenu","header","canHide","canPin","canSort","isResizing","column","isPinned","isVisible","menuOptions","isPinnedLeft","handleMenuChange","value","selectedValue","jsx","option","menuItemIndex","item","isFirst","isLast","jsxs","Icon"],"mappings":"uNAKMA,EAAWC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAwBlBC,EAAUD,EAAO;AAAA;AAAA;AAAA,EAKjBE,EAAiBF,EAAOG,UAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgDzBC,EAAmB,CAAC,CAC/B,OAAAC,EACA,QAAAC,EACA,OAAAC,EACA,QAAAC,EACA,WAAAC,CACF,IAA6B,CACrB,KAAA,CAAE,OAAAC,GAAWL,EAGnB,GAAII,EACK,OAAA,KAIH,MAAAE,EAAWD,EAAO,YAAY,EAC9BE,EAAYF,EAAO,aAAa,EAEhCG,EAA4B,CAAC,EAEnC,GAAIN,EAAQ,CACV,MAAMO,EAAeH,IAAa,OAClCE,EAAY,KAAK,CACf,MAAO,MACP,MAAOC,EAAe,eAAiB,aACvC,KAAM,UAAA,CACP,CAAA,CAyCC,GAtCAP,GAAUC,GACZK,EAAY,KAAK,CACf,MAAO,WACP,MAAO,GACP,KAAM,EAAA,CACP,EAGCL,IACFK,EAAY,KAAK,CACf,MAAO,WACP,MAAO,iBACP,KAAM,MAAA,CACP,EAEDA,EAAY,KAAK,CACf,MAAO,YACP,MAAO,kBACP,KAAM,MAAA,CACP,GAGCL,GAAWF,GACbO,EAAY,KAAK,CACf,MAAO,WACP,MAAO,GACP,KAAM,EAAA,CACP,EAGCP,GACFO,EAAY,KAAK,CACf,MAAO,OACP,MAAOD,EAAY,cAAgB,cACnC,KAAMA,EAAY,iBAAmB,YAAA,CACtC,EAGCC,EAAY,SAAW,EAClB,OAAA,KAGH,MAAAE,EAAoBC,GAAoB,CACtC,MAAAC,EAAgBD,EAAM,CAAC,EAEzBC,IAAkB,OAEpBP,EAAO,iBAAiB,EACfO,IAAkB,MACNN,IAAa,OAGhCD,EAAO,IAAI,EAAK,EAGhBA,EAAO,IAAI,MAAM,EAEVO,IAAkB,WAC3BP,EAAO,cAAc,EAAK,EACjBO,IAAkB,aAC3BP,EAAO,cAAc,EAAI,CAE7B,EAGE,OAAAQ,EAAA,kBAAA,IAAChB,EAAA,CACC,MAAO,CAAC,EACR,QAASW,EACT,SAAUE,EACV,SAAS,aACT,YAAa,GACb,UAAW,CACT,SAAU,QACV,OAAQ,OACR,QAAS,OACT,cAAe,SACf,IAAK,MACL,QAAS,KACX,EACA,YAAY,GACZ,aAAeI,GAAW,CAExB,GAAIA,EAAO,MAAM,WAAW,SAAS,EACnC,+BAAQlB,EAAQ,EAAA,EAGZ,MAAAmB,EAAgBP,EAAY,UAAWQ,GAASA,EAAK,QAAUF,EAAO,KAAK,EAC3EG,EAAUF,IAAkB,EAC5BG,EAASH,IAAkBP,EAAY,OAAS,EAGpD,OAAAW,EAAA,kBAAA,KAACzB,EAAS,CAAA,QAAAuB,EAAkB,OAAAC,EAC1B,SAAA,CAACL,EAAAA,kBAAAA,IAAAO,EAAAA,KAAA,CAAK,KAAMN,EAAO,IAAM,CAAA,EACzBD,EAAAA,kBAAAA,IAAC,OAAM,CAAA,SAAAC,EAAO,KAAM,CAAA,CAAA,EACtB,CAAA,CAEJ,CACF,CAEJ"}
1
+ {"version":3,"file":"ColumnHeaderMenu.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/components/ColumnHeaderMenu.tsx"],"sourcesContent":["import { Button } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport { Header } from '@tanstack/react-table'\nimport type { TableRow } from '../types/table'\nimport { useRef } from 'react'\nimport { useMenuContext } from '../../../context/MenuContext'\n// @ts-expect-error - non TS file\nimport Menu from '../../../../../src/components/Menu/MenuComponents/Menu'\n// @ts-expect-error - non TS file\nimport MenuContainer from '../../../../../src/components/Menu/MenuComponents/MenuContainer2'\n\nconst MenuButton = styled(Button)<{ $isOpen: boolean }>`\n background-color: unset !important;\n z-index: 110;\n position: relative;\n padding: 2px;\n width: 24px;\n height: 24px;\n\n &.hasIcon {\n padding: 2px;\n }\n\n &:hover,\n &.active {\n background-color: var(--md-sys-color-surface-container-hover) !important;\n }\n\n ${({ $isOpen }) =>\n $isOpen &&\n `\n background-color: var(--md-sys-color-surface-container-hover) !important;\n `}\n`\n\ninterface ColumnHeaderMenuProps {\n header: Header<TableRow, unknown>\n canHide?: boolean\n canPin?: boolean\n canSort?: boolean\n isResizing?: boolean\n className?: string\n menuId?: string\n isOpen?: boolean\n}\n\nexport const ColumnHeaderMenu = ({\n header,\n canHide,\n canPin,\n canSort,\n isResizing,\n className,\n menuId,\n isOpen,\n}: ColumnHeaderMenuProps) => {\n const { column } = header\n const { toggleMenuOpen } = useMenuContext()\n const buttonRef = useRef<HTMLButtonElement>(null)\n\n // Hide the menu when resizing\n if (isResizing) {\n return null\n }\n\n const handleMenuToggle = (open: boolean = true) => {\n toggleMenuOpen(open ? menuId || false : false)\n }\n\n // Get current column state - we need to call these methods directly to get fresh state\n const isPinned = column.getIsPinned()\n const isVisible = column.getIsVisible()\n const isSorted = column.getIsSorted()\n\n const menuItems: Array<{\n id: string\n label?: string\n icon?: string\n className?: string\n onClick?: () => void\n type?: 'divider'\n selected?: boolean\n }> = []\n\n if (canPin) {\n const isPinnedLeft = isPinned === 'left'\n menuItems.push({\n id: 'pin',\n label: isPinnedLeft ? 'Unpin column' : 'Pin column',\n icon: 'push_pin',\n selected: isPinnedLeft,\n onClick: () => {\n if (isPinnedLeft) {\n column.pin(false)\n } else {\n column.pin('left')\n }\n handleMenuToggle(false)\n },\n })\n }\n\n if (canPin && canSort) {\n menuItems.push({\n id: 'divider',\n type: 'divider',\n })\n }\n\n if (canSort) {\n menuItems.push({\n id: 'sort-asc',\n label: 'Sort ascending',\n icon: 'sort',\n className: 'sort-asc-icon',\n selected: isSorted === 'asc',\n onClick: () => {\n column.toggleSorting(false)\n handleMenuToggle(false)\n },\n })\n\n menuItems.push({\n id: 'sort-desc',\n label: 'Sort descending',\n icon: 'sort',\n className: 'sort-desc-icon',\n selected: isSorted === 'desc',\n onClick: () => {\n column.toggleSorting(true)\n handleMenuToggle(false)\n },\n })\n }\n\n if (canSort && canHide) {\n menuItems.push({\n id: 'divider',\n type: 'divider',\n })\n }\n\n if (canHide) {\n menuItems.push({\n id: 'hide',\n label: isVisible ? 'Hide column' : 'Show column',\n icon: isVisible ? 'visibility_off' : 'visibility',\n onClick: () => {\n column.toggleVisibility()\n handleMenuToggle(false)\n },\n })\n }\n\n if (menuItems.length === 0) {\n return null\n }\n\n return (\n <>\n <MenuButton\n ref={buttonRef}\n className={className}\n onClick={(e) => {\n e.stopPropagation()\n handleMenuToggle()\n }}\n icon=\"more_horiz\"\n id={menuId}\n $isOpen={isOpen || false}\n />\n <MenuContainer\n target={buttonRef.current}\n id={menuId}\n align=\"left\"\n onClose={(e: any) => {\n e.stopPropagation()\n handleMenuToggle(false)\n }}\n >\n <Menu menu={menuItems} onClose={() => handleMenuToggle(false)} />\n </MenuContainer>\n </>\n )\n}\n"],"names":["MenuButton","styled","Button","$isOpen","ColumnHeaderMenu","header","canHide","canPin","canSort","isResizing","className","menuId","isOpen","column","toggleMenuOpen","useMenuContext","buttonRef","useRef","handleMenuToggle","open","isPinned","isVisible","isSorted","menuItems","isPinnedLeft","jsxs","Fragment","jsx","MenuContainer","Menu"],"mappings":"2bAWMA,EAAaC,EAAOC,QAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAiB5B,CAAC,CAAE,QAAAC,CAAQ,IACXA,GACA;AAAA;AAAA,GAED;AAAA,EAcUC,EAAmB,CAAC,CAC/B,OAAAC,EACA,QAAAC,EACA,OAAAC,EACA,QAAAC,EACA,WAAAC,EACA,UAAAC,EACA,OAAAC,EACA,OAAAC,CACF,IAA6B,CACrB,KAAA,CAAE,OAAAC,GAAWR,EACb,CAAE,eAAAS,CAAe,EAAIC,iBAAe,EACpCC,EAAYC,SAA0B,IAAI,EAGhD,GAAIR,EACK,OAAA,KAGH,MAAAS,EAAmB,CAACC,EAAgB,KAAS,CAClCL,EAAAK,GAAOR,GAAU,EAAa,CAC/C,EAGMS,EAAWP,EAAO,YAAY,EAC9BQ,EAAYR,EAAO,aAAa,EAChCS,EAAWT,EAAO,YAAY,EAE9BU,EAQD,CAAC,EAEN,GAAIhB,EAAQ,CACV,MAAMiB,EAAeJ,IAAa,OAClCG,EAAU,KAAK,CACb,GAAI,MACJ,MAAOC,EAAe,eAAiB,aACvC,KAAM,WACN,SAAUA,EACV,QAAS,IAAM,CACTA,EACFX,EAAO,IAAI,EAAK,EAEhBA,EAAO,IAAI,MAAM,EAEnBK,EAAiB,EAAK,CAAA,CACxB,CACD,CAAA,CAuDC,OApDAX,GAAUC,GACZe,EAAU,KAAK,CACb,GAAI,UACJ,KAAM,SAAA,CACP,EAGCf,IACFe,EAAU,KAAK,CACb,GAAI,WACJ,MAAO,iBACP,KAAM,OACN,UAAW,gBACX,SAAUD,IAAa,MACvB,QAAS,IAAM,CACbT,EAAO,cAAc,EAAK,EAC1BK,EAAiB,EAAK,CAAA,CACxB,CACD,EAEDK,EAAU,KAAK,CACb,GAAI,YACJ,MAAO,kBACP,KAAM,OACN,UAAW,iBACX,SAAUD,IAAa,OACvB,QAAS,IAAM,CACbT,EAAO,cAAc,EAAI,EACzBK,EAAiB,EAAK,CAAA,CACxB,CACD,GAGCV,GAAWF,GACbiB,EAAU,KAAK,CACb,GAAI,UACJ,KAAM,SAAA,CACP,EAGCjB,GACFiB,EAAU,KAAK,CACb,GAAI,OACJ,MAAOF,EAAY,cAAgB,cACnC,KAAMA,EAAY,iBAAmB,aACrC,QAAS,IAAM,CACbR,EAAO,iBAAiB,EACxBK,EAAiB,EAAK,CAAA,CACxB,CACD,EAGCK,EAAU,SAAW,EAChB,KAKLE,EAAA,kBAAA,KAAAC,6BAAA,CAAA,SAAA,CAAAC,EAAA,kBAAA,IAAC3B,EAAA,CACC,IAAKgB,EACL,UAAAN,EACA,QAAU,GAAM,CACd,EAAE,gBAAgB,EACDQ,EAAA,CACnB,EACA,KAAK,aACL,GAAIP,EACJ,QAASC,GAAU,EAAA,CACrB,EACAe,EAAA,kBAAA,IAACC,EAAA,CACC,OAAQZ,EAAU,QAClB,GAAIL,EACJ,MAAM,OACN,QAAU,GAAW,CACnB,EAAE,gBAAgB,EAClBO,EAAiB,EAAK,CACxB,EAEA,SAAAS,EAAAA,kBAAAA,IAACE,GAAK,KAAMN,EAAW,QAAS,IAAML,EAAiB,EAAK,CAAG,CAAA,CAAA,CAAA,CACjE,EACF,CAEJ"}
@@ -1,138 +1,118 @@
1
1
  import { j as s } from "../../../../../_virtual/jsx-runtime.es.js";
2
- import { Dropdown as x, Icon as v } from "@ynput/ayon-react-components";
3
- import l from "styled-components";
4
- const b = l.div`
5
- display: flex;
6
- align-items: center;
7
- gap: 8px;
8
- height: 32px;
9
- padding: 0 12px;
10
- cursor: pointer;
11
- border-radius: 4px;
12
-
13
- &:hover {
14
- background-color: var(--md-sys-color-surface-container);
15
- }
16
-
17
- .icon {
18
- font-size: 16px;
19
- color: var(--md-sys-color-on-surface);
20
- }
21
-
22
- span {
23
- font-size: 14px;
24
- color: var(--md-sys-color-on-surface);
25
- }
26
- `, y = l.div`
27
- height: 1px;
28
- background-color: #41474D;
29
- `, j = l(x)`
30
- height: 24px;
2
+ import { Button as v } from "@ynput/ayon-react-components";
3
+ import x from "styled-components";
4
+ import { useRef as C } from "react";
5
+ import { useMenuContext as k } from "../../../context/MenuContext.es.js";
6
+ import y from "../../../../../src/components/Menu/MenuComponents/Menu.es.js";
7
+ import M from "../../../../../src/components/Menu/MenuComponents/MenuContainer2.es.js";
8
+ const j = x(v)`
9
+ background-color: unset !important;
10
+ z-index: 110;
11
+ position: relative;
12
+ padding: 2px;
31
13
  width: 24px;
14
+ height: 24px;
32
15
 
33
- button {
34
- background-color: transparent;
35
- border: none;
36
- padding: 0;
37
- min-height: 24px;
38
- width: 24px;
39
- display: flex;
40
- align-items: center;
41
- justify-content: center;
42
-
43
- &:hover {
44
- background-color: var(--md-sys-color-surface-container);
45
- }
46
-
47
- & > div {
48
- border: none;
49
- padding: 0;
50
- gap: 0;
51
- display: flex;
52
- align-items: center;
53
- justify-content: center;
54
- }
16
+ &.hasIcon {
17
+ padding: 2px;
55
18
  }
56
19
 
57
- .icon {
58
- font-size: 16px;
59
- color: var(--md-sys-color-on-surface);
20
+ &:hover,
21
+ &.active {
22
+ background-color: var(--md-sys-color-surface-container-hover) !important;
60
23
  }
61
- `, D = ({
62
- header: p,
63
- canHide: r,
64
- canPin: c,
65
- canSort: t,
66
- isResizing: f
24
+
25
+ ${({ $isOpen: t }) => t && `
26
+ background-color: var(--md-sys-color-surface-container-hover) !important;
27
+ `}
28
+ `, z = ({
29
+ header: t,
30
+ canHide: c,
31
+ canPin: a,
32
+ canSort: r,
33
+ isResizing: f,
34
+ className: m,
35
+ menuId: l,
36
+ isOpen: g
67
37
  }) => {
68
- const { column: i } = p;
38
+ const { column: o } = t, { toggleMenuOpen: h } = k(), d = C(null);
69
39
  if (f)
70
40
  return null;
71
- const d = i.getIsPinned(), a = i.getIsVisible(), e = [];
72
- if (c) {
73
- const n = d === "left";
74
- e.push({
75
- value: "pin",
76
- label: n ? "Unpin column" : "Pin column",
77
- icon: "push_pin"
41
+ const n = (e = !0) => {
42
+ h(e && l || !1);
43
+ }, b = o.getIsPinned(), u = o.getIsVisible(), p = o.getIsSorted(), i = [];
44
+ if (a) {
45
+ const e = b === "left";
46
+ i.push({
47
+ id: "pin",
48
+ label: e ? "Unpin column" : "Pin column",
49
+ icon: "push_pin",
50
+ selected: e,
51
+ onClick: () => {
52
+ e ? o.pin(!1) : o.pin("left"), n(!1);
53
+ }
78
54
  });
79
55
  }
80
- if (c && t && e.push({
81
- value: "divider1",
82
- label: "",
83
- icon: ""
84
- }), t && (e.push({
85
- value: "sort-asc",
56
+ return a && r && i.push({
57
+ id: "divider",
58
+ type: "divider"
59
+ }), r && (i.push({
60
+ id: "sort-asc",
86
61
  label: "Sort ascending",
87
- icon: "sort"
88
- }), e.push({
89
- value: "sort-desc",
62
+ icon: "sort",
63
+ className: "sort-asc-icon",
64
+ selected: p === "asc",
65
+ onClick: () => {
66
+ o.toggleSorting(!1), n(!1);
67
+ }
68
+ }), i.push({
69
+ id: "sort-desc",
90
70
  label: "Sort descending",
91
- icon: "sort"
92
- })), t && r && e.push({
93
- value: "divider2",
94
- label: "",
95
- icon: ""
96
- }), r && e.push({
97
- value: "hide",
98
- label: a ? "Hide column" : "Show column",
99
- icon: a ? "visibility_off" : "visibility"
100
- }), e.length === 0)
101
- return null;
102
- const g = (n) => {
103
- const o = n[0];
104
- o === "hide" ? i.toggleVisibility() : o === "pin" ? d === "left" ? i.pin(!1) : i.pin("left") : o === "sort-asc" ? i.toggleSorting(!1) : o === "sort-desc" && i.toggleSorting(!0);
105
- };
106
- return /* @__PURE__ */ s.jsx(
107
- j,
108
- {
109
- value: [],
110
- options: e,
111
- onChange: g,
112
- dropIcon: "more_horiz",
113
- multiSelect: !1,
114
- listStyle: {
115
- minWidth: "160px",
116
- border: "none",
117
- display: "flex",
118
- flexDirection: "column",
119
- gap: "8px",
120
- padding: "8px"
121
- },
122
- placeholder: "",
123
- itemTemplate: (n) => {
124
- if (n.value.startsWith("divider"))
125
- return /* @__PURE__ */ s.jsx(y, {});
126
- const o = e.findIndex((m) => m.value === n.value), u = o === 0, h = o === e.length - 1;
127
- return /* @__PURE__ */ s.jsxs(b, { isFirst: u, isLast: h, children: [
128
- /* @__PURE__ */ s.jsx(v, { icon: n.icon }),
129
- /* @__PURE__ */ s.jsx("span", { children: n.label })
130
- ] });
131
- }
71
+ icon: "sort",
72
+ className: "sort-desc-icon",
73
+ selected: p === "desc",
74
+ onClick: () => {
75
+ o.toggleSorting(!0), n(!1);
76
+ }
77
+ })), r && c && i.push({
78
+ id: "divider",
79
+ type: "divider"
80
+ }), c && i.push({
81
+ id: "hide",
82
+ label: u ? "Hide column" : "Show column",
83
+ icon: u ? "visibility_off" : "visibility",
84
+ onClick: () => {
85
+ o.toggleVisibility(), n(!1);
132
86
  }
133
- );
87
+ }), i.length === 0 ? null : /* @__PURE__ */ s.jsxs(s.Fragment, { children: [
88
+ /* @__PURE__ */ s.jsx(
89
+ j,
90
+ {
91
+ ref: d,
92
+ className: m,
93
+ onClick: (e) => {
94
+ e.stopPropagation(), n();
95
+ },
96
+ icon: "more_horiz",
97
+ id: l,
98
+ $isOpen: g || !1
99
+ }
100
+ ),
101
+ /* @__PURE__ */ s.jsx(
102
+ M,
103
+ {
104
+ target: d.current,
105
+ id: l,
106
+ align: "left",
107
+ onClose: (e) => {
108
+ e.stopPropagation(), n(!1);
109
+ },
110
+ children: /* @__PURE__ */ s.jsx(y, { menu: i, onClose: () => n(!1) })
111
+ }
112
+ )
113
+ ] });
134
114
  };
135
115
  export {
136
- D as ColumnHeaderMenu
116
+ z as ColumnHeaderMenu
137
117
  };
138
118
  //# sourceMappingURL=ColumnHeaderMenu.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnHeaderMenu.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/components/ColumnHeaderMenu.tsx"],"sourcesContent":["import { Dropdown, Icon } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport { Header } from '@tanstack/react-table'\nimport type { TableRow } from '../types/table'\n\nconst MenuItem = styled.div<{ isFirst?: boolean; isLast?: boolean }>`\n display: flex;\n align-items: center;\n gap: 8px;\n height: 32px;\n padding: 0 12px;\n cursor: pointer;\n border-radius: 4px;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container);\n }\n\n .icon {\n font-size: 16px;\n color: var(--md-sys-color-on-surface);\n }\n\n span {\n font-size: 14px;\n color: var(--md-sys-color-on-surface);\n }\n`\n\nconst Divider = styled.div`\n height: 1px;\n background-color: #41474D;\n`\n\nconst StyledDropdown = styled(Dropdown)`\n height: 24px;\n width: 24px;\n\n button {\n background-color: transparent;\n border: none;\n padding: 0;\n min-height: 24px;\n width: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container);\n }\n\n & > div {\n border: none;\n padding: 0;\n gap: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n\n .icon {\n font-size: 16px;\n color: var(--md-sys-color-on-surface);\n }\n`\n\ninterface MenuOption {\n value: string\n label: string\n icon: string\n}\n\ninterface ColumnHeaderMenuProps {\n header: Header<TableRow, unknown>\n canHide?: boolean\n canPin?: boolean\n canSort?: boolean\n isResizing?: boolean\n}\n\nexport const ColumnHeaderMenu = ({\n header,\n canHide,\n canPin,\n canSort,\n isResizing,\n}: ColumnHeaderMenuProps) => {\n const { column } = header\n\n // Hide the menu when resizing\n if (isResizing) {\n return null\n }\n\n // Get current column state - we need to call these methods directly to get fresh state\n const isPinned = column.getIsPinned()\n const isVisible = column.getIsVisible()\n\n const menuOptions: MenuOption[] = []\n\n if (canPin) {\n const isPinnedLeft = isPinned === 'left'\n menuOptions.push({\n value: 'pin',\n label: isPinnedLeft ? 'Unpin column' : 'Pin column',\n icon: 'push_pin',\n })\n }\n\n if (canPin && canSort) {\n menuOptions.push({\n value: 'divider1',\n label: '',\n icon: '',\n })\n }\n\n if (canSort) {\n menuOptions.push({\n value: 'sort-asc',\n label: 'Sort ascending',\n icon: 'sort',\n })\n\n menuOptions.push({\n value: 'sort-desc',\n label: 'Sort descending',\n icon: 'sort',\n })\n }\n\n if (canSort && canHide) {\n menuOptions.push({\n value: 'divider2',\n label: '',\n icon: '',\n })\n }\n\n if (canHide) {\n menuOptions.push({\n value: 'hide',\n label: isVisible ? 'Hide column' : 'Show column',\n icon: isVisible ? 'visibility_off' : 'visibility',\n })\n }\n\n if (menuOptions.length === 0) {\n return null\n }\n\n const handleMenuChange = (value: string[]) => {\n const selectedValue = value[0]\n\n if (selectedValue === 'hide') {\n // Toggle column visibility directly\n column.toggleVisibility()\n } else if (selectedValue === 'pin') {\n const isPinnedLeft = isPinned === 'left'\n if (isPinnedLeft) {\n // Unpin the column\n column.pin(false)\n } else {\n // Pin the column to the left\n column.pin('left')\n }\n } else if (selectedValue === 'sort-asc') {\n column.toggleSorting(false) // false for ascending\n } else if (selectedValue === 'sort-desc') {\n column.toggleSorting(true) // true for descending\n }\n }\n\n return (\n <StyledDropdown\n value={[]}\n options={menuOptions}\n onChange={handleMenuChange}\n dropIcon=\"more_horiz\"\n multiSelect={false}\n listStyle={{\n minWidth: '160px',\n border: 'none',\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n padding: '8px',\n }}\n placeholder=\"\"\n itemTemplate={(option) => {\n // Check if this is a divider\n if (option.value.startsWith('divider')) {\n return <Divider />\n }\n\n const menuItemIndex = menuOptions.findIndex((item) => item.value === option.value)\n const isFirst = menuItemIndex === 0\n const isLast = menuItemIndex === menuOptions.length - 1\n\n return (\n <MenuItem isFirst={isFirst} isLast={isLast}>\n <Icon icon={option.icon} />\n <span>{option.label}</span>\n </MenuItem>\n )\n }}\n />\n )\n}\n"],"names":["MenuItem","styled","Divider","StyledDropdown","Dropdown","ColumnHeaderMenu","header","canHide","canPin","canSort","isResizing","column","isPinned","isVisible","menuOptions","isPinnedLeft","handleMenuChange","value","selectedValue","jsx","option","menuItemIndex","item","isFirst","isLast","jsxs","Icon"],"mappings":"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"}
1
+ {"version":3,"file":"ColumnHeaderMenu.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/components/ColumnHeaderMenu.tsx"],"sourcesContent":["import { Button } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport { Header } from '@tanstack/react-table'\nimport type { TableRow } from '../types/table'\nimport { useRef } from 'react'\nimport { useMenuContext } from '../../../context/MenuContext'\n// @ts-expect-error - non TS file\nimport Menu from '../../../../../src/components/Menu/MenuComponents/Menu'\n// @ts-expect-error - non TS file\nimport MenuContainer from '../../../../../src/components/Menu/MenuComponents/MenuContainer2'\n\nconst MenuButton = styled(Button)<{ $isOpen: boolean }>`\n background-color: unset !important;\n z-index: 110;\n position: relative;\n padding: 2px;\n width: 24px;\n height: 24px;\n\n &.hasIcon {\n padding: 2px;\n }\n\n &:hover,\n &.active {\n background-color: var(--md-sys-color-surface-container-hover) !important;\n }\n\n ${({ $isOpen }) =>\n $isOpen &&\n `\n background-color: var(--md-sys-color-surface-container-hover) !important;\n `}\n`\n\ninterface ColumnHeaderMenuProps {\n header: Header<TableRow, unknown>\n canHide?: boolean\n canPin?: boolean\n canSort?: boolean\n isResizing?: boolean\n className?: string\n menuId?: string\n isOpen?: boolean\n}\n\nexport const ColumnHeaderMenu = ({\n header,\n canHide,\n canPin,\n canSort,\n isResizing,\n className,\n menuId,\n isOpen,\n}: ColumnHeaderMenuProps) => {\n const { column } = header\n const { toggleMenuOpen } = useMenuContext()\n const buttonRef = useRef<HTMLButtonElement>(null)\n\n // Hide the menu when resizing\n if (isResizing) {\n return null\n }\n\n const handleMenuToggle = (open: boolean = true) => {\n toggleMenuOpen(open ? menuId || false : false)\n }\n\n // Get current column state - we need to call these methods directly to get fresh state\n const isPinned = column.getIsPinned()\n const isVisible = column.getIsVisible()\n const isSorted = column.getIsSorted()\n\n const menuItems: Array<{\n id: string\n label?: string\n icon?: string\n className?: string\n onClick?: () => void\n type?: 'divider'\n selected?: boolean\n }> = []\n\n if (canPin) {\n const isPinnedLeft = isPinned === 'left'\n menuItems.push({\n id: 'pin',\n label: isPinnedLeft ? 'Unpin column' : 'Pin column',\n icon: 'push_pin',\n selected: isPinnedLeft,\n onClick: () => {\n if (isPinnedLeft) {\n column.pin(false)\n } else {\n column.pin('left')\n }\n handleMenuToggle(false)\n },\n })\n }\n\n if (canPin && canSort) {\n menuItems.push({\n id: 'divider',\n type: 'divider',\n })\n }\n\n if (canSort) {\n menuItems.push({\n id: 'sort-asc',\n label: 'Sort ascending',\n icon: 'sort',\n className: 'sort-asc-icon',\n selected: isSorted === 'asc',\n onClick: () => {\n column.toggleSorting(false)\n handleMenuToggle(false)\n },\n })\n\n menuItems.push({\n id: 'sort-desc',\n label: 'Sort descending',\n icon: 'sort',\n className: 'sort-desc-icon',\n selected: isSorted === 'desc',\n onClick: () => {\n column.toggleSorting(true)\n handleMenuToggle(false)\n },\n })\n }\n\n if (canSort && canHide) {\n menuItems.push({\n id: 'divider',\n type: 'divider',\n })\n }\n\n if (canHide) {\n menuItems.push({\n id: 'hide',\n label: isVisible ? 'Hide column' : 'Show column',\n icon: isVisible ? 'visibility_off' : 'visibility',\n onClick: () => {\n column.toggleVisibility()\n handleMenuToggle(false)\n },\n })\n }\n\n if (menuItems.length === 0) {\n return null\n }\n\n return (\n <>\n <MenuButton\n ref={buttonRef}\n className={className}\n onClick={(e) => {\n e.stopPropagation()\n handleMenuToggle()\n }}\n icon=\"more_horiz\"\n id={menuId}\n $isOpen={isOpen || false}\n />\n <MenuContainer\n target={buttonRef.current}\n id={menuId}\n align=\"left\"\n onClose={(e: any) => {\n e.stopPropagation()\n handleMenuToggle(false)\n }}\n >\n <Menu menu={menuItems} onClose={() => handleMenuToggle(false)} />\n </MenuContainer>\n </>\n )\n}\n"],"names":["MenuButton","styled","Button","$isOpen","ColumnHeaderMenu","header","canHide","canPin","canSort","isResizing","className","menuId","isOpen","column","toggleMenuOpen","useMenuContext","buttonRef","useRef","handleMenuToggle","open","isPinned","isVisible","isSorted","menuItems","isPinnedLeft","jsxs","Fragment","jsx","MenuContainer","Menu"],"mappings":"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"}