@ynput/ayon-frontend-shared 0.2.15 → 0.2.17

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 (575) hide show
  1. package/dist/DetailsPanel.cjs.js +12 -10
  2. package/dist/DetailsPanel.cjs.js.map +1 -1
  3. package/dist/DetailsPanel.es.js +12 -10
  4. package/dist/DetailsPanel.es.js.map +1 -1
  5. package/dist/ProjectTreeTable.cjs.js +71 -34
  6. package/dist/ProjectTreeTable.cjs.js.map +1 -1
  7. package/dist/ProjectTreeTable.es.js +55 -18
  8. package/dist/ProjectTreeTable.es.js.map +1 -1
  9. package/dist/_virtual/index.cjs10.js +5 -3
  10. package/dist/_virtual/index.cjs10.js.map +1 -1
  11. package/dist/_virtual/index.cjs4.js +4 -4
  12. package/dist/_virtual/index.cjs5.js +4 -4
  13. package/dist/_virtual/index.cjs6.js +2 -2
  14. package/dist/_virtual/index.cjs7.js +3 -5
  15. package/dist/_virtual/index.cjs7.js.map +1 -1
  16. package/dist/_virtual/index.es10.js +5 -2
  17. package/dist/_virtual/index.es10.js.map +1 -1
  18. package/dist/_virtual/index.es4.js +4 -4
  19. package/dist/_virtual/index.es5.js +4 -4
  20. package/dist/_virtual/index.es6.js +2 -2
  21. package/dist/_virtual/index.es7.js +2 -5
  22. package/dist/_virtual/index.es7.js.map +1 -1
  23. package/dist/api.cjs.js +6 -1
  24. package/dist/api.cjs.js.map +1 -1
  25. package/dist/api.es.js +8 -3
  26. package/dist/api.es.js.map +1 -1
  27. package/dist/components.cjs.js +3 -0
  28. package/dist/components.cjs.js.map +1 -1
  29. package/dist/components.es.js +3 -0
  30. package/dist/components.es.js.map +1 -1
  31. package/dist/index.cjs.js +9 -7
  32. package/dist/index.cjs.js.map +1 -1
  33. package/dist/index.es.js +9 -7
  34. package/dist/index.es.js.map +1 -1
  35. package/dist/node_modules/graphql-request/build/legacy/helpers/analyzeDocument.cjs.js +1 -2
  36. package/dist/node_modules/graphql-request/build/legacy/helpers/analyzeDocument.cjs.js.map +1 -1
  37. package/dist/node_modules/graphql-request/build/legacy/helpers/analyzeDocument.es.js +1 -2
  38. package/dist/node_modules/graphql-request/build/legacy/helpers/analyzeDocument.es.js.map +1 -1
  39. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  40. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  41. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  42. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  43. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  44. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  45. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
  46. package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
  47. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  48. package/dist/node_modules/remove-accents/index.es.js +1 -1
  49. package/dist/shared/src/api/generated/graphql.cjs.js +24 -0
  50. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  51. package/dist/shared/src/api/generated/graphql.es.js +24 -0
  52. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  53. package/dist/shared/src/api/generated/grouping.cjs.js +18 -0
  54. package/dist/shared/src/api/generated/grouping.cjs.js.map +1 -0
  55. package/dist/shared/src/api/generated/grouping.es.js +18 -0
  56. package/dist/shared/src/api/generated/grouping.es.js.map +1 -0
  57. package/dist/shared/src/api/generated/tasks.cjs.js +0 -8
  58. package/dist/shared/src/api/generated/tasks.cjs.js.map +1 -1
  59. package/dist/shared/src/api/generated/tasks.es.js +0 -8
  60. package/dist/shared/src/api/generated/tasks.es.js.map +1 -1
  61. package/dist/shared/src/api/queries/actions/getActions.cjs.js +1 -0
  62. package/dist/shared/src/api/queries/actions/getActions.cjs.js.map +1 -1
  63. package/dist/shared/src/api/queries/actions/getActions.es.js +1 -0
  64. package/dist/shared/src/api/queries/actions/getActions.es.js.map +1 -1
  65. package/dist/shared/src/api/queries/activities/getActivities.cjs.js +1 -0
  66. package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
  67. package/dist/shared/src/api/queries/activities/getActivities.es.js +1 -0
  68. package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
  69. package/dist/shared/src/api/queries/activities/getMentions.cjs.js +1 -0
  70. package/dist/shared/src/api/queries/activities/getMentions.cjs.js.map +1 -1
  71. package/dist/shared/src/api/queries/activities/getMentions.es.js +1 -0
  72. package/dist/shared/src/api/queries/activities/getMentions.es.js.map +1 -1
  73. package/dist/shared/src/api/queries/activities/updateReaction.cjs.js +1 -0
  74. package/dist/shared/src/api/queries/activities/updateReaction.cjs.js.map +1 -1
  75. package/dist/shared/src/api/queries/activities/updateReaction.es.js +1 -0
  76. package/dist/shared/src/api/queries/activities/updateReaction.es.js.map +1 -1
  77. package/dist/shared/src/api/queries/addons/getAddons.cjs.js +1 -0
  78. package/dist/shared/src/api/queries/addons/getAddons.cjs.js.map +1 -1
  79. package/dist/shared/src/api/queries/addons/getAddons.es.js +1 -0
  80. package/dist/shared/src/api/queries/addons/getAddons.es.js.map +1 -1
  81. package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js +1 -0
  82. package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js.map +1 -1
  83. package/dist/shared/src/api/queries/attributes/getAttributes.es.js +1 -0
  84. package/dist/shared/src/api/queries/attributes/getAttributes.es.js.map +1 -1
  85. package/dist/shared/src/api/queries/authentication/getAuthentication.cjs.js +1 -0
  86. package/dist/shared/src/api/queries/authentication/getAuthentication.cjs.js.map +1 -1
  87. package/dist/shared/src/api/queries/authentication/getAuthentication.es.js +1 -0
  88. package/dist/shared/src/api/queries/authentication/getAuthentication.es.js.map +1 -1
  89. package/dist/shared/src/api/queries/entities/getEntity.cjs.js +1 -0
  90. package/dist/shared/src/api/queries/entities/getEntity.cjs.js.map +1 -1
  91. package/dist/shared/src/api/queries/entities/getEntity.es.js +1 -0
  92. package/dist/shared/src/api/queries/entities/getEntity.es.js.map +1 -1
  93. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -0
  94. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  95. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +1 -0
  96. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  97. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +2 -0
  98. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  99. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +2 -0
  100. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  101. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +2 -0
  102. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  103. package/dist/shared/src/api/queries/entities/updateEntity.es.js +2 -0
  104. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  105. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -0
  106. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  107. package/dist/shared/src/api/queries/entityLists/getLists.es.js +1 -0
  108. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  109. package/dist/shared/src/api/queries/entityLists/getListsAttributes.cjs.js +1 -0
  110. package/dist/shared/src/api/queries/entityLists/getListsAttributes.cjs.js.map +1 -1
  111. package/dist/shared/src/api/queries/entityLists/getListsAttributes.es.js +1 -0
  112. package/dist/shared/src/api/queries/entityLists/getListsAttributes.es.js.map +1 -1
  113. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js +1 -0
  114. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
  115. package/dist/shared/src/api/queries/entityLists/updateLists.es.js +1 -0
  116. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
  117. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -0
  118. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  119. package/dist/shared/src/api/queries/folders/getFolders.es.js +1 -0
  120. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  121. package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js +47 -0
  122. package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js.map +1 -0
  123. package/dist/shared/src/api/queries/grouping/getGrouping.es.js +47 -0
  124. package/dist/shared/src/api/queries/grouping/getGrouping.es.js.map +1 -0
  125. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +4 -5
  126. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  127. package/dist/shared/src/api/queries/overview/getOverview.es.js +4 -5
  128. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  129. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +2 -0
  130. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  131. package/dist/shared/src/api/queries/overview/updateOverview.es.js +2 -0
  132. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  133. package/dist/shared/src/api/queries/permissions/getPermissions.cjs.js +1 -0
  134. package/dist/shared/src/api/queries/permissions/getPermissions.cjs.js.map +1 -1
  135. package/dist/shared/src/api/queries/permissions/getPermissions.es.js +1 -0
  136. package/dist/shared/src/api/queries/permissions/getPermissions.es.js.map +1 -1
  137. package/dist/shared/src/api/queries/project/getProject.cjs.js +1 -0
  138. package/dist/shared/src/api/queries/project/getProject.cjs.js.map +1 -1
  139. package/dist/shared/src/api/queries/project/getProject.es.js +1 -0
  140. package/dist/shared/src/api/queries/project/getProject.es.js.map +1 -1
  141. package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -0
  142. package/dist/shared/src/api/queries/review/getReview.cjs.js.map +1 -1
  143. package/dist/shared/src/api/queries/review/getReview.es.js +1 -0
  144. package/dist/shared/src/api/queries/review/getReview.es.js.map +1 -1
  145. package/dist/shared/src/api/queries/review/updateReview.cjs.js +1 -0
  146. package/dist/shared/src/api/queries/review/updateReview.cjs.js.map +1 -1
  147. package/dist/shared/src/api/queries/review/updateReview.es.js +1 -0
  148. package/dist/shared/src/api/queries/review/updateReview.es.js.map +1 -1
  149. package/dist/shared/src/api/queries/system/getSystem.cjs.js +1 -0
  150. package/dist/shared/src/api/queries/system/getSystem.cjs.js.map +1 -1
  151. package/dist/shared/src/api/queries/system/getSystem.es.js +1 -0
  152. package/dist/shared/src/api/queries/system/getSystem.es.js.map +1 -1
  153. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -0
  154. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  155. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +1 -0
  156. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  157. package/dist/shared/src/api/queries/users/getUsers.cjs.js +2 -0
  158. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  159. package/dist/shared/src/api/queries/users/getUsers.es.js +2 -0
  160. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  161. package/dist/shared/src/api/queries/users/updateUsers.cjs.js +1 -0
  162. package/dist/shared/src/api/queries/users/updateUsers.cjs.js.map +1 -1
  163. package/dist/shared/src/api/queries/users/updateUsers.es.js +1 -0
  164. package/dist/shared/src/api/queries/users/updateUsers.es.js.map +1 -1
  165. package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js +1 -0
  166. package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js.map +1 -1
  167. package/dist/shared/src/api/queries/watchers/getWatchers.es.js +1 -0
  168. package/dist/shared/src/api/queries/watchers/getWatchers.es.js.map +1 -1
  169. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +2 -2
  170. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
  171. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +2 -2
  172. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
  173. package/dist/shared/src/components/Badge/Badge.cjs.js +31 -0
  174. package/dist/shared/src/components/Badge/Badge.cjs.js.map +1 -0
  175. package/dist/shared/src/components/Badge/Badge.es.js +31 -0
  176. package/dist/shared/src/components/Badge/Badge.es.js.map +1 -0
  177. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +2 -0
  178. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  179. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +2 -0
  180. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  181. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js +2 -0
  182. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js.map +1 -1
  183. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js +2 -0
  184. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js.map +1 -1
  185. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js +9 -7
  186. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js.map +1 -1
  187. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js +9 -7
  188. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js.map +1 -1
  189. package/dist/shared/src/components/ProjectTableSettings/ColumnItem.cjs.js +2 -0
  190. package/dist/shared/src/components/ProjectTableSettings/ColumnItem.cjs.js.map +1 -1
  191. package/dist/shared/src/components/ProjectTableSettings/ColumnItem.es.js +2 -0
  192. package/dist/shared/src/components/ProjectTableSettings/ColumnItem.es.js.map +1 -1
  193. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +5 -1
  194. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  195. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +5 -1
  196. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  197. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +83 -13
  198. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  199. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +83 -13
  200. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  201. package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.cjs.js +2 -0
  202. package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.cjs.js.map +1 -1
  203. package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.es.js +2 -0
  204. package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.es.js.map +1 -1
  205. package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.cjs.js +5 -1
  206. package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.cjs.js.map +1 -1
  207. package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.es.js +5 -1
  208. package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.es.js.map +1 -1
  209. package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js +5 -5
  210. package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js.map +1 -1
  211. package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.styled.es.js +5 -5
  212. package/dist/shared/src/components/ReviewableProgressCard/ReviewableProgressCard.styled.es.js.map +1 -1
  213. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +2 -0
  214. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  215. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +2 -0
  216. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  217. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +99 -86
  218. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  219. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +99 -86
  220. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  221. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +93 -24
  222. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  223. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +94 -25
  224. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  225. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.styled.cjs.js +4 -0
  226. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.styled.cjs.js.map +1 -1
  227. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.styled.es.js +4 -0
  228. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.styled.es.js.map +1 -1
  229. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +9 -7
  230. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  231. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +9 -7
  232. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  233. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +2 -0
  234. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  235. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +2 -0
  236. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  237. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js +27 -6
  238. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js.map +1 -1
  239. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js +27 -6
  240. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js.map +1 -1
  241. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +222 -19
  242. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  243. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +223 -20
  244. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  245. package/dist/shared/src/components/Watchers/Watchers.cjs.js +2 -0
  246. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  247. package/dist/shared/src/components/Watchers/Watchers.es.js +2 -0
  248. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  249. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +9 -7
  250. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  251. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +9 -7
  252. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  253. package/dist/shared/src/containers/Actions/Actions.cjs.js +2 -0
  254. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  255. package/dist/shared/src/containers/Actions/Actions.es.js +2 -0
  256. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  257. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +9 -7
  258. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  259. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +9 -7
  260. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  261. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.cjs.js +22 -0
  262. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.cjs.js.map +1 -1
  263. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.es.js +22 -0
  264. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.es.js.map +1 -1
  265. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.cjs.js +26 -7
  266. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.cjs.js.map +1 -1
  267. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.es.js +26 -7
  268. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.es.js.map +1 -1
  269. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +12 -10
  270. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  271. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +12 -10
  272. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  273. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +19 -17
  274. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  275. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +19 -17
  276. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  277. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +9 -7
  278. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  279. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +9 -7
  280. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  281. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +8 -6
  282. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  283. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +8 -6
  284. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  285. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +2 -0
  286. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  287. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +2 -0
  288. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  289. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +2 -0
  290. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  291. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +2 -0
  292. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  293. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  294. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  295. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +1 -1
  296. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  297. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.cjs.js +8 -1
  298. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.cjs.js.map +1 -1
  299. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.es.js +9 -2
  300. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.es.js.map +1 -1
  301. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js +9 -0
  302. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js.map +1 -1
  303. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.es.js +10 -1
  304. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.es.js.map +1 -1
  305. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +2 -0
  306. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  307. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +2 -0
  308. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  309. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +2 -0
  310. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  311. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +2 -0
  312. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  313. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +40 -34
  314. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  315. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +41 -35
  316. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  317. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +7 -0
  318. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  319. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +7 -0
  320. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  321. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +9 -8
  322. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  323. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +9 -8
  324. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  325. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +8 -7
  326. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  327. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +8 -7
  328. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  329. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +11 -6
  330. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  331. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +11 -6
  332. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  333. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js +1 -174
  334. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
  335. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js +2 -175
  336. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
  337. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +212 -0
  338. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -0
  339. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +212 -0
  340. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -0
  341. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +2 -0
  342. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  343. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +2 -0
  344. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  345. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +1 -161
  346. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  347. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +2 -162
  348. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  349. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +191 -0
  350. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -0
  351. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +191 -0
  352. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -0
  353. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js +1 -79
  354. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js.map +1 -1
  355. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.es.js +2 -80
  356. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.es.js.map +1 -1
  357. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js +84 -0
  358. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js.map +1 -0
  359. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js +84 -0
  360. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js.map +1 -0
  361. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js +1 -277
  362. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js.map +1 -1
  363. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js +2 -278
  364. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js.map +1 -1
  365. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +282 -0
  366. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -0
  367. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +282 -0
  368. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -0
  369. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +2 -0
  370. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  371. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +2 -0
  372. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  373. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +85 -34
  374. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  375. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +86 -35
  376. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  377. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  378. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  379. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +1 -1
  380. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  381. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +26 -13
  382. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  383. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +26 -13
  384. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  385. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.cjs.js +24 -0
  386. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.cjs.js.map +1 -0
  387. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.es.js +24 -0
  388. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnSorting.es.js.map +1 -0
  389. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +16 -9
  390. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  391. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +16 -9
  392. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  393. package/dist/shared/src/containers/ProjectTreeTable/hooks/useEntitiesMap.cjs.js +17 -0
  394. package/dist/shared/src/containers/ProjectTreeTable/hooks/useEntitiesMap.cjs.js.map +1 -0
  395. package/dist/shared/src/containers/ProjectTreeTable/hooks/useEntitiesMap.es.js +17 -0
  396. package/dist/shared/src/containers/ProjectTreeTable/hooks/useEntitiesMap.es.js.map +1 -0
  397. package/dist/shared/src/containers/ProjectTreeTable/hooks/useExpandedState.cjs.js +30 -0
  398. package/dist/shared/src/containers/ProjectTreeTable/hooks/useExpandedState.cjs.js.map +1 -0
  399. package/dist/shared/src/containers/ProjectTreeTable/hooks/useExpandedState.es.js +30 -0
  400. package/dist/shared/src/containers/ProjectTreeTable/hooks/useExpandedState.es.js.map +1 -0
  401. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +363 -0
  402. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -0
  403. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +363 -0
  404. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -0
  405. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js +16 -12
  406. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js.map +1 -1
  407. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js +16 -13
  408. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js.map +1 -1
  409. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +72 -0
  410. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -0
  411. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +72 -0
  412. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -0
  413. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js +82 -0
  414. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js.map +1 -0
  415. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js +82 -0
  416. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js.map +1 -0
  417. package/dist/shared/src/containers/ProjectTreeTable/{context/ProjectTableModulesContext.cjs.js → hooks/useProjectTableModules.cjs.js} +22 -23
  418. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js.map +1 -0
  419. package/dist/shared/src/containers/ProjectTreeTable/{context/ProjectTableModulesContext.es.js → hooks/useProjectTableModules.es.js} +22 -23
  420. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js.map +1 -0
  421. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +41 -0
  422. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -0
  423. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +41 -0
  424. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -0
  425. package/dist/shared/src/containers/ProjectTreeTable/hooks/useScopedAttributeFields.cjs.js +19 -0
  426. package/dist/shared/src/containers/ProjectTreeTable/hooks/useScopedAttributeFields.cjs.js.map +1 -0
  427. package/dist/shared/src/containers/ProjectTreeTable/hooks/useScopedAttributeFields.es.js +19 -0
  428. package/dist/shared/src/containers/ProjectTreeTable/hooks/useScopedAttributeFields.es.js.map +1 -0
  429. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.cjs.js +26 -0
  430. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.cjs.js.map +1 -0
  431. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.es.js +26 -0
  432. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.es.js.map +1 -0
  433. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +7 -4
  434. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  435. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +7 -4
  436. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  437. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +15 -1
  438. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  439. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +15 -1
  440. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  441. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js.map +1 -1
  442. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js.map +1 -1
  443. package/dist/shared/src/containers/ProjectTreeTable/utils/errorExtraction.cjs.js +8 -0
  444. package/dist/shared/src/containers/ProjectTreeTable/utils/errorExtraction.cjs.js.map +1 -0
  445. package/dist/shared/src/containers/ProjectTreeTable/utils/errorExtraction.es.js +8 -0
  446. package/dist/shared/src/containers/ProjectTreeTable/utils/errorExtraction.es.js.map +1 -0
  447. package/dist/shared/src/containers/ProjectTreeTable/utils/localStorageKeys.cjs.js +7 -0
  448. package/dist/shared/src/containers/ProjectTreeTable/utils/localStorageKeys.cjs.js.map +1 -0
  449. package/dist/shared/src/containers/ProjectTreeTable/utils/localStorageKeys.es.js +7 -0
  450. package/dist/shared/src/containers/ProjectTreeTable/utils/localStorageKeys.es.js.map +1 -0
  451. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.cjs.js +0 -1
  452. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.cjs.js.map +1 -1
  453. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.es.js +0 -1
  454. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.es.js.map +1 -1
  455. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js +2 -1
  456. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js.map +1 -1
  457. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.es.js +2 -1
  458. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.es.js.map +1 -1
  459. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +0 -8
  460. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  461. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +0 -8
  462. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  463. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +10 -8
  464. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  465. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +10 -8
  466. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  467. package/dist/shared/src/context/AddonProjectContext.cjs.js +2 -0
  468. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  469. package/dist/shared/src/context/AddonProjectContext.es.js +2 -0
  470. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  471. package/dist/shared/src/context/DetailsPanelContext.cjs.js +2 -0
  472. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  473. package/dist/shared/src/context/DetailsPanelContext.es.js +2 -0
  474. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  475. package/dist/shared/src/context/PowerpackContext.cjs.js +122 -17
  476. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  477. package/dist/shared/src/context/PowerpackContext.es.js +123 -18
  478. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  479. package/dist/shared/src/context/RemoteModulesContext.cjs.js +7 -1
  480. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  481. package/dist/shared/src/context/RemoteModulesContext.es.js +7 -1
  482. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  483. package/dist/shared/src/hooks/useActionTriggers.cjs.js +2 -0
  484. package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
  485. package/dist/shared/src/hooks/useActionTriggers.es.js +2 -0
  486. package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
  487. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +2 -0
  488. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  489. package/dist/shared/src/hooks/useEntityUpdate.es.js +2 -0
  490. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  491. package/dist/shared/src/hooks/useLoadModule.cjs.js +11 -5
  492. package/dist/shared/src/hooks/useLoadModule.cjs.js.map +1 -1
  493. package/dist/shared/src/hooks/useLoadModule.es.js +11 -5
  494. package/dist/shared/src/hooks/useLoadModule.es.js.map +1 -1
  495. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +2 -0
  496. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  497. package/dist/shared/src/hooks/useScopedStatuses.es.js +2 -0
  498. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  499. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +2 -0
  500. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  501. package/dist/shared/src/hooks/useUserProjectConfig.es.js +2 -0
  502. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  503. package/dist/types/api/generated/graphql.d.ts +33 -38
  504. package/dist/types/api/generated/grouping.d.ts +40 -0
  505. package/dist/types/api/generated/index.d.ts +3 -1
  506. package/dist/types/api/generated/tasks.d.ts +8 -33
  507. package/dist/types/api/queries/activities/getActivities.d.ts +4 -0
  508. package/dist/types/api/queries/activities/updateActivities.d.ts +8 -0
  509. package/dist/types/api/queries/entities/getEntity.d.ts +4 -0
  510. package/dist/types/api/queries/entities/getEntityPanel.d.ts +4 -0
  511. package/dist/types/api/queries/entities/updateEntity.d.ts +4 -0
  512. package/dist/types/api/queries/entityLists/getLists.d.ts +4 -0
  513. package/dist/types/api/queries/grouping/getGrouping.d.ts +137 -0
  514. package/dist/types/api/queries/grouping/index.d.ts +1 -0
  515. package/dist/types/api/queries/index.d.ts +1 -0
  516. package/dist/types/api/queries/overview/getOverview.d.ts +5 -133
  517. package/dist/types/api/queries/project/getProject.d.ts +2 -2
  518. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +4 -0
  519. package/dist/types/api/queries/users/getUsers.d.ts +4 -0
  520. package/dist/types/components/Badge/Badge.d.ts +10 -0
  521. package/dist/types/components/Badge/index.d.ts +1 -0
  522. package/dist/types/components/ProjectTableSettings/ColumnItem.d.ts +1 -0
  523. package/dist/types/components/ProjectTableSettings/ProjectTableSettings.d.ts +1 -1
  524. package/dist/types/components/ProjectTableSettings/SortableColumnItem.d.ts +1 -0
  525. package/dist/types/components/ReviewableProgressCard/ReviewableProgressCard.d.ts +1 -1
  526. package/dist/types/components/ReviewablesList/ReviewablesUpload.d.ts +19 -3
  527. package/dist/types/components/SettingsPanel/SettingsPanelItemTemplate.d.ts +1 -0
  528. package/dist/types/components/index.d.ts +1 -0
  529. package/dist/types/containers/ContextMenu/ContextMenuItem.d.ts +4 -0
  530. package/dist/types/containers/ContextMenu/useCreateContextMenu.d.ts +2 -1
  531. package/dist/types/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.d.ts +1 -0
  532. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +1 -5
  533. package/dist/types/containers/ProjectTreeTable/components/GroupSettingsFallback.d.ts +9 -2
  534. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +16 -16
  535. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsProvider.d.ts +9 -0
  536. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +7 -52
  537. package/dist/types/containers/ProjectTreeTable/context/ProjectTableProvider.d.ts +59 -0
  538. package/dist/types/containers/ProjectTreeTable/context/SelectedRowsContext.d.ts +3 -8
  539. package/dist/types/containers/ProjectTreeTable/context/SelectedRowsProvider.d.ts +6 -0
  540. package/dist/types/containers/ProjectTreeTable/context/SelectionCellsContext.d.ts +2 -4
  541. package/dist/types/containers/ProjectTreeTable/context/SelectionCellsProvider.d.ts +4 -0
  542. package/dist/types/containers/ProjectTreeTable/context/index.d.ts +4 -2
  543. package/dist/types/containers/ProjectTreeTable/hooks/index.d.ts +14 -0
  544. package/dist/types/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.d.ts +7 -3
  545. package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +13 -2
  546. package/dist/types/containers/ProjectTreeTable/hooks/useColumnSorting.d.ts +12 -0
  547. package/dist/types/containers/ProjectTreeTable/hooks/useEntitiesMap.d.ts +7 -0
  548. package/dist/types/containers/ProjectTreeTable/hooks/useExpandedState.d.ts +11 -0
  549. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +38 -0
  550. package/dist/types/containers/ProjectTreeTable/hooks/useGetEntityTypeData.d.ts +2 -2
  551. package/dist/types/containers/ProjectTreeTable/hooks/useGetGroupedFields.d.ts +9 -0
  552. package/dist/types/containers/ProjectTreeTable/hooks/useGetTaskGroups.d.ts +10 -0
  553. package/dist/types/containers/ProjectTreeTable/hooks/useProjectTableModules.d.ts +25 -0
  554. package/dist/types/containers/ProjectTreeTable/hooks/useQueryFilters.d.ts +14 -0
  555. package/dist/types/containers/ProjectTreeTable/hooks/useScopedAttributeFields.d.ts +10 -0
  556. package/dist/types/containers/ProjectTreeTable/hooks/useSelectedFolders.d.ts +10 -0
  557. package/dist/types/containers/ProjectTreeTable/index.d.ts +2 -14
  558. package/dist/types/containers/ProjectTreeTable/types/index.d.ts +1 -0
  559. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +46 -0
  560. package/dist/types/containers/ProjectTreeTable/utils/errorExtraction.d.ts +4 -0
  561. package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +2 -0
  562. package/dist/types/containers/ProjectTreeTable/utils/localStorageKeys.d.ts +4 -0
  563. package/dist/types/containers/ProjectTreeTable/widgets/GroupHeaderWidget.d.ts +2 -1
  564. package/dist/types/context/PowerpackContext.d.ts +2 -1
  565. package/dist/types/hooks/useLoadModule.d.ts +2 -1
  566. package/dist/types/utils/extractVersionFromFilename.d.ts +5 -0
  567. package/package.json +1 -1
  568. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.cjs.js.map +0 -1
  569. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.es.js.map +0 -1
  570. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableSelectionContext.cjs.js +0 -33
  571. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableSelectionContext.cjs.js.map +0 -1
  572. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableSelectionContext.es.js +0 -33
  573. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableSelectionContext.es.js.map +0 -1
  574. package/dist/types/containers/ProjectTreeTable/context/ProjectTableModulesContext.d.ts +0 -12
  575. package/dist/types/containers/ProjectTreeTable/context/ProjectTableSelectionContext.d.ts +0 -11
