@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":"DetailsPanelHeader.cjs.js","sources":["../../../../../../src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { union, upperFirst } from 'lodash'\nimport clsx from 'clsx'\nimport { Icon } from '@ynput/ayon-react-components'\n\nimport { EntityPanelUploader, StackedThumbnails } from '@shared/components'\nimport { Actions, DetailsPanelProps } from '@shared/containers'\n// shared\nimport { useGetEntitiesChecklistsQuery, useGetAttributeConfigQuery } from '@shared/api'\nimport type { DetailsPanelEntityData } from '@shared/api'\nimport { getPriorityOptions } from '@shared/util'\nimport { useScopedStatuses, useEntityUpdate } from '@shared/hooks'\nimport { DetailsPanelTab, useDetailsPanelContext } from '@shared/context'\n\nimport FeedFilters from '../FeedFilters/FeedFilters'\nimport * as Styled from './DetailsPanelHeader.styled'\nimport getThumbnails from '../helpers/getThumbnails'\nimport { buildDetailsPanelTitles } from '../helpers/buildDetailsPanelTitles'\nimport { PlayableIcon } from '@shared/components/PlayableIcon/PlayableIcon'\n\nexport type EntityTypeIcons = {\n folder: Record<string, string>\n task: Record<string, string>\n product: Record<string, string>\n}\n\ntype DetailsPanelHeaderProps = {\n entityType: 'folder' | 'task' | 'version' | 'representation'\n entitySubTypes: string[]\n entities: DetailsPanelEntityData[]\n disabledAssignees?: any[]\n users?: any[]\n disabledStatuses?: string[]\n tagsOptions?: any[]\n isFetching?: boolean\n isCompact?: boolean\n currentTab: DetailsPanelTab\n onTabChange: (tab: DetailsPanelTab) => void\n onOpenViewer: (args: any) => void\n onEntityFocus: DetailsPanelProps['onEntityFocus']\n entityTypeIcons: EntityTypeIcons\n}\n\nconst DetailsPanelHeader = ({\n entityType,\n entitySubTypes,\n entities = [],\n disabledAssignees = [],\n users = [],\n disabledStatuses,\n tagsOptions = [],\n isFetching,\n isCompact = false,\n currentTab,\n onTabChange,\n entityTypeIcons,\n onOpenViewer,\n onEntityFocus,\n}: DetailsPanelHeaderProps) => {\n const { useSearchParams, useNavigate, isDeveloperMode } = useDetailsPanelContext()\n const navigate = useNavigate()\n const [searchParams, setSearchParams] = useSearchParams()\n\n const statuses = useScopedStatuses(\n entities.map((entity) => entity.projectName),\n [entityType],\n )\n\n // for selected entities, get flat list of assignees\n const entityUsers: string[] = useMemo(\n () =>\n union(\n ...entities.flatMap((entity) => [\n entity.task?.assignees || [],\n entity.version?.author || [],\n ]),\n ),\n [entities],\n )\n\n let firstEntity = entities[0]\n // If there's no data return null\n const isLoading = entities.length === 0 || !firstEntity || isFetching\n // placeholder entity\n if (!firstEntity) {\n firstEntity = {\n id: 'placeholder',\n name: 'loading...',\n label: 'loading...',\n entityType,\n status: 'loading',\n projectName: 'loading...',\n tags: [],\n hasReviewables: false,\n attrib: {},\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n }\n }\n\n const projectName = entities.length > 1 ? undefined : firstEntity?.projectName\n\n const entityIds = entities\n .filter((e) => e.projectName === firstEntity?.projectName && e.id)\n .map((entity) => entity.id)\n\n // get checklists count\n const { data: checklistCount } = useGetEntitiesChecklistsQuery(\n {\n projectName: firstEntity?.projectName,\n entityIds,\n },\n { skip: !firstEntity?.projectName || !entityIds.length },\n )\n let checklistsLabel\n if (checklistCount?.total && checklistCount.total > 0) {\n checklistsLabel = `${checklistCount.checked}/${checklistCount.total}`\n }\n\n // get priorities\n // get priority attribute so we know the colors and icons for each priority\n const { data: priorityAttrib } = useGetAttributeConfigQuery({ attributeName: 'priority' })\n const priorities = getPriorityOptions(priorityAttrib, entityType)\n\n const thumbnails = useMemo(\n () => getThumbnails(entities, entityType, entityTypeIcons),\n [entities, entityType, entityTypeIcons],\n )\n\n // we need to get the intersection of all the statuses of the projects for the selected entities\n // this means that if we have 2 entities from 2 different projects, we need to get the intersection of the statuses of those 2 projects\n // and it prevents us from showing statuses that are not available for the selected entities\n const statusesValue = useMemo(() => entities.map((t) => t.status), [entities])\n const priorityValues = useMemo(() => entities.map((t) => t.attrib?.priority), [entities])\n const tagsValues: string[][] = useMemo(() => entities.map((t) => t.tags), [entities])\n const tagsOptionsObject = useMemo(\n () =>\n tagsOptions.reduce((acc, tag) => {\n acc[tag.name] = tag\n return acc\n }, {}),\n [tagsOptions],\n )\n\n const isMultiple = entities.length > 1\n\n const { updateEntity } = useEntityUpdate({\n entities: entities.map((e) => ({\n id: e.id,\n projectName: e.projectName,\n users: e.task?.assignees || [],\n folderId: e.folder?.id,\n productId: e.product?.id,\n })),\n entityType,\n })\n\n const handleUpdate = (field: string, value: any) => {\n if (value === null || value === undefined) return console.error('value is null or undefined')\n return updateEntity(field, value)\n }\n\n const handleThumbnailClick = () => {\n let versionIds,\n id = firstEntity.id,\n entityTypeKey = entityType + 'Id'\n\n if (entityType === 'version' && firstEntity.product?.id) {\n versionIds = [firstEntity.id]\n id = firstEntity.product?.id\n entityTypeKey = 'productId'\n }\n\n if (id) {\n onOpenViewer({\n [entityTypeKey]: id,\n projectName,\n versionIds,\n })\n }\n }\n\n const hasUser =\n ['task', 'version', 'representation'].includes(entityType) &&\n (entityUsers.length > 0 || entityType === 'task')\n\n const usersOptions = users.map((u) => u)\n if (hasUser) {\n // check if all users are in options, otherwise add them\n const allUsers = users.map((u) => u.name)\n const usersToAdd = entityUsers.filter((u) => !allUsers.includes(u))\n if (usersToAdd.length) {\n usersOptions.push(...usersToAdd.map((u) => ({ name: u, fullName: u })))\n }\n }\n\n // Get title and subtitle from the imported function\n const { title, subTitle } = buildDetailsPanelTitles(entities, entityType)\n\n return (\n <Styled.HeaderContainer>\n <EntityPanelUploader\n entities={entities}\n entityType={entityType}\n projectName={projectName}\n onVersionCreated={(id) => onEntityFocus?.(id, 'version')}\n >\n <Styled.Grid className={clsx('details-panel-header', { isCompact })}>\n <Styled.Header\n className={clsx('titles', { isCompact, loading: isLoading }, 'no-shimmer')}\n >\n <div style={{ position: 'relative' }}>\n <StackedThumbnails\n isLoading={isLoading}\n shimmer={isLoading}\n thumbnails={thumbnails}\n onClick={thumbnails.length === 1 ? handleThumbnailClick : undefined}\n hoverIcon={'play_circle'}\n />\n {!isMultiple && firstEntity?.hasReviewables && <PlayableIcon />}\n </div>\n <Styled.Content className={clsx({ loading: isLoading })}>\n <Styled.Title>\n <h2>{title}</h2>\n <Styled.TagsSelect\n value={union(...tagsValues)}\n tags={tagsOptionsObject}\n options={[]}\n editable\n editor\n onChange={(value) => handleUpdate('tags', value)}\n align=\"right\"\n styleDropdown={{ display: isLoading ? 'none' : 'unset' }}\n className=\"tags-select\"\n />\n </Styled.Title>\n <div className=\"sub-title\">\n <span className=\"entity-type\">{upperFirst(entityType)} - </span>\n <h3>{subTitle}</h3>\n </div>\n </Styled.Content>\n </Styled.Header>\n <Styled.StatusSelect\n value={statusesValue}\n options={statuses || []}\n disabledValues={disabledStatuses}\n invert\n style={{ maxWidth: 'unset' }}\n onChange={(value) => handleUpdate('status', value)}\n className={clsx('status-select', { loading: isLoading })}\n align={isCompact ? 'right' : 'left'}\n />\n {!isCompact &&\n (!hasUser || isLoading ? (\n <div></div>\n ) : (\n <Styled.AssigneeSelect\n value={entityUsers}\n options={usersOptions}\n disabledValues={disabledAssignees.map((u) => u.name)}\n isMultiple={isMultiple && entityUsers.length > 1 && entityType === 'task'}\n readOnly={entityType !== 'task'}\n emptyMessage={entityType === 'task' ? 'Assign user' : ''}\n align=\"right\"\n onChange={(value) => handleUpdate('assignees', value)}\n className=\"assignee-select\"\n data-tooltip={\n entityUsers.length ? (entityType === 'task' ? 'Assigned users' : 'Author') : ''\n }\n />\n ))}\n <Actions\n entities={entities}\n entityType={entityType}\n entitySubTypes={entitySubTypes}\n isLoadingEntity={!!isFetching || !!isLoading}\n searchParams={searchParams}\n isDeveloperMode={isDeveloperMode}\n onSetSearchParams={setSearchParams}\n onNavigate={navigate}\n />\n {priorities ? (\n <Styled.PriorityEnumDropdown\n options={priorities}\n placeholder=\"No priority\"\n value={priorityValues}\n onChange={(value) => handleUpdate('attrib', { priority: value[0] })}\n align=\"right\"\n />\n ) : (\n <div style={{ height: 32 }}></div>\n )}\n <FeedFilters\n isLoading={isLoading}\n entityType={entityType}\n className=\"filters\"\n overrides={{\n checklists: {\n label: checklistsLabel,\n },\n }}\n currentTab={currentTab}\n onTabChange={onTabChange}\n />\n </Styled.Grid>\n </EntityPanelUploader>\n </Styled.HeaderContainer>\n )\n}\n\nexport default DetailsPanelHeader\n"],"names":["DetailsPanelHeader","entityType","entitySubTypes","entities","disabledAssignees","users","disabledStatuses","tagsOptions","isFetching","isCompact","currentTab","onTabChange","entityTypeIcons","onOpenViewer","onEntityFocus","useSearchParams","useNavigate","isDeveloperMode","useDetailsPanelContext","navigate","searchParams","setSearchParams","statuses","useScopedStatuses","entity","entityUsers","useMemo","union","_a","_b","firstEntity","isLoading","projectName","entityIds","checklistCount","useGetEntitiesChecklistsQuery","checklistsLabel","priorityAttrib","useGetAttributeConfigQuery","priorities","getPriorityOptions","thumbnails","getThumbnails","statusesValue","t","priorityValues","tagsValues","tagsOptionsObject","acc","tag","isMultiple","updateEntity","useEntityUpdate","_c","handleUpdate","field","value","handleThumbnailClick","versionIds","id","entityTypeKey","hasUser","usersOptions","u","allUsers","usersToAdd","title","subTitle","buildDetailsPanelTitles","jsx","Styled.HeaderContainer","EntityPanelUploader","jsxs","Styled.Grid","clsx","Styled.Header","StackedThumbnails","PlayableIcon","Styled.Content","Styled.Title","Styled.TagsSelect","upperFirst","Styled.StatusSelect","Styled.AssigneeSelect","Actions","Styled.PriorityEnumDropdown","FeedFilters"],"mappings":"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"}
1
+ {"version":3,"file":"DetailsPanelHeader.cjs.js","sources":["../../../../../../src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { union, upperFirst } from 'lodash'\nimport clsx from 'clsx'\nimport { Icon } from '@ynput/ayon-react-components'\n\nimport { EntityPanelUploader, StackedThumbnails } from '@shared/components'\nimport { Actions, DetailsPanelProps } from '@shared/containers'\n// shared\nimport { useGetEntitiesChecklistsQuery, useGetAttributeConfigQuery } from '@shared/api'\nimport type { DetailsPanelEntityData } from '@shared/api'\nimport { getPriorityOptions } from '@shared/util'\nimport { useScopedStatuses, useEntityUpdate } from '@shared/hooks'\nimport { DetailsPanelTab, useDetailsPanelContext } from '@shared/context'\n\nimport FeedFilters from '../FeedFilters/FeedFilters'\nimport * as Styled from './DetailsPanelHeader.styled'\nimport getThumbnails from '../helpers/getThumbnails'\nimport { buildDetailsPanelTitles } from '../helpers/buildDetailsPanelTitles'\nimport { PlayableIcon } from '@shared/components/PlayableIcon/PlayableIcon'\n\nexport type EntityTypeIcons = {\n folder: Record<string, string>\n task: Record<string, string>\n product: Record<string, string>\n}\n\ntype DetailsPanelHeaderProps = {\n entityType: 'folder' | 'task' | 'version' | 'representation'\n entitySubTypes: string[]\n entities: DetailsPanelEntityData[]\n disabledAssignees?: any[]\n users?: any[]\n disabledStatuses?: string[]\n tagsOptions?: any[]\n isFetching?: boolean\n isCompact?: boolean\n currentTab: DetailsPanelTab\n onTabChange: (tab: DetailsPanelTab) => void\n onOpenViewer: (args: any) => void\n onEntityFocus: DetailsPanelProps['onEntityFocus']\n entityTypeIcons: EntityTypeIcons\n}\n\nconst DetailsPanelHeader = ({\n entityType,\n entitySubTypes,\n entities = [],\n disabledAssignees = [],\n users = [],\n disabledStatuses,\n tagsOptions = [],\n isFetching,\n isCompact = false,\n currentTab,\n onTabChange,\n entityTypeIcons,\n onOpenViewer,\n onEntityFocus,\n}: DetailsPanelHeaderProps) => {\n const { useSearchParams, useNavigate, isDeveloperMode } = useDetailsPanelContext()\n const navigate = useNavigate()\n const [searchParams, setSearchParams] = useSearchParams()\n\n const statuses = useScopedStatuses(\n entities.map((entity) => entity.projectName),\n [entityType],\n )\n\n // for selected entities, get flat list of assignees\n const entityUsers: string[] = useMemo(\n () =>\n union(\n ...entities.flatMap((entity) => [\n entity.task?.assignees || [],\n entity.version?.author || [],\n ]),\n ),\n [entities],\n )\n\n let firstEntity = entities[0]\n // If there's no data return null\n const isLoading = entities.length === 0 || !firstEntity || isFetching\n // placeholder entity\n if (!firstEntity) {\n firstEntity = {\n id: 'placeholder',\n name: 'loading...',\n label: 'loading...',\n entityType,\n status: 'loading',\n projectName: 'loading...',\n tags: [],\n hasReviewables: false,\n attrib: {},\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n }\n }\n\n const projectName = entities.length > 1 ? undefined : firstEntity?.projectName\n\n const entityIds = entities\n .filter((e) => e.projectName === firstEntity?.projectName && e.id)\n .map((entity) => entity.id)\n\n // get checklists count\n const { data: checklistCount } = useGetEntitiesChecklistsQuery(\n {\n projectName: firstEntity?.projectName,\n entityIds,\n },\n { skip: !firstEntity?.projectName || !entityIds.length },\n )\n let checklistsLabel\n if (checklistCount?.total && checklistCount.total > 0) {\n checklistsLabel = `${checklistCount.checked}/${checklistCount.total}`\n }\n\n // get priorities\n // get priority attribute so we know the colors and icons for each priority\n const { data: priorityAttrib } = useGetAttributeConfigQuery({ attributeName: 'priority' })\n const priorities = getPriorityOptions(priorityAttrib, entityType)\n\n const thumbnails = useMemo(\n () => getThumbnails(entities, entityType, entityTypeIcons),\n [entities, entityType, entityTypeIcons],\n )\n\n // we need to get the intersection of all the statuses of the projects for the selected entities\n // this means that if we have 2 entities from 2 different projects, we need to get the intersection of the statuses of those 2 projects\n // and it prevents us from showing statuses that are not available for the selected entities\n const statusesValue = useMemo(() => entities.map((t) => t.status), [entities])\n const priorityValues = useMemo(() => entities.map((t) => t.attrib?.priority), [entities])\n const tagsValues: string[][] = useMemo(() => entities.map((t) => t.tags), [entities])\n const tagsOptionsObject = useMemo(\n () =>\n tagsOptions.reduce((acc, tag) => {\n acc[tag.name] = tag\n return acc\n }, {}),\n [tagsOptions],\n )\n\n const isMultiple = entities.length > 1\n\n const { updateEntity } = useEntityUpdate({\n entities: entities.map((e) => ({\n id: e.id,\n projectName: e.projectName,\n users: e.task?.assignees || [],\n folderId: e.folder?.id,\n productId: e.product?.id,\n })),\n entityType,\n })\n\n const handleUpdate = (field: string, value: any) => {\n if (value === null || value === undefined) return console.error('value is null or undefined')\n return updateEntity(field, value)\n }\n\n const handleThumbnailClick = () => {\n let versionIds,\n id = firstEntity.id,\n entityTypeKey = entityType + 'Id'\n\n if (entityType === 'version' && firstEntity.product?.id) {\n versionIds = [firstEntity.id]\n id = firstEntity.product?.id\n entityTypeKey = 'productId'\n }\n\n if (id) {\n onOpenViewer({\n [entityTypeKey]: id,\n projectName,\n versionIds,\n })\n }\n }\n\n const hasUser =\n ['task', 'version', 'representation'].includes(entityType) &&\n (entityUsers.length > 0 || entityType === 'task')\n\n const usersOptions = users.map((u) => u)\n if (hasUser) {\n // check if all users are in options, otherwise add them\n const allUsers = users.map((u) => u.name)\n const usersToAdd = entityUsers.filter((u) => !allUsers.includes(u))\n if (usersToAdd.length) {\n usersOptions.push(...usersToAdd.map((u) => ({ name: u, fullName: u })))\n }\n }\n\n // Get title and subtitle from the imported function\n const { title, subTitle } = buildDetailsPanelTitles(entities, entityType)\n\n return (\n <Styled.HeaderContainer>\n <EntityPanelUploader\n entities={entities}\n entityType={entityType}\n projectName={projectName}\n onVersionCreated={(id) => onEntityFocus?.(id, 'version')}\n >\n <Styled.Grid className={clsx('details-panel-header', { isCompact })}>\n <Styled.Header\n className={clsx('titles', { isCompact, loading: isLoading }, 'no-shimmer')}\n >\n <div style={{ position: 'relative' }}>\n <StackedThumbnails\n isLoading={isLoading}\n shimmer={isLoading}\n thumbnails={thumbnails}\n onClick={thumbnails.length === 1 ? handleThumbnailClick : undefined}\n hoverIcon={'play_circle'}\n />\n {!isMultiple && firstEntity?.hasReviewables && <PlayableIcon />}\n </div>\n <Styled.Content className={clsx({ loading: isLoading })}>\n <Styled.Title>\n <h2>{title}</h2>\n <Styled.TagsSelect\n value={union(...tagsValues)}\n tags={tagsOptionsObject}\n options={[]}\n editable\n editor\n onChange={(value) => handleUpdate('tags', value)}\n align=\"right\"\n styleDropdown={{ display: isLoading ? 'none' : 'unset' }}\n className=\"tags-select\"\n />\n </Styled.Title>\n <div className=\"sub-title\">\n <span className=\"entity-type\">{upperFirst(entityType)} - </span>\n <h3>{subTitle}</h3>\n </div>\n </Styled.Content>\n </Styled.Header>\n <Styled.StatusSelect\n value={statusesValue}\n options={statuses || []}\n disabledValues={disabledStatuses}\n invert\n style={{ maxWidth: 'unset' }}\n onChange={(value) => handleUpdate('status', value)}\n className={clsx('status-select', { loading: isLoading })}\n align={isCompact ? 'right' : 'left'}\n />\n {!isCompact &&\n (!hasUser || isLoading ? (\n <div></div>\n ) : (\n <Styled.AssigneeSelect\n value={entityUsers}\n options={usersOptions}\n disabledValues={disabledAssignees.map((u) => u.name)}\n isMultiple={isMultiple && entityUsers.length > 1 && entityType === 'task'}\n readOnly={entityType !== 'task'}\n emptyMessage={entityType === 'task' ? 'Assign user' : ''}\n align=\"right\"\n onChange={(value) => handleUpdate('assignees', value)}\n className=\"assignee-select\"\n data-tooltip={\n entityUsers.length ? (entityType === 'task' ? 'Assigned users' : 'Author') : ''\n }\n />\n ))}\n <Actions\n entities={entities}\n entityType={entityType}\n entitySubTypes={entitySubTypes}\n isLoadingEntity={!!isFetching || !!isLoading}\n searchParams={searchParams}\n isDeveloperMode={isDeveloperMode}\n onSetSearchParams={setSearchParams}\n onNavigate={navigate}\n />\n {priorities ? (\n <Styled.PriorityEnumDropdown\n options={priorities}\n placeholder=\"No priority\"\n value={priorityValues}\n onChange={(value) => handleUpdate('attrib', { priority: value[0] })}\n align=\"right\"\n />\n ) : (\n <div style={{ height: 32 }}></div>\n )}\n <FeedFilters\n isLoading={isLoading}\n entityType={entityType}\n className=\"filters\"\n overrides={{\n checklists: {\n label: checklistsLabel,\n },\n }}\n currentTab={currentTab}\n onTabChange={onTabChange}\n />\n </Styled.Grid>\n </EntityPanelUploader>\n </Styled.HeaderContainer>\n )\n}\n\nexport default DetailsPanelHeader\n"],"names":["DetailsPanelHeader","entityType","entitySubTypes","entities","disabledAssignees","users","disabledStatuses","tagsOptions","isFetching","isCompact","currentTab","onTabChange","entityTypeIcons","onOpenViewer","onEntityFocus","useSearchParams","useNavigate","isDeveloperMode","useDetailsPanelContext","navigate","searchParams","setSearchParams","statuses","useScopedStatuses","entity","entityUsers","useMemo","union","_a","_b","firstEntity","isLoading","projectName","entityIds","checklistCount","useGetEntitiesChecklistsQuery","checklistsLabel","priorityAttrib","useGetAttributeConfigQuery","priorities","getPriorityOptions","thumbnails","getThumbnails","statusesValue","t","priorityValues","tagsValues","tagsOptionsObject","acc","tag","isMultiple","updateEntity","useEntityUpdate","_c","handleUpdate","field","value","handleThumbnailClick","versionIds","id","entityTypeKey","hasUser","usersOptions","u","allUsers","usersToAdd","title","subTitle","buildDetailsPanelTitles","jsx","Styled.HeaderContainer","EntityPanelUploader","jsxs","Styled.Grid","clsx","Styled.Header","StackedThumbnails","PlayableIcon","Styled.Content","Styled.Title","Styled.TagsSelect","upperFirst","Styled.StatusSelect","Styled.AssigneeSelect","Actions","Styled.PriorityEnumDropdown","FeedFilters"],"mappings":"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"}
@@ -124,11 +124,11 @@ import "react-redux";
124
124
  import "custom-protocol-check";