@@ -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 { EntityThumbnailUploader, StackedThumbnails } from '@shared/components'\nimport { Actions } 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'\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 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}: DetailsPanelHeaderProps) => {\n const { useSearchParams, useNavigate } = 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 <EntityThumbnailUploader\n entities={entities}\n entityType={entityType}\n projectName={projectName}\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 && (\n <Styled.Playable className=\"playable\">\n <Icon icon=\"play_circle\" />\n </Styled.Playable>\n )}\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 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 </EntityThumbnailUploader>\n </Styled.HeaderContainer>\n )\n}\n\nexport default DetailsPanelHeader\n"],"names":["useDetailsPanelContext","useScopedStatuses","useMemo","union","useGetEntitiesChecklistsQuery","useGetAttributeConfigQuery","getPriorityOptions","useEntityUpdate","buildDetailsPanelTitles","jsx","Styled.HeaderContainer","EntityThumbnailUploader","jsxs","Styled.Grid","Styled.Header","StackedThumbnails","Styled.Playable","Icon","Styled.Content","Styled.Title","Styled.TagsSelect","upperFirst","Styled.StatusSelect","Styled.AssigneeSelect","Actions","Styled.PriorityEnumDropdown"],"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 { EntityThumbnailUploader, StackedThumbnails } from '@shared/components'\nimport { Actions } 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'\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 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}: DetailsPanelHeaderProps) => {\n const { useSearchParams, useNavigate } = 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 <EntityThumbnailUploader\n entities={entities}\n entityType={entityType}\n projectName={projectName}\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 && (\n <Styled.Playable className=\"playable\">\n <Icon icon=\"play_circle\" />\n </Styled.Playable>\n )}\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 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 </EntityThumbnailUploader>\n </Styled.HeaderContainer>\n )\n}\n\nexport default DetailsPanelHeader\n"],"names":["useDetailsPanelContext","useScopedStatuses","useMemo","union","useGetEntitiesChecklistsQuery","useGetAttributeConfigQuery","getPriorityOptions","useEntityUpdate","buildDetailsPanelTitles","jsx","Styled.HeaderContainer","EntityThumbnailUploader","jsxs","Styled.Grid","Styled.Header","StackedThumbnails","Styled.Playable","Icon","Styled.Content","Styled.Title","Styled.TagsSelect","upperFirst","Styled.StatusSelect","Styled.AssigneeSelect","Actions","Styled.PriorityEnumDropdown"],"mappings":"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"}
@@ -42,6 +42,7 @@ import "../../../api/generated/users.es.js";
42
42
  import "../../../api/generated/versions.es.js";
43
43
  import "../../../api/generated/workfiles.es.js";
44
44
  import "../../../api/generated/ynputCloud.es.js";
45
+ import "../../../api/generated/grouping.es.js";
45
46
  import "../../../api/queries/actions/getActions.es.js";
46
47
  import { useGetEntitiesChecklistsQuery } from "../../../api/queries/activities/getActivities.es.js";
47
48
  import "../../../api/queries/activities/updateActivities.es.js";
@@ -72,6 +73,7 @@ import "../../../api/queries/users/getUsers.es.js";
72
73
  import "../../../api/queries/users/updateUsers.es.js";
73
74
  import "../../../api/queries/watchers/getWatchers.es.js";
74
75
  import "../../../api/queries/permissions/getPermissions.es.js";
76
+ import "../../../api/queries/grouping/getGrouping.es.js";
75
77
  import "@dnd-kit/core";
76
78
  import "@dnd-kit/sortable";
77
79
  import "../../../components/ReviewablesList/ReviewablesList.styled.es.js";
@@ -119,6 +121,7 @@ import "../../../components/SettingsPanel/SettingsPanelItemTemplate.es.js";
119
121
  import "../../../components/AttributeEditor/components/MinMaxField.es.js";
120
122
  import "../../../components/EnumEditor/EnumEditor.styled.es.js";
121
123
  import "../../../components/SearchFilter/filterDates.es.js";
124
+ import "../../../components/Badge/Badge.es.js";
122
125
  import "../../Feed/context/FeedContext.es.js";
123
126
  import "../../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.es.js";
124
127
  import "../../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.es.js";
@@ -147,17 +150,15 @@ import "../../Feed/components/ActivityGroup/ActivityGroup.styled.es.js";
147
150
  import "../../Feed/Feed.styled.es.js";
148
151
  import "date-fns";
149
152
  import "../../ProjectTreeTable/ProjectTreeTable.es.js";
153
+ import "../../ProjectTreeTable/context/CellEditingContext.es.js";
154
+ import "../../ProjectTreeTable/context/ClipboardContext.es.js";
155
+ import "@tanstack/react-table";
150
156
  import "../../ProjectTreeTable/context/SelectionCellsContext.es.js";
157
+ import "../../ProjectTreeTable/context/ColumnSettingsContext.es.js";
151
158
  import "../../ProjectTreeTable/context/ProjectTableContext.es.js";
152
159
  import "../../ProjectTreeTable/context/ProjectTableQueriesContext.es.js";
153
160
  import "../../ProjectTreeTable/context/SelectedRowsContext.es.js";
154
- import "../../ProjectTreeTable/context/ColumnSettingsContext.es.js";
155
- import "../../ProjectTreeTable/context/CellEditingContext.es.js";
156
- import "../../ProjectTreeTable/context/ClipboardContext.es.js";
157
- import "../../ProjectTreeTable/context/ProjectTableSelectionContext.es.js";
158
161
  import "../../ProjectTreeTable/context/ProjectDataContext.es.js";
159
- import "../../ProjectTreeTable/context/ProjectTableModulesContext.es.js";
160
- import "@tanstack/react-table";
161
162
  import "../../ProjectTreeTable/widgets/CollapsedWidget.es.js";
162
163
  import "../../ProjectTreeTable/widgets/DateWidget.es.js";
163
164
  import "../../ProjectTreeTable/widgets/EnumWidget.es.js";
@@ -171,6 +172,7 @@ import "../../ProjectTreeTable/ProjectTreeTable.styled.es.js";
171
172
  import "../../ProjectTreeTable/components/SelectionCell.es.js";
172
173
  import "../../ProjectTreeTable/components/RowSelectionHeader.es.js";
173
174
  import "../../ProjectTreeTable/widgets/LoadMoreWidget.es.js";
175
+ import "../../ProjectTreeTable/components/GroupSettingsFallback.es.js";
174
176
  import "../DetailsPanel.styled.es.js";
175
177
  import FeedFilters from "../FeedFilters/FeedFilters.es.js";
176
178
  import { HeaderContainer, Grid, Header, Playable, Content, Title, TagsSelect, StatusSelect, AssigneeSelect, PriorityEnumDropdown } from "./DetailsPanelHeader.styled.es.js";
@@ -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 { EntityThumbnailUploader, StackedThumbnails } from '@shared/components'\nimport { Actions } 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'\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 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}: DetailsPanelHeaderProps) => {\n const { useSearchParams, useNavigate } = 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 <EntityThumbnailUploader\n entities={entities}\n entityType={entityType}\n projectName={projectName}\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 && (\n <Styled.Playable className=\"playable\">\n <Icon icon=\"play_circle\" />\n </Styled.Playable>\n )}\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 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 </EntityThumbnailUploader>\n </Styled.HeaderContainer>\n )\n}\n\nexport default DetailsPanelHeader\n"],"names":["jsx","Styled.HeaderContainer","jsxs","Styled.Grid","Styled.Header","Styled.Playable","Styled.Content","Styled.Title","Styled.TagsSelect","Styled.StatusSelect","Styled.AssigneeSelect","Styled.PriorityEnumDropdown"],"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 { EntityThumbnailUploader, StackedThumbnails } from '@shared/components'\nimport { Actions } 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'\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 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}: DetailsPanelHeaderProps) => {\n const { useSearchParams, useNavigate } = 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 <EntityThumbnailUploader\n entities={entities}\n entityType={entityType}\n projectName={projectName}\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 && (\n <Styled.Playable className=\"playable\">\n <Icon icon=\"play_circle\" />\n </Styled.Playable>\n )}\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 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 </EntityThumbnailUploader>\n </Styled.HeaderContainer>\n )\n}\n\nexport default DetailsPanelHeader\n"],"names":["jsx","Styled.HeaderContainer","jsxs","Styled.Grid","Styled.Header","Styled.Playable","Styled.Content","Styled.Title","Styled.TagsSelect","Styled.StatusSelect","Styled.AssigneeSelect","Styled.PriorityEnumDropdown"],"mappings":"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"}
@@ -37,6 +37,7 @@ require("../../../api/generated/users.cjs.js");
37
37
  require("../../../api/generated/versions.cjs.js");
38
38
  require("../../../api/generated/workfiles.cjs.js");
39
39
  require("../../../api/generated/ynputCloud.cjs.js");
40
+ require("../../../api/generated/grouping.cjs.js");
40
41
  require("../../../api/queries/actions/getActions.cjs.js");
41
42
  require("../../../api/queries/activities/getActivities.cjs.js");
42
43
  require("../../../api/queries/activities/updateActivities.cjs.js");
@@ -67,6 +68,7 @@ const getUsers = require("../../../api/queries/users/getUsers.cjs.js");
67
68
  require("../../../api/queries/users/updateUsers.cjs.js");
68
69
  require("../../../api/queries/watchers/getWatchers.cjs.js");
69
70
  require("../../../api/queries/permissions/getPermissions.cjs.js");
71
+ require("../../../api/queries/grouping/getGrouping.cjs.js");
70
72
  const DetailsPanel = require("../DetailsPanel.cjs.js");
71
73
  require("../../../context/RemoteModulesContext.cjs.js");
72
74
  const DetailsPanelContext = require("../../../context/DetailsPanelContext.cjs.js");