125
125
  import "../../../components/Watchers/Watchers.es.js";
126
126
  import "../../../components/ProjectTableSettings/ProjectTableSettings.es.js";
127
- import "react-router-dom";
128
127
  import "../../../components/Powerpack/PowerpackButton.es.js";
129
128
  import "../../../components/Powerpack/PricingLink.es.js";
130
129
  import "../../../components/Powerpack/PowerpackDialog.styled.es.js";
131
130
  import "../../../components/Powerpack/CTAButton.es.js";
131
+ import "../../../components/Powerpack/RequiredPowerpackVersion.es.js";
132
132
  import "../../../components/SettingsPanel/SettingsPanel.es.js";
133
133
  import "../../../components/SettingsPanel/SettingsPanelItemTemplate.es.js";
134
134
  import "../../../components/AttributeEditor/components/MinMaxField.es.js";
@@ -159,6 +159,7 @@ import "../../Feed/components/CommentInput/quillToMarkdown.es.js";
159
159
  import "../../Feed/components/ActivityComment/ActivityComment.styled.es.js";
160
160
  import "../../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.es.js";
161
161
  import "../../Feed/components/ActivityReference/ActivityReference.styled.es.js";
162
+ import "react-router-dom";
162
163
  import "../../Feed/components/ActivityStatus/ActivityStatus.es.js";