@@ -1 +1 @@
1
- {"version":3,"file":"DetailsPanelSlideOut.cjs.js","sources":["../../../../../../src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.tsx"],"sourcesContent":["import * as Styled from './DetailsPanelSlideOut.styled'\nimport { useGetUsersAssigneeQuery } from '@shared/api'\nimport { DetailsPanel } from '../DetailsPanel'\nimport { useDetailsPanelContext } from '@shared/context'\nimport type { ProjectModel } from '@shared/api'\n\nexport type DetailsPanelSlideOutProps = {\n projectsInfo: Record<string, ProjectModel>\n scope: string\n}\n\nexport const DetailsPanelSlideOut = ({ projectsInfo, scope }: DetailsPanelSlideOutProps) => {\n const { slideOut, onOpenViewer } = useDetailsPanelContext()\n const { entityType, entityId, projectName } = slideOut || {}\n const isSlideOutOpen = !!entityType && !!entityId && !!projectName\n\n const { data: users } = useGetUsersAssigneeQuery({ projectName }, { skip: !projectName })\n\n const projectInfo = projectsInfo[projectName || ''] || {}\n const { tags = [] } = projectInfo\n\n const { closeSlideOut } = useDetailsPanelContext()\n const handleClose = () => closeSlideOut()\n const handleOpenViewer = (args: any) => onOpenViewer?.(args)\n\n if (!isSlideOutOpen) return null\n return (\n <Styled.SlideOut>\n <DetailsPanel\n entityType={entityType}\n entitySubTypes={[]}\n entities={[{ id: entityId, projectName }]}\n projectsInfo={{ [projectName]: projectInfo }}\n projectNames={[projectName]}\n tagsOptions={tags}\n projectUsers={users}\n activeProjectUsers={users}\n isSlideOut\n scope={scope}\n onClose={handleClose}\n onOpenViewer={handleOpenViewer}\n />\n </Styled.SlideOut>\n )\n}\n"],"names":["useDetailsPanelContext","useGetUsersAssigneeQuery","jsx","Styled.SlideOut","DetailsPanel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,MAAM,uBAAuB,CAAC,EAAE,cAAc,YAAuC;AAC1F,QAAM,EAAE,UAAU,aAAa,IAAIA,2CAAuB;AAC1D,QAAM,EAAE,YAAY,UAAU,YAAY,IAAI,YAAY,CAAC;AACrD,QAAA,iBAAiB,CAAC,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC;AAEvD,QAAM,EAAE,MAAM,MAAM,IAAIC,SAAyB,yBAAA,EAAE,YAAY,GAAG,EAAE,MAAM,CAAC,aAAa;AAExF,QAAM,cAAc,aAAa,eAAe,EAAE,KAAK,CAAC;AACxD,QAAM,EAAE,OAAO,CAAC,EAAA,IAAM;AAEhB,QAAA,EAAE,cAAc,IAAID,2CAAuB;AAC3C,QAAA,cAAc,MAAM,cAAc;AACxC,QAAM,mBAAmB,CAAC,SAAc,6CAAe;AAEnD,MAAA,CAAC,eAAuB,QAAA;AAE1B,SAAAE,iDAACC,4BAAAA,UAAA,EACC,UAAAD,2BAAA,kBAAA;AAAA,IAACE,aAAA;AAAA,IAAA;AAAA,MACC;AAAA,MACA,gBAAgB,CAAC;AAAA,MACjB,UAAU,CAAC,EAAE,IAAI,UAAU,aAAa;AAAA,MACxC,cAAc,EAAE,CAAC,WAAW,GAAG,YAAY;AAAA,MAC3C,cAAc,CAAC,WAAW;AAAA,MAC1B,aAAa;AAAA,MACb,cAAc;AAAA,MACd,oBAAoB;AAAA,MACpB,YAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,MACT,cAAc;AAAA,IAAA;AAAA,EAAA,GAElB;AAEJ;;"}
1
+ {"version":3,"file":"DetailsPanelSlideOut.cjs.js","sources":["../../../../../../src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.tsx"],"sourcesContent":["import * as Styled from './DetailsPanelSlideOut.styled'\nimport { useGetUsersAssigneeQuery } from '@shared/api'\nimport { DetailsPanel } from '../DetailsPanel'\nimport { useDetailsPanelContext } from '@shared/context'\nimport type { ProjectModel } from '@shared/api'\n\nexport type DetailsPanelSlideOutProps = {\n projectsInfo: Record<string, ProjectModel>\n scope: string\n}\n\nexport const DetailsPanelSlideOut = ({ projectsInfo, scope }: DetailsPanelSlideOutProps) => {\n const { slideOut, onOpenViewer } = useDetailsPanelContext()\n const { entityType, entityId, projectName } = slideOut || {}\n const isSlideOutOpen = !!entityType && !!entityId && !!projectName\n\n const { data: users } = useGetUsersAssigneeQuery({ projectName }, { skip: !projectName })\n\n const projectInfo = projectsInfo[projectName || ''] || {}\n const { tags = [] } = projectInfo\n\n const { closeSlideOut } = useDetailsPanelContext()\n const handleClose = () => closeSlideOut()\n const handleOpenViewer = (args: any) => onOpenViewer?.(args)\n\n if (!isSlideOutOpen) return null\n return (\n <Styled.SlideOut>\n <DetailsPanel\n entityType={entityType}\n entitySubTypes={[]}\n entities={[{ id: entityId, projectName }]}\n projectsInfo={{ [projectName]: projectInfo }}\n projectNames={[projectName]}\n tagsOptions={tags}\n projectUsers={users}\n activeProjectUsers={users}\n isSlideOut\n scope={scope}\n onClose={handleClose}\n onOpenViewer={handleOpenViewer}\n />\n </Styled.SlideOut>\n )\n}\n"],"names":["useDetailsPanelContext","useGetUsersAssigneeQuery","jsx","Styled.SlideOut","DetailsPanel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,MAAM,uBAAuB,CAAC,EAAE,cAAc,YAAuC;AAC1F,QAAM,EAAE,UAAU,aAAa,IAAIA,2CAAuB;AAC1D,QAAM,EAAE,YAAY,UAAU,YAAY,IAAI,YAAY,CAAC;AACrD,QAAA,iBAAiB,CAAC,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC;AAEvD,QAAM,EAAE,MAAM,MAAM,IAAIC,SAAyB,yBAAA,EAAE,YAAY,GAAG,EAAE,MAAM,CAAC,aAAa;AAExF,QAAM,cAAc,aAAa,eAAe,EAAE,KAAK,CAAC;AACxD,QAAM,EAAE,OAAO,CAAC,EAAA,IAAM;AAEhB,QAAA,EAAE,cAAc,IAAID,2CAAuB;AAC3C,QAAA,cAAc,MAAM,cAAc;AACxC,QAAM,mBAAmB,CAAC,SAAc,6CAAe;AAEnD,MAAA,CAAC,eAAuB,QAAA;AAE1B,SAAAE,iDAACC,4BAAAA,UAAA,EACC,UAAAD,2BAAA,kBAAA;AAAA,IAACE,aAAA;AAAA,IAAA;AAAA,MACC;AAAA,MACA,gBAAgB,CAAC;AAAA,MACjB,UAAU,CAAC,EAAE,IAAI,UAAU,aAAa;AAAA,MACxC,cAAc,EAAE,CAAC,WAAW,GAAG,YAAY;AAAA,MAC3C,cAAc,CAAC,WAAW;AAAA,MAC1B,aAAa;AAAA,MACb,cAAc;AAAA,MACd,oBAAoB;AAAA,MACpB,YAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,MACT,cAAc;AAAA,IAAA;AAAA,EAAA,GAElB;AAEJ;;"}
@@ -35,6 +35,7 @@ import "../../../api/generated/users.es.js";
35
35
  import "../../../api/generated/versions.es.js";
36
36
  import "../../../api/generated/workfiles.es.js";
37
37
  import "../../../api/generated/ynputCloud.es.js";
38
+ import "../../../api/generated/grouping.es.js";
38
39
  import "../../../api/queries/actions/getActions.es.js";
39
40
  import "../../../api/queries/activities/getActivities.es.js";
40
41
  import "../../../api/queries/activities/updateActivities.es.js";
@@ -65,6 +66,7 @@ import { useGetUsersAssigneeQuery } from "../../../api/queries/users/getUsers.es
65
66
  import "../../../api/queries/users/updateUsers.es.js";
66
67
  import "../../../api/queries/watchers/getWatchers.es.js";
67
68
  import "../../../api/queries/permissions/getPermissions.es.js";
69
+ import "../../../api/queries/grouping/getGrouping.es.js";
68
70
  import { DetailsPanel } from "../DetailsPanel.es.js";
69
71
  import "../../../context/RemoteModulesContext.es.js";
70
72
  import { useDetailsPanelContext } from "../../../context/DetailsPanelContext.es.js";
@@ -1 +1 @@
1
- {"version":3,"file":"DetailsPanelSlideOut.es.js","sources":["../../../../../../src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.tsx"],"sourcesContent":["import * as Styled from './DetailsPanelSlideOut.styled'\nimport { useGetUsersAssigneeQuery } from '@shared/api'\nimport { DetailsPanel } from '../DetailsPanel'\nimport { useDetailsPanelContext } from '@shared/context'\nimport type { ProjectModel } from '@shared/api'\n\nexport type DetailsPanelSlideOutProps = {\n projectsInfo: Record<string, ProjectModel>\n scope: string\n}\n\nexport const DetailsPanelSlideOut = ({ projectsInfo, scope }: DetailsPanelSlideOutProps) => {\n const { slideOut, onOpenViewer } = useDetailsPanelContext()\n const { entityType, entityId, projectName } = slideOut || {}\n const isSlideOutOpen = !!entityType && !!entityId && !!projectName\n\n const { data: users } = useGetUsersAssigneeQuery({ projectName }, { skip: !projectName })\n\n const projectInfo = projectsInfo[projectName || ''] || {}\n const { tags = [] } = projectInfo\n\n const { closeSlideOut } = useDetailsPanelContext()\n const handleClose = () => closeSlideOut()\n const handleOpenViewer = (args: any) => onOpenViewer?.(args)\n\n if (!isSlideOutOpen) return null\n return (\n <Styled.SlideOut>\n <DetailsPanel\n entityType={entityType}\n entitySubTypes={[]}\n entities={[{ id: entityId, projectName }]}\n projectsInfo={{ [projectName]: projectInfo }}\n projectNames={[projectName]}\n tagsOptions={tags}\n projectUsers={users}\n activeProjectUsers={users}\n isSlideOut\n scope={scope}\n onClose={handleClose}\n onOpenViewer={handleOpenViewer}\n />\n </Styled.SlideOut>\n )\n}\n"],"names":["jsx","Styled.SlideOut"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,MAAM,uBAAuB,CAAC,EAAE,cAAc,YAAuC;AAC1F,QAAM,EAAE,UAAU,aAAa,IAAI,uBAAuB;AAC1D,QAAM,EAAE,YAAY,UAAU,YAAY,IAAI,YAAY,CAAC;AACrD,QAAA,iBAAiB,CAAC,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC;AAEvD,QAAM,EAAE,MAAM,MAAM,IAAI,yBAAyB,EAAE,YAAY,GAAG,EAAE,MAAM,CAAC,aAAa;AAExF,QAAM,cAAc,aAAa,eAAe,EAAE,KAAK,CAAC;AACxD,QAAM,EAAE,OAAO,CAAC,EAAA,IAAM;AAEhB,QAAA,EAAE,cAAc,IAAI,uBAAuB;AAC3C,QAAA,cAAc,MAAM,cAAc;AACxC,QAAM,mBAAmB,CAAC,SAAc,6CAAe;AAEnD,MAAA,CAAC,eAAuB,QAAA;AAE1B,SAAAA,sCAACC,UAAA,EACC,UAAAD,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,gBAAgB,CAAC;AAAA,MACjB,UAAU,CAAC,EAAE,IAAI,UAAU,aAAa;AAAA,MACxC,cAAc,EAAE,CAAC,WAAW,GAAG,YAAY;AAAA,MAC3C,cAAc,CAAC,WAAW;AAAA,MAC1B,aAAa;AAAA,MACb,cAAc;AAAA,MACd,oBAAoB;AAAA,MACpB,YAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,MACT,cAAc;AAAA,IAAA;AAAA,EAAA,GAElB;AAEJ;"}
1
+ {"version":3,"file":"DetailsPanelSlideOut.es.js","sources":["../../../../../../src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.tsx"],"sourcesContent":["import * as Styled from './DetailsPanelSlideOut.styled'\nimport { useGetUsersAssigneeQuery } from '@shared/api'\nimport { DetailsPanel } from '../DetailsPanel'\nimport { useDetailsPanelContext } from '@shared/context'\nimport type { ProjectModel } from '@shared/api'\n\nexport type DetailsPanelSlideOutProps = {\n projectsInfo: Record<string, ProjectModel>\n scope: string\n}\n\nexport const DetailsPanelSlideOut = ({ projectsInfo, scope }: DetailsPanelSlideOutProps) => {\n const { slideOut, onOpenViewer } = useDetailsPanelContext()\n const { entityType, entityId, projectName } = slideOut || {}\n const isSlideOutOpen = !!entityType && !!entityId && !!projectName\n\n const { data: users } = useGetUsersAssigneeQuery({ projectName }, { skip: !projectName })\n\n const projectInfo = projectsInfo[projectName || ''] || {}\n const { tags = [] } = projectInfo\n\n const { closeSlideOut } = useDetailsPanelContext()\n const handleClose = () => closeSlideOut()\n const handleOpenViewer = (args: any) => onOpenViewer?.(args)\n\n if (!isSlideOutOpen) return null\n return (\n <Styled.SlideOut>\n <DetailsPanel\n entityType={entityType}\n entitySubTypes={[]}\n entities={[{ id: entityId, projectName }]}\n projectsInfo={{ [projectName]: projectInfo }}\n projectNames={[projectName]}\n tagsOptions={tags}\n projectUsers={users}\n activeProjectUsers={users}\n isSlideOut\n scope={scope}\n onClose={handleClose}\n onOpenViewer={handleOpenViewer}\n />\n </Styled.SlideOut>\n )\n}\n"],"names":["jsx","Styled.SlideOut"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,MAAM,uBAAuB,CAAC,EAAE,cAAc,YAAuC;AAC1F,QAAM,EAAE,UAAU,aAAa,IAAI,uBAAuB;AAC1D,QAAM,EAAE,YAAY,UAAU,YAAY,IAAI,YAAY,CAAC;AACrD,QAAA,iBAAiB,CAAC,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC;AAEvD,QAAM,EAAE,MAAM,MAAM,IAAI,yBAAyB,EAAE,YAAY,GAAG,EAAE,MAAM,CAAC,aAAa;AAExF,QAAM,cAAc,aAAa,eAAe,EAAE,KAAK,CAAC;AACxD,QAAM,EAAE,OAAO,CAAC,EAAA,IAAM;AAEhB,QAAA,EAAE,cAAc,IAAI,uBAAuB;AAC3C,QAAA,cAAc,MAAM,cAAc;AACxC,QAAM,mBAAmB,CAAC,SAAc,6CAAe;AAEnD,MAAA,CAAC,eAAuB,QAAA;AAE1B,SAAAA,sCAACC,UAAA,EACC,UAAAD,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,gBAAgB,CAAC;AAAA,MACjB,UAAU,CAAC,EAAE,IAAI,UAAU,aAAa;AAAA,MACxC,cAAc,EAAE,CAAC,WAAW,GAAG,YAAY;AAAA,MAC3C,cAAc,CAAC,WAAW;AAAA,MAC1B,aAAa;AAAA,MACb,cAAc;AAAA,MACd,oBAAoB;AAAA,MACpB,YAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,MACT,cAAc;AAAA,IAAA;AAAA,EAAA,GAElB;AAEJ;"}
@@ -36,6 +36,7 @@ require("../../../api/generated/users.cjs.js");
36
36
  require("../../../api/generated/versions.cjs.js");
37
37
  require("../../../api/generated/workfiles.cjs.js");
38
38
  require("../../../api/generated/ynputCloud.cjs.js");
39
+ require("../../../api/generated/grouping.cjs.js");
39
40
  require("../../../api/queries/actions/getActions.cjs.js");
40
41
  require("../../../api/queries/activities/getActivities.cjs.js");
41
42
  require("../../../api/queries/activities/updateActivities.cjs.js");
@@ -66,6 +67,7 @@ require("../../../api/queries/users/getUsers.cjs.js");
66
67
  require("../../../api/queries/users/updateUsers.cjs.js");
67
68
  require("../../../api/queries/watchers/getWatchers.cjs.js");
68
69
  require("../../../api/queries/permissions/getPermissions.cjs.js");
70
+ require("../../../api/queries/grouping/getGrouping.cjs.js");
69
71
  const useGetEntityPath = ({
70
72
  entity,
71
73
  entityType,
@@ -1 +1 @@
1
- {"version":3,"file":"useGetEntityPath.cjs.js","sources":["../../../../../../src/containers/DetailsPanel/hooks/useGetEntityPath.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport getEntityPathData from '../helpers/getEntityPathData'\n// shared\nimport { PathSegment } from '@shared/components'\nimport { useGetProductVersionsQuery, useGetFolderListQuery } from '@shared/api'\nimport type { DetailsPanelEntityData, DetailsPanelEntityType } from '@shared/api'\n\ntype Props = {\n entity: DetailsPanelEntityData\n entityType: DetailsPanelEntityType\n projectName: string\n isLoading: boolean\n}\n\nconst useGetEntityPath = ({\n entity,\n entityType,\n projectName,\n isLoading,\n}: Props): [PathSegment[], PathSegment[]] => {\n // get the folders list for the project\n const { data: { folders: projectFolders = [] } = {}, isFetching } = useGetFolderListQuery(\n { projectName: projectName, attrib: true },\n { skip: !projectName || isLoading },\n )\n\n // if the entityType is version, get sibling versions\n const { data: versionsData } = useGetProductVersionsQuery(\n { productId: entity.product?.id || '', projectName },\n { skip: entityType !== 'version' || !entity.product?.id },\n )\n\n const versions = useMemo(\n () =>\n !versionsData?.project.product?.versionList\n ? []\n : [...(versionsData.project.product?.versionList || [])]\n .sort((a, b) => {\n if (a.name === 'HERO') return -1\n if (b.name === 'HERO') return 1\n return b.name.localeCompare(a.name)\n })\n .map((version) => ({\n type: 'version' as const,\n label: version.name,\n id: version.id,\n })),\n [versionsData],\n )\n\n const foldersMap = useMemo(\n () => new Map(projectFolders.map((folder) => [folder.id, folder])),\n [projectFolders],\n )\n\n const segments = useMemo(\n () => (isFetching ? [] : getEntityPathData(entity, foldersMap)),\n [projectFolders, entity],\n )\n\n return [segments, versions]\n}\n\nexport default useGetEntityPath\n"],"names":["useGetFolderListQuery","useGetProductVersionsQuery","useMemo","_a","_b"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,MAAM,mBAAmB,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA6C;;AAErC,QAAA,EAAE,MAAM,EAAE,SAAS,iBAAiB,CAAA,MAAO,CAAA,GAAI,WAAA,IAAeA,WAAA;AAAA,IAClE,EAAE,aAA0B,QAAQ,KAAK;AAAA,IACzC,EAAE,MAAM,CAAC,eAAe,UAAU;AAAA,EACpC;AAGM,QAAA,EAAE,MAAM,aAAA,IAAiBC,UAAA;AAAA,IAC7B,EAAE,aAAW,YAAO,YAAP,mBAAgB,OAAM,IAAI,YAAY;AAAA,IACnD,EAAE,MAAM,eAAe,aAAa,GAAC,YAAO,YAAP,mBAAgB,IAAG;AAAA,EAC1D;AAEA,QAAM,WAAWC,MAAA;AAAA,IACf,MACE;;AAAA,gBAACC,MAAA,6CAAc,QAAQ,YAAtB,gBAAAA,IAA+B,eAC5B,KACA,CAAC,KAAIC,MAAA,aAAa,QAAQ,YAArB,gBAAAA,IAA8B,gBAAe,CAAG,CAAA,EAClD,KAAK,CAAC,GAAG,MAAM;AACV,YAAA,EAAE,SAAS,OAAe,QAAA;AAC1B,YAAA,EAAE,SAAS,OAAe,QAAA;AAC9B,eAAO,EAAE,KAAK,cAAc,EAAE,IAAI;AAAA,MAAA,CACnC,EACA,IAAI,CAAC,aAAa;AAAA,QACjB,MAAM;AAAA,QACN,OAAO,QAAQ;AAAA,QACf,IAAI,QAAQ;AAAA,MAAA,EACZ;AAAA;AAAA,IACV,CAAC,YAAY;AAAA,EACf;AAEA,QAAM,aAAaF,MAAA;AAAA,IACjB,MAAM,IAAI,IAAI,eAAe,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;AAAA,IACjE,CAAC,cAAc;AAAA,EACjB;AAEA,QAAM,WAAWA,MAAA;AAAA,IACf,MAAO,aAAa,CAAK,IAAA,kBAAkB,QAAQ,UAAU;AAAA,IAC7D,CAAC,gBAAgB,MAAM;AAAA,EACzB;AAEO,SAAA,CAAC,UAAU,QAAQ;AAC5B;;"}
1
+ {"version":3,"file":"useGetEntityPath.cjs.js","sources":["../../../../../../src/containers/DetailsPanel/hooks/useGetEntityPath.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport getEntityPathData from '../helpers/getEntityPathData'\n// shared\nimport { PathSegment } from '@shared/components'\nimport { useGetProductVersionsQuery, useGetFolderListQuery } from '@shared/api'\nimport type { DetailsPanelEntityData, DetailsPanelEntityType } from '@shared/api'\n\ntype Props = {\n entity: DetailsPanelEntityData\n entityType: DetailsPanelEntityType\n projectName: string\n isLoading: boolean\n}\n\nconst useGetEntityPath = ({\n entity,\n entityType,\n projectName,\n isLoading,\n}: Props): [PathSegment[], PathSegment[]] => {\n // get the folders list for the project\n const { data: { folders: projectFolders = [] } = {}, isFetching } = useGetFolderListQuery(\n { projectName: projectName, attrib: true },\n { skip: !projectName || isLoading },\n )\n\n // if the entityType is version, get sibling versions\n const { data: versionsData } = useGetProductVersionsQuery(\n { productId: entity.product?.id || '', projectName },\n { skip: entityType !== 'version' || !entity.product?.id },\n )\n\n const versions = useMemo(\n () =>\n !versionsData?.project.product?.versionList\n ? []\n : [...(versionsData.project.product?.versionList || [])]\n .sort((a, b) => {\n if (a.name === 'HERO') return -1\n if (b.name === 'HERO') return 1\n return b.name.localeCompare(a.name)\n })\n .map((version) => ({\n type: 'version' as const,\n label: version.name,\n id: version.id,\n })),\n [versionsData],\n )\n\n const foldersMap = useMemo(\n () => new Map(projectFolders.map((folder) => [folder.id, folder])),\n [projectFolders],\n )\n\n const segments = useMemo(\n () => (isFetching ? [] : getEntityPathData(entity, foldersMap)),\n [projectFolders, entity],\n )\n\n return [segments, versions]\n}\n\nexport default useGetEntityPath\n"],"names":["useGetFolderListQuery","useGetProductVersionsQuery","useMemo","_a","_b"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,MAAM,mBAAmB,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA6C;;AAErC,QAAA,EAAE,MAAM,EAAE,SAAS,iBAAiB,CAAA,MAAO,CAAA,GAAI,WAAA,IAAeA,WAAA;AAAA,IAClE,EAAE,aAA0B,QAAQ,KAAK;AAAA,IACzC,EAAE,MAAM,CAAC,eAAe,UAAU;AAAA,EACpC;AAGM,QAAA,EAAE,MAAM,aAAA,IAAiBC,UAAA;AAAA,IAC7B,EAAE,aAAW,YAAO,YAAP,mBAAgB,OAAM,IAAI,YAAY;AAAA,IACnD,EAAE,MAAM,eAAe,aAAa,GAAC,YAAO,YAAP,mBAAgB,IAAG;AAAA,EAC1D;AAEA,QAAM,WAAWC,MAAA;AAAA,IACf,MACE;;AAAA,gBAACC,MAAA,6CAAc,QAAQ,YAAtB,gBAAAA,IAA+B,eAC5B,KACA,CAAC,KAAIC,MAAA,aAAa,QAAQ,YAArB,gBAAAA,IAA8B,gBAAe,CAAG,CAAA,EAClD,KAAK,CAAC,GAAG,MAAM;AACV,YAAA,EAAE,SAAS,OAAe,QAAA;AAC1B,YAAA,EAAE,SAAS,OAAe,QAAA;AAC9B,eAAO,EAAE,KAAK,cAAc,EAAE,IAAI;AAAA,MAAA,CACnC,EACA,IAAI,CAAC,aAAa;AAAA,QACjB,MAAM;AAAA,QACN,OAAO,QAAQ;AAAA,QACf,IAAI,QAAQ;AAAA,MAAA,EACZ;AAAA;AAAA,IACV,CAAC,YAAY;AAAA,EACf;AAEA,QAAM,aAAaF,MAAA;AAAA,IACjB,MAAM,IAAI,IAAI,eAAe,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;AAAA,IACjE,CAAC,cAAc;AAAA,EACjB;AAEA,QAAM,WAAWA,MAAA;AAAA,IACf,MAAO,aAAa,CAAK,IAAA,kBAAkB,QAAQ,UAAU;AAAA,IAC7D,CAAC,gBAAgB,MAAM;AAAA,EACzB;AAEO,SAAA,CAAC,UAAU,QAAQ;AAC5B;;"}
@@ -35,6 +35,7 @@ import "../../../api/generated/users.es.js";
35
35
  import "../../../api/generated/versions.es.js";
36
36
  import "../../../api/generated/workfiles.es.js";
37
37
  import "../../../api/generated/ynputCloud.es.js";
38
+ import "../../../api/generated/grouping.es.js";
38
39
  import "../../../api/queries/actions/getActions.es.js";
39
40
  import "../../../api/queries/activities/getActivities.es.js";
40
41
  import "../../../api/queries/activities/updateActivities.es.js";
@@ -65,6 +66,7 @@ import "../../../api/queries/users/getUsers.es.js";
65
66
  import "../../../api/queries/users/updateUsers.es.js";
66
67
  import "../../../api/queries/watchers/getWatchers.es.js";
67
68
  import "../../../api/queries/permissions/getPermissions.es.js";
69
+ import "../../../api/queries/grouping/getGrouping.es.js";
68
70
  const useGetEntityPath = ({
69
71
  entity,
70
72
  entityType,
@@ -1 +1 @@
1
- {"version":3,"file":"useGetEntityPath.es.js","sources":["../../../../../../src/containers/DetailsPanel/hooks/useGetEntityPath.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport getEntityPathData from '../helpers/getEntityPathData'\n// shared\nimport { PathSegment } from '@shared/components'\nimport { useGetProductVersionsQuery, useGetFolderListQuery } from '@shared/api'\nimport type { DetailsPanelEntityData, DetailsPanelEntityType } from '@shared/api'\n\ntype Props = {\n entity: DetailsPanelEntityData\n entityType: DetailsPanelEntityType\n projectName: string\n isLoading: boolean\n}\n\nconst useGetEntityPath = ({\n entity,\n entityType,\n projectName,\n isLoading,\n}: Props): [PathSegment[], PathSegment[]] => {\n // get the folders list for the project\n const { data: { folders: projectFolders = [] } = {}, isFetching } = useGetFolderListQuery(\n { projectName: projectName, attrib: true },\n { skip: !projectName || isLoading },\n )\n\n // if the entityType is version, get sibling versions\n const { data: versionsData } = useGetProductVersionsQuery(\n { productId: entity.product?.id || '', projectName },\n { skip: entityType !== 'version' || !entity.product?.id },\n )\n\n const versions = useMemo(\n () =>\n !versionsData?.project.product?.versionList\n ? []\n : [...(versionsData.project.product?.versionList || [])]\n .sort((a, b) => {\n if (a.name === 'HERO') return -1\n if (b.name === 'HERO') return 1\n return b.name.localeCompare(a.name)\n })\n .map((version) => ({\n type: 'version' as const,\n label: version.name,\n id: version.id,\n })),\n [versionsData],\n )\n\n const foldersMap = useMemo(\n () => new Map(projectFolders.map((folder) => [folder.id, folder])),\n [projectFolders],\n )\n\n const segments = useMemo(\n () => (isFetching ? [] : getEntityPathData(entity, foldersMap)),\n [projectFolders, entity],\n )\n\n return [segments, versions]\n}\n\nexport default useGetEntityPath\n"],"names":["_a","_b"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,MAAM,mBAAmB,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA6C;;AAErC,QAAA,EAAE,MAAM,EAAE,SAAS,iBAAiB,CAAA,MAAO,CAAA,GAAI,WAAA,IAAe;AAAA,IAClE,EAAE,aAA0B,QAAQ,KAAK;AAAA,IACzC,EAAE,MAAM,CAAC,eAAe,UAAU;AAAA,EACpC;AAGM,QAAA,EAAE,MAAM,aAAA,IAAiB;AAAA,IAC7B,EAAE,aAAW,YAAO,YAAP,mBAAgB,OAAM,IAAI,YAAY;AAAA,IACnD,EAAE,MAAM,eAAe,aAAa,GAAC,YAAO,YAAP,mBAAgB,IAAG;AAAA,EAC1D;AAEA,QAAM,WAAW;AAAA,IACf,MACE;;AAAA,gBAACA,MAAA,6CAAc,QAAQ,YAAtB,gBAAAA,IAA+B,eAC5B,KACA,CAAC,KAAIC,MAAA,aAAa,QAAQ,YAArB,gBAAAA,IAA8B,gBAAe,CAAG,CAAA,EAClD,KAAK,CAAC,GAAG,MAAM;AACV,YAAA,EAAE,SAAS,OAAe,QAAA;AAC1B,YAAA,EAAE,SAAS,OAAe,QAAA;AAC9B,eAAO,EAAE,KAAK,cAAc,EAAE,IAAI;AAAA,MAAA,CACnC,EACA,IAAI,CAAC,aAAa;AAAA,QACjB,MAAM;AAAA,QACN,OAAO,QAAQ;AAAA,QACf,IAAI,QAAQ;AAAA,MAAA,EACZ;AAAA;AAAA,IACV,CAAC,YAAY;AAAA,EACf;AAEA,QAAM,aAAa;AAAA,IACjB,MAAM,IAAI,IAAI,eAAe,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;AAAA,IACjE,CAAC,cAAc;AAAA,EACjB;AAEA,QAAM,WAAW;AAAA,IACf,MAAO,aAAa,CAAK,IAAA,kBAAkB,QAAQ,UAAU;AAAA,IAC7D,CAAC,gBAAgB,MAAM;AAAA,EACzB;AAEO,SAAA,CAAC,UAAU,QAAQ;AAC5B;"}
1
+ {"version":3,"file":"useGetEntityPath.es.js","sources":["../../../../../../src/containers/DetailsPanel/hooks/useGetEntityPath.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport getEntityPathData from '../helpers/getEntityPathData'\n// shared\nimport { PathSegment } from '@shared/components'\nimport { useGetProductVersionsQuery, useGetFolderListQuery } from '@shared/api'\nimport type { DetailsPanelEntityData, DetailsPanelEntityType } from '@shared/api'\n\ntype Props = {\n entity: DetailsPanelEntityData\n entityType: DetailsPanelEntityType\n projectName: string\n isLoading: boolean\n}\n\nconst useGetEntityPath = ({\n entity,\n entityType,\n projectName,\n isLoading,\n}: Props): [PathSegment[], PathSegment[]] => {\n // get the folders list for the project\n const { data: { folders: projectFolders = [] } = {}, isFetching } = useGetFolderListQuery(\n { projectName: projectName, attrib: true },\n { skip: !projectName || isLoading },\n )\n\n // if the entityType is version, get sibling versions\n const { data: versionsData } = useGetProductVersionsQuery(\n { productId: entity.product?.id || '', projectName },\n { skip: entityType !== 'version' || !entity.product?.id },\n )\n\n const versions = useMemo(\n () =>\n !versionsData?.project.product?.versionList\n ? []\n : [...(versionsData.project.product?.versionList || [])]\n .sort((a, b) => {\n if (a.name === 'HERO') return -1\n if (b.name === 'HERO') return 1\n return b.name.localeCompare(a.name)\n })\n .map((version) => ({\n type: 'version' as const,\n label: version.name,\n id: version.id,\n })),\n [versionsData],\n )\n\n const foldersMap = useMemo(\n () => new Map(projectFolders.map((folder) => [folder.id, folder])),\n [projectFolders],\n )\n\n const segments = useMemo(\n () => (isFetching ? [] : getEntityPathData(entity, foldersMap)),\n [projectFolders, entity],\n )\n\n return [segments, versions]\n}\n\nexport default useGetEntityPath\n"],"names":["_a","_b"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,MAAM,mBAAmB,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA6C;;AAErC,QAAA,EAAE,MAAM,EAAE,SAAS,iBAAiB,CAAA,MAAO,CAAA,GAAI,WAAA,IAAe;AAAA,IAClE,EAAE,aAA0B,QAAQ,KAAK;AAAA,IACzC,EAAE,MAAM,CAAC,eAAe,UAAU;AAAA,EACpC;AAGM,QAAA,EAAE,MAAM,aAAA,IAAiB;AAAA,IAC7B,EAAE,aAAW,YAAO,YAAP,mBAAgB,OAAM,IAAI,YAAY;AAAA,IACnD,EAAE,MAAM,eAAe,aAAa,GAAC,YAAO,YAAP,mBAAgB,IAAG;AAAA,EAC1D;AAEA,QAAM,WAAW;AAAA,IACf,MACE;;AAAA,gBAACA,MAAA,6CAAc,QAAQ,YAAtB,gBAAAA,IAA+B,eAC5B,KACA,CAAC,KAAIC,MAAA,aAAa,QAAQ,YAArB,gBAAAA,IAA8B,gBAAe,CAAG,CAAA,EAClD,KAAK,CAAC,GAAG,MAAM;AACV,YAAA,EAAE,SAAS,OAAe,QAAA;AAC1B,YAAA,EAAE,SAAS,OAAe,QAAA;AAC9B,eAAO,EAAE,KAAK,cAAc,EAAE,IAAI;AAAA,MAAA,CACnC,EACA,IAAI,CAAC,aAAa;AAAA,QACjB,MAAM;AAAA,QACN,OAAO,QAAQ;AAAA,QACf,IAAI,QAAQ;AAAA,MAAA,EACZ;AAAA;AAAA,IACV,CAAC,YAAY;AAAA,EACf;AAEA,QAAM,aAAa;AAAA,IACjB,MAAM,IAAI,IAAI,eAAe,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;AAAA,IACjE,CAAC,cAAc;AAAA,EACjB;AAEA,QAAM,WAAW;AAAA,IACf,MAAO,aAAa,CAAK,IAAA,kBAAkB,QAAQ,UAAU;AAAA,IAC7D,CAAC,gBAAgB,MAAM;AAAA,EACzB;AAEO,SAAA,CAAC,UAAU,QAAQ;AAC5B;"}
@@ -170,7 +170,7 @@ const FileUploadCard = ({
170
170
  extension
171
171
  ] })
172
172
  ] }) }),
173
- isDownloadable && (!onRemove ? /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx("a", { href: src, download: true, className: "download", children: downloadComponent }) : /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx("div", { className: "download", children: downloadComponent }))
173
+ isDownloadable && (!onRemove ? /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx("a", { href: src, target: "_blank", rel: "noopener noreferrer", className: "download", children: downloadComponent }) : /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx("div", { className: "download", children: downloadComponent }))
174
174
  ] }),
175
175
  onRemove && /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(ayonReactComponents.Button, { className: "remove", onClick: onRemove, icon: "close" })
176
176
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploadCard.cjs.js","sources":["../../../../../../../src/containers/Feed/components/FileUploadCard/FileUploadCard.tsx"],"sourcesContent":["import { Button, getFileSizeString, Icon } from '@ynput/ayon-react-components'\nimport * as Styled from './FileUploadCard.styled'\nimport clsx from 'clsx'\nimport { useState } from 'react'\nimport { isFilePreviewable } from '../FileUploadPreview'\nimport { SavedAnnotationMetadata } from '@shared/containers'\nimport { useDetailsPanelContext } from '@shared/context'\nimport { AnnotationPreview } from '../CommentInput/hooks/useAnnotationsSync'\n\nexport interface FileUploadCardProps extends React.HTMLAttributes<HTMLDivElement> {\n name: string\n mime?: string\n src?: string\n unsavedAnnotation?: AnnotationPreview\n savedAnnotation?: SavedAnnotationMetadata\n size: number\n progress: number\n onRemove?: () => void\n isCompact?: boolean\n isDownloadable?: boolean\n onExpand?: () => void\n onJumpTo?: () => void\n}\n\nconst fileIcons: { [key: string]: string[] } = {\n // special cases\n description: ['doc'],\n folder_zip: ['zip'],\n code_blocks: [\n 'json',\n 'javascript',\n 'python',\n 'html',\n 'css',\n '.py',\n '.js',\n '.html',\n '.css',\n '.json',\n '.ts',\n ],\n brush: ['.psd', '.ai', '.xd', '.sketch'],\n '3d_rotation': [\n '.mb',\n '.ma',\n '.c4d',\n '.blend',\n '.max',\n '.3ds',\n '.lwo',\n '.lws',\n '.lxo',\n '.hip',\n '.hda',\n ],\n theaters: ['.aep', '.tpl', '.clip', '.nk', '.fusion', '.prproj', '.spsm', '.drp'],\n picture_as_pdf: ['pdf', '.pdf'],\n // default\n image: ['image', '.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp'],\n videocam: ['video', '.mp4', '.mov', '.avi', '.mkv', '.webm', '.mxf'],\n business_center: ['application'],\n audio_file: ['audio'],\n text_snippet: ['text'],\n filter_none: ['sequence'],\n font_download: ['font'],\n deployed_code: ['model', '.obj', '.abc', '.stl', '.fbx', '.gltf', '.glb', '.usd'],\n}\n\nconst getIconForType = (type: string): string => {\n for (const [icon, keywords] of Object.entries(fileIcons)) {\n if (keywords.some((keyword) => type.includes(keyword))) {\n return icon\n }\n }\n return 'draft'\n}\n\nconst FileUploadCard = ({\n name,\n mime,\n src,\n unsavedAnnotation,\n savedAnnotation,\n size,\n progress,\n onRemove,\n isCompact,\n isDownloadable = false,\n onExpand,\n onJumpTo,\n className,\n ...props\n}: FileUploadCardProps) => {\n const inProgress = progress && progress < 100\n\n const [imageError, setImageError] = useState(false)\n const { feedAnnotationsEnabled } = useDetailsPanelContext()\n\n // split name and file extension\n const nameParts = name.split('.')\n const extension = nameParts.pop() || ''\n const fileName = nameParts.join('.')\n\n const isPreviewable = isFilePreviewable(mime || '.' + extension)\n const isImage = mime?.includes('image/') || Boolean(unsavedAnnotation)\n\n const downloadComponent = (\n <>\n <span className=\"size\">{getFileSizeString(size)}</span>\n <Icon icon=\"download\" className=\"download-icon\" />\n </>\n )\n\n const someAnnotation = unsavedAnnotation ?? savedAnnotation\n\n return (\n <Styled.File\n className={clsx(className, {\n compact: isCompact,\n isDownloadable,\n isPreviewable,\n isUnsavedAnnotation: Boolean(unsavedAnnotation),\n })}\n {...props}\n >\n <Styled.ContentWrapper\n className={clsx('content-wrapper', {\n isPreviewable,\n isUnsavedAnnotation: Boolean(unsavedAnnotation),\n })}\n >\n <Icon icon={getIconForType(mime || '.' + extension)} className=\"type-icon\" />\n {isImage && src && (\n <Styled.ImageWrapper\n className={clsx({\n 'image-wrapper': true,\n isDownloadable: isDownloadable || isPreviewable || unsavedAnnotation,\n })}\n >\n <img\n src={src}\n onError={() => setImageError(true)}\n style={{\n display: imageError ? 'none' : 'block',\n }}\n />\n </Styled.ImageWrapper>\n )}\n <Styled.Buttons className=\"expand-buttons\">\n {isPreviewable && (\n <Styled.ExpandButton\n data-tooltip=\"Open preview\"\n icon=\"open_in_full\"\n variant=\"nav\"\n onClick={onExpand}\n />\n )}\n {(unsavedAnnotation || (feedAnnotationsEnabled && savedAnnotation)) && (\n <Styled.ExpandButton\n data-tooltip=\"Jump to annotation\"\n icon=\"play_circle\"\n variant=\"nav\"\n onClick={onJumpTo}\n />\n )}\n </Styled.Buttons>\n </Styled.ContentWrapper>\n <Styled.Footer className={clsx({ inProgress, isPreviewable, isDownloadable })}>\n <span className=\"progress\" style={{ right: `${100 - progress}%` }} />\n <div className=\"name-wrapper\">\n {someAnnotation ? (\n <span className=\"name\">\n <Icon icon=\"draw\" />\n {someAnnotation.range[0]}\n {someAnnotation.range[1] !== someAnnotation.range[0] &&\n ` - ${someAnnotation.range[1]}`}\n </span>\n ) : (\n <span className=\"name\">\n {fileName}\n <span className=\"extension\">.{extension}</span>\n </span>\n )}\n </div>\n\n {isDownloadable &&\n (!onRemove ? (\n <a href={src} download className=\"download\">\n {downloadComponent}\n </a>\n ) : (\n <div className=\"download\">{downloadComponent}</div>\n ))}\n </Styled.Footer>\n {onRemove && <Button className=\"remove\" onClick={onRemove} icon=\"close\" />}\n </Styled.File>\n )\n}\n\nexport default FileUploadCard\n"],"names":["useState","useDetailsPanelContext","isFilePreviewable","jsxs","Fragment","jsx","getFileSizeString","Icon","Styled.File","Styled.ContentWrapper","Styled.ImageWrapper","Styled.Buttons","Styled.ExpandButton","Styled.Footer","Button"],"mappings":"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"}
1
+ {"version":3,"file":"FileUploadCard.cjs.js","sources":["../../../../../../../src/containers/Feed/components/FileUploadCard/FileUploadCard.tsx"],"sourcesContent":["import { Button, getFileSizeString, Icon } from '@ynput/ayon-react-components'\nimport * as Styled from './FileUploadCard.styled'\nimport clsx from 'clsx'\nimport { useState } from 'react'\nimport { isFilePreviewable } from '../FileUploadPreview'\nimport { SavedAnnotationMetadata } from '@shared/containers'\nimport { useDetailsPanelContext } from '@shared/context'\nimport { AnnotationPreview } from '../CommentInput/hooks/useAnnotationsSync'\n\nexport interface FileUploadCardProps extends React.HTMLAttributes<HTMLDivElement> {\n name: string\n mime?: string\n src?: string\n unsavedAnnotation?: AnnotationPreview\n savedAnnotation?: SavedAnnotationMetadata\n size: number\n progress: number\n onRemove?: () => void\n isCompact?: boolean\n isDownloadable?: boolean\n onExpand?: () => void\n onJumpTo?: () => void\n}\n\nconst fileIcons: { [key: string]: string[] } = {\n // special cases\n description: ['doc'],\n folder_zip: ['zip'],\n code_blocks: [\n 'json',\n 'javascript',\n 'python',\n 'html',\n 'css',\n '.py',\n '.js',\n '.html',\n '.css',\n '.json',\n '.ts',\n ],\n brush: ['.psd', '.ai', '.xd', '.sketch'],\n '3d_rotation': [\n '.mb',\n '.ma',\n '.c4d',\n '.blend',\n '.max',\n '.3ds',\n '.lwo',\n '.lws',\n '.lxo',\n '.hip',\n '.hda',\n ],\n theaters: ['.aep', '.tpl', '.clip', '.nk', '.fusion', '.prproj', '.spsm', '.drp'],\n picture_as_pdf: ['pdf', '.pdf'],\n // default\n image: ['image', '.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp'],\n videocam: ['video', '.mp4', '.mov', '.avi', '.mkv', '.webm', '.mxf'],\n business_center: ['application'],\n audio_file: ['audio'],\n text_snippet: ['text'],\n filter_none: ['sequence'],\n font_download: ['font'],\n deployed_code: ['model', '.obj', '.abc', '.stl', '.fbx', '.gltf', '.glb', '.usd'],\n}\n\nconst getIconForType = (type: string): string => {\n for (const [icon, keywords] of Object.entries(fileIcons)) {\n if (keywords.some((keyword) => type.includes(keyword))) {\n return icon\n }\n }\n return 'draft'\n}\n\nconst FileUploadCard = ({\n name,\n mime,\n src,\n unsavedAnnotation,\n savedAnnotation,\n size,\n progress,\n onRemove,\n isCompact,\n isDownloadable = false,\n onExpand,\n onJumpTo,\n className,\n ...props\n}: FileUploadCardProps) => {\n const inProgress = progress && progress < 100\n\n const [imageError, setImageError] = useState(false)\n const { feedAnnotationsEnabled } = useDetailsPanelContext()\n\n // split name and file extension\n const nameParts = name.split('.')\n const extension = nameParts.pop() || ''\n const fileName = nameParts.join('.')\n\n const isPreviewable = isFilePreviewable(mime || '.' + extension)\n const isImage = mime?.includes('image/') || Boolean(unsavedAnnotation)\n\n const downloadComponent = (\n <>\n <span className=\"size\">{getFileSizeString(size)}</span>\n <Icon icon=\"download\" className=\"download-icon\" />\n </>\n )\n\n const someAnnotation = unsavedAnnotation ?? savedAnnotation\n\n return (\n <Styled.File\n className={clsx(className, {\n compact: isCompact,\n isDownloadable,\n isPreviewable,\n isUnsavedAnnotation: Boolean(unsavedAnnotation),\n })}\n {...props}\n >\n <Styled.ContentWrapper\n className={clsx('content-wrapper', {\n isPreviewable,\n isUnsavedAnnotation: Boolean(unsavedAnnotation),\n })}\n >\n <Icon icon={getIconForType(mime || '.' + extension)} className=\"type-icon\" />\n {isImage && src && (\n <Styled.ImageWrapper\n className={clsx({\n 'image-wrapper': true,\n isDownloadable: isDownloadable || isPreviewable || unsavedAnnotation,\n })}\n >\n <img\n src={src}\n onError={() => setImageError(true)}\n style={{\n display: imageError ? 'none' : 'block',\n }}\n />\n </Styled.ImageWrapper>\n )}\n <Styled.Buttons className=\"expand-buttons\">\n {isPreviewable && (\n <Styled.ExpandButton\n data-tooltip=\"Open preview\"\n icon=\"open_in_full\"\n variant=\"nav\"\n onClick={onExpand}\n />\n )}\n {(unsavedAnnotation || (feedAnnotationsEnabled && savedAnnotation)) && (\n <Styled.ExpandButton\n data-tooltip=\"Jump to annotation\"\n icon=\"play_circle\"\n variant=\"nav\"\n onClick={onJumpTo}\n />\n )}\n </Styled.Buttons>\n </Styled.ContentWrapper>\n <Styled.Footer className={clsx({ inProgress, isPreviewable, isDownloadable })}>\n <span className=\"progress\" style={{ right: `${100 - progress}%` }} />\n <div className=\"name-wrapper\">\n {someAnnotation ? (\n <span className=\"name\">\n <Icon icon=\"draw\" />\n {someAnnotation.range[0]}\n {someAnnotation.range[1] !== someAnnotation.range[0] &&\n ` - ${someAnnotation.range[1]}`}\n </span>\n ) : (\n <span className=\"name\">\n {fileName}\n <span className=\"extension\">.{extension}</span>\n </span>\n )}\n </div>\n\n {isDownloadable &&\n (!onRemove ? (\n <a href={src} target=\"_blank\" rel=\"noopener noreferrer\" className=\"download\">\n {downloadComponent}\n </a>\n ) : (\n <div className=\"download\">{downloadComponent}</div>\n ))}\n </Styled.Footer>\n {onRemove && <Button className=\"remove\" onClick={onRemove} icon=\"close\" />}\n </Styled.File>\n )\n}\n\nexport default FileUploadCard\n"],"names":["useState","useDetailsPanelContext","isFilePreviewable","jsxs","Fragment","jsx","getFileSizeString","Icon","Styled.File","Styled.ContentWrapper","Styled.ImageWrapper","Styled.Buttons","Styled.ExpandButton","Styled.Footer","Button"],"mappings":"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"}
@@ -169,7 +169,7 @@ const FileUploadCard = ({
169
169
  extension
170
170
  ] })
171
171
  ] }) }),
172
- isDownloadable && (!onRemove ? /* @__PURE__ */ jsxRuntimeExports.jsx("a", { href: src, download: true, className: "download", children: downloadComponent }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "download", children: downloadComponent }))
172
+ isDownloadable && (!onRemove ? /* @__PURE__ */ jsxRuntimeExports.jsx("a", { href: src, target: "_blank", rel: "noopener noreferrer", className: "download", children: downloadComponent }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "download", children: downloadComponent }))
173
173
  ] }),