163
164
  import "../../Feed/components/ActivityHeader/ActivityHeader.styled.es.js";
164
165
  import "../../Feed/components/ActivityDate.es.js";
@@ -211,7 +212,9 @@ import "../../Views/Views.styled.es.js";
211
212
  import "../../Views/ViewsMenuContainer/ViewsMenuContainer.es.js";
212
213
  import "../../Views/ViewsMenu/ViewsMenu.es.js";
213
214
  import "../../EntityPickerDialog/EntityPickerDialog.es.js";
214
- const vm = ({
215
+ import "../../../components/DetailsMetaData/DetailsMetaData.es.js";
216
+ import "../../../components/AccessUser/AccessUser.es.js";
217
+ const km = ({
215
218
  entityType: p,
216
219
  entitySubTypes: M,
217
220
  entities: m = [],
@@ -427,6 +430,6 @@ const vm = ({
427
430
  ) });
428
431
  };
429
432
  export {
430
- vm as default
433
+ km as default
431
434
  };
432
435
  //# sourceMappingURL=DetailsPanelHeader.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DetailsPanelHeader.es.js","sources":["../../../../../../src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { union, upperFirst } from 'lodash'\nimport clsx from 'clsx'\nimport { Icon } from '@ynput/ayon-react-components'\n\nimport { EntityPanelUploader, StackedThumbnails } from '@shared/components'\nimport { Actions, DetailsPanelProps } from '@shared/containers'\n// shared\nimport { useGetEntitiesChecklistsQuery, useGetAttributeConfigQuery } from '@shared/api'\nimport type { DetailsPanelEntityData } from '@shared/api'\nimport { getPriorityOptions } from '@shared/util'\nimport { useScopedStatuses, useEntityUpdate } from '@shared/hooks'\nimport { DetailsPanelTab, useDetailsPanelContext } from '@shared/context'\n\nimport FeedFilters from '../FeedFilters/FeedFilters'\nimport * as Styled from './DetailsPanelHeader.styled'\nimport getThumbnails from '../helpers/getThumbnails'\nimport { buildDetailsPanelTitles } from '../helpers/buildDetailsPanelTitles'\nimport { PlayableIcon } from '@shared/components/PlayableIcon/PlayableIcon'\n\nexport type EntityTypeIcons = {\n folder: Record<string, string>\n task: Record<string, string>\n product: Record<string, string>\n}\n\ntype DetailsPanelHeaderProps = {\n entityType: 'folder' | 'task' | 'version' | 'representation'\n entitySubTypes: string[]\n entities: DetailsPanelEntityData[]\n disabledAssignees?: any[]\n users?: any[]\n disabledStatuses?: string[]\n tagsOptions?: any[]\n isFetching?: boolean\n isCompact?: boolean\n currentTab: DetailsPanelTab\n onTabChange: (tab: DetailsPanelTab) => void\n onOpenViewer: (args: any) => void\n onEntityFocus: DetailsPanelProps['onEntityFocus']\n entityTypeIcons: EntityTypeIcons\n}\n\nconst DetailsPanelHeader = ({\n entityType,\n entitySubTypes,\n entities = [],\n disabledAssignees = [],\n users = [],\n disabledStatuses,\n tagsOptions = [],\n isFetching,\n isCompact = false,\n currentTab,\n onTabChange,\n entityTypeIcons,\n onOpenViewer,\n onEntityFocus,\n}: DetailsPanelHeaderProps) => {\n const { useSearchParams, useNavigate, isDeveloperMode } = useDetailsPanelContext()\n const navigate = useNavigate()\n const [searchParams, setSearchParams] = useSearchParams()\n\n const statuses = useScopedStatuses(\n entities.map((entity) => entity.projectName),\n [entityType],\n )\n\n // for selected entities, get flat list of assignees\n const entityUsers: string[] = useMemo(\n () =>\n union(\n ...entities.flatMap((entity) => [\n entity.task?.assignees || [],\n entity.version?.author || [],\n ]),\n ),\n [entities],\n )\n\n let firstEntity = entities[0]\n // If there's no data return null\n const isLoading = entities.length === 0 || !firstEntity || isFetching\n // placeholder entity\n if (!firstEntity) {\n firstEntity = {\n id: 'placeholder',\n name: 'loading...',\n label: 'loading...',\n entityType,\n status: 'loading',\n projectName: 'loading...',\n tags: [],\n hasReviewables: false,\n attrib: {},\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n }\n }\n\n const projectName = entities.length > 1 ? undefined : firstEntity?.projectName\n\n const entityIds = entities\n .filter((e) => e.projectName === firstEntity?.projectName && e.id)\n .map((entity) => entity.id)\n\n // get checklists count\n const { data: checklistCount } = useGetEntitiesChecklistsQuery(\n {\n projectName: firstEntity?.projectName,\n entityIds,\n },\n { skip: !firstEntity?.projectName || !entityIds.length },\n )\n let checklistsLabel\n if (checklistCount?.total && checklistCount.total > 0) {\n checklistsLabel = `${checklistCount.checked}/${checklistCount.total}`\n }\n\n // get priorities\n // get priority attribute so we know the colors and icons for each priority\n const { data: priorityAttrib } = useGetAttributeConfigQuery({ attributeName: 'priority' })\n const priorities = getPriorityOptions(priorityAttrib, entityType)\n\n const thumbnails = useMemo(\n () => getThumbnails(entities, entityType, entityTypeIcons),\n [entities, entityType, entityTypeIcons],\n )\n\n // we need to get the intersection of all the statuses of the projects for the selected entities\n // this means that if we have 2 entities from 2 different projects, we need to get the intersection of the statuses of those 2 projects\n // and it prevents us from showing statuses that are not available for the selected entities\n const statusesValue = useMemo(() => entities.map((t) => t.status), [entities])\n const priorityValues = useMemo(() => entities.map((t) => t.attrib?.priority), [entities])\n const tagsValues: string[][] = useMemo(() => entities.map((t) => t.tags), [entities])\n const tagsOptionsObject = useMemo(\n () =>\n tagsOptions.reduce((acc, tag) => {\n acc[tag.name] = tag\n return acc\n }, {}),\n [tagsOptions],\n )\n\n const isMultiple = entities.length > 1\n\n const { updateEntity } = useEntityUpdate({\n entities: entities.map((e) => ({\n id: e.id,\n projectName: e.projectName,\n users: e.task?.assignees || [],\n folderId: e.folder?.id,\n productId: e.product?.id,\n })),\n entityType,\n })\n\n const handleUpdate = (field: string, value: any) => {\n if (value === null || value === undefined) return console.error('value is null or undefined')\n return updateEntity(field, value)\n }\n\n const handleThumbnailClick = () => {\n let versionIds,\n id = firstEntity.id,\n entityTypeKey = entityType + 'Id'\n\n if (entityType === 'version' && firstEntity.product?.id) {\n versionIds = [firstEntity.id]\n id = firstEntity.product?.id\n entityTypeKey = 'productId'\n }\n\n if (id) {\n onOpenViewer({\n [entityTypeKey]: id,\n projectName,\n versionIds,\n })\n }\n }\n\n const hasUser =\n ['task', 'version', 'representation'].includes(entityType) &&\n (entityUsers.length > 0 || entityType === 'task')\n\n const usersOptions = users.map((u) => u)\n if (hasUser) {\n // check if all users are in options, otherwise add them\n const allUsers = users.map((u) => u.name)\n const usersToAdd = entityUsers.filter((u) => !allUsers.includes(u))\n if (usersToAdd.length) {\n usersOptions.push(...usersToAdd.map((u) => ({ name: u, fullName: u })))\n }\n }\n\n // Get title and subtitle from the imported function\n const { title, subTitle } = buildDetailsPanelTitles(entities, entityType)\n\n return (\n <Styled.HeaderContainer>\n <EntityPanelUploader\n entities={entities}\n entityType={entityType}\n projectName={projectName}\n onVersionCreated={(id) => onEntityFocus?.(id, 'version')}\n >\n <Styled.Grid className={clsx('details-panel-header', { isCompact })}>\n <Styled.Header\n className={clsx('titles', { isCompact, loading: isLoading }, 'no-shimmer')}\n >\n <div style={{ position: 'relative' }}>\n <StackedThumbnails\n isLoading={isLoading}\n shimmer={isLoading}\n thumbnails={thumbnails}\n onClick={thumbnails.length === 1 ? handleThumbnailClick : undefined}\n hoverIcon={'play_circle'}\n />\n {!isMultiple && firstEntity?.hasReviewables && <PlayableIcon />}\n </div>\n <Styled.Content className={clsx({ loading: isLoading })}>\n <Styled.Title>\n <h2>{title}</h2>\n <Styled.TagsSelect\n value={union(...tagsValues)}\n tags={tagsOptionsObject}\n options={[]}\n editable\n editor\n onChange={(value) => handleUpdate('tags', value)}\n align=\"right\"\n styleDropdown={{ display: isLoading ? 'none' : 'unset' }}\n className=\"tags-select\"\n />\n </Styled.Title>\n <div className=\"sub-title\">\n <span className=\"entity-type\">{upperFirst(entityType)} - </span>\n <h3>{subTitle}</h3>\n </div>\n </Styled.Content>\n </Styled.Header>\n <Styled.StatusSelect\n value={statusesValue}\n options={statuses || []}\n disabledValues={disabledStatuses}\n invert\n style={{ maxWidth: 'unset' }}\n onChange={(value) => handleUpdate('status', value)}\n className={clsx('status-select', { loading: isLoading })}\n align={isCompact ? 'right' : 'left'}\n />\n {!isCompact &&\n (!hasUser || isLoading ? (\n <div></div>\n ) : (\n <Styled.AssigneeSelect\n value={entityUsers}\n options={usersOptions}\n disabledValues={disabledAssignees.map((u) => u.name)}\n isMultiple={isMultiple && entityUsers.length > 1 && entityType === 'task'}\n readOnly={entityType !== 'task'}\n emptyMessage={entityType === 'task' ? 'Assign user' : ''}\n align=\"right\"\n onChange={(value) => handleUpdate('assignees', value)}\n className=\"assignee-select\"\n data-tooltip={\n entityUsers.length ? (entityType === 'task' ? 'Assigned users' : 'Author') : ''\n }\n />\n ))}\n <Actions\n entities={entities}\n entityType={entityType}\n entitySubTypes={entitySubTypes}\n isLoadingEntity={!!isFetching || !!isLoading}\n searchParams={searchParams}\n isDeveloperMode={isDeveloperMode}\n onSetSearchParams={setSearchParams}\n onNavigate={navigate}\n />\n {priorities ? (\n <Styled.PriorityEnumDropdown\n options={priorities}\n placeholder=\"No priority\"\n value={priorityValues}\n onChange={(value) => handleUpdate('attrib', { priority: value[0] })}\n align=\"right\"\n />\n ) : (\n <div style={{ height: 32 }}></div>\n )}\n <FeedFilters\n isLoading={isLoading}\n entityType={entityType}\n className=\"filters\"\n overrides={{\n checklists: {\n label: checklistsLabel,\n },\n }}\n currentTab={currentTab}\n onTabChange={onTabChange}\n />\n </Styled.Grid>\n </EntityPanelUploader>\n </Styled.HeaderContainer>\n )\n}\n\nexport default DetailsPanelHeader\n"],"names":["DetailsPanelHeader","entityType","entitySubTypes","entities","disabledAssignees","users","disabledStatuses","tagsOptions","isFetching","isCompact","currentTab","onTabChange","entityTypeIcons","onOpenViewer","onEntityFocus","useSearchParams","useNavigate","isDeveloperMode","useDetailsPanelContext","navigate","searchParams","setSearchParams","statuses","useScopedStatuses","entity","entityUsers","useMemo","union","_a","_b","firstEntity","isLoading","projectName","entityIds","e","checklistCount","useGetEntitiesChecklistsQuery","checklistsLabel","priorityAttrib","useGetAttributeConfigQuery","priorities","getPriorityOptions","thumbnails","getThumbnails","statusesValue","t","priorityValues","tagsValues","tagsOptionsObject","acc","tag","isMultiple","updateEntity","useEntityUpdate","_c","handleUpdate","field","value","handleThumbnailClick","versionIds","id","entityTypeKey","hasUser","usersOptions","u","allUsers","usersToAdd","title","subTitle","buildDetailsPanelTitles","jsx","Styled.HeaderContainer","EntityPanelUploader","jsxs","Styled.Grid","clsx","Styled.Header","StackedThumbnails","PlayableIcon","Styled.Content","Styled.Title","Styled.TagsSelect","upperFirst","Styled.StatusSelect","Styled.AssigneeSelect","Actions","Styled.PriorityEnumDropdown","FeedFilters"],"mappings":"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"}
1
+ {"version":3,"file":"DetailsPanelHeader.es.js","sources":["../../../../../../src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { union, upperFirst } from 'lodash'\nimport clsx from 'clsx'\nimport { Icon } from '@ynput/ayon-react-components'\n\nimport { EntityPanelUploader, StackedThumbnails } from '@shared/components'\nimport { Actions, DetailsPanelProps } from '@shared/containers'\n// shared\nimport { useGetEntitiesChecklistsQuery, useGetAttributeConfigQuery } from '@shared/api'\nimport type { DetailsPanelEntityData } from '@shared/api'\nimport { getPriorityOptions } from '@shared/util'\nimport { useScopedStatuses, useEntityUpdate } from '@shared/hooks'\nimport { DetailsPanelTab, useDetailsPanelContext } from '@shared/context'\n\nimport FeedFilters from '../FeedFilters/FeedFilters'\nimport * as Styled from './DetailsPanelHeader.styled'\nimport getThumbnails from '../helpers/getThumbnails'\nimport { buildDetailsPanelTitles } from '../helpers/buildDetailsPanelTitles'\nimport { PlayableIcon } from '@shared/components/PlayableIcon/PlayableIcon'\n\nexport type EntityTypeIcons = {\n folder: Record<string, string>\n task: Record<string, string>\n product: Record<string, string>\n}\n\ntype DetailsPanelHeaderProps = {\n entityType: 'folder' | 'task' | 'version' | 'representation'\n entitySubTypes: string[]\n entities: DetailsPanelEntityData[]\n disabledAssignees?: any[]\n users?: any[]\n disabledStatuses?: string[]\n tagsOptions?: any[]\n isFetching?: boolean\n isCompact?: boolean\n currentTab: DetailsPanelTab\n onTabChange: (tab: DetailsPanelTab) => void\n onOpenViewer: (args: any) => void\n onEntityFocus: DetailsPanelProps['onEntityFocus']\n entityTypeIcons: EntityTypeIcons\n}\n\nconst DetailsPanelHeader = ({\n entityType,\n entitySubTypes,\n entities = [],\n disabledAssignees = [],\n users = [],\n disabledStatuses,\n tagsOptions = [],\n isFetching,\n isCompact = false,\n currentTab,\n onTabChange,\n entityTypeIcons,\n onOpenViewer,\n onEntityFocus,\n}: DetailsPanelHeaderProps) => {\n const { useSearchParams, useNavigate, isDeveloperMode } = useDetailsPanelContext()\n const navigate = useNavigate()\n const [searchParams, setSearchParams] = useSearchParams()\n\n const statuses = useScopedStatuses(\n entities.map((entity) => entity.projectName),\n [entityType],\n )\n\n // for selected entities, get flat list of assignees\n const entityUsers: string[] = useMemo(\n () =>\n union(\n ...entities.flatMap((entity) => [\n entity.task?.assignees || [],\n entity.version?.author || [],\n ]),\n ),\n [entities],\n )\n\n let firstEntity = entities[0]\n // If there's no data return null\n const isLoading = entities.length === 0 || !firstEntity || isFetching\n // placeholder entity\n if (!firstEntity) {\n firstEntity = {\n id: 'placeholder',\n name: 'loading...',\n label: 'loading...',\n entityType,\n status: 'loading',\n projectName: 'loading...',\n tags: [],\n hasReviewables: false,\n attrib: {},\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n }\n }\n\n const projectName = entities.length > 1 ? undefined : firstEntity?.projectName\n\n const entityIds = entities\n .filter((e) => e.projectName === firstEntity?.projectName && e.id)\n .map((entity) => entity.id)\n\n // get checklists count\n const { data: checklistCount } = useGetEntitiesChecklistsQuery(\n {\n projectName: firstEntity?.projectName,\n entityIds,\n },\n { skip: !firstEntity?.projectName || !entityIds.length },\n )\n let checklistsLabel\n if (checklistCount?.total && checklistCount.total > 0) {\n checklistsLabel = `${checklistCount.checked}/${checklistCount.total}`\n }\n\n // get priorities\n // get priority attribute so we know the colors and icons for each priority\n const { data: priorityAttrib } = useGetAttributeConfigQuery({ attributeName: 'priority' })\n const priorities = getPriorityOptions(priorityAttrib, entityType)\n\n const thumbnails = useMemo(\n () => getThumbnails(entities, entityType, entityTypeIcons),\n [entities, entityType, entityTypeIcons],\n )\n\n // we need to get the intersection of all the statuses of the projects for the selected entities\n // this means that if we have 2 entities from 2 different projects, we need to get the intersection of the statuses of those 2 projects\n // and it prevents us from showing statuses that are not available for the selected entities\n const statusesValue = useMemo(() => entities.map((t) => t.status), [entities])\n const priorityValues = useMemo(() => entities.map((t) => t.attrib?.priority), [entities])\n const tagsValues: string[][] = useMemo(() => entities.map((t) => t.tags), [entities])\n const tagsOptionsObject = useMemo(\n () =>\n tagsOptions.reduce((acc, tag) => {\n acc[tag.name] = tag\n return acc\n }, {}),\n [tagsOptions],\n )\n\n const isMultiple = entities.length > 1\n\n const { updateEntity } = useEntityUpdate({\n entities: entities.map((e) => ({\n id: e.id,\n projectName: e.projectName,\n users: e.task?.assignees || [],\n folderId: e.folder?.id,\n productId: e.product?.id,\n })),\n entityType,\n })\n\n const handleUpdate = (field: string, value: any) => {\n if (value === null || value === undefined) return console.error('value is null or undefined')\n return updateEntity(field, value)\n }\n\n const handleThumbnailClick = () => {\n let versionIds,\n id = firstEntity.id,\n entityTypeKey = entityType + 'Id'\n\n if (entityType === 'version' && firstEntity.product?.id) {\n versionIds = [firstEntity.id]\n id = firstEntity.product?.id\n entityTypeKey = 'productId'\n }\n\n if (id) {\n onOpenViewer({\n [entityTypeKey]: id,\n projectName,\n versionIds,\n })\n }\n }\n\n const hasUser =\n ['task', 'version', 'representation'].includes(entityType) &&\n (entityUsers.length > 0 || entityType === 'task')\n\n const usersOptions = users.map((u) => u)\n if (hasUser) {\n // check if all users are in options, otherwise add them\n const allUsers = users.map((u) => u.name)\n const usersToAdd = entityUsers.filter((u) => !allUsers.includes(u))\n if (usersToAdd.length) {\n usersOptions.push(...usersToAdd.map((u) => ({ name: u, fullName: u })))\n }\n }\n\n // Get title and subtitle from the imported function\n const { title, subTitle } = buildDetailsPanelTitles(entities, entityType)\n\n return (\n <Styled.HeaderContainer>\n <EntityPanelUploader\n entities={entities}\n entityType={entityType}\n projectName={projectName}\n onVersionCreated={(id) => onEntityFocus?.(id, 'version')}\n >\n <Styled.Grid className={clsx('details-panel-header', { isCompact })}>\n <Styled.Header\n className={clsx('titles', { isCompact, loading: isLoading }, 'no-shimmer')}\n >\n <div style={{ position: 'relative' }}>\n <StackedThumbnails\n isLoading={isLoading}\n shimmer={isLoading}\n thumbnails={thumbnails}\n onClick={thumbnails.length === 1 ? handleThumbnailClick : undefined}\n hoverIcon={'play_circle'}\n />\n {!isMultiple && firstEntity?.hasReviewables && <PlayableIcon />}\n </div>\n <Styled.Content className={clsx({ loading: isLoading })}>\n <Styled.Title>\n <h2>{title}</h2>\n <Styled.TagsSelect\n value={union(...tagsValues)}\n tags={tagsOptionsObject}\n options={[]}\n editable\n editor\n onChange={(value) => handleUpdate('tags', value)}\n align=\"right\"\n styleDropdown={{ display: isLoading ? 'none' : 'unset' }}\n className=\"tags-select\"\n />\n </Styled.Title>\n <div className=\"sub-title\">\n <span className=\"entity-type\">{upperFirst(entityType)} - </span>\n <h3>{subTitle}</h3>\n </div>\n </Styled.Content>\n </Styled.Header>\n <Styled.StatusSelect\n value={statusesValue}\n options={statuses || []}\n disabledValues={disabledStatuses}\n invert\n style={{ maxWidth: 'unset' }}\n onChange={(value) => handleUpdate('status', value)}\n className={clsx('status-select', { loading: isLoading })}\n align={isCompact ? 'right' : 'left'}\n />\n {!isCompact &&\n (!hasUser || isLoading ? (\n <div></div>\n ) : (\n <Styled.AssigneeSelect\n value={entityUsers}\n options={usersOptions}\n disabledValues={disabledAssignees.map((u) => u.name)}\n isMultiple={isMultiple && entityUsers.length > 1 && entityType === 'task'}\n readOnly={entityType !== 'task'}\n emptyMessage={entityType === 'task' ? 'Assign user' : ''}\n align=\"right\"\n onChange={(value) => handleUpdate('assignees', value)}\n className=\"assignee-select\"\n data-tooltip={\n entityUsers.length ? (entityType === 'task' ? 'Assigned users' : 'Author') : ''\n }\n />\n ))}\n <Actions\n entities={entities}\n entityType={entityType}\n entitySubTypes={entitySubTypes}\n isLoadingEntity={!!isFetching || !!isLoading}\n searchParams={searchParams}\n isDeveloperMode={isDeveloperMode}\n onSetSearchParams={setSearchParams}\n onNavigate={navigate}\n />\n {priorities ? (\n <Styled.PriorityEnumDropdown\n options={priorities}\n placeholder=\"No priority\"\n value={priorityValues}\n onChange={(value) => handleUpdate('attrib', { priority: value[0] })}\n align=\"right\"\n />\n ) : (\n <div style={{ height: 32 }}></div>\n )}\n <FeedFilters\n isLoading={isLoading}\n entityType={entityType}\n className=\"filters\"\n overrides={{\n checklists: {\n label: checklistsLabel,\n },\n }}\n currentTab={currentTab}\n onTabChange={onTabChange}\n />\n </Styled.Grid>\n </EntityPanelUploader>\n </Styled.HeaderContainer>\n )\n}\n\nexport default DetailsPanelHeader\n"],"names":["DetailsPanelHeader","entityType","entitySubTypes","entities","disabledAssignees","users","disabledStatuses","tagsOptions","isFetching","isCompact","currentTab","onTabChange","entityTypeIcons","onOpenViewer","onEntityFocus","useSearchParams","useNavigate","isDeveloperMode","useDetailsPanelContext","navigate","searchParams","setSearchParams","statuses","useScopedStatuses","entity","entityUsers","useMemo","union","_a","_b","firstEntity","isLoading","projectName","entityIds","e","checklistCount","useGetEntitiesChecklistsQuery","checklistsLabel","priorityAttrib","useGetAttributeConfigQuery","priorities","getPriorityOptions","thumbnails","getThumbnails","statusesValue","t","priorityValues","tagsValues","tagsOptionsObject","acc","tag","isMultiple","updateEntity","useEntityUpdate","_c","handleUpdate","field","value","handleThumbnailClick","versionIds","id","entityTypeKey","hasUser","usersOptions","u","allUsers","usersToAdd","title","subTitle","buildDetailsPanelTitles","jsx","Styled.HeaderContainer","EntityPanelUploader","jsxs","Styled.Grid","clsx","Styled.Header","StackedThumbnails","PlayableIcon","Styled.Content","Styled.Title","Styled.TagsSelect","upperFirst","Styled.StatusSelect","Styled.AssigneeSelect","Actions","Styled.PriorityEnumDropdown","FeedFilters"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../../../_virtual/jsx-runtime.cjs.js"),w=require("react"),z=require("./util/entityHierarchies.cjs.js"),A=require("lodash");require("react-toastify");require("uuid");require("../../util/pubsub.cjs.js");const L=require("./components/EntityTypeTable.cjs.js");require("../SimpleTable/SimpleTable.styled.cjs.js");require("@tanstack/react-table");require("@tanstack/react-virtual");require("clsx");require("@tanstack/match-sorter-utils");const X=require("../SimpleTable/context/SimpleTableContext.cjs.js");require("../SimpleTable/SimpleTableRowTemplate.cjs.js");const a=require("@ynput/ayon-react-components");require("../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("axios");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../components/Thumbnail/StackedThumbnails.cjs.js");require("../Feed/context/FeedContext.cjs.js");require("../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../Feed/components/CommentInput/CommentInput.cjs.js");require("../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../Feed/components/ActivityDate.cjs.js");require("../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../Feed/Feed.styled.cjs.js");require("date-fns");require("../ProjectTreeTable/ProjectTreeTable.cjs.js");require("../ProjectTreeTable/context/CellEditingContext.cjs.js");require("../ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../ProjectTreeTable/widgets/DateWidget.cjs.js");require("../ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../ProjectTreeTable/widgets/TextWidget.cjs.js");require("../ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../ProjectTreeTable/widgets/CellWidget.cjs.js");require("../ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../../components/LinksManager/LinksManagerDialog.cjs.js");require("../ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../ProjectTreeTable/components/SelectionCell.cjs.js");require("../ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../ProjectTreeTable/context/ClipboardContext.cjs.js");require("../ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("../ProjectTreeTable/context/ProjectDataContext.cjs.js");require("../ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../ProjectTreeTable/components/ColumnHeaderMenu.cjs.js");require("../DetailsPanel/DetailsPanel.styled.cjs.js");require("../DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");require("../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../components/PlayableIcon/PlayableIcon.cjs.js");require("../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../Actions/Actions.styled.cjs.js");require("../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../Actions/ActionIcon.cjs.js");require("../Views/context/ViewsContext.cjs.js");require("../Views/Views.styled.cjs.js");require("../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../components/EntityPath/EntityPath.styled.cjs.js");require("../../components/EntityPath/SegmentProvider.cjs.js");require("../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../components/Watchers/Watchers.cjs.js");require("../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../components/Powerpack/PowerpackButton.cjs.js");require("../../components/Powerpack/PricingLink.cjs.js");require("../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../components/Powerpack/CTAButton.cjs.js");require("../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../components/AttributeEditor/components/MinMaxField.cjs.js");require("../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../components/SearchFilter/filterDates.cjs.js");require("../../components/Badge/Badge.cjs.js");require("../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../components/Feedback/FeedbackContext.cjs.js");require("../../components/Feedback/SupportBubble.cjs.js");require("../../components/Chips/Chips.cjs.js");require("../../components/LinksManager/LinksManager.styled.cjs.js");const J=require("styled-components"),K=require("./hooks/useGetEntityPickerData.cjs.js"),Q=require("./hooks/useExpandedWithInitialFolders.cjs.js"),U=600,V=J.div`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../../../_virtual/jsx-runtime.cjs.js"),w=require("react"),z=require("./util/entityHierarchies.cjs.js"),A=require("lodash");require("react-toastify");require("uuid");require("../../util/pubsub.cjs.js");const L=require("./components/EntityTypeTable.cjs.js");require("../SimpleTable/SimpleTable.styled.cjs.js");require("@tanstack/react-table");require("@tanstack/react-virtual");require("clsx");require("@tanstack/match-sorter-utils");const X=require("../SimpleTable/context/SimpleTableContext.cjs.js");require("../SimpleTable/SimpleTableRowTemplate.cjs.js");const a=require("@ynput/ayon-react-components");require("../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("axios");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../components/Thumbnail/StackedThumbnails.cjs.js");require("../Feed/context/FeedContext.cjs.js");require("../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../Feed/components/CommentInput/CommentInput.cjs.js");require("../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../Feed/components/ActivityDate.cjs.js");require("../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../Feed/Feed.styled.cjs.js");require("date-fns");require("../ProjectTreeTable/ProjectTreeTable.cjs.js");require("../ProjectTreeTable/context/CellEditingContext.cjs.js");require("../ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../ProjectTreeTable/widgets/DateWidget.cjs.js");require("../ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../ProjectTreeTable/widgets/TextWidget.cjs.js");require("../ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../ProjectTreeTable/widgets/CellWidget.cjs.js");require("../ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../../components/LinksManager/LinksManagerDialog.cjs.js");require("../ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../ProjectTreeTable/components/SelectionCell.cjs.js");require("../ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../ProjectTreeTable/context/ClipboardContext.cjs.js");require("../ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("../ProjectTreeTable/context/ProjectDataContext.cjs.js");require("../ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../ProjectTreeTable/components/ColumnHeaderMenu.cjs.js");require("../DetailsPanel/DetailsPanel.styled.cjs.js");require("../DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");require("../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../components/PlayableIcon/PlayableIcon.cjs.js");require("../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../Actions/Actions.styled.cjs.js");require("../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../Actions/ActionIcon.cjs.js");require("../Views/context/ViewsContext.cjs.js");require("../Views/Views.styled.cjs.js");require("../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../components/EntityPath/EntityPath.styled.cjs.js");require("../../components/EntityPath/SegmentProvider.cjs.js");require("../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../components/Watchers/Watchers.cjs.js");require("../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../components/Powerpack/PowerpackButton.cjs.js");require("../../components/Powerpack/PricingLink.cjs.js");require("../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../components/Powerpack/CTAButton.cjs.js");require("../../components/Powerpack/RequiredPowerpackVersion.cjs.js");require("../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../components/AttributeEditor/components/MinMaxField.cjs.js");require("../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../components/SearchFilter/filterDates.cjs.js");require("../../components/Badge/Badge.cjs.js");require("../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../components/Feedback/FeedbackContext.cjs.js");require("../../components/Feedback/SupportBubble.cjs.js");require("../../components/Chips/Chips.cjs.js");require("../../components/LinksManager/LinksManager.styled.cjs.js");require("../../components/DetailsMetaData/DetailsMetaData.cjs.js");require("../../components/AccessUser/AccessUser.cjs.js");const J=require("styled-components"),K=require("./hooks/useGetEntityPickerData.cjs.js"),Q=require("./hooks/useExpandedWithInitialFolders.cjs.js"),U=600,V=J.div`
2
2
  display: grid;
3
3
  grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
4
4
  gap: var(--base-gap-large);
@@ -1 +1 @@
1
- {"version":3,"file":"EntityPickerDialog.cjs.js","sources":["../../../../../src/containers/EntityPickerDialog/EntityPickerDialog.tsx"],"sourcesContent":["// This components lets you pick a specific entity from the tree table.\n// Each entity type has it's own table\n\nimport { ExpandedState, RowSelectionState } from '@tanstack/react-table'\nimport { FC, useState } from 'react'\nimport { entityHierarchies } from './util'\nimport EntityTypeTable from './components/EntityTypeTable'\nimport { SimpleTableProvider } from '@shared/containers/SimpleTable'\nimport { Button, Dialog, DialogProps } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport { useGetEntityPickerData } from './hooks/useGetEntityPickerData'\nimport { upperFirst } from 'lodash'\nimport useExpandedWithInitialFolders from './hooks/useExpandedWithInitialFolders'\n\nconst COL_MAX_WIDTH = 600\n\nconst TablesContainer = styled.div`\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));\n gap: var(--base-gap-large);\n height: 100%;\n overflow: hidden;\n flex: 1;\n\n table {\n height: 100%;\n\n td:has(.path) {\n .value {\n font-weight: bold;\n }\n }\n }\n`\n\nexport type PickerEntityType =\n | 'folder'\n | 'task'\n | 'product'\n | 'version'\n | 'representation'\n | 'workfile'\nexport type PickerSelection = Record<PickerEntityType, RowSelectionState>\nexport type PickerSearch = Record<PickerEntityType, string | undefined>\n\ninterface EntityPickerDialogProps extends Pick<DialogProps, 'onClose'> {\n projectName: string // The name of the project\n entityType: PickerEntityType // The type of entity to pick\n initialSelection?: Partial<PickerSelection> // Initial selection of entities\n isMultiSelect?: boolean // Whether to allow multiple selection\n onSubmit: (selection: string[]) => void // Callback when the user selects an entity/entities\n showMoveToRoot?: boolean // Whether to show \"Move to root\" button\n onMoveToRoot?: () => void // Callback when user clicks \"Move to root\"\n disabledIds?: string[] // IDs to display as disabled/unselectable\n disabledMessage?: string // Default tooltip message for disabled items\n getDisabledMessage?: (id: string) => string | undefined // Custom message per disabled item\n}\n\nexport const EntityPickerDialog: FC<EntityPickerDialogProps> = ({\n projectName,\n entityType,\n initialSelection,\n isMultiSelect,\n onSubmit,\n showMoveToRoot,\n onMoveToRoot,\n disabledIds = [],\n disabledMessage = \"Cannot select this item\",\n getDisabledMessage,\n ...props\n}) => {\n const initSelectionState: PickerSelection = {\n folder: initialSelection?.folder || {},\n task: initialSelection?.task || {},\n product: initialSelection?.product || {},\n version: initialSelection?.version || {},\n representation: initialSelection?.representation || {},\n workfile: initialSelection?.workfile || {},\n }\n\n const [rowSelection, setRowSelection] = useState<PickerSelection>(initSelectionState)\n\n // helper function to set the row selection for each entity type\n const setEntityRowSelection = (selection: RowSelectionState, entityType: PickerEntityType) => {\n setRowSelection((prev) => ({\n ...prev,\n [entityType]: selection,\n }))\n }\n\n const [search, setSearch] = useState<PickerSearch>({\n folder: undefined,\n task: undefined,\n product: undefined,\n version: undefined,\n representation: undefined,\n workfile: undefined,\n })\n\n // helper function to set the search for each entity type\n const setEntitySearch = (searchValue: string | undefined, entityType: PickerEntityType) => {\n setSearch((prev) => ({\n ...prev,\n [entityType]: searchValue,\n }))\n }\n\n // convert row selection into a list of ids for each entity type to make it easier to work with\n const entitySelection = Object.fromEntries(\n Object.entries(rowSelection).map(([type, selection]) => [\n type,\n Object.keys(selection).filter((id) => selection[id]),\n ]),\n ) as Record<PickerEntityType, string[]>\n\n const entityData = useGetEntityPickerData({\n entityType,\n projectName,\n search,\n selection: entitySelection,\n })\n\n const handleFetchNextPage = (entityType: PickerEntityType) => {\n const entityDataForType = entityData[entityType]\n if (entityDataForType?.hasNextPage && !entityDataForType.isFetchingNextPage) {\n entityDataForType.fetchNextPage?.()\n }\n }\n\n const [expanded, setExpanded] = useExpandedWithInitialFolders({\n foldersSelection: initSelectionState.folder,\n foldersData: entityData.folder,\n })\n\n // Get the complete hierarchy for the target entity type!\n const entityHierarchy = entityHierarchies[entityType]\n\n // Process table data to filter out excluded IDs and mark disabled rows\n const recursivelyProcessRows = (row:{id:string, subRows:any[]}, disabledIds:string[], parentIsDisabled: boolean) => {\n // Determine if the current row should be disabled.\n\n // A row is disabled if its parent is disabled OR its own ID is in the disabledIds list.\n const isDisabled = parentIsDisabled || disabledIds.includes(row.id);\n const disabledRowMessage = isDisabled\n ? (getDisabledMessage?.(row.id) || disabledMessage)\n : undefined;\n\n // Create a new row object with the updated disabled state.\n const newRow = {\n ...row,\n isDisabled,\n disabledMessage: disabledRowMessage\n };\n\n // If the row has subRows, recursively process each of them.\n if (row.subRows && row.subRows.length > 0) {\n newRow.subRows = row.subRows.map((subRow:any ) =>\n recursivelyProcessRows(subRow, disabledIds, isDisabled)\n );\n }\n\n return newRow;\n };\n\n const processTableDataWithDisabled = (tableData:any ) => {\n\n\n if (!disabledIds || disabledIds.length === 0) {\n return tableData;\n }\n\n // Iterate over the top-level rows and start the recursive processing.\n return tableData.map((row:any) => recursivelyProcessRows(row, disabledIds, false));\n };\n\n const handleSubmit = () => {\n // check the target entity has a selection\n if (!entitySelection[entityType]?.length) {\n return\n }\n const selection = isMultiSelect\n ? entitySelection[entityType]\n : entitySelection[entityType].slice(0, 1)\n // Call the onSubmit callback with the selected entity ids\n onSubmit(selection)\n }\n\n // based on the entity type, we need to create a new table for each parent\n return (\n <Dialog\n {...props}\n className=\"entity-picker-dialog\"\n header={`Select ${upperFirst(entityType)}`}\n isOpen\n size=\"full\"\n style={{ height: '80vh', maxWidth: entityHierarchy.length * COL_MAX_WIDTH }}\n footer={\n <>\n {showMoveToRoot && onMoveToRoot && (\n <Button\n label=\"Move to root\"\n variant=\"text\"\n onClick={onMoveToRoot}\n />\n )}\n <Button\n label={`Select ${entityType}${isMultiSelect ? 's' : ''}`}\n variant=\"filled\"\n disabled={!entitySelection[entityType]?.length}\n onClick={handleSubmit}\n />\n </>\n }\n >\n <TablesContainer>\n {entityHierarchy.map((tableEntityType) => (\n <SimpleTableProvider\n rowSelection={rowSelection[tableEntityType] || {}}\n onRowSelectionChange={(s) => setEntityRowSelection(s, tableEntityType)}\n // expanded state is only used for folders, so we only pass it when the entity type is folder\n expanded={tableEntityType === 'folder' ? expanded : undefined}\n setExpanded={tableEntityType === 'folder' ? setExpanded : undefined}\n key={tableEntityType}\n >\n <EntityTypeTable\n key={tableEntityType}\n entityType={tableEntityType}\n search={search[tableEntityType]}\n tableData={processTableDataWithDisabled(entityData[tableEntityType]?.table || [])}\n isFolderHierarchy={tableEntityType === 'folder' && !search.folder}\n onSearch={(v) => setEntitySearch(v, tableEntityType)}\n isMultiSelect={tableEntityType === entityType ? !!isMultiSelect : true}\n onRowSubmit={(id) => (tableEntityType === entityType ? onSubmit([id]) : undefined)}\n onScrollBottom={() => handleFetchNextPage(tableEntityType)}\n />\n </SimpleTableProvider>\n ))}\n </TablesContainer>\n </Dialog>\n )\n}\n"],"names":["COL_MAX_WIDTH","TablesContainer","styled","EntityPickerDialog","projectName","entityType","initialSelection","isMultiSelect","onSubmit","showMoveToRoot","onMoveToRoot","disabledIds","disabledMessage","getDisabledMessage","props","initSelectionState","rowSelection","setRowSelection","useState","setEntityRowSelection","selection","prev","search","setSearch","setEntitySearch","searchValue","entitySelection","type","id","entityData","useGetEntityPickerData","handleFetchNextPage","entityDataForType","_a","expanded","setExpanded","useExpandedWithInitialFolders","entityHierarchy","entityHierarchies","recursivelyProcessRows","row","parentIsDisabled","isDisabled","disabledRowMessage","newRow","subRow","processTableDataWithDisabled","tableData","handleSubmit","jsx","Dialog","upperFirst","jsxs","Fragment","Button","tableEntityType","SimpleTableProvider","s","EntityTypeTable","v"],"mappings":"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"}
1
+ {"version":3,"file":"EntityPickerDialog.cjs.js","sources":["../../../../../src/containers/EntityPickerDialog/EntityPickerDialog.tsx"],"sourcesContent":["// This components lets you pick a specific entity from the tree table.\n// Each entity type has it's own table\n\nimport { ExpandedState, RowSelectionState } from '@tanstack/react-table'\nimport { FC, useState } from 'react'\nimport { entityHierarchies } from './util'\nimport EntityTypeTable from './components/EntityTypeTable'\nimport { SimpleTableProvider } from '@shared/containers/SimpleTable'\nimport { Button, Dialog, DialogProps } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport { useGetEntityPickerData } from './hooks/useGetEntityPickerData'\nimport { upperFirst } from 'lodash'\nimport useExpandedWithInitialFolders from './hooks/useExpandedWithInitialFolders'\n\nconst COL_MAX_WIDTH = 600\n\nconst TablesContainer = styled.div`\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));\n gap: var(--base-gap-large);\n height: 100%;\n overflow: hidden;\n flex: 1;\n\n table {\n height: 100%;\n\n td:has(.path) {\n .value {\n font-weight: bold;\n }\n }\n }\n`\n\nexport type PickerEntityType =\n | 'folder'\n | 'task'\n | 'product'\n | 'version'\n | 'representation'\n | 'workfile'\nexport type PickerSelection = Record<PickerEntityType, RowSelectionState>\nexport type PickerSearch = Record<PickerEntityType, string | undefined>\n\ninterface EntityPickerDialogProps extends Pick<DialogProps, 'onClose'> {\n projectName: string // The name of the project\n entityType: PickerEntityType // The type of entity to pick\n initialSelection?: Partial<PickerSelection> // Initial selection of entities\n isMultiSelect?: boolean // Whether to allow multiple selection\n onSubmit: (selection: string[]) => void // Callback when the user selects an entity/entities\n showMoveToRoot?: boolean // Whether to show \"Move to root\" button\n onMoveToRoot?: () => void // Callback when user clicks \"Move to root\"\n disabledIds?: string[] // IDs to display as disabled/unselectable\n disabledMessage?: string // Default tooltip message for disabled items\n getDisabledMessage?: (id: string) => string | undefined // Custom message per disabled item\n}\n\nexport const EntityPickerDialog: FC<EntityPickerDialogProps> = ({\n projectName,\n entityType,\n initialSelection,\n isMultiSelect,\n onSubmit,\n showMoveToRoot,\n onMoveToRoot,\n disabledIds = [],\n disabledMessage = \"Cannot select this item\",\n getDisabledMessage,\n ...props\n}) => {\n const initSelectionState: PickerSelection = {\n folder: initialSelection?.folder || {},\n task: initialSelection?.task || {},\n product: initialSelection?.product || {},\n version: initialSelection?.version || {},\n representation: initialSelection?.representation || {},\n workfile: initialSelection?.workfile || {},\n }\n\n const [rowSelection, setRowSelection] = useState<PickerSelection>(initSelectionState)\n\n // helper function to set the row selection for each entity type\n const setEntityRowSelection = (selection: RowSelectionState, entityType: PickerEntityType) => {\n setRowSelection((prev) => ({\n ...prev,\n [entityType]: selection,\n }))\n }\n\n const [search, setSearch] = useState<PickerSearch>({\n folder: undefined,\n task: undefined,\n product: undefined,\n version: undefined,\n representation: undefined,\n workfile: undefined,\n })\n\n // helper function to set the search for each entity type\n const setEntitySearch = (searchValue: string | undefined, entityType: PickerEntityType) => {\n setSearch((prev) => ({\n ...prev,\n [entityType]: searchValue,\n }))\n }\n\n // convert row selection into a list of ids for each entity type to make it easier to work with\n const entitySelection = Object.fromEntries(\n Object.entries(rowSelection).map(([type, selection]) => [\n type,\n Object.keys(selection).filter((id) => selection[id]),\n ]),\n ) as Record<PickerEntityType, string[]>\n\n const entityData = useGetEntityPickerData({\n entityType,\n projectName,\n search,\n selection: entitySelection,\n })\n\n const handleFetchNextPage = (entityType: PickerEntityType) => {\n const entityDataForType = entityData[entityType]\n if (entityDataForType?.hasNextPage && !entityDataForType.isFetchingNextPage) {\n entityDataForType.fetchNextPage?.()\n }\n }\n\n const [expanded, setExpanded] = useExpandedWithInitialFolders({\n foldersSelection: initSelectionState.folder,\n foldersData: entityData.folder,\n })\n\n // Get the complete hierarchy for the target entity type!\n const entityHierarchy = entityHierarchies[entityType]\n\n // Process table data to filter out excluded IDs and mark disabled rows\n const recursivelyProcessRows = (row:{id:string, subRows:any[]}, disabledIds:string[], parentIsDisabled: boolean) => {\n // Determine if the current row should be disabled.\n\n // A row is disabled if its parent is disabled OR its own ID is in the disabledIds list.\n const isDisabled = parentIsDisabled || disabledIds.includes(row.id);\n const disabledRowMessage = isDisabled\n ? (getDisabledMessage?.(row.id) || disabledMessage)\n : undefined;\n\n // Create a new row object with the updated disabled state.\n const newRow = {\n ...row,\n isDisabled,\n disabledMessage: disabledRowMessage\n };\n\n // If the row has subRows, recursively process each of them.\n if (row.subRows && row.subRows.length > 0) {\n newRow.subRows = row.subRows.map((subRow:any ) =>\n recursivelyProcessRows(subRow, disabledIds, isDisabled)\n );\n }\n\n return newRow;\n };\n\n const processTableDataWithDisabled = (tableData:any ) => {\n\n\n if (!disabledIds || disabledIds.length === 0) {\n return tableData;\n }\n\n // Iterate over the top-level rows and start the recursive processing.\n return tableData.map((row:any) => recursivelyProcessRows(row, disabledIds, false));\n };\n\n const handleSubmit = () => {\n // check the target entity has a selection\n if (!entitySelection[entityType]?.length) {\n return\n }\n const selection = isMultiSelect\n ? entitySelection[entityType]\n : entitySelection[entityType].slice(0, 1)\n // Call the onSubmit callback with the selected entity ids\n onSubmit(selection)\n }\n\n // based on the entity type, we need to create a new table for each parent\n return (\n <Dialog\n {...props}\n className=\"entity-picker-dialog\"\n header={`Select ${upperFirst(entityType)}`}\n isOpen\n size=\"full\"\n style={{ height: '80vh', maxWidth: entityHierarchy.length * COL_MAX_WIDTH }}\n footer={\n <>\n {showMoveToRoot && onMoveToRoot && (\n <Button\n label=\"Move to root\"\n variant=\"text\"\n onClick={onMoveToRoot}\n />\n )}\n <Button\n label={`Select ${entityType}${isMultiSelect ? 's' : ''}`}\n variant=\"filled\"\n disabled={!entitySelection[entityType]?.length}\n onClick={handleSubmit}\n />\n </>\n }\n >\n <TablesContainer>\n {entityHierarchy.map((tableEntityType) => (\n <SimpleTableProvider\n rowSelection={rowSelection[tableEntityType] || {}}\n onRowSelectionChange={(s) => setEntityRowSelection(s, tableEntityType)}\n // expanded state is only used for folders, so we only pass it when the entity type is folder\n expanded={tableEntityType === 'folder' ? expanded : undefined}\n setExpanded={tableEntityType === 'folder' ? setExpanded : undefined}\n key={tableEntityType}\n >\n <EntityTypeTable\n key={tableEntityType}\n entityType={tableEntityType}\n search={search[tableEntityType]}\n tableData={processTableDataWithDisabled(entityData[tableEntityType]?.table || [])}\n isFolderHierarchy={tableEntityType === 'folder' && !search.folder}\n onSearch={(v) => setEntitySearch(v, tableEntityType)}\n isMultiSelect={tableEntityType === entityType ? !!isMultiSelect : true}\n onRowSubmit={(id) => (tableEntityType === entityType ? onSubmit([id]) : undefined)}\n onScrollBottom={() => handleFetchNextPage(tableEntityType)}\n />\n </SimpleTableProvider>\n ))}\n </TablesContainer>\n </Dialog>\n )\n}\n"],"names":["COL_MAX_WIDTH","TablesContainer","styled","EntityPickerDialog","projectName","entityType","initialSelection","isMultiSelect","onSubmit","showMoveToRoot","onMoveToRoot","disabledIds","disabledMessage","getDisabledMessage","props","initSelectionState","rowSelection","setRowSelection","useState","setEntityRowSelection","selection","prev","search","setSearch","setEntitySearch","searchValue","entitySelection","type","id","entityData","useGetEntityPickerData","handleFetchNextPage","entityDataForType","_a","expanded","setExpanded","useExpandedWithInitialFolders","entityHierarchy","entityHierarchies","recursivelyProcessRows","row","parentIsDisabled","isDisabled","disabledRowMessage","newRow","subRow","processTableDataWithDisabled","tableData","handleSubmit","jsx","Dialog","upperFirst","jsxs","Fragment","Button","tableEntityType","SimpleTableProvider","s","EntityTypeTable","v"],"mappings":"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"}
@@ -202,6 +202,7 @@ import "../../components/Powerpack/PowerpackButton.es.js";
202
202
  import "../../components/Powerpack/PricingLink.es.js";
203
203
  import "../../components/Powerpack/PowerpackDialog.styled.es.js";
204
204
  import "../../components/Powerpack/CTAButton.es.js";
205
+ import "../../components/Powerpack/RequiredPowerpackVersion.es.js";
205
206
  import "../../components/SettingsPanel/SettingsPanel.es.js";
206
207
  import "../../components/SettingsPanel/SettingsPanelItemTemplate.es.js";
207
208
  import "../../components/AttributeEditor/components/MinMaxField.es.js";
@@ -214,6 +215,8 @@ import "../../components/Feedback/FeedbackContext.es.js";
214
215
  import "../../components/Feedback/SupportBubble.es.js";
215
216
  import "../../components/Chips/Chips.es.js";
216
217
  import "../../components/LinksManager/LinksManager.styled.es.js";
218
+ import "../../components/DetailsMetaData/DetailsMetaData.es.js";
219
+ import "../../components/AccessUser/AccessUser.es.js";
217
220
  import Q from "styled-components";
218
221
  import { useGetEntityPickerData as U } from "./hooks/useGetEntityPickerData.es.js";
219
222
  import V from "./hooks/useExpandedWithInitialFolders.es.js";
@@ -234,7 +237,7 @@ const Y = 600, Z = Q.div`
234
237
  }
235
238
  }
236
239
  }
237
- `, Tt = ({
240
+ `, op = ({
238
241
  projectName: C,
239
242
  entityType: p,
240
243
  initialSelection: m,
@@ -364,6 +367,6 @@ const Y = 600, Z = Q.div`
364
367
  );
365
368
  };
366
369
  export {
367
- Tt as EntityPickerDialog
370
+ op as EntityPickerDialog
368
371
  };
369
372
  //# sourceMappingURL=EntityPickerDialog.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntityPickerDialog.es.js","sources":["../../../../../src/containers/EntityPickerDialog/EntityPickerDialog.tsx"],"sourcesContent":["// This components lets you pick a specific entity from the tree table.\n// Each entity type has it's own table\n\nimport { ExpandedState, RowSelectionState } from '@tanstack/react-table'\nimport { FC, useState } from 'react'\nimport { entityHierarchies } from './util'\nimport EntityTypeTable from './components/EntityTypeTable'\nimport { SimpleTableProvider } from '@shared/containers/SimpleTable'\nimport { Button, Dialog, DialogProps } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport { useGetEntityPickerData } from './hooks/useGetEntityPickerData'\nimport { upperFirst } from 'lodash'\nimport useExpandedWithInitialFolders from './hooks/useExpandedWithInitialFolders'\n\nconst COL_MAX_WIDTH = 600\n\nconst TablesContainer = styled.div`\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));\n gap: var(--base-gap-large);\n height: 100%;\n overflow: hidden;\n flex: 1;\n\n table {\n height: 100%;\n\n td:has(.path) {\n .value {\n font-weight: bold;\n }\n }\n }\n`\n\nexport type PickerEntityType =\n | 'folder'\n | 'task'\n | 'product'\n | 'version'\n | 'representation'\n | 'workfile'\nexport type PickerSelection = Record<PickerEntityType, RowSelectionState>\nexport type PickerSearch = Record<PickerEntityType, string | undefined>\n\ninterface EntityPickerDialogProps extends Pick<DialogProps, 'onClose'> {\n projectName: string // The name of the project\n entityType: PickerEntityType // The type of entity to pick\n initialSelection?: Partial<PickerSelection> // Initial selection of entities\n isMultiSelect?: boolean // Whether to allow multiple selection\n onSubmit: (selection: string[]) => void // Callback when the user selects an entity/entities\n showMoveToRoot?: boolean // Whether to show \"Move to root\" button\n onMoveToRoot?: () => void // Callback when user clicks \"Move to root\"\n disabledIds?: string[] // IDs to display as disabled/unselectable\n disabledMessage?: string // Default tooltip message for disabled items\n getDisabledMessage?: (id: string) => string | undefined // Custom message per disabled item\n}\n\nexport const EntityPickerDialog: FC<EntityPickerDialogProps> = ({\n projectName,\n entityType,\n initialSelection,\n isMultiSelect,\n onSubmit,\n showMoveToRoot,\n onMoveToRoot,\n disabledIds = [],\n disabledMessage = \"Cannot select this item\",\n getDisabledMessage,\n ...props\n}) => {\n const initSelectionState: PickerSelection = {\n folder: initialSelection?.folder || {},\n task: initialSelection?.task || {},\n product: initialSelection?.product || {},\n version: initialSelection?.version || {},\n representation: initialSelection?.representation || {},\n workfile: initialSelection?.workfile || {},\n }\n\n const [rowSelection, setRowSelection] = useState<PickerSelection>(initSelectionState)\n\n // helper function to set the row selection for each entity type\n const setEntityRowSelection = (selection: RowSelectionState, entityType: PickerEntityType) => {\n setRowSelection((prev) => ({\n ...prev,\n [entityType]: selection,\n }))\n }\n\n const [search, setSearch] = useState<PickerSearch>({\n folder: undefined,\n task: undefined,\n product: undefined,\n version: undefined,\n representation: undefined,\n workfile: undefined,\n })\n\n // helper function to set the search for each entity type\n const setEntitySearch = (searchValue: string | undefined, entityType: PickerEntityType) => {\n setSearch((prev) => ({\n ...prev,\n [entityType]: searchValue,\n }))\n }\n\n // convert row selection into a list of ids for each entity type to make it easier to work with\n const entitySelection = Object.fromEntries(\n Object.entries(rowSelection).map(([type, selection]) => [\n type,\n Object.keys(selection).filter((id) => selection[id]),\n ]),\n ) as Record<PickerEntityType, string[]>\n\n const entityData = useGetEntityPickerData({\n entityType,\n projectName,\n search,\n selection: entitySelection,\n })\n\n const handleFetchNextPage = (entityType: PickerEntityType) => {\n const entityDataForType = entityData[entityType]\n if (entityDataForType?.hasNextPage && !entityDataForType.isFetchingNextPage) {\n entityDataForType.fetchNextPage?.()\n }\n }\n\n const [expanded, setExpanded] = useExpandedWithInitialFolders({\n foldersSelection: initSelectionState.folder,\n foldersData: entityData.folder,\n })\n\n // Get the complete hierarchy for the target entity type!\n const entityHierarchy = entityHierarchies[entityType]\n\n // Process table data to filter out excluded IDs and mark disabled rows\n const recursivelyProcessRows = (row:{id:string, subRows:any[]}, disabledIds:string[], parentIsDisabled: boolean) => {\n // Determine if the current row should be disabled.\n\n // A row is disabled if its parent is disabled OR its own ID is in the disabledIds list.\n const isDisabled = parentIsDisabled || disabledIds.includes(row.id);\n const disabledRowMessage = isDisabled\n ? (getDisabledMessage?.(row.id) || disabledMessage)\n : undefined;\n\n // Create a new row object with the updated disabled state.\n const newRow = {\n ...row,\n isDisabled,\n disabledMessage: disabledRowMessage\n };\n\n // If the row has subRows, recursively process each of them.\n if (row.subRows && row.subRows.length > 0) {\n newRow.subRows = row.subRows.map((subRow:any ) =>\n recursivelyProcessRows(subRow, disabledIds, isDisabled)\n );\n }\n\n return newRow;\n };\n\n const processTableDataWithDisabled = (tableData:any ) => {\n\n\n if (!disabledIds || disabledIds.length === 0) {\n return tableData;\n }\n\n // Iterate over the top-level rows and start the recursive processing.\n return tableData.map((row:any) => recursivelyProcessRows(row, disabledIds, false));\n };\n\n const handleSubmit = () => {\n // check the target entity has a selection\n if (!entitySelection[entityType]?.length) {\n return\n }\n const selection = isMultiSelect\n ? entitySelection[entityType]\n : entitySelection[entityType].slice(0, 1)\n // Call the onSubmit callback with the selected entity ids\n onSubmit(selection)\n }\n\n // based on the entity type, we need to create a new table for each parent\n return (\n <Dialog\n {...props}\n className=\"entity-picker-dialog\"\n header={`Select ${upperFirst(entityType)}`}\n isOpen\n size=\"full\"\n style={{ height: '80vh', maxWidth: entityHierarchy.length * COL_MAX_WIDTH }}\n footer={\n <>\n {showMoveToRoot && onMoveToRoot && (\n <Button\n label=\"Move to root\"\n variant=\"text\"\n onClick={onMoveToRoot}\n />\n )}\n <Button\n label={`Select ${entityType}${isMultiSelect ? 's' : ''}`}\n variant=\"filled\"\n disabled={!entitySelection[entityType]?.length}\n onClick={handleSubmit}\n />\n </>\n }\n >\n <TablesContainer>\n {entityHierarchy.map((tableEntityType) => (\n <SimpleTableProvider\n rowSelection={rowSelection[tableEntityType] || {}}\n onRowSelectionChange={(s) => setEntityRowSelection(s, tableEntityType)}\n // expanded state is only used for folders, so we only pass it when the entity type is folder\n expanded={tableEntityType === 'folder' ? expanded : undefined}\n setExpanded={tableEntityType === 'folder' ? setExpanded : undefined}\n key={tableEntityType}\n >\n <EntityTypeTable\n key={tableEntityType}\n entityType={tableEntityType}\n search={search[tableEntityType]}\n tableData={processTableDataWithDisabled(entityData[tableEntityType]?.table || [])}\n isFolderHierarchy={tableEntityType === 'folder' && !search.folder}\n onSearch={(v) => setEntitySearch(v, tableEntityType)}\n isMultiSelect={tableEntityType === entityType ? !!isMultiSelect : true}\n onRowSubmit={(id) => (tableEntityType === entityType ? onSubmit([id]) : undefined)}\n onScrollBottom={() => handleFetchNextPage(tableEntityType)}\n />\n </SimpleTableProvider>\n ))}\n </TablesContainer>\n </Dialog>\n )\n}\n"],"names":["COL_MAX_WIDTH","TablesContainer","styled","EntityPickerDialog","projectName","entityType","initialSelection","isMultiSelect","onSubmit","showMoveToRoot","onMoveToRoot","disabledIds","disabledMessage","getDisabledMessage","props","initSelectionState","rowSelection","setRowSelection","useState","setEntityRowSelection","selection","prev","search","setSearch","setEntitySearch","searchValue","entitySelection","type","id","entityData","useGetEntityPickerData","handleFetchNextPage","entityDataForType","_a","expanded","setExpanded","useExpandedWithInitialFolders","entityHierarchy","entityHierarchies","recursivelyProcessRows","row","parentIsDisabled","isDisabled","disabledRowMessage","newRow","subRow","processTableDataWithDisabled","tableData","handleSubmit","jsx","Dialog","upperFirst","jsxs","Fragment","Button","tableEntityType","SimpleTableProvider","s","EntityTypeTable","v"],"mappings":"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"}
1
+ {"version":3,"file":"EntityPickerDialog.es.js","sources":["../../../../../src/containers/EntityPickerDialog/EntityPickerDialog.tsx"],"sourcesContent":["// This components lets you pick a specific entity from the tree table.\n// Each entity type has it's own table\n\nimport { ExpandedState, RowSelectionState } from '@tanstack/react-table'\nimport { FC, useState } from 'react'\nimport { entityHierarchies } from './util'\nimport EntityTypeTable from './components/EntityTypeTable'\nimport { SimpleTableProvider } from '@shared/containers/SimpleTable'\nimport { Button, Dialog, DialogProps } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport { useGetEntityPickerData } from './hooks/useGetEntityPickerData'\nimport { upperFirst } from 'lodash'\nimport useExpandedWithInitialFolders from './hooks/useExpandedWithInitialFolders'\n\nconst COL_MAX_WIDTH = 600\n\nconst TablesContainer = styled.div`\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));\n gap: var(--base-gap-large);\n height: 100%;\n overflow: hidden;\n flex: 1;\n\n table {\n height: 100%;\n\n td:has(.path) {\n .value {\n font-weight: bold;\n }\n }\n }\n`\n\nexport type PickerEntityType =\n | 'folder'\n | 'task'\n | 'product'\n | 'version'\n | 'representation'\n | 'workfile'\nexport type PickerSelection = Record<PickerEntityType, RowSelectionState>\nexport type PickerSearch = Record<PickerEntityType, string | undefined>\n\ninterface EntityPickerDialogProps extends Pick<DialogProps, 'onClose'> {\n projectName: string // The name of the project\n entityType: PickerEntityType // The type of entity to pick\n initialSelection?: Partial<PickerSelection> // Initial selection of entities\n isMultiSelect?: boolean // Whether to allow multiple selection\n onSubmit: (selection: string[]) => void // Callback when the user selects an entity/entities\n showMoveToRoot?: boolean // Whether to show \"Move to root\" button\n onMoveToRoot?: () => void // Callback when user clicks \"Move to root\"\n disabledIds?: string[] // IDs to display as disabled/unselectable\n disabledMessage?: string // Default tooltip message for disabled items\n getDisabledMessage?: (id: string) => string | undefined // Custom message per disabled item\n}\n\nexport const EntityPickerDialog: FC<EntityPickerDialogProps> = ({\n projectName,\n entityType,\n initialSelection,\n isMultiSelect,\n onSubmit,\n showMoveToRoot,\n onMoveToRoot,\n disabledIds = [],\n disabledMessage = \"Cannot select this item\",\n getDisabledMessage,\n ...props\n}) => {\n const initSelectionState: PickerSelection = {\n folder: initialSelection?.folder || {},\n task: initialSelection?.task || {},\n product: initialSelection?.product || {},\n version: initialSelection?.version || {},\n representation: initialSelection?.representation || {},\n workfile: initialSelection?.workfile || {},\n }\n\n const [rowSelection, setRowSelection] = useState<PickerSelection>(initSelectionState)\n\n // helper function to set the row selection for each entity type\n const setEntityRowSelection = (selection: RowSelectionState, entityType: PickerEntityType) => {\n setRowSelection((prev) => ({\n ...prev,\n [entityType]: selection,\n }))\n }\n\n const [search, setSearch] = useState<PickerSearch>({\n folder: undefined,\n task: undefined,\n product: undefined,\n version: undefined,\n representation: undefined,\n workfile: undefined,\n })\n\n // helper function to set the search for each entity type\n const setEntitySearch = (searchValue: string | undefined, entityType: PickerEntityType) => {\n setSearch((prev) => ({\n ...prev,\n [entityType]: searchValue,\n }))\n }\n\n // convert row selection into a list of ids for each entity type to make it easier to work with\n const entitySelection = Object.fromEntries(\n Object.entries(rowSelection).map(([type, selection]) => [\n type,\n Object.keys(selection).filter((id) => selection[id]),\n ]),\n ) as Record<PickerEntityType, string[]>\n\n const entityData = useGetEntityPickerData({\n entityType,\n projectName,\n search,\n selection: entitySelection,\n })\n\n const handleFetchNextPage = (entityType: PickerEntityType) => {\n const entityDataForType = entityData[entityType]\n if (entityDataForType?.hasNextPage && !entityDataForType.isFetchingNextPage) {\n entityDataForType.fetchNextPage?.()\n }\n }\n\n const [expanded, setExpanded] = useExpandedWithInitialFolders({\n foldersSelection: initSelectionState.folder,\n foldersData: entityData.folder,\n })\n\n // Get the complete hierarchy for the target entity type!\n const entityHierarchy = entityHierarchies[entityType]\n\n // Process table data to filter out excluded IDs and mark disabled rows\n const recursivelyProcessRows = (row:{id:string, subRows:any[]}, disabledIds:string[], parentIsDisabled: boolean) => {\n // Determine if the current row should be disabled.\n\n // A row is disabled if its parent is disabled OR its own ID is in the disabledIds list.\n const isDisabled = parentIsDisabled || disabledIds.includes(row.id);\n const disabledRowMessage = isDisabled\n ? (getDisabledMessage?.(row.id) || disabledMessage)\n : undefined;\n\n // Create a new row object with the updated disabled state.\n const newRow = {\n ...row,\n isDisabled,\n disabledMessage: disabledRowMessage\n };\n\n // If the row has subRows, recursively process each of them.\n if (row.subRows && row.subRows.length > 0) {\n newRow.subRows = row.subRows.map((subRow:any ) =>\n recursivelyProcessRows(subRow, disabledIds, isDisabled)\n );\n }\n\n return newRow;\n };\n\n const processTableDataWithDisabled = (tableData:any ) => {\n\n\n if (!disabledIds || disabledIds.length === 0) {\n return tableData;\n }\n\n // Iterate over the top-level rows and start the recursive processing.\n return tableData.map((row:any) => recursivelyProcessRows(row, disabledIds, false));\n };\n\n const handleSubmit = () => {\n // check the target entity has a selection\n if (!entitySelection[entityType]?.length) {\n return\n }\n const selection = isMultiSelect\n ? entitySelection[entityType]\n : entitySelection[entityType].slice(0, 1)\n // Call the onSubmit callback with the selected entity ids\n onSubmit(selection)\n }\n\n // based on the entity type, we need to create a new table for each parent\n return (\n <Dialog\n {...props}\n className=\"entity-picker-dialog\"\n header={`Select ${upperFirst(entityType)}`}\n isOpen\n size=\"full\"\n style={{ height: '80vh', maxWidth: entityHierarchy.length * COL_MAX_WIDTH }}\n footer={\n <>\n {showMoveToRoot && onMoveToRoot && (\n <Button\n label=\"Move to root\"\n variant=\"text\"\n onClick={onMoveToRoot}\n />\n )}\n <Button\n label={`Select ${entityType}${isMultiSelect ? 's' : ''}`}\n variant=\"filled\"\n disabled={!entitySelection[entityType]?.length}\n onClick={handleSubmit}\n />\n </>\n }\n >\n <TablesContainer>\n {entityHierarchy.map((tableEntityType) => (\n <SimpleTableProvider\n rowSelection={rowSelection[tableEntityType] || {}}\n onRowSelectionChange={(s) => setEntityRowSelection(s, tableEntityType)}\n // expanded state is only used for folders, so we only pass it when the entity type is folder\n expanded={tableEntityType === 'folder' ? expanded : undefined}\n setExpanded={tableEntityType === 'folder' ? setExpanded : undefined}\n key={tableEntityType}\n >\n <EntityTypeTable\n key={tableEntityType}\n entityType={tableEntityType}\n search={search[tableEntityType]}\n tableData={processTableDataWithDisabled(entityData[tableEntityType]?.table || [])}\n isFolderHierarchy={tableEntityType === 'folder' && !search.folder}\n onSearch={(v) => setEntitySearch(v, tableEntityType)}\n isMultiSelect={tableEntityType === entityType ? !!isMultiSelect : true}\n onRowSubmit={(id) => (tableEntityType === entityType ? onSubmit([id]) : undefined)}\n onScrollBottom={() => handleFetchNextPage(tableEntityType)}\n />\n </SimpleTableProvider>\n ))}\n </TablesContainer>\n </Dialog>\n )\n}\n"],"names":["COL_MAX_WIDTH","TablesContainer","styled","EntityPickerDialog","projectName","entityType","initialSelection","isMultiSelect","onSubmit","showMoveToRoot","onMoveToRoot","disabledIds","disabledMessage","getDisabledMessage","props","initSelectionState","rowSelection","setRowSelection","useState","setEntityRowSelection","selection","prev","search","setSearch","setEntitySearch","searchValue","entitySelection","type","id","entityData","useGetEntityPickerData","handleFetchNextPage","entityDataForType","_a","expanded","setExpanded","useExpandedWithInitialFolders","entityHierarchy","entityHierarchies","recursivelyProcessRows","row","parentIsDisabled","isDisabled","disabledRowMessage","newRow","subRow","processTableDataWithDisabled","tableData","handleSubmit","jsx","Dialog","upperFirst","jsxs","Fragment","Button","tableEntityType","SimpleTableProvider","s","EntityTypeTable","v"],"mappings":"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"}