174
174
  onRemove && /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { className: "remove", onClick: onRemove, icon: "close" })
175
175
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploadCard.es.js","sources":["../../../../../../../src/containers/Feed/components/FileUploadCard/FileUploadCard.tsx"],"sourcesContent":["import { Button, getFileSizeString, Icon } from '@ynput/ayon-react-components'\nimport * as Styled from './FileUploadCard.styled'\nimport clsx from 'clsx'\nimport { useState } from 'react'\nimport { isFilePreviewable } from '../FileUploadPreview'\nimport { SavedAnnotationMetadata } from '@shared/containers'\nimport { useDetailsPanelContext } from '@shared/context'\nimport { AnnotationPreview } from '../CommentInput/hooks/useAnnotationsSync'\n\nexport interface FileUploadCardProps extends React.HTMLAttributes<HTMLDivElement> {\n name: string\n mime?: string\n src?: string\n unsavedAnnotation?: AnnotationPreview\n savedAnnotation?: SavedAnnotationMetadata\n size: number\n progress: number\n onRemove?: () => void\n isCompact?: boolean\n isDownloadable?: boolean\n onExpand?: () => void\n onJumpTo?: () => void\n}\n\nconst fileIcons: { [key: string]: string[] } = {\n // special cases\n description: ['doc'],\n folder_zip: ['zip'],\n code_blocks: [\n 'json',\n 'javascript',\n 'python',\n 'html',\n 'css',\n '.py',\n '.js',\n '.html',\n '.css',\n '.json',\n '.ts',\n ],\n brush: ['.psd', '.ai', '.xd', '.sketch'],\n '3d_rotation': [\n '.mb',\n '.ma',\n '.c4d',\n '.blend',\n '.max',\n '.3ds',\n '.lwo',\n '.lws',\n '.lxo',\n '.hip',\n '.hda',\n ],\n theaters: ['.aep', '.tpl', '.clip', '.nk', '.fusion', '.prproj', '.spsm', '.drp'],\n picture_as_pdf: ['pdf', '.pdf'],\n // default\n image: ['image', '.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp'],\n videocam: ['video', '.mp4', '.mov', '.avi', '.mkv', '.webm', '.mxf'],\n business_center: ['application'],\n audio_file: ['audio'],\n text_snippet: ['text'],\n filter_none: ['sequence'],\n font_download: ['font'],\n deployed_code: ['model', '.obj', '.abc', '.stl', '.fbx', '.gltf', '.glb', '.usd'],\n}\n\nconst getIconForType = (type: string): string => {\n for (const [icon, keywords] of Object.entries(fileIcons)) {\n if (keywords.some((keyword) => type.includes(keyword))) {\n return icon\n }\n }\n return 'draft'\n}\n\nconst FileUploadCard = ({\n name,\n mime,\n src,\n unsavedAnnotation,\n savedAnnotation,\n size,\n progress,\n onRemove,\n isCompact,\n isDownloadable = false,\n onExpand,\n onJumpTo,\n className,\n ...props\n}: FileUploadCardProps) => {\n const inProgress = progress && progress < 100\n\n const [imageError, setImageError] = useState(false)\n const { feedAnnotationsEnabled } = useDetailsPanelContext()\n\n // split name and file extension\n const nameParts = name.split('.')\n const extension = nameParts.pop() || ''\n const fileName = nameParts.join('.')\n\n const isPreviewable = isFilePreviewable(mime || '.' + extension)\n const isImage = mime?.includes('image/') || Boolean(unsavedAnnotation)\n\n const downloadComponent = (\n <>\n <span className=\"size\">{getFileSizeString(size)}</span>\n <Icon icon=\"download\" className=\"download-icon\" />\n </>\n )\n\n const someAnnotation = unsavedAnnotation ?? savedAnnotation\n\n return (\n <Styled.File\n className={clsx(className, {\n compact: isCompact,\n isDownloadable,\n isPreviewable,\n isUnsavedAnnotation: Boolean(unsavedAnnotation),\n })}\n {...props}\n >\n <Styled.ContentWrapper\n className={clsx('content-wrapper', {\n isPreviewable,\n isUnsavedAnnotation: Boolean(unsavedAnnotation),\n })}\n >\n <Icon icon={getIconForType(mime || '.' + extension)} className=\"type-icon\" />\n {isImage && src && (\n <Styled.ImageWrapper\n className={clsx({\n 'image-wrapper': true,\n isDownloadable: isDownloadable || isPreviewable || unsavedAnnotation,\n })}\n >\n <img\n src={src}\n onError={() => setImageError(true)}\n style={{\n display: imageError ? 'none' : 'block',\n }}\n />\n </Styled.ImageWrapper>\n )}\n <Styled.Buttons className=\"expand-buttons\">\n {isPreviewable && (\n <Styled.ExpandButton\n data-tooltip=\"Open preview\"\n icon=\"open_in_full\"\n variant=\"nav\"\n onClick={onExpand}\n />\n )}\n {(unsavedAnnotation || (feedAnnotationsEnabled && savedAnnotation)) && (\n <Styled.ExpandButton\n data-tooltip=\"Jump to annotation\"\n icon=\"play_circle\"\n variant=\"nav\"\n onClick={onJumpTo}\n />\n )}\n </Styled.Buttons>\n </Styled.ContentWrapper>\n <Styled.Footer className={clsx({ inProgress, isPreviewable, isDownloadable })}>\n <span className=\"progress\" style={{ right: `${100 - progress}%` }} />\n <div className=\"name-wrapper\">\n {someAnnotation ? (\n <span className=\"name\">\n <Icon icon=\"draw\" />\n {someAnnotation.range[0]}\n {someAnnotation.range[1] !== someAnnotation.range[0] &&\n ` - ${someAnnotation.range[1]}`}\n </span>\n ) : (\n <span className=\"name\">\n {fileName}\n <span className=\"extension\">.{extension}</span>\n </span>\n )}\n </div>\n\n {isDownloadable &&\n (!onRemove ? (\n <a href={src} download className=\"download\">\n {downloadComponent}\n </a>\n ) : (\n <div className=\"download\">{downloadComponent}</div>\n ))}\n </Styled.Footer>\n {onRemove && <Button className=\"remove\" onClick={onRemove} icon=\"close\" />}\n </Styled.File>\n )\n}\n\nexport default FileUploadCard\n"],"names":["jsxs","Fragment","jsx","Styled.File","Styled.ContentWrapper","Styled.ImageWrapper","Styled.Buttons","Styled.ExpandButton","Styled.Footer"],"mappings":"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"}
1
+ {"version":3,"file":"FileUploadCard.es.js","sources":["../../../../../../../src/containers/Feed/components/FileUploadCard/FileUploadCard.tsx"],"sourcesContent":["import { Button, getFileSizeString, Icon } from '@ynput/ayon-react-components'\nimport * as Styled from './FileUploadCard.styled'\nimport clsx from 'clsx'\nimport { useState } from 'react'\nimport { isFilePreviewable } from '../FileUploadPreview'\nimport { SavedAnnotationMetadata } from '@shared/containers'\nimport { useDetailsPanelContext } from '@shared/context'\nimport { AnnotationPreview } from '../CommentInput/hooks/useAnnotationsSync'\n\nexport interface FileUploadCardProps extends React.HTMLAttributes<HTMLDivElement> {\n name: string\n mime?: string\n src?: string\n unsavedAnnotation?: AnnotationPreview\n savedAnnotation?: SavedAnnotationMetadata\n size: number\n progress: number\n onRemove?: () => void\n isCompact?: boolean\n isDownloadable?: boolean\n onExpand?: () => void\n onJumpTo?: () => void\n}\n\nconst fileIcons: { [key: string]: string[] } = {\n // special cases\n description: ['doc'],\n folder_zip: ['zip'],\n code_blocks: [\n 'json',\n 'javascript',\n 'python',\n 'html',\n 'css',\n '.py',\n '.js',\n '.html',\n '.css',\n '.json',\n '.ts',\n ],\n brush: ['.psd', '.ai', '.xd', '.sketch'],\n '3d_rotation': [\n '.mb',\n '.ma',\n '.c4d',\n '.blend',\n '.max',\n '.3ds',\n '.lwo',\n '.lws',\n '.lxo',\n '.hip',\n '.hda',\n ],\n theaters: ['.aep', '.tpl', '.clip', '.nk', '.fusion', '.prproj', '.spsm', '.drp'],\n picture_as_pdf: ['pdf', '.pdf'],\n // default\n image: ['image', '.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp'],\n videocam: ['video', '.mp4', '.mov', '.avi', '.mkv', '.webm', '.mxf'],\n business_center: ['application'],\n audio_file: ['audio'],\n text_snippet: ['text'],\n filter_none: ['sequence'],\n font_download: ['font'],\n deployed_code: ['model', '.obj', '.abc', '.stl', '.fbx', '.gltf', '.glb', '.usd'],\n}\n\nconst getIconForType = (type: string): string => {\n for (const [icon, keywords] of Object.entries(fileIcons)) {\n if (keywords.some((keyword) => type.includes(keyword))) {\n return icon\n }\n }\n return 'draft'\n}\n\nconst FileUploadCard = ({\n name,\n mime,\n src,\n unsavedAnnotation,\n savedAnnotation,\n size,\n progress,\n onRemove,\n isCompact,\n isDownloadable = false,\n onExpand,\n onJumpTo,\n className,\n ...props\n}: FileUploadCardProps) => {\n const inProgress = progress && progress < 100\n\n const [imageError, setImageError] = useState(false)\n const { feedAnnotationsEnabled } = useDetailsPanelContext()\n\n // split name and file extension\n const nameParts = name.split('.')\n const extension = nameParts.pop() || ''\n const fileName = nameParts.join('.')\n\n const isPreviewable = isFilePreviewable(mime || '.' + extension)\n const isImage = mime?.includes('image/') || Boolean(unsavedAnnotation)\n\n const downloadComponent = (\n <>\n <span className=\"size\">{getFileSizeString(size)}</span>\n <Icon icon=\"download\" className=\"download-icon\" />\n </>\n )\n\n const someAnnotation = unsavedAnnotation ?? savedAnnotation\n\n return (\n <Styled.File\n className={clsx(className, {\n compact: isCompact,\n isDownloadable,\n isPreviewable,\n isUnsavedAnnotation: Boolean(unsavedAnnotation),\n })}\n {...props}\n >\n <Styled.ContentWrapper\n className={clsx('content-wrapper', {\n isPreviewable,\n isUnsavedAnnotation: Boolean(unsavedAnnotation),\n })}\n >\n <Icon icon={getIconForType(mime || '.' + extension)} className=\"type-icon\" />\n {isImage && src && (\n <Styled.ImageWrapper\n className={clsx({\n 'image-wrapper': true,\n isDownloadable: isDownloadable || isPreviewable || unsavedAnnotation,\n })}\n >\n <img\n src={src}\n onError={() => setImageError(true)}\n style={{\n display: imageError ? 'none' : 'block',\n }}\n />\n </Styled.ImageWrapper>\n )}\n <Styled.Buttons className=\"expand-buttons\">\n {isPreviewable && (\n <Styled.ExpandButton\n data-tooltip=\"Open preview\"\n icon=\"open_in_full\"\n variant=\"nav\"\n onClick={onExpand}\n />\n )}\n {(unsavedAnnotation || (feedAnnotationsEnabled && savedAnnotation)) && (\n <Styled.ExpandButton\n data-tooltip=\"Jump to annotation\"\n icon=\"play_circle\"\n variant=\"nav\"\n onClick={onJumpTo}\n />\n )}\n </Styled.Buttons>\n </Styled.ContentWrapper>\n <Styled.Footer className={clsx({ inProgress, isPreviewable, isDownloadable })}>\n <span className=\"progress\" style={{ right: `${100 - progress}%` }} />\n <div className=\"name-wrapper\">\n {someAnnotation ? (\n <span className=\"name\">\n <Icon icon=\"draw\" />\n {someAnnotation.range[0]}\n {someAnnotation.range[1] !== someAnnotation.range[0] &&\n ` - ${someAnnotation.range[1]}`}\n </span>\n ) : (\n <span className=\"name\">\n {fileName}\n <span className=\"extension\">.{extension}</span>\n </span>\n )}\n </div>\n\n {isDownloadable &&\n (!onRemove ? (\n <a href={src} target=\"_blank\" rel=\"noopener noreferrer\" className=\"download\">\n {downloadComponent}\n </a>\n ) : (\n <div className=\"download\">{downloadComponent}</div>\n ))}\n </Styled.Footer>\n {onRemove && <Button className=\"remove\" onClick={onRemove} icon=\"close\" />}\n </Styled.File>\n )\n}\n\nexport default FileUploadCard\n"],"names":["jsxs","Fragment","jsx","Styled.File","Styled.ContentWrapper","Styled.ImageWrapper","Styled.Buttons","Styled.ExpandButton","Styled.Footer"],"mappings":"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"}
@@ -126,7 +126,14 @@ const FileUploadPreview = ({
126
126
  onClick: handleNavigateToPrevious
127
127
  }
128
128
  ),
129
- /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx("div", { style: { zIndex: zIndex + 1 }, children: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(MimeComponent, { file, fullPreviews }) }),
129
+ /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
130
+ FileUploadPreview_styled.ScrollableContent,
131
+ {
132
+ style: { zIndex: zIndex + 1 },
133
+ className: clsx({ scrollable: !isImage }),
134
+ children: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(MimeComponent, { file, fullPreviews })
135
+ }
136
+ ),
130
137
  /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
131
138
  ayonReactComponents.Icon,
132
139
  {
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploadPreview.cjs.js","sources":["../../../../../../../src/containers/Feed/components/FileUploadPreview/FileUploadPreview.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { getFileURL } from './fileUtils'\nimport ImageMime from './Mimes/ImageMime'\nimport TextMime from './Mimes/TextMime'\nimport clsx from 'clsx'\nimport { Icon } from '@ynput/ayon-react-components'\nimport useAttachmentNavigation from './hooks/useAttachmentNavigation'\nimport * as Styled from './FileUploadPreview.styled'\n\nexport type MimeTypeDefinition = {\n component: React.FC<any> | null\n mimeTypes: string[]\n fullPreviews?: string[]\n id: string\n callback?: (file: any) => void\n}\n\n// define expandable mime types and their components\nexport const expandableMimeTypes: { [key: string]: MimeTypeDefinition } = {\n image: {\n component: ImageMime,\n mimeTypes: ['image/'],\n fullPreviews: ['png', 'jpg', 'jpeg', 'gif', 'svg', 'webp'],\n id: 'image',\n },\n text: {\n component: TextMime,\n mimeTypes: ['text/', 'application/json', 'scss', 'jsx'],\n id: 'text',\n },\n pdf: {\n component: null,\n mimeTypes: ['pdf'],\n id: 'pdf',\n callback: (file: any) => window.open(getFileURL(file.id, file.projectName), '_blank'),\n },\n}\n\nexport const isFilePreviewable = (mime = '', ext = '') =>\n Object.values(expandableMimeTypes).some(({ mimeTypes = [] }) =>\n mimeTypes.some((type) => (mime || ext)?.includes(type)),\n )\n\ninterface FileUploadPreviewProps {\n files: any[] // replace with correct type\n index: number\n activityId: string\n projectName: string\n onFilePreviewClose: () => void\n onNavigate: (payload: any) => void // replace with correct type\n}\n\nconst FileUploadPreview: React.FC<FileUploadPreviewProps> = ({\n files,\n index,\n activityId,\n projectName,\n onFilePreviewClose,\n onNavigate,\n}) => {\n const {\n canNavigateDown,\n canNavigateUp,\n canNavigateLeft,\n canNavigateRight,\n getByIndexActivity,\n navigateUp,\n navigateDown,\n navigateLeft,\n navigateRight,\n } = useAttachmentNavigation({ files, index, activityId, onNavigate })\n const file = { ...getByIndexActivity(activityId, index), projectName }\n const { id, mime, extension, name } = file\n\n // when dialog open, focus on the dialog\n // we do this so that the user can navigate with the keyboard (esc works)\n const dialogRef = useRef<HTMLDivElement>(null)\n useEffect(() => {\n if (id && projectName) {\n dialogRef.current?.focus()\n }\n }, [id, projectName])\n\n const handleClose = () => {\n onFilePreviewClose()\n }\n\n if (!id || !projectName) return null\n\n // get the correct mime type component based on mimeTypes match\n const previewable = Object.values(expandableMimeTypes).find(({ mimeTypes }) =>\n mimeTypes.some((type) => (mime || extension)?.includes(type)),\n )\n\n // @ts-ignore\n const { component: MimeComponent, id: typeId, callback, fullPreviews } = previewable || {}\n\n // if there is a callback, run it and return null\n // mainly for pdfs\n if (callback) {\n callback(file)\n return null\n }\n\n const handleNavigateToPrevActivity = () => canNavigateUp() && navigateUp()\n const handleNavigateToNextActivity = () => canNavigateDown() && navigateDown()\n const handleNavigateToPrevious = () => canNavigateLeft() && navigateLeft()\n const handleNavigateToNext = () => canNavigateRight() && navigateRight()\n\n const isImage = typeId === 'image'\n const zIndex = 50\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.code === 'ArrowUp') {\n handleNavigateToPrevActivity()\n }\n if (e.code === 'ArrowDown') {\n handleNavigateToNextActivity()\n }\n if (e.code === 'ArrowRight') {\n handleNavigateToNext()\n }\n if (e.code === 'ArrowLeft') {\n handleNavigateToPrevious()\n }\n if (e.key === 'Escape') {\n e.preventDefault()\n handleClose()\n }\n }\n\n if (!MimeComponent) {\n return null\n }\n\n return (\n <Styled.DialogWrapper\n onKeyDown={handleKeyDown}\n size=\"full\"\n isOpen={!!(id && projectName)}\n onClose={handleClose}\n hideCancelButton={isImage}\n ref={dialogRef}\n className={clsx({ isImage }, 'block-shortcuts')}\n header={isImage ? null : name}\n >\n <div style={{ position: 'absolute', inset: 0, zIndex: zIndex }} onClick={handleClose}></div>\n\n <Icon\n style={{ zIndex: zIndex + 1 }}\n icon=\"chevron_left\"\n className={clsx('navIcon', 'left', { disabled: !canNavigateLeft() })}\n onClick={handleNavigateToPrevious}\n />\n\n <div style={{ zIndex: zIndex + 1 }}>\n <MimeComponent file={file} fullPreviews={fullPreviews} />\n </div>\n\n <Icon\n style={{ zIndex: zIndex + 1 }}\n icon=\"chevron_right\"\n className={clsx('navIcon', 'right', { disabled: !canNavigateRight() })}\n onClick={handleNavigateToNext}\n />\n </Styled.DialogWrapper>\n )\n}\n\nexport default FileUploadPreview\n"],"names":["getFileURL","useRef","useEffect","jsxs","Styled.DialogWrapper","jsx","Icon"],"mappings":"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"}
1
+ {"version":3,"file":"FileUploadPreview.cjs.js","sources":["../../../../../../../src/containers/Feed/components/FileUploadPreview/FileUploadPreview.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { getFileURL } from './fileUtils'\nimport ImageMime from './Mimes/ImageMime'\nimport TextMime from './Mimes/TextMime'\nimport clsx from 'clsx'\nimport { Icon } from '@ynput/ayon-react-components'\nimport useAttachmentNavigation from './hooks/useAttachmentNavigation'\nimport * as Styled from './FileUploadPreview.styled'\n\nexport type MimeTypeDefinition = {\n component: React.FC<any> | null\n mimeTypes: string[]\n fullPreviews?: string[]\n id: string\n callback?: (file: any) => void\n}\n\n// define expandable mime types and their components\nexport const expandableMimeTypes: { [key: string]: MimeTypeDefinition } = {\n image: {\n component: ImageMime,\n mimeTypes: ['image/'],\n fullPreviews: ['png', 'jpg', 'jpeg', 'gif', 'svg', 'webp'],\n id: 'image',\n },\n text: {\n component: TextMime,\n mimeTypes: ['text/', 'application/json', 'scss', 'jsx'],\n id: 'text',\n },\n pdf: {\n component: null,\n mimeTypes: ['pdf'],\n id: 'pdf',\n callback: (file: any) => window.open(getFileURL(file.id, file.projectName), '_blank'),\n },\n}\n\nexport const isFilePreviewable = (mime = '', ext = '') =>\n Object.values(expandableMimeTypes).some(({ mimeTypes = [] }) =>\n mimeTypes.some((type) => (mime || ext)?.includes(type)),\n )\n\ninterface FileUploadPreviewProps {\n files: any[] // replace with correct type\n index: number\n activityId: string\n projectName: string\n onFilePreviewClose: () => void\n onNavigate: (payload: any) => void // replace with correct type\n}\n\nconst FileUploadPreview: React.FC<FileUploadPreviewProps> = ({\n files,\n index,\n activityId,\n projectName,\n onFilePreviewClose,\n onNavigate,\n}) => {\n const {\n canNavigateDown,\n canNavigateUp,\n canNavigateLeft,\n canNavigateRight,\n getByIndexActivity,\n navigateUp,\n navigateDown,\n navigateLeft,\n navigateRight,\n } = useAttachmentNavigation({ files, index, activityId, onNavigate })\n const file = { ...getByIndexActivity(activityId, index), projectName }\n const { id, mime, extension, name } = file\n\n // when dialog open, focus on the dialog\n // we do this so that the user can navigate with the keyboard (esc works)\n const dialogRef = useRef<HTMLDivElement>(null)\n useEffect(() => {\n if (id && projectName) {\n dialogRef.current?.focus()\n }\n }, [id, projectName])\n\n const handleClose = () => {\n onFilePreviewClose()\n }\n\n if (!id || !projectName) return null\n\n // get the correct mime type component based on mimeTypes match\n const previewable = Object.values(expandableMimeTypes).find(({ mimeTypes }) =>\n mimeTypes.some((type) => (mime || extension)?.includes(type)),\n )\n\n // @ts-ignore\n const { component: MimeComponent, id: typeId, callback, fullPreviews } = previewable || {}\n\n // if there is a callback, run it and return null\n // mainly for pdfs\n if (callback) {\n callback(file)\n return null\n }\n\n const handleNavigateToPrevActivity = () => canNavigateUp() && navigateUp()\n const handleNavigateToNextActivity = () => canNavigateDown() && navigateDown()\n const handleNavigateToPrevious = () => canNavigateLeft() && navigateLeft()\n const handleNavigateToNext = () => canNavigateRight() && navigateRight()\n\n const isImage = typeId === 'image'\n const zIndex = 50\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.code === 'ArrowUp') {\n handleNavigateToPrevActivity()\n }\n if (e.code === 'ArrowDown') {\n handleNavigateToNextActivity()\n }\n if (e.code === 'ArrowRight') {\n handleNavigateToNext()\n }\n if (e.code === 'ArrowLeft') {\n handleNavigateToPrevious()\n }\n if (e.key === 'Escape') {\n e.preventDefault()\n handleClose()\n }\n }\n\n if (!MimeComponent) {\n return null\n }\n\n return (\n <Styled.DialogWrapper\n onKeyDown={handleKeyDown}\n size=\"full\"\n isOpen={!!(id && projectName)}\n onClose={handleClose}\n hideCancelButton={isImage}\n ref={dialogRef}\n className={clsx({ isImage }, 'block-shortcuts')}\n header={isImage ? null : name}\n >\n <div style={{ position: 'absolute', inset: 0, zIndex: zIndex }} onClick={handleClose}></div>\n\n <Icon\n style={{ zIndex: zIndex + 1 }}\n icon=\"chevron_left\"\n className={clsx('navIcon', 'left', { disabled: !canNavigateLeft() })}\n onClick={handleNavigateToPrevious}\n />\n\n <Styled.ScrollableContent\n style={{ zIndex: zIndex + 1 }}\n className={clsx({ scrollable: !isImage })}\n >\n <MimeComponent file={file} fullPreviews={fullPreviews} />\n </Styled.ScrollableContent>\n\n <Icon\n style={{ zIndex: zIndex + 1 }}\n icon=\"chevron_right\"\n className={clsx('navIcon', 'right', { disabled: !canNavigateRight() })}\n onClick={handleNavigateToNext}\n />\n </Styled.DialogWrapper>\n )\n}\n\nexport default FileUploadPreview\n"],"names":["getFileURL","useRef","useEffect","jsxs","Styled.DialogWrapper","jsx","Icon","Styled.ScrollableContent"],"mappings":"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"}