@ynput/ayon-frontend-shared 0.2.21 → 0.2.22

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 (330) hide show
  1. package/dist/DetailsPanel.cjs.js +6 -5
  2. package/dist/DetailsPanel.cjs.js.map +1 -1
  3. package/dist/DetailsPanel.es.js +6 -5
  4. package/dist/DetailsPanel.es.js.map +1 -1
  5. package/dist/_virtual/index.cjs4.js +4 -4
  6. package/dist/_virtual/index.cjs5.js +4 -4
  7. package/dist/_virtual/index.cjs6.js +2 -2
  8. package/dist/_virtual/index.cjs7.js +2 -2
  9. package/dist/_virtual/index.es4.js +4 -4
  10. package/dist/_virtual/index.es5.js +4 -4
  11. package/dist/_virtual/index.es6.js +2 -2
  12. package/dist/_virtual/index.es7.js +2 -2
  13. package/dist/api.cjs.js +22 -19
  14. package/dist/api.cjs.js.map +1 -1
  15. package/dist/api.es.js +8 -5
  16. package/dist/api.es.js.map +1 -1
  17. package/dist/index.cjs.js +6 -5
  18. package/dist/index.cjs.js.map +1 -1
  19. package/dist/index.es.js +6 -5
  20. package/dist/index.es.js.map +1 -1
  21. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  22. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  23. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  24. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  25. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
  26. package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
  27. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  28. package/dist/node_modules/remove-accents/index.es.js +1 -1
  29. package/dist/shared/src/api/base/client.cjs.js +20 -19
  30. package/dist/shared/src/api/base/client.cjs.js.map +1 -1
  31. package/dist/shared/src/api/base/client.es.js +20 -19
  32. package/dist/shared/src/api/base/client.es.js.map +1 -1
  33. package/dist/shared/src/api/generated/access.cjs.js +8 -0
  34. package/dist/shared/src/api/generated/access.cjs.js.map +1 -1
  35. package/dist/shared/src/api/generated/access.es.js +8 -0
  36. package/dist/shared/src/api/generated/access.es.js.map +1 -1
  37. package/dist/shared/src/api/generated/views.cjs.js.map +1 -1
  38. package/dist/shared/src/api/generated/views.es.js.map +1 -1
  39. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +6 -5
  40. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  41. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +6 -5
  42. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  43. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +6 -5
  44. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  45. package/dist/shared/src/api/queries/entities/updateEntity.es.js +6 -5
  46. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  47. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +6 -5
  48. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  49. package/dist/shared/src/api/queries/overview/updateOverview.es.js +6 -5
  50. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  51. package/dist/shared/src/api/queries/share/share.cjs.js +66 -0
  52. package/dist/shared/src/api/queries/share/share.cjs.js.map +1 -0
  53. package/dist/shared/src/api/queries/share/share.es.js +66 -0
  54. package/dist/shared/src/api/queries/share/share.es.js.map +1 -0
  55. package/dist/shared/src/api/queries/users/getUsers.cjs.js +6 -5
  56. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  57. package/dist/shared/src/api/queries/users/getUsers.es.js +6 -5
  58. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  59. package/dist/shared/src/api/queries/views/getViews.cjs.js +5 -1
  60. package/dist/shared/src/api/queries/views/getViews.cjs.js.map +1 -1
  61. package/dist/shared/src/api/queries/views/getViews.es.js +5 -1
  62. package/dist/shared/src/api/queries/views/getViews.es.js.map +1 -1
  63. package/dist/shared/src/api/queries/views/updateViews.cjs.js +0 -2
  64. package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
  65. package/dist/shared/src/api/queries/views/updateViews.es.js +0 -2
  66. package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
  67. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +6 -5
  68. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  69. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +6 -5
  70. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  71. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js +6 -5
  72. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js.map +1 -1
  73. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js +6 -5
  74. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js.map +1 -1
  75. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +6 -5
  76. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  77. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +6 -5
  78. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  79. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +6 -5
  80. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  81. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +6 -5
  82. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  83. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +6 -5
  84. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  85. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +6 -5
  86. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  87. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +6 -5
  88. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  89. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +6 -5
  90. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  91. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +6 -5
  92. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  93. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +6 -5
  94. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  95. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +6 -5
  96. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  97. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +6 -5
  98. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  99. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +6 -5
  100. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  101. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +6 -5
  102. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  103. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +6 -5
  104. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  105. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +6 -5
  106. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  107. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +6 -5
  108. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  109. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +6 -5
  110. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  111. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +6 -5
  112. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  113. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +6 -5
  114. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  115. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +6 -5
  116. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  117. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +6 -5
  118. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  119. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +6 -5
  120. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  121. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +6 -5
  122. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  123. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +6 -5
  124. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  125. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +6 -5
  126. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  127. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +6 -5
  128. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  129. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +6 -5
  130. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  131. package/dist/shared/src/components/Watchers/Watchers.cjs.js +6 -5
  132. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  133. package/dist/shared/src/components/Watchers/Watchers.es.js +6 -5
  134. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  135. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +6 -5
  136. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  137. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +6 -5
  138. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  139. package/dist/shared/src/containers/Actions/Actions.cjs.js +6 -5
  140. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  141. package/dist/shared/src/containers/Actions/Actions.es.js +6 -5
  142. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  143. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +6 -5
  144. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  145. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +6 -5
  146. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  147. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +6 -5
  148. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  149. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +6 -5
  150. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  151. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +6 -5
  152. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  153. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +6 -5
  154. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  155. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +6 -5
  156. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  157. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +6 -5
  158. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  159. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +6 -5
  160. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  161. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +6 -5
  162. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  163. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +6 -5
  164. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  165. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +6 -5
  166. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  167. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +6 -5
  168. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  169. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +6 -5
  170. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  171. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +6 -5
  172. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  173. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +6 -5
  174. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  175. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +6 -5
  176. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  177. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +6 -5
  178. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  179. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +15 -9
  180. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  181. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +15 -9
  182. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  183. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +6 -5
  184. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  185. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +6 -5
  186. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  187. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
  188. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
  189. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +52 -77
  190. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  191. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +52 -77
  192. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  193. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +6 -5
  194. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  195. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +6 -5
  196. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  197. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +6 -5
  198. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  199. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +6 -5
  200. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  201. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +6 -5
  202. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  203. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +6 -5
  204. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  205. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +6 -5
  206. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  207. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +6 -5
  208. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  209. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +6 -5
  210. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  211. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +6 -5
  212. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  213. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +6 -5
  214. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  215. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +6 -5
  216. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  217. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js +6 -5
  218. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js.map +1 -1
  219. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js +6 -5
  220. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js.map +1 -1
  221. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js +14 -8
  222. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js.map +1 -1
  223. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js +14 -8
  224. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js.map +1 -1
  225. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +6 -5
  226. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  227. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +6 -5
  228. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  229. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +6 -5
  230. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  231. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +6 -5
  232. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  233. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +6 -5
  234. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  235. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +6 -5
  236. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  237. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js +17 -1
  238. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js.map +1 -1
  239. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js +17 -1
  240. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js.map +1 -1
  241. package/dist/shared/src/containers/Views/ViewItem/ViewItem.styled.cjs.js +4 -2
  242. package/dist/shared/src/containers/Views/ViewItem/ViewItem.styled.cjs.js.map +1 -1
  243. package/dist/shared/src/containers/Views/ViewItem/ViewItem.styled.es.js +4 -2
  244. package/dist/shared/src/containers/Views/ViewItem/ViewItem.styled.es.js.map +1 -1
  245. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js.map +1 -1
  246. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js.map +1 -1
  247. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +12 -7
  248. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  249. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +12 -7
  250. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  251. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +33 -6
  252. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  253. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +34 -7
  254. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  255. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +31 -5
  256. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  257. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +31 -5
  258. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  259. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +16 -10
  260. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  261. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +16 -10
  262. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  263. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +6 -5
  264. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -1
  265. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +6 -5
  266. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -1
  267. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +45 -6
  268. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  269. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +45 -6
  270. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  271. package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.cjs.js +3 -40
  272. package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.cjs.js.map +1 -1
  273. package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.es.js +3 -40
  274. package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.es.js.map +1 -1
  275. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.cjs.js.map +1 -1
  276. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.es.js.map +1 -1
  277. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +6 -5
  278. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  279. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +6 -5
  280. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  281. package/dist/shared/src/context/AddonProjectContext.cjs.js +6 -5
  282. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  283. package/dist/shared/src/context/AddonProjectContext.es.js +6 -5
  284. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  285. package/dist/shared/src/context/DetailsPanelContext.cjs.js +6 -5
  286. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  287. package/dist/shared/src/context/DetailsPanelContext.es.js +6 -5
  288. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  289. package/dist/shared/src/context/PowerpackContext.cjs.js +6 -5
  290. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  291. package/dist/shared/src/context/PowerpackContext.es.js +6 -5
  292. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  293. package/dist/shared/src/context/RemoteModulesContext.cjs.js +6 -5
  294. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  295. package/dist/shared/src/context/RemoteModulesContext.es.js +6 -5
  296. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  297. package/dist/shared/src/hooks/useActionTriggers.cjs.js +6 -5
  298. package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
  299. package/dist/shared/src/hooks/useActionTriggers.es.js +6 -5
  300. package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
  301. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +6 -5
  302. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  303. package/dist/shared/src/hooks/useEntityUpdate.es.js +6 -5
  304. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  305. package/dist/shared/src/hooks/useLoadModule.cjs.js.map +1 -1
  306. package/dist/shared/src/hooks/useLoadModule.es.js.map +1 -1
  307. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +6 -5
  308. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  309. package/dist/shared/src/hooks/useScopedStatuses.es.js +6 -5
  310. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  311. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +6 -5
  312. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  313. package/dist/shared/src/hooks/useUserProjectConfig.es.js +6 -5
  314. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  315. package/dist/types/api/generated/access.d.ts +15 -0
  316. package/dist/types/api/generated/views.d.ts +4 -4
  317. package/dist/types/api/queries/index.d.ts +6 -5
  318. package/dist/types/api/queries/share/index.d.ts +1 -0
  319. package/dist/types/api/queries/share/share.d.ts +150 -0
  320. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +10 -15
  321. package/dist/types/containers/Views/ViewItem/ViewItem.d.ts +1 -0
  322. package/dist/types/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.d.ts +2 -1
  323. package/dist/types/containers/Views/context/ViewsContext.d.ts +3 -1
  324. package/dist/types/containers/Views/hooks/useBuildViewMenuItems.d.ts +2 -1
  325. package/dist/types/containers/Views/hooks/useViewsMutations.d.ts +7 -0
  326. package/dist/types/containers/Views/index.d.ts +1 -1
  327. package/dist/types/containers/Views/utils/getCustomViewsFallback.d.ts +3 -3
  328. package/package.json +1 -1
  329. package/dist/types/api/generated/powerPack1.1.1Views.d.ts +0 -25
  330. package/dist/types/containers/Views/hooks/useOverviewViewSettings.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"updateViews.cjs.js","sources":["../../../../../../src/api/queries/views/updateViews.ts"],"sourcesContent":["import { ViewListItemModel } from '@shared/api/generated'\nimport { getScopeTag, getViewsApi } from './getViews'\n\nconst updateViewsApi = getViewsApi.enhanceEndpoints({\n endpoints: {\n createView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { payload } = arg\n const state = getState()\n // @ts-expect-error - user is not typed in the state\n const user = state.user.name\n\n // Optimistically update the view list\n const patch = dispatch(\n getViewsApi.util.updateQueryData(\n 'listViews',\n { viewType: arg.viewType, projectName: arg.projectName },\n (draft) => {\n const newView: ViewListItemModel = {\n ...payload,\n working: payload.working || false,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n position: draft.length + 1, // Add to the end of the list\n owner: user,\n editable: true,\n access: {},\n }\n if (payload.working) {\n // For working views, find and replace the existing working view\n const existingWorkingIndex = draft.findIndex((view) => view.working === true)\n if (existingWorkingIndex !== -1) {\n // Keep the existing ID but update all other properties\n const existingId = draft[existingWorkingIndex].id\n draft[existingWorkingIndex] = { ...newView, id: existingId }\n } else {\n // No existing working view, add the new one\n draft.push(newView)\n }\n } else {\n // For non-working views, add to the list as usual\n draft.push(newView)\n }\n\n // finally sort the view by position and then by label\n draft.sort((a, b) => {\n if (a.position !== b.position) {\n return a.position - b.position\n }\n return a.label.localeCompare(b.label)\n })\n },\n ),\n )\n\n // Also update the getWorkingView cache if this is a working view\n let workingViewPatch\n if (payload.working) {\n workingViewPatch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getWorkingView',\n { viewType: arg.viewType, projectName: arg.projectName },\n (draft) => {\n // Preserve the existing ID if there's already a working view\n const existingId = draft?.id\n const updatedWorkingView = {\n ...payload,\n working: true,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n owner: user,\n ...(existingId && { id: existingId }), // Keep existing ID if it exists\n }\n console.log('Updated working view:', updatedWorkingView)\n // Update the working view cache with the new view data\n Object.assign(draft, updatedWorkingView)\n },\n ),\n )\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic updates\n patch.undo()\n if (workingViewPatch) {\n workingViewPatch.undo()\n }\n console.error('Failed to create view:', error)\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the view list cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, payload }) => [\n { type: 'view', id: payload.id },\n getScopeTag(viewType, projectName),\n ],\n },\n updateView: {\n transformErrorResponse: (error: any) => error.data?.detail,\n invalidatesTags: (_r, _e, { viewType, projectName, viewId }) => [\n { type: 'view', id: viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n deleteView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled }) => {\n const { viewId, projectName, viewType } = arg\n // Optimistically remove the view from the list\n const patch = dispatch(\n getViewsApi.util.updateQueryData('listViews', { viewType, projectName }, (draft) => {\n return draft.filter((view) => view.id !== viewId)\n }),\n )\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic update\n patch.undo()\n console.error('Failed to delete view:', error)\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the view list cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, viewId }) => [\n { type: 'view', id: viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n setDefaultView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { setDefaultViewRequestModel, projectName, viewType } = arg\n const { viewId } = setDefaultViewRequestModel\n const state = getState()\n // get current state of default view\n const currentDefaultView = getViewsApi.endpoints.getDefaultView.select({\n viewType,\n projectName,\n })(state)\n\n // check if there is even a cache for the default view\n if (currentDefaultView?.isSuccess && currentDefaultView.data?.id) {\n // Optimistically update the default view\n const patch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getDefaultView',\n { viewType, projectName },\n (draft) => {\n if (draft) {\n // Try to find the view in the listViews cache\n const listViewData = getViewsApi.endpoints.listViews.select({\n viewType,\n projectName,\n })(state)\n const view = listViewData?.data?.find((v) => v.id === viewId)\n\n console.debug('updating default view:', viewId, 'found in list:', view)\n\n if (view) {\n // If the view is found in the listViews cache, update the getDefaultView cache with the full view data\n Object.assign(draft, view)\n } else {\n // If the view is not found, only update the ID\n draft.id = viewId\n }\n }\n },\n ),\n )\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic update\n patch.undo()\n console.error('Failed to set default view:', error)\n }\n } else {\n console.warn(\n 'No current default view found, skipping optimistic update and invalidating default view cache',\n )\n // If there is no current default view, we skip the optimistic update\n // it will be handled by the invalidation below\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the default view cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, setDefaultViewRequestModel }) => [\n { type: 'view', id: setDefaultViewRequestModel.viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n },\n})\n\nexport const {\n useCreateViewMutation,\n useUpdateViewMutation,\n useDeleteViewMutation,\n useSetDefaultViewMutation,\n} = updateViewsApi\nexport { updateViewsApi as viewsQueries }\n"],"names":["getViewsApi","getScopeTag","_a"],"mappings":"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"}
1
+ {"version":3,"file":"updateViews.cjs.js","sources":["../../../../../../src/api/queries/views/updateViews.ts"],"sourcesContent":["import { ViewListItemModel } from '@shared/api/generated'\nimport { getScopeTag, getViewsApi } from './getViews'\n\nconst updateViewsApi = getViewsApi.enhanceEndpoints({\n endpoints: {\n createView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { payload } = arg\n const state = getState()\n // @ts-expect-error - user is not typed in the state\n const user = state.user.name\n\n // Optimistically update the view list\n const patch = dispatch(\n getViewsApi.util.updateQueryData(\n 'listViews',\n { viewType: arg.viewType, projectName: arg.projectName },\n (draft) => {\n const newView: ViewListItemModel = {\n ...payload,\n working: payload.working || false,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n position: draft.length + 1, // Add to the end of the list\n owner: user,\n editable: true,\n access: {},\n }\n if (payload.working) {\n // For working views, find and replace the existing working view\n const existingWorkingIndex = draft.findIndex((view) => view.working === true)\n if (existingWorkingIndex !== -1) {\n // Keep the existing ID but update all other properties\n const existingId = draft[existingWorkingIndex].id\n draft[existingWorkingIndex] = { ...newView, id: existingId }\n } else {\n // No existing working view, add the new one\n draft.push(newView)\n }\n } else {\n // For non-working views, add to the list as usual\n draft.push(newView)\n }\n\n // finally sort the view by position and then by label\n draft.sort((a, b) => {\n if (a.position !== b.position) {\n return a.position - b.position\n }\n return a.label.localeCompare(b.label)\n })\n },\n ),\n )\n\n // Also update the getWorkingView cache if this is a working view\n let workingViewPatch\n if (payload.working) {\n workingViewPatch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getWorkingView',\n { viewType: arg.viewType, projectName: arg.projectName },\n (draft) => {\n // Preserve the existing ID if there's already a working view\n const existingId = draft?.id\n const updatedWorkingView = {\n ...payload,\n working: true,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n owner: user,\n ...(existingId && { id: existingId }), // Keep existing ID if it exists\n }\n // Update the working view cache with the new view data\n Object.assign(draft, updatedWorkingView)\n },\n ),\n )\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic updates\n patch.undo()\n if (workingViewPatch) {\n workingViewPatch.undo()\n }\n console.error('Failed to create view:', error)\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the view list cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, payload }) => [\n { type: 'view', id: payload.id },\n getScopeTag(viewType, projectName),\n ],\n },\n updateView: {\n transformErrorResponse: (error: any) => error.data?.detail,\n invalidatesTags: (_r, _e, { viewType, projectName, viewId }) => [\n { type: 'view', id: viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n deleteView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled }) => {\n const { viewId, projectName, viewType } = arg\n // Optimistically remove the view from the list\n const patch = dispatch(\n getViewsApi.util.updateQueryData('listViews', { viewType, projectName }, (draft) => {\n return draft.filter((view) => view.id !== viewId)\n }),\n )\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic update\n patch.undo()\n console.error('Failed to delete view:', error)\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the view list cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, viewId }) => [\n { type: 'view', id: viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n setDefaultView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { setDefaultViewRequestModel, projectName, viewType } = arg\n const { viewId } = setDefaultViewRequestModel\n const state = getState()\n // get current state of default view\n const currentDefaultView = getViewsApi.endpoints.getDefaultView.select({\n viewType,\n projectName,\n })(state)\n\n // check if there is even a cache for the default view\n if (currentDefaultView?.isSuccess && currentDefaultView.data?.id) {\n // Optimistically update the default view\n const patch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getDefaultView',\n { viewType, projectName },\n (draft) => {\n if (draft) {\n // Try to find the view in the listViews cache\n const listViewData = getViewsApi.endpoints.listViews.select({\n viewType,\n projectName,\n })(state)\n const view = listViewData?.data?.find((v) => v.id === viewId)\n\n if (view) {\n // If the view is found in the listViews cache, update the getDefaultView cache with the full view data\n Object.assign(draft, view)\n } else {\n // If the view is not found, only update the ID\n draft.id = viewId\n }\n }\n },\n ),\n )\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic update\n patch.undo()\n console.error('Failed to set default view:', error)\n }\n } else {\n console.warn(\n 'No current default view found, skipping optimistic update and invalidating default view cache',\n )\n // If there is no current default view, we skip the optimistic update\n // it will be handled by the invalidation below\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the default view cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, setDefaultViewRequestModel }) => [\n { type: 'view', id: setDefaultViewRequestModel.viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n },\n})\n\nexport const {\n useCreateViewMutation,\n useUpdateViewMutation,\n useDeleteViewMutation,\n useSetDefaultViewMutation,\n} = updateViewsApi\nexport { updateViewsApi as viewsQueries }\n"],"names":["getViewsApi","getScopeTag","_a"],"mappings":"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"}
@@ -59,7 +59,6 @@ const updateViewsApi = getViewsApi.enhanceEndpoints({
59
59
  ...existingId && { id: existingId }
60
60
  // Keep existing ID if it exists
61
61
  };
62
- console.log("Updated working view:", updatedWorkingView);
63
62
  Object.assign(draft, updatedWorkingView);
64
63
  }
65
64
  )
@@ -143,7 +142,6 @@ const updateViewsApi = getViewsApi.enhanceEndpoints({
143
142
  projectName
144
143
  })(state);
145
144
  const view = (_a2 = listViewData == null ? void 0 : listViewData.data) == null ? void 0 : _a2.find((v) => v.id === viewId);
146
- console.debug("updating default view:", viewId, "found in list:", view);
147
145
  if (view) {
148
146
  Object.assign(draft, view);
149
147
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"updateViews.es.js","sources":["../../../../../../src/api/queries/views/updateViews.ts"],"sourcesContent":["import { ViewListItemModel } from '@shared/api/generated'\nimport { getScopeTag, getViewsApi } from './getViews'\n\nconst updateViewsApi = getViewsApi.enhanceEndpoints({\n endpoints: {\n createView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { payload } = arg\n const state = getState()\n // @ts-expect-error - user is not typed in the state\n const user = state.user.name\n\n // Optimistically update the view list\n const patch = dispatch(\n getViewsApi.util.updateQueryData(\n 'listViews',\n { viewType: arg.viewType, projectName: arg.projectName },\n (draft) => {\n const newView: ViewListItemModel = {\n ...payload,\n working: payload.working || false,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n position: draft.length + 1, // Add to the end of the list\n owner: user,\n editable: true,\n access: {},\n }\n if (payload.working) {\n // For working views, find and replace the existing working view\n const existingWorkingIndex = draft.findIndex((view) => view.working === true)\n if (existingWorkingIndex !== -1) {\n // Keep the existing ID but update all other properties\n const existingId = draft[existingWorkingIndex].id\n draft[existingWorkingIndex] = { ...newView, id: existingId }\n } else {\n // No existing working view, add the new one\n draft.push(newView)\n }\n } else {\n // For non-working views, add to the list as usual\n draft.push(newView)\n }\n\n // finally sort the view by position and then by label\n draft.sort((a, b) => {\n if (a.position !== b.position) {\n return a.position - b.position\n }\n return a.label.localeCompare(b.label)\n })\n },\n ),\n )\n\n // Also update the getWorkingView cache if this is a working view\n let workingViewPatch\n if (payload.working) {\n workingViewPatch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getWorkingView',\n { viewType: arg.viewType, projectName: arg.projectName },\n (draft) => {\n // Preserve the existing ID if there's already a working view\n const existingId = draft?.id\n const updatedWorkingView = {\n ...payload,\n working: true,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n owner: user,\n ...(existingId && { id: existingId }), // Keep existing ID if it exists\n }\n console.log('Updated working view:', updatedWorkingView)\n // Update the working view cache with the new view data\n Object.assign(draft, updatedWorkingView)\n },\n ),\n )\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic updates\n patch.undo()\n if (workingViewPatch) {\n workingViewPatch.undo()\n }\n console.error('Failed to create view:', error)\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the view list cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, payload }) => [\n { type: 'view', id: payload.id },\n getScopeTag(viewType, projectName),\n ],\n },\n updateView: {\n transformErrorResponse: (error: any) => error.data?.detail,\n invalidatesTags: (_r, _e, { viewType, projectName, viewId }) => [\n { type: 'view', id: viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n deleteView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled }) => {\n const { viewId, projectName, viewType } = arg\n // Optimistically remove the view from the list\n const patch = dispatch(\n getViewsApi.util.updateQueryData('listViews', { viewType, projectName }, (draft) => {\n return draft.filter((view) => view.id !== viewId)\n }),\n )\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic update\n patch.undo()\n console.error('Failed to delete view:', error)\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the view list cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, viewId }) => [\n { type: 'view', id: viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n setDefaultView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { setDefaultViewRequestModel, projectName, viewType } = arg\n const { viewId } = setDefaultViewRequestModel\n const state = getState()\n // get current state of default view\n const currentDefaultView = getViewsApi.endpoints.getDefaultView.select({\n viewType,\n projectName,\n })(state)\n\n // check if there is even a cache for the default view\n if (currentDefaultView?.isSuccess && currentDefaultView.data?.id) {\n // Optimistically update the default view\n const patch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getDefaultView',\n { viewType, projectName },\n (draft) => {\n if (draft) {\n // Try to find the view in the listViews cache\n const listViewData = getViewsApi.endpoints.listViews.select({\n viewType,\n projectName,\n })(state)\n const view = listViewData?.data?.find((v) => v.id === viewId)\n\n console.debug('updating default view:', viewId, 'found in list:', view)\n\n if (view) {\n // If the view is found in the listViews cache, update the getDefaultView cache with the full view data\n Object.assign(draft, view)\n } else {\n // If the view is not found, only update the ID\n draft.id = viewId\n }\n }\n },\n ),\n )\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic update\n patch.undo()\n console.error('Failed to set default view:', error)\n }\n } else {\n console.warn(\n 'No current default view found, skipping optimistic update and invalidating default view cache',\n )\n // If there is no current default view, we skip the optimistic update\n // it will be handled by the invalidation below\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the default view cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, setDefaultViewRequestModel }) => [\n { type: 'view', id: setDefaultViewRequestModel.viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n },\n})\n\nexport const {\n useCreateViewMutation,\n useUpdateViewMutation,\n useDeleteViewMutation,\n useSetDefaultViewMutation,\n} = updateViewsApi\nexport { updateViewsApi as viewsQueries }\n"],"names":["_a"],"mappings":"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"}
1
+ {"version":3,"file":"updateViews.es.js","sources":["../../../../../../src/api/queries/views/updateViews.ts"],"sourcesContent":["import { ViewListItemModel } from '@shared/api/generated'\nimport { getScopeTag, getViewsApi } from './getViews'\n\nconst updateViewsApi = getViewsApi.enhanceEndpoints({\n endpoints: {\n createView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { payload } = arg\n const state = getState()\n // @ts-expect-error - user is not typed in the state\n const user = state.user.name\n\n // Optimistically update the view list\n const patch = dispatch(\n getViewsApi.util.updateQueryData(\n 'listViews',\n { viewType: arg.viewType, projectName: arg.projectName },\n (draft) => {\n const newView: ViewListItemModel = {\n ...payload,\n working: payload.working || false,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n position: draft.length + 1, // Add to the end of the list\n owner: user,\n editable: true,\n access: {},\n }\n if (payload.working) {\n // For working views, find and replace the existing working view\n const existingWorkingIndex = draft.findIndex((view) => view.working === true)\n if (existingWorkingIndex !== -1) {\n // Keep the existing ID but update all other properties\n const existingId = draft[existingWorkingIndex].id\n draft[existingWorkingIndex] = { ...newView, id: existingId }\n } else {\n // No existing working view, add the new one\n draft.push(newView)\n }\n } else {\n // For non-working views, add to the list as usual\n draft.push(newView)\n }\n\n // finally sort the view by position and then by label\n draft.sort((a, b) => {\n if (a.position !== b.position) {\n return a.position - b.position\n }\n return a.label.localeCompare(b.label)\n })\n },\n ),\n )\n\n // Also update the getWorkingView cache if this is a working view\n let workingViewPatch\n if (payload.working) {\n workingViewPatch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getWorkingView',\n { viewType: arg.viewType, projectName: arg.projectName },\n (draft) => {\n // Preserve the existing ID if there's already a working view\n const existingId = draft?.id\n const updatedWorkingView = {\n ...payload,\n working: true,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n owner: user,\n ...(existingId && { id: existingId }), // Keep existing ID if it exists\n }\n // Update the working view cache with the new view data\n Object.assign(draft, updatedWorkingView)\n },\n ),\n )\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic updates\n patch.undo()\n if (workingViewPatch) {\n workingViewPatch.undo()\n }\n console.error('Failed to create view:', error)\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the view list cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, payload }) => [\n { type: 'view', id: payload.id },\n getScopeTag(viewType, projectName),\n ],\n },\n updateView: {\n transformErrorResponse: (error: any) => error.data?.detail,\n invalidatesTags: (_r, _e, { viewType, projectName, viewId }) => [\n { type: 'view', id: viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n deleteView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled }) => {\n const { viewId, projectName, viewType } = arg\n // Optimistically remove the view from the list\n const patch = dispatch(\n getViewsApi.util.updateQueryData('listViews', { viewType, projectName }, (draft) => {\n return draft.filter((view) => view.id !== viewId)\n }),\n )\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic update\n patch.undo()\n console.error('Failed to delete view:', error)\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the view list cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, viewId }) => [\n { type: 'view', id: viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n setDefaultView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { setDefaultViewRequestModel, projectName, viewType } = arg\n const { viewId } = setDefaultViewRequestModel\n const state = getState()\n // get current state of default view\n const currentDefaultView = getViewsApi.endpoints.getDefaultView.select({\n viewType,\n projectName,\n })(state)\n\n // check if there is even a cache for the default view\n if (currentDefaultView?.isSuccess && currentDefaultView.data?.id) {\n // Optimistically update the default view\n const patch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getDefaultView',\n { viewType, projectName },\n (draft) => {\n if (draft) {\n // Try to find the view in the listViews cache\n const listViewData = getViewsApi.endpoints.listViews.select({\n viewType,\n projectName,\n })(state)\n const view = listViewData?.data?.find((v) => v.id === viewId)\n\n if (view) {\n // If the view is found in the listViews cache, update the getDefaultView cache with the full view data\n Object.assign(draft, view)\n } else {\n // If the view is not found, only update the ID\n draft.id = viewId\n }\n }\n },\n ),\n )\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic update\n patch.undo()\n console.error('Failed to set default view:', error)\n }\n } else {\n console.warn(\n 'No current default view found, skipping optimistic update and invalidating default view cache',\n )\n // If there is no current default view, we skip the optimistic update\n // it will be handled by the invalidation below\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the default view cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, setDefaultViewRequestModel }) => [\n { type: 'view', id: setDefaultViewRequestModel.viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n },\n})\n\nexport const {\n useCreateViewMutation,\n useUpdateViewMutation,\n useDeleteViewMutation,\n useSetDefaultViewMutation,\n} = updateViewsApi\nexport { updateViewsApi as viewsQueries }\n"],"names":["_a"],"mappings":"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"}
@@ -49,6 +49,7 @@ require("../../api/queries/addons/updateAddons.cjs.js");
49
49
  require("../../api/queries/attributes/getAttributes.cjs.js");
50
50
  require("../../api/queries/attributes/updateAttributes.cjs.js");
51
51
  require("../../api/queries/authentication/getAuthentication.cjs.js");
52
+ require("../../api/queries/cloud/cloud.cjs.js");
52
53
  const getEntity = require("../../api/queries/entities/getEntity.cjs.js");
53
54
  require("../../api/queries/entities/getEntityPanel.cjs.js");
54
55
  require("../../api/queries/entities/updateEntity.cjs.js");
@@ -57,24 +58,24 @@ require("../../api/queries/entityLists/updateLists.cjs.js");
57
58
  require("../../api/queries/entityLists/getListsAttributes.cjs.js");
58
59
  require("../../api/queries/entityLists/updateListsAttributes.cjs.js");
59
60
  require("../../api/queries/folders/getFolders.cjs.js");
61
+ require("../../api/queries/grouping/getGrouping.cjs.js");
60
62
  require("../../api/queries/overview/getOverview.cjs.js");
61
63
  require("../../api/queries/overview/updateOverview.cjs.js");
64
+ require("../../api/queries/permissions/getPermissions.cjs.js");
65
+ require("../../api/queries/products/createProduct.cjs.js");
62
66
  require("../../api/queries/project/getProject.cjs.js");
63
67
  require("../../api/queries/project/updateProject.cjs.js");
64
68
  require("../../api/queries/review/getReview.cjs.js");
65
69
  require("../../api/queries/review/updateReview.cjs.js");
70
+ require("../../api/queries/share/share.cjs.js");
66
71
  require("../../api/queries/system/getSystem.cjs.js");
67
72
  require("../../api/queries/userDashboard/getUserDashboard.cjs.js");
68
73
  require("../../api/queries/users/getUsers.cjs.js");
69
74
  require("../../api/queries/users/updateUsers.cjs.js");
70
- require("../../api/queries/watchers/getWatchers.cjs.js");
71
- require("../../api/queries/permissions/getPermissions.cjs.js");
72
- require("../../api/queries/grouping/getGrouping.cjs.js");
73
75
  require("../../api/queries/versions/updateVersions.cjs.js");
74
- require("../../api/queries/products/createProduct.cjs.js");
75
- require("../../api/queries/cloud/cloud.cjs.js");
76
76
  require("../../api/queries/views/getViews.cjs.js");
77
77
  require("../../api/queries/views/updateViews.cjs.js");
78
+ require("../../api/queries/watchers/getWatchers.cjs.js");
78
79
  const ayonReactComponents = require("@ynput/ayon-react-components");
79
80
  const DetailsDialog = ({
80
81
  projectName,
@@ -1 +1 @@
1
- {"version":3,"file":"DetailsDialog.cjs.js","sources":["../../../../../src/components/DetailsDialog/DetailsDialog.tsx"],"sourcesContent":["import { toast } from 'react-toastify'\nimport { useGetEntityQuery } from '@shared/api'\nimport { Dialog } from '@ynput/ayon-react-components'\n\nexport interface DetailsDialogProps {\n projectName?: string\n entityType: string\n entityIds: string[]\n visible: boolean\n onHide: () => void\n}\n\nexport const DetailsDialog = ({\n projectName,\n entityType,\n entityIds,\n visible,\n onHide,\n}: DetailsDialogProps) => {\n const {\n data = {},\n isLoading,\n isError,\n error,\n } = useGetEntityQuery(\n { projectName, entityType: entityType, entityId: entityIds[0] },\n { skip: !visible },\n )\n\n if (isLoading)\n if (isError) {\n toast.error(`Unable to load detail. ${error}`)\n }\n\n if (!visible || data.length < 1) return null\n\n return (\n <Dialog\n isOpen={true}\n onClose={onHide}\n size=\"lg\"\n style={{ width: '50vw' }}\n header={`${entityType} detail`}\n >\n <pre>\n {!isLoading && !isError && JSON.stringify(data, null, 2)}\n {isLoading && 'loading...'}\n {isError && 'error...'}\n </pre>\n </Dialog>\n )\n}\n"],"names":["useGetEntityQuery","toast","jsx","Dialog"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,MAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA0B;AAClB,QAAA;AAAA,IACJ,OAAO,CAAC;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACEA,UAAA;AAAA,IACF,EAAE,aAAa,YAAwB,UAAU,UAAU,CAAC,EAAE;AAAA,IAC9D,EAAE,MAAM,CAAC,QAAQ;AAAA,EACnB;AAEI,MAAA,WAAA;AACF,QAAI,SAAS;AACLC,oBAAAA,MAAA,MAAM,0BAA0B,KAAK,EAAE;AAAA,IAAA;AAAA,EAC/C;AAEF,MAAI,CAAC,WAAW,KAAK,SAAS,EAAU,QAAA;AAGtC,SAAAC,2BAAA,kBAAA;AAAA,IAACC,oBAAA;AAAA,IAAA;AAAA,MACC,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAK;AAAA,MACL,OAAO,EAAE,OAAO,OAAO;AAAA,MACvB,QAAQ,GAAG,UAAU;AAAA,MAErB,4DAAC,OACE,EAAA,UAAA;AAAA,QAAA,CAAC,aAAa,CAAC,WAAW,KAAK,UAAU,MAAM,MAAM,CAAC;AAAA,QACtD,aAAa;AAAA,QACb,WAAW;AAAA,MAAA,EACd,CAAA;AAAA,IAAA;AAAA,EACF;AAEJ;;"}
1
+ {"version":3,"file":"DetailsDialog.cjs.js","sources":["../../../../../src/components/DetailsDialog/DetailsDialog.tsx"],"sourcesContent":["import { toast } from 'react-toastify'\nimport { useGetEntityQuery } from '@shared/api'\nimport { Dialog } from '@ynput/ayon-react-components'\n\nexport interface DetailsDialogProps {\n projectName?: string\n entityType: string\n entityIds: string[]\n visible: boolean\n onHide: () => void\n}\n\nexport const DetailsDialog = ({\n projectName,\n entityType,\n entityIds,\n visible,\n onHide,\n}: DetailsDialogProps) => {\n const {\n data = {},\n isLoading,\n isError,\n error,\n } = useGetEntityQuery(\n { projectName, entityType: entityType, entityId: entityIds[0] },\n { skip: !visible },\n )\n\n if (isLoading)\n if (isError) {\n toast.error(`Unable to load detail. ${error}`)\n }\n\n if (!visible || data.length < 1) return null\n\n return (\n <Dialog\n isOpen={true}\n onClose={onHide}\n size=\"lg\"\n style={{ width: '50vw' }}\n header={`${entityType} detail`}\n >\n <pre>\n {!isLoading && !isError && JSON.stringify(data, null, 2)}\n {isLoading && 'loading...'}\n {isError && 'error...'}\n </pre>\n </Dialog>\n )\n}\n"],"names":["useGetEntityQuery","toast","jsx","Dialog"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,MAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA0B;AAClB,QAAA;AAAA,IACJ,OAAO,CAAC;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACEA,UAAA;AAAA,IACF,EAAE,aAAa,YAAwB,UAAU,UAAU,CAAC,EAAE;AAAA,IAC9D,EAAE,MAAM,CAAC,QAAQ;AAAA,EACnB;AAEI,MAAA,WAAA;AACF,QAAI,SAAS;AACLC,oBAAAA,MAAA,MAAM,0BAA0B,KAAK,EAAE;AAAA,IAAA;AAAA,EAC/C;AAEF,MAAI,CAAC,WAAW,KAAK,SAAS,EAAU,QAAA;AAGtC,SAAAC,2BAAA,kBAAA;AAAA,IAACC,oBAAA;AAAA,IAAA;AAAA,MACC,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAK;AAAA,MACL,OAAO,EAAE,OAAO,OAAO;AAAA,MACvB,QAAQ,GAAG,UAAU;AAAA,MAErB,4DAAC,OACE,EAAA,UAAA;AAAA,QAAA,CAAC,aAAa,CAAC,WAAW,KAAK,UAAU,MAAM,MAAM,CAAC;AAAA,QACtD,aAAa;AAAA,QACb,WAAW;AAAA,MAAA,EACd,CAAA;AAAA,IAAA;AAAA,EACF;AAEJ;;"}
@@ -47,6 +47,7 @@ import "../../api/queries/addons/updateAddons.es.js";
47
47
  import "../../api/queries/attributes/getAttributes.es.js";
48
48
  import "../../api/queries/attributes/updateAttributes.es.js";
49
49
  import "../../api/queries/authentication/getAuthentication.es.js";
50
+ import "../../api/queries/cloud/cloud.es.js";
50
51
  import { useGetEntityQuery } from "../../api/queries/entities/getEntity.es.js";
51
52
  import "../../api/queries/entities/getEntityPanel.es.js";
52
53
  import "../../api/queries/entities/updateEntity.es.js";
@@ -55,24 +56,24 @@ import "../../api/queries/entityLists/updateLists.es.js";
55
56
  import "../../api/queries/entityLists/getListsAttributes.es.js";
56
57
  import "../../api/queries/entityLists/updateListsAttributes.es.js";
57
58
  import "../../api/queries/folders/getFolders.es.js";
59
+ import "../../api/queries/grouping/getGrouping.es.js";
58
60
  import "../../api/queries/overview/getOverview.es.js";
59
61
  import "../../api/queries/overview/updateOverview.es.js";
62
+ import "../../api/queries/permissions/getPermissions.es.js";
63
+ import "../../api/queries/products/createProduct.es.js";
60
64
  import "../../api/queries/project/getProject.es.js";
61
65
  import "../../api/queries/project/updateProject.es.js";
62
66
  import "../../api/queries/review/getReview.es.js";
63
67
  import "../../api/queries/review/updateReview.es.js";
68
+ import "../../api/queries/share/share.es.js";
64
69
  import "../../api/queries/system/getSystem.es.js";
65
70
  import "../../api/queries/userDashboard/getUserDashboard.es.js";
66
71
  import "../../api/queries/users/getUsers.es.js";
67
72
  import "../../api/queries/users/updateUsers.es.js";
68
- import "../../api/queries/watchers/getWatchers.es.js";
69
- import "../../api/queries/permissions/getPermissions.es.js";
70
- import "../../api/queries/grouping/getGrouping.es.js";
71
73
  import "../../api/queries/versions/updateVersions.es.js";
72
- import "../../api/queries/products/createProduct.es.js";
73
- import "../../api/queries/cloud/cloud.es.js";
74
74
  import "../../api/queries/views/getViews.es.js";
75
75
  import "../../api/queries/views/updateViews.es.js";
76
+ import "../../api/queries/watchers/getWatchers.es.js";
76
77
  import { Dialog } from "@ynput/ayon-react-components";
77
78
  const DetailsDialog = ({
78
79
  projectName,
@@ -1 +1 @@
1
- {"version":3,"file":"DetailsDialog.es.js","sources":["../../../../../src/components/DetailsDialog/DetailsDialog.tsx"],"sourcesContent":["import { toast } from 'react-toastify'\nimport { useGetEntityQuery } from '@shared/api'\nimport { Dialog } from '@ynput/ayon-react-components'\n\nexport interface DetailsDialogProps {\n projectName?: string\n entityType: string\n entityIds: string[]\n visible: boolean\n onHide: () => void\n}\n\nexport const DetailsDialog = ({\n projectName,\n entityType,\n entityIds,\n visible,\n onHide,\n}: DetailsDialogProps) => {\n const {\n data = {},\n isLoading,\n isError,\n error,\n } = useGetEntityQuery(\n { projectName, entityType: entityType, entityId: entityIds[0] },\n { skip: !visible },\n )\n\n if (isLoading)\n if (isError) {\n toast.error(`Unable to load detail. ${error}`)\n }\n\n if (!visible || data.length < 1) return null\n\n return (\n <Dialog\n isOpen={true}\n onClose={onHide}\n size=\"lg\"\n style={{ width: '50vw' }}\n header={`${entityType} detail`}\n >\n <pre>\n {!isLoading && !isError && JSON.stringify(data, null, 2)}\n {isLoading && 'loading...'}\n {isError && 'error...'}\n </pre>\n </Dialog>\n )\n}\n"],"names":["jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,MAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA0B;AAClB,QAAA;AAAA,IACJ,OAAO,CAAC;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE;AAAA,IACF,EAAE,aAAa,YAAwB,UAAU,UAAU,CAAC,EAAE;AAAA,IAC9D,EAAE,MAAM,CAAC,QAAQ;AAAA,EACnB;AAEI,MAAA,WAAA;AACF,QAAI,SAAS;AACL,YAAA,MAAM,0BAA0B,KAAK,EAAE;AAAA,IAAA;AAAA,EAC/C;AAEF,MAAI,CAAC,WAAW,KAAK,SAAS,EAAU,QAAA;AAGtC,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAK;AAAA,MACL,OAAO,EAAE,OAAO,OAAO;AAAA,MACvB,QAAQ,GAAG,UAAU;AAAA,MAErB,iDAAC,OACE,EAAA,UAAA;AAAA,QAAA,CAAC,aAAa,CAAC,WAAW,KAAK,UAAU,MAAM,MAAM,CAAC;AAAA,QACtD,aAAa;AAAA,QACb,WAAW;AAAA,MAAA,EACd,CAAA;AAAA,IAAA;AAAA,EACF;AAEJ;"}
1
+ {"version":3,"file":"DetailsDialog.es.js","sources":["../../../../../src/components/DetailsDialog/DetailsDialog.tsx"],"sourcesContent":["import { toast } from 'react-toastify'\nimport { useGetEntityQuery } from '@shared/api'\nimport { Dialog } from '@ynput/ayon-react-components'\n\nexport interface DetailsDialogProps {\n projectName?: string\n entityType: string\n entityIds: string[]\n visible: boolean\n onHide: () => void\n}\n\nexport const DetailsDialog = ({\n projectName,\n entityType,\n entityIds,\n visible,\n onHide,\n}: DetailsDialogProps) => {\n const {\n data = {},\n isLoading,\n isError,\n error,\n } = useGetEntityQuery(\n { projectName, entityType: entityType, entityId: entityIds[0] },\n { skip: !visible },\n )\n\n if (isLoading)\n if (isError) {\n toast.error(`Unable to load detail. ${error}`)\n }\n\n if (!visible || data.length < 1) return null\n\n return (\n <Dialog\n isOpen={true}\n onClose={onHide}\n size=\"lg\"\n style={{ width: '50vw' }}\n header={`${entityType} detail`}\n >\n <pre>\n {!isLoading && !isError && JSON.stringify(data, null, 2)}\n {isLoading && 'loading...'}\n {isError && 'error...'}\n </pre>\n </Dialog>\n )\n}\n"],"names":["jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,MAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA0B;AAClB,QAAA;AAAA,IACJ,OAAO,CAAC;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE;AAAA,IACF,EAAE,aAAa,YAAwB,UAAU,UAAU,CAAC,EAAE;AAAA,IAC9D,EAAE,MAAM,CAAC,QAAQ;AAAA,EACnB;AAEI,MAAA,WAAA;AACF,QAAI,SAAS;AACL,YAAA,MAAM,0BAA0B,KAAK,EAAE;AAAA,IAAA;AAAA,EAC/C;AAEF,MAAI,CAAC,WAAW,KAAK,SAAS,EAAU,QAAA;AAGtC,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAK;AAAA,MACL,OAAO,EAAE,OAAO,OAAO;AAAA,MACvB,QAAQ,GAAG,UAAU;AAAA,MAErB,iDAAC,OACE,EAAA,UAAA;AAAA,QAAA,CAAC,aAAa,CAAC,WAAW,KAAK,UAAU,MAAM,MAAM,CAAC;AAAA,QACtD,aAAa;AAAA,QACb,WAAW;AAAA,MAAA,EACd,CAAA;AAAA,IAAA;AAAA,EACF;AAEJ;"}
@@ -54,6 +54,7 @@ require("../../api/queries/addons/updateAddons.cjs.js");
54
54
  require("../../api/queries/attributes/getAttributes.cjs.js");
55
55
  require("../../api/queries/attributes/updateAttributes.cjs.js");
56
56
  require("../../api/queries/authentication/getAuthentication.cjs.js");
57
+ require("../../api/queries/cloud/cloud.cjs.js");
57
58
  require("../../api/queries/entities/getEntity.cjs.js");
58
59
  require("../../api/queries/entities/getEntityPanel.cjs.js");
59
60
  require("../../api/queries/entities/updateEntity.cjs.js");
@@ -62,24 +63,24 @@ require("../../api/queries/entityLists/updateLists.cjs.js");
62
63
  require("../../api/queries/entityLists/getListsAttributes.cjs.js");
63
64
  require("../../api/queries/entityLists/updateListsAttributes.cjs.js");
64
65
  require("../../api/queries/folders/getFolders.cjs.js");
66
+ require("../../api/queries/grouping/getGrouping.cjs.js");
65
67
  require("../../api/queries/overview/getOverview.cjs.js");
66
68
  require("../../api/queries/overview/updateOverview.cjs.js");
69
+ require("../../api/queries/permissions/getPermissions.cjs.js");
70
+ require("../../api/queries/products/createProduct.cjs.js");
67
71
  const getProject = require("../../api/queries/project/getProject.cjs.js");
68
72
  require("../../api/queries/project/updateProject.cjs.js");
69
73
  require("../../api/queries/review/getReview.cjs.js");
70
74
  require("../../api/queries/review/updateReview.cjs.js");
75
+ require("../../api/queries/share/share.cjs.js");
71
76
  const getSystem = require("../../api/queries/system/getSystem.cjs.js");
72
77
  require("../../api/queries/userDashboard/getUserDashboard.cjs.js");
73
78
  require("../../api/queries/users/getUsers.cjs.js");
74
79
  require("../../api/queries/users/updateUsers.cjs.js");
75
- require("../../api/queries/watchers/getWatchers.cjs.js");
76
- require("../../api/queries/permissions/getPermissions.cjs.js");
77
- require("../../api/queries/grouping/getGrouping.cjs.js");
78
80
  require("../../api/queries/versions/updateVersions.cjs.js");
79
- require("../../api/queries/products/createProduct.cjs.js");
80
- require("../../api/queries/cloud/cloud.cjs.js");
81
81
  require("../../api/queries/views/getViews.cjs.js");
82
82
  require("../../api/queries/views/updateViews.cjs.js");
83
+ require("../../api/queries/watchers/getWatchers.cjs.js");
83
84
  const DetailsPanelAttributesEditor = require("./DetailsPanelAttributesEditor.cjs.js");
84
85
  require("../../context/RemoteModulesContext.cjs.js");
85
86
  require("../../../../_virtual/runtime.cjs.js");
@@ -1 +1 @@
1
- {"version":3,"file":"DetailsPanelAttributes.cjs.js","sources":["../../../../../src/components/DetailsPanelAttributes/DetailsPanelAttributes.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\nimport { Section } from '@ynput/ayon-react-components'\nimport { getMixedState } from '@shared/util'\nimport { useGetSiteInfoQuery, useGetProjectQuery } from '@shared/api'\nimport {\n DetailsPanelAttributesEditor,\n AttributeField,\n DetailsPanelAttributesEditorProps,\n} from './DetailsPanelAttributesEditor'\nimport { useEntityUpdate } from '@shared/hooks'\nimport { upperFirst } from 'lodash'\nimport type { DetailsPanelEntityData } from '@shared/api'\n\ntype EntityForm = {\n id: string\n name: string\n label: string | null | undefined\n entityType: 'folder' | 'task' | 'product' | 'version'\n taskType?: string\n folderType?: string\n productType?: string\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n projectName: string\n path: string\n // attribs\n [key: string]: string | number | boolean | Date | any[] | Record<string, any> | undefined | null\n}\n\n// all fields in entity form are visible\nconst visibleFields: Array<keyof EntityForm> = [\n 'id',\n 'name',\n 'label',\n 'entityType',\n 'taskType',\n 'folderType',\n 'productType',\n 'tags',\n 'status',\n 'updatedAt',\n 'createdAt',\n 'projectName',\n 'path',\n]\n\nconst readOnlyFields: Array<keyof EntityForm> = [\n 'id',\n 'entityType',\n 'projectName',\n 'path',\n 'createdAt',\n 'updatedAt',\n]\n\nexport type DetailsPanelAttributesProps = {\n entities: DetailsPanelEntityData[]\n isLoading: boolean\n}\n\nexport const DetailsPanelAttributes = ({\n entities = [],\n isLoading,\n}: DetailsPanelAttributesProps) => {\n // form for project data\n const [mixedFields, setMixedFields] = useState<string[]>([])\n const [formData, setFormData] = useState<EntityForm | null>(null)\n\n const buildInitialForm = () => {\n // Group entity values by field name\n const valuesByField: Record<string, any[]> = {}\n // Track which fields have mixed values\n const mixedFieldsSet = new Set<string>()\n\n entities.forEach((entity) => {\n const mappedEntity: EntityForm = {\n id: entity.id,\n name: entity.name,\n label: entity.label,\n entityType: entity.entityType as 'folder' | 'task' | 'product' | 'version',\n createdAt: entity.createdAt,\n updatedAt: entity.updatedAt,\n projectName: entity.projectName,\n status: entity.status,\n tags: entity.tags || [],\n path: entity.path,\n folderType: entity.folder?.folderType,\n productType: entity.product?.productType,\n taskType: entity.task?.taskType,\n }\n\n // Process regular fields\n Object.keys(mappedEntity).forEach((key) => {\n if (visibleFields.includes(key as keyof EntityForm)) {\n valuesByField[key] = valuesByField[key] || []\n valuesByField[key].push((mappedEntity as any)[key])\n }\n })\n\n // Process attrib fields\n if (entity.attrib) {\n Object.keys(entity.attrib).forEach((key) => {\n const attribKey = `attrib.${key}`\n valuesByField[attribKey] = valuesByField[attribKey] || []\n valuesByField[attribKey].push(entity.attrib?.[key])\n })\n }\n })\n\n // Apply getMixedState to each field\n const formData = Object.entries(valuesByField).reduce((result, [key, values]) => {\n const { value, isMixed } = getMixedState(values)\n result[key] = value\n\n // Add to mixedFields if this field has mixed values\n if (isMixed) {\n mixedFieldsSet.add(key)\n }\n\n return result\n }, {} as Record<string, any>)\n\n setFormData(formData as EntityForm)\n // Update the mixedFields state with all fields that have mixed values\n setMixedFields(Array.from(mixedFieldsSet))\n }\n\n useEffect(() => {\n if (isLoading || entities.length === 0) return\n buildInitialForm()\n }, [entities, isLoading])\n\n const { data: projectData } = useGetProjectQuery(\n { projectName: formData?.projectName || '' },\n { skip: !formData?.projectName || mixedFields.includes('projectName') },\n )\n const { folderTypes = [], taskTypes = [], statuses = [], tags = [] } = projectData || {}\n\n const { data: info } = useGetSiteInfoQuery({ full: true })\n const { attributes = [] } = info || {}\n\n // build the fields array for defining the schema\n const fields: AttributeField[] = useMemo(() => {\n // Create custom fields as proper AttributeModel objects\n const customFieldsData: AttributeField[] = [\n {\n name: 'name',\n data: {\n type: 'string',\n title: 'Name',\n description: 'The name of the entity, used for identification in the pipeline',\n },\n },\n {\n name: 'label',\n data: {\n type: 'string',\n title: 'Label',\n description: 'Used as a nice visual label only',\n },\n },\n {\n name: 'folderType',\n hidden: formData?.entityType !== 'folder',\n data: {\n type: 'string',\n title: 'Folder Type',\n description: 'Type of the folder',\n enum: folderTypes.map((type) => ({\n value: type.name,\n label: type.name,\n icon: type.icon,\n })),\n },\n },\n {\n name: 'taskType',\n hidden: formData?.entityType !== 'task',\n data: {\n type: 'string',\n title: 'Task Type',\n description: 'Type of the task',\n enum: taskTypes.map((type) => ({\n value: type.name,\n label: type.name,\n icon: type.icon,\n })),\n },\n },\n {\n name: 'status',\n data: {\n type: 'string',\n title: 'Status',\n description: 'The state the entity is in, is it approved or in progress etc.',\n enum: statuses.map((status) => ({\n value: status.name,\n label: status.name,\n icon: status.icon,\n color: status.color,\n })),\n },\n },\n {\n name: 'tags',\n data: {\n type: 'list_of_strings',\n title: 'Tags',\n enum: tags.map((tag) => ({\n value: tag.name,\n label: tag.name,\n color: tag.color,\n })),\n },\n },\n ]\n\n // Filter API attributes based on entity type\n const apiAttributesData: AttributeField[] = formData?.entityType\n ? attributes\n .filter((attr) => attr.scope?.includes(formData.entityType))\n .map((attr) => ({\n name: 'attrib.' + attr.name,\n data: attr.data,\n }))\n : []\n\n const readOnlyFieldsData: AttributeField[] = readOnlyFields.map((field) => ({\n name: field as string,\n readonly: true,\n data: {\n type: 'string',\n title: upperFirst(field as string),\n },\n }))\n\n // Combine custom fields with API attributes\n const allFieldsData = [...customFieldsData, ...apiAttributesData, ...readOnlyFieldsData]\n const sortToTop = ['path', 'name']\n const sortedFieldsData = [...allFieldsData].sort((a, b) => {\n const aIndex = sortToTop.indexOf(a.name)\n const bIndex = sortToTop.indexOf(b.name)\n if (aIndex === -1 && bIndex === -1) return 0\n if (aIndex === -1) return 1\n if (bIndex === -1) return -1\n return aIndex - bIndex\n })\n\n return sortedFieldsData\n }, [attributes, folderTypes, taskTypes, statuses, tags, formData?.entityType])\n\n //\n let enableEditing = false\n if (\n ['task', 'folder'].includes(formData?.entityType || '') &&\n !mixedFields.includes('projectName')\n ) {\n enableEditing = true\n }\n\n const entityType = formData?.entityType || 'task'\n const projectName = formData?.projectName || ''\n\n // Setup entity update functionality\n const { updateEntity } = useEntityUpdate({\n entities: entities.map((entity) => ({\n id: entity.id,\n projectName: entity.projectName || '',\n folderId: entity.folder?.id,\n users: entity.task?.assignees || [],\n })),\n entityType,\n })\n\n const handleChange: DetailsPanelAttributesEditorProps['onChange'] = (key, value) => {\n if (key.startsWith('attrib.')) {\n value = {\n [key.replace('attrib.', '')]: value,\n }\n key = 'attrib'\n }\n\n console.log('handleChange', key, value)\n\n // update the form data\n // @ts-ignore\n setFormData((prev) => ({\n ...prev,\n [key]: value,\n }))\n\n // update the entity in database\n updateEntity(key, value)\n }\n\n return (\n <Section style={{ padding: 8, overflow: 'hidden' }}>\n <DetailsPanelAttributesEditor\n fields={fields}\n form={formData || {}}\n mixedFields={mixedFields}\n isLoading={isLoading}\n enableEditing={enableEditing}\n onChange={handleChange}\n />\n </Section>\n )\n}\n"],"names":["useState","_a","formData","getMixedState","useEffect","useGetProjectQuery","useGetSiteInfoQuery","useMemo","upperFirst","useEntityUpdate","jsx","Section","DetailsPanelAttributesEditor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,MAAM,gBAAyC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,iBAA0C;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAOO,MAAM,yBAAyB,CAAC;AAAA,EACrC,WAAW,CAAC;AAAA,EACZ;AACF,MAAmC;AAEjC,QAAM,CAAC,aAAa,cAAc,IAAIA,MAAAA,SAAmB,CAAA,CAAE;AAC3D,QAAM,CAAC,UAAU,WAAW,IAAIA,MAAAA,SAA4B,IAAI;AAEhE,QAAM,mBAAmB,MAAM;AAE7B,UAAM,gBAAuC,CAAC;AAExC,UAAA,qCAAqB,IAAY;AAE9B,aAAA,QAAQ,CAAC,WAAW;;AAC3B,YAAM,eAA2B;AAAA,QAC/B,IAAI,OAAO;AAAA,QACX,MAAM,OAAO;AAAA,QACb,OAAO,OAAO;AAAA,QACd,YAAY,OAAO;AAAA,QACnB,WAAW,OAAO;AAAA,QAClB,WAAW,OAAO;AAAA,QAClB,aAAa,OAAO;AAAA,QACpB,QAAQ,OAAO;AAAA,QACf,MAAM,OAAO,QAAQ,CAAC;AAAA,QACtB,MAAM,OAAO;AAAA,QACb,aAAY,YAAO,WAAP,mBAAe;AAAA,QAC3B,cAAa,YAAO,YAAP,mBAAgB;AAAA,QAC7B,WAAU,YAAO,SAAP,mBAAa;AAAA,MACzB;AAGA,aAAO,KAAK,YAAY,EAAE,QAAQ,CAAC,QAAQ;AACrC,YAAA,cAAc,SAAS,GAAuB,GAAG;AACnD,wBAAc,GAAG,IAAI,cAAc,GAAG,KAAK,CAAC;AAC5C,wBAAc,GAAG,EAAE,KAAM,aAAqB,GAAG,CAAC;AAAA,QAAA;AAAA,MACpD,CACD;AAGD,UAAI,OAAO,QAAQ;AACjB,eAAO,KAAK,OAAO,MAAM,EAAE,QAAQ,CAAC,QAAQ;;AACpC,gBAAA,YAAY,UAAU,GAAG;AAC/B,wBAAc,SAAS,IAAI,cAAc,SAAS,KAAK,CAAC;AACxD,wBAAc,SAAS,EAAE,MAAKC,MAAA,OAAO,WAAP,gBAAAA,IAAgB,IAAI;AAAA,QAAA,CACnD;AAAA,MAAA;AAAA,IACH,CACD;AAGKC,UAAAA,YAAW,OAAO,QAAQ,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,MAAM,MAAM;AAC/E,YAAM,EAAE,OAAO,YAAYC,cAAAA,cAAc,MAAM;AAC/C,aAAO,GAAG,IAAI;AAGd,UAAI,SAAS;AACX,uBAAe,IAAI,GAAG;AAAA,MAAA;AAGjB,aAAA;AAAA,IACT,GAAG,EAAyB;AAE5B,gBAAYD,SAAsB;AAEnB,mBAAA,MAAM,KAAK,cAAc,CAAC;AAAA,EAC3C;AAEAE,QAAAA,UAAU,MAAM;AACV,QAAA,aAAa,SAAS,WAAW,EAAG;AACvB,qBAAA;AAAA,EAAA,GAChB,CAAC,UAAU,SAAS,CAAC;AAElB,QAAA,EAAE,MAAM,YAAA,IAAgBC,WAAA;AAAA,IAC5B,EAAE,cAAa,qCAAU,gBAAe,GAAG;AAAA,IAC3C,EAAE,MAAM,EAAC,qCAAU,gBAAe,YAAY,SAAS,aAAa,EAAE;AAAA,EACxE;AACA,QAAM,EAAE,cAAc,IAAI,YAAY,CAAC,GAAG,WAAW,CAAA,GAAI,OAAO,GAAG,IAAI,eAAe,CAAC;AAEjF,QAAA,EAAE,MAAM,KAAK,IAAIC,8BAAoB,EAAE,MAAM,MAAM;AACzD,QAAM,EAAE,aAAa,GAAG,IAAI,QAAQ,CAAC;AAG/B,QAAA,SAA2BC,MAAAA,QAAQ,MAAM;AAE7C,UAAM,mBAAqC;AAAA,MACzC;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,aAAa;AAAA,QAAA;AAAA,MAEjB;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,aAAa;AAAA,QAAA;AAAA,MAEjB;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,SAAQ,qCAAU,gBAAe;AAAA,QACjC,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,aAAa;AAAA,UACb,MAAM,YAAY,IAAI,CAAC,UAAU;AAAA,YAC/B,OAAO,KAAK;AAAA,YACZ,OAAO,KAAK;AAAA,YACZ,MAAM,KAAK;AAAA,UAAA,EACX;AAAA,QAAA;AAAA,MAEN;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,SAAQ,qCAAU,gBAAe;AAAA,QACjC,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,aAAa;AAAA,UACb,MAAM,UAAU,IAAI,CAAC,UAAU;AAAA,YAC7B,OAAO,KAAK;AAAA,YACZ,OAAO,KAAK;AAAA,YACZ,MAAM,KAAK;AAAA,UAAA,EACX;AAAA,QAAA;AAAA,MAEN;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,aAAa;AAAA,UACb,MAAM,SAAS,IAAI,CAAC,YAAY;AAAA,YAC9B,OAAO,OAAO;AAAA,YACd,OAAO,OAAO;AAAA,YACd,MAAM,OAAO;AAAA,YACb,OAAO,OAAO;AAAA,UAAA,EACd;AAAA,QAAA;AAAA,MAEN;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM,KAAK,IAAI,CAAC,SAAS;AAAA,YACvB,OAAO,IAAI;AAAA,YACX,OAAO,IAAI;AAAA,YACX,OAAO,IAAI;AAAA,UAAA,EACX;AAAA,QAAA;AAAA,MACJ;AAAA,IAEJ;AAGA,UAAM,qBAAsC,qCAAU,cAClD,WACG,OAAO,CAAC,SAAS;;AAAA,wBAAK,UAAL,mBAAY,SAAS,SAAS;AAAA,KAAW,EAC1D,IAAI,CAAC,UAAU;AAAA,MACd,MAAM,YAAY,KAAK;AAAA,MACvB,MAAM,KAAK;AAAA,IACb,EAAE,IACJ,CAAC;AAEL,UAAM,qBAAuC,eAAe,IAAI,CAAC,WAAW;AAAA,MAC1E,MAAM;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,OAAOC,kBAAW,KAAe;AAAA,MAAA;AAAA,IACnC,EACA;AAGF,UAAM,gBAAgB,CAAC,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,kBAAkB;AACjF,UAAA,YAAY,CAAC,QAAQ,MAAM;AAC3B,UAAA,mBAAmB,CAAC,GAAG,aAAa,EAAE,KAAK,CAAC,GAAG,MAAM;AACzD,YAAM,SAAS,UAAU,QAAQ,EAAE,IAAI;AACvC,YAAM,SAAS,UAAU,QAAQ,EAAE,IAAI;AACvC,UAAI,WAAW,MAAM,WAAW,GAAW,QAAA;AACvC,UAAA,WAAW,GAAW,QAAA;AACtB,UAAA,WAAW,GAAW,QAAA;AAC1B,aAAO,SAAS;AAAA,IAAA,CACjB;AAEM,WAAA;AAAA,EAAA,GACN,CAAC,YAAY,aAAa,WAAW,UAAU,MAAM,qCAAU,UAAU,CAAC;AAG7E,MAAI,gBAAgB;AACpB,MACE,CAAC,QAAQ,QAAQ,EAAE,UAAS,qCAAU,eAAc,EAAE,KACtD,CAAC,YAAY,SAAS,aAAa,GACnC;AACgB,oBAAA;AAAA,EAAA;AAGZ,QAAA,cAAa,qCAAU,eAAc;AACvB,wCAAU,gBAAe;AAGvC,QAAA,EAAE,aAAa,IAAIC,gCAAgB;AAAA,IACvC,UAAU,SAAS,IAAI,CAAC,WAAY;;AAAA;AAAA,QAClC,IAAI,OAAO;AAAA,QACX,aAAa,OAAO,eAAe;AAAA,QACnC,WAAU,YAAO,WAAP,mBAAe;AAAA,QACzB,SAAO,YAAO,SAAP,mBAAa,cAAa,CAAA;AAAA,MAAC;AAAA,KAClC;AAAA,IACF;AAAA,EAAA,CACD;AAEK,QAAA,eAA8D,CAAC,KAAK,UAAU;AAC9E,QAAA,IAAI,WAAW,SAAS,GAAG;AACrB,cAAA;AAAA,QACN,CAAC,IAAI,QAAQ,WAAW,EAAE,CAAC,GAAG;AAAA,MAChC;AACM,YAAA;AAAA,IAAA;AAGA,YAAA,IAAI,gBAAgB,KAAK,KAAK;AAItC,gBAAY,CAAC,UAAU;AAAA,MACrB,GAAG;AAAA,MACH,CAAC,GAAG,GAAG;AAAA,IAAA,EACP;AAGF,iBAAa,KAAK,KAAK;AAAA,EACzB;AAGE,SAAAC,iDAACC,oBAAAA,WAAQ,OAAO,EAAE,SAAS,GAAG,UAAU,YACtC,UAAAD,2BAAA,kBAAA;AAAA,IAACE,6BAAA;AAAA,IAAA;AAAA,MACC;AAAA,MACA,MAAM,YAAY,CAAC;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,IAAA;AAAA,EAAA,GAEd;AAEJ;;"}
1
+ {"version":3,"file":"DetailsPanelAttributes.cjs.js","sources":["../../../../../src/components/DetailsPanelAttributes/DetailsPanelAttributes.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\nimport { Section } from '@ynput/ayon-react-components'\nimport { getMixedState } from '@shared/util'\nimport { useGetSiteInfoQuery, useGetProjectQuery } from '@shared/api'\nimport {\n DetailsPanelAttributesEditor,\n AttributeField,\n DetailsPanelAttributesEditorProps,\n} from './DetailsPanelAttributesEditor'\nimport { useEntityUpdate } from '@shared/hooks'\nimport { upperFirst } from 'lodash'\nimport type { DetailsPanelEntityData } from '@shared/api'\n\ntype EntityForm = {\n id: string\n name: string\n label: string | null | undefined\n entityType: 'folder' | 'task' | 'product' | 'version'\n taskType?: string\n folderType?: string\n productType?: string\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n projectName: string\n path: string\n // attribs\n [key: string]: string | number | boolean | Date | any[] | Record<string, any> | undefined | null\n}\n\n// all fields in entity form are visible\nconst visibleFields: Array<keyof EntityForm> = [\n 'id',\n 'name',\n 'label',\n 'entityType',\n 'taskType',\n 'folderType',\n 'productType',\n 'tags',\n 'status',\n 'updatedAt',\n 'createdAt',\n 'projectName',\n 'path',\n]\n\nconst readOnlyFields: Array<keyof EntityForm> = [\n 'id',\n 'entityType',\n 'projectName',\n 'path',\n 'createdAt',\n 'updatedAt',\n]\n\nexport type DetailsPanelAttributesProps = {\n entities: DetailsPanelEntityData[]\n isLoading: boolean\n}\n\nexport const DetailsPanelAttributes = ({\n entities = [],\n isLoading,\n}: DetailsPanelAttributesProps) => {\n // form for project data\n const [mixedFields, setMixedFields] = useState<string[]>([])\n const [formData, setFormData] = useState<EntityForm | null>(null)\n\n const buildInitialForm = () => {\n // Group entity values by field name\n const valuesByField: Record<string, any[]> = {}\n // Track which fields have mixed values\n const mixedFieldsSet = new Set<string>()\n\n entities.forEach((entity) => {\n const mappedEntity: EntityForm = {\n id: entity.id,\n name: entity.name,\n label: entity.label,\n entityType: entity.entityType as 'folder' | 'task' | 'product' | 'version',\n createdAt: entity.createdAt,\n updatedAt: entity.updatedAt,\n projectName: entity.projectName,\n status: entity.status,\n tags: entity.tags || [],\n path: entity.path,\n folderType: entity.folder?.folderType,\n productType: entity.product?.productType,\n taskType: entity.task?.taskType,\n }\n\n // Process regular fields\n Object.keys(mappedEntity).forEach((key) => {\n if (visibleFields.includes(key as keyof EntityForm)) {\n valuesByField[key] = valuesByField[key] || []\n valuesByField[key].push((mappedEntity as any)[key])\n }\n })\n\n // Process attrib fields\n if (entity.attrib) {\n Object.keys(entity.attrib).forEach((key) => {\n const attribKey = `attrib.${key}`\n valuesByField[attribKey] = valuesByField[attribKey] || []\n valuesByField[attribKey].push(entity.attrib?.[key])\n })\n }\n })\n\n // Apply getMixedState to each field\n const formData = Object.entries(valuesByField).reduce((result, [key, values]) => {\n const { value, isMixed } = getMixedState(values)\n result[key] = value\n\n // Add to mixedFields if this field has mixed values\n if (isMixed) {\n mixedFieldsSet.add(key)\n }\n\n return result\n }, {} as Record<string, any>)\n\n setFormData(formData as EntityForm)\n // Update the mixedFields state with all fields that have mixed values\n setMixedFields(Array.from(mixedFieldsSet))\n }\n\n useEffect(() => {\n if (isLoading || entities.length === 0) return\n buildInitialForm()\n }, [entities, isLoading])\n\n const { data: projectData } = useGetProjectQuery(\n { projectName: formData?.projectName || '' },\n { skip: !formData?.projectName || mixedFields.includes('projectName') },\n )\n const { folderTypes = [], taskTypes = [], statuses = [], tags = [] } = projectData || {}\n\n const { data: info } = useGetSiteInfoQuery({ full: true })\n const { attributes = [] } = info || {}\n\n // build the fields array for defining the schema\n const fields: AttributeField[] = useMemo(() => {\n // Create custom fields as proper AttributeModel objects\n const customFieldsData: AttributeField[] = [\n {\n name: 'name',\n data: {\n type: 'string',\n title: 'Name',\n description: 'The name of the entity, used for identification in the pipeline',\n },\n },\n {\n name: 'label',\n data: {\n type: 'string',\n title: 'Label',\n description: 'Used as a nice visual label only',\n },\n },\n {\n name: 'folderType',\n hidden: formData?.entityType !== 'folder',\n data: {\n type: 'string',\n title: 'Folder Type',\n description: 'Type of the folder',\n enum: folderTypes.map((type) => ({\n value: type.name,\n label: type.name,\n icon: type.icon,\n })),\n },\n },\n {\n name: 'taskType',\n hidden: formData?.entityType !== 'task',\n data: {\n type: 'string',\n title: 'Task Type',\n description: 'Type of the task',\n enum: taskTypes.map((type) => ({\n value: type.name,\n label: type.name,\n icon: type.icon,\n })),\n },\n },\n {\n name: 'status',\n data: {\n type: 'string',\n title: 'Status',\n description: 'The state the entity is in, is it approved or in progress etc.',\n enum: statuses.map((status) => ({\n value: status.name,\n label: status.name,\n icon: status.icon,\n color: status.color,\n })),\n },\n },\n {\n name: 'tags',\n data: {\n type: 'list_of_strings',\n title: 'Tags',\n enum: tags.map((tag) => ({\n value: tag.name,\n label: tag.name,\n color: tag.color,\n })),\n },\n },\n ]\n\n // Filter API attributes based on entity type\n const apiAttributesData: AttributeField[] = formData?.entityType\n ? attributes\n .filter((attr) => attr.scope?.includes(formData.entityType))\n .map((attr) => ({\n name: 'attrib.' + attr.name,\n data: attr.data,\n }))\n : []\n\n const readOnlyFieldsData: AttributeField[] = readOnlyFields.map((field) => ({\n name: field as string,\n readonly: true,\n data: {\n type: 'string',\n title: upperFirst(field as string),\n },\n }))\n\n // Combine custom fields with API attributes\n const allFieldsData = [...customFieldsData, ...apiAttributesData, ...readOnlyFieldsData]\n const sortToTop = ['path', 'name']\n const sortedFieldsData = [...allFieldsData].sort((a, b) => {\n const aIndex = sortToTop.indexOf(a.name)\n const bIndex = sortToTop.indexOf(b.name)\n if (aIndex === -1 && bIndex === -1) return 0\n if (aIndex === -1) return 1\n if (bIndex === -1) return -1\n return aIndex - bIndex\n })\n\n return sortedFieldsData\n }, [attributes, folderTypes, taskTypes, statuses, tags, formData?.entityType])\n\n //\n let enableEditing = false\n if (\n ['task', 'folder'].includes(formData?.entityType || '') &&\n !mixedFields.includes('projectName')\n ) {\n enableEditing = true\n }\n\n const entityType = formData?.entityType || 'task'\n const projectName = formData?.projectName || ''\n\n // Setup entity update functionality\n const { updateEntity } = useEntityUpdate({\n entities: entities.map((entity) => ({\n id: entity.id,\n projectName: entity.projectName || '',\n folderId: entity.folder?.id,\n users: entity.task?.assignees || [],\n })),\n entityType,\n })\n\n const handleChange: DetailsPanelAttributesEditorProps['onChange'] = (key, value) => {\n if (key.startsWith('attrib.')) {\n value = {\n [key.replace('attrib.', '')]: value,\n }\n key = 'attrib'\n }\n\n console.log('handleChange', key, value)\n\n // update the form data\n // @ts-ignore\n setFormData((prev) => ({\n ...prev,\n [key]: value,\n }))\n\n // update the entity in database\n updateEntity(key, value)\n }\n\n return (\n <Section style={{ padding: 8, overflow: 'hidden' }}>\n <DetailsPanelAttributesEditor\n fields={fields}\n form={formData || {}}\n mixedFields={mixedFields}\n isLoading={isLoading}\n enableEditing={enableEditing}\n onChange={handleChange}\n />\n </Section>\n )\n}\n"],"names":["useState","_a","formData","getMixedState","useEffect","useGetProjectQuery","useGetSiteInfoQuery","useMemo","upperFirst","useEntityUpdate","jsx","Section","DetailsPanelAttributesEditor"],"mappings":"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"}
@@ -52,6 +52,7 @@ import "../../api/queries/addons/updateAddons.es.js";
52
52
  import "../../api/queries/attributes/getAttributes.es.js";
53
53
  import "../../api/queries/attributes/updateAttributes.es.js";
54
54
  import "../../api/queries/authentication/getAuthentication.es.js";
55
+ import "../../api/queries/cloud/cloud.es.js";
55
56
  import "../../api/queries/entities/getEntity.es.js";
56
57
  import "../../api/queries/entities/getEntityPanel.es.js";
57
58
  import "../../api/queries/entities/updateEntity.es.js";
@@ -60,24 +61,24 @@ import "../../api/queries/entityLists/updateLists.es.js";
60
61
  import "../../api/queries/entityLists/getListsAttributes.es.js";
61
62
  import "../../api/queries/entityLists/updateListsAttributes.es.js";
62
63
  import "../../api/queries/folders/getFolders.es.js";
64
+ import "../../api/queries/grouping/getGrouping.es.js";
63
65
  import "../../api/queries/overview/getOverview.es.js";
64
66
  import "../../api/queries/overview/updateOverview.es.js";
67
+ import "../../api/queries/permissions/getPermissions.es.js";
68
+ import "../../api/queries/products/createProduct.es.js";
65
69
  import { useGetProjectQuery } from "../../api/queries/project/getProject.es.js";
66
70
  import "../../api/queries/project/updateProject.es.js";
67
71
  import "../../api/queries/review/getReview.es.js";
68
72
  import "../../api/queries/review/updateReview.es.js";
73
+ import "../../api/queries/share/share.es.js";
69
74
  import { useGetSiteInfoQuery } from "../../api/queries/system/getSystem.es.js";
70
75
  import "../../api/queries/userDashboard/getUserDashboard.es.js";
71
76
  import "../../api/queries/users/getUsers.es.js";
72
77
  import "../../api/queries/users/updateUsers.es.js";
73
- import "../../api/queries/watchers/getWatchers.es.js";
74
- import "../../api/queries/permissions/getPermissions.es.js";
75
- import "../../api/queries/grouping/getGrouping.es.js";
76
78
  import "../../api/queries/versions/updateVersions.es.js";
77
- import "../../api/queries/products/createProduct.es.js";
78
- import "../../api/queries/cloud/cloud.es.js";
79
79
  import "../../api/queries/views/getViews.es.js";
80
80
  import "../../api/queries/views/updateViews.es.js";
81
+ import "../../api/queries/watchers/getWatchers.es.js";
81
82
  import { DetailsPanelAttributesEditor } from "./DetailsPanelAttributesEditor.es.js";
82
83
  import "../../context/RemoteModulesContext.es.js";
83
84
  import "../../../../_virtual/runtime.es.js";
@@ -1 +1 @@
1
- {"version":3,"file":"DetailsPanelAttributes.es.js","sources":["../../../../../src/components/DetailsPanelAttributes/DetailsPanelAttributes.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\nimport { Section } from '@ynput/ayon-react-components'\nimport { getMixedState } from '@shared/util'\nimport { useGetSiteInfoQuery, useGetProjectQuery } from '@shared/api'\nimport {\n DetailsPanelAttributesEditor,\n AttributeField,\n DetailsPanelAttributesEditorProps,\n} from './DetailsPanelAttributesEditor'\nimport { useEntityUpdate } from '@shared/hooks'\nimport { upperFirst } from 'lodash'\nimport type { DetailsPanelEntityData } from '@shared/api'\n\ntype EntityForm = {\n id: string\n name: string\n label: string | null | undefined\n entityType: 'folder' | 'task' | 'product' | 'version'\n taskType?: string\n folderType?: string\n productType?: string\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n projectName: string\n path: string\n // attribs\n [key: string]: string | number | boolean | Date | any[] | Record<string, any> | undefined | null\n}\n\n// all fields in entity form are visible\nconst visibleFields: Array<keyof EntityForm> = [\n 'id',\n 'name',\n 'label',\n 'entityType',\n 'taskType',\n 'folderType',\n 'productType',\n 'tags',\n 'status',\n 'updatedAt',\n 'createdAt',\n 'projectName',\n 'path',\n]\n\nconst readOnlyFields: Array<keyof EntityForm> = [\n 'id',\n 'entityType',\n 'projectName',\n 'path',\n 'createdAt',\n 'updatedAt',\n]\n\nexport type DetailsPanelAttributesProps = {\n entities: DetailsPanelEntityData[]\n isLoading: boolean\n}\n\nexport const DetailsPanelAttributes = ({\n entities = [],\n isLoading,\n}: DetailsPanelAttributesProps) => {\n // form for project data\n const [mixedFields, setMixedFields] = useState<string[]>([])\n const [formData, setFormData] = useState<EntityForm | null>(null)\n\n const buildInitialForm = () => {\n // Group entity values by field name\n const valuesByField: Record<string, any[]> = {}\n // Track which fields have mixed values\n const mixedFieldsSet = new Set<string>()\n\n entities.forEach((entity) => {\n const mappedEntity: EntityForm = {\n id: entity.id,\n name: entity.name,\n label: entity.label,\n entityType: entity.entityType as 'folder' | 'task' | 'product' | 'version',\n createdAt: entity.createdAt,\n updatedAt: entity.updatedAt,\n projectName: entity.projectName,\n status: entity.status,\n tags: entity.tags || [],\n path: entity.path,\n folderType: entity.folder?.folderType,\n productType: entity.product?.productType,\n taskType: entity.task?.taskType,\n }\n\n // Process regular fields\n Object.keys(mappedEntity).forEach((key) => {\n if (visibleFields.includes(key as keyof EntityForm)) {\n valuesByField[key] = valuesByField[key] || []\n valuesByField[key].push((mappedEntity as any)[key])\n }\n })\n\n // Process attrib fields\n if (entity.attrib) {\n Object.keys(entity.attrib).forEach((key) => {\n const attribKey = `attrib.${key}`\n valuesByField[attribKey] = valuesByField[attribKey] || []\n valuesByField[attribKey].push(entity.attrib?.[key])\n })\n }\n })\n\n // Apply getMixedState to each field\n const formData = Object.entries(valuesByField).reduce((result, [key, values]) => {\n const { value, isMixed } = getMixedState(values)\n result[key] = value\n\n // Add to mixedFields if this field has mixed values\n if (isMixed) {\n mixedFieldsSet.add(key)\n }\n\n return result\n }, {} as Record<string, any>)\n\n setFormData(formData as EntityForm)\n // Update the mixedFields state with all fields that have mixed values\n setMixedFields(Array.from(mixedFieldsSet))\n }\n\n useEffect(() => {\n if (isLoading || entities.length === 0) return\n buildInitialForm()\n }, [entities, isLoading])\n\n const { data: projectData } = useGetProjectQuery(\n { projectName: formData?.projectName || '' },\n { skip: !formData?.projectName || mixedFields.includes('projectName') },\n )\n const { folderTypes = [], taskTypes = [], statuses = [], tags = [] } = projectData || {}\n\n const { data: info } = useGetSiteInfoQuery({ full: true })\n const { attributes = [] } = info || {}\n\n // build the fields array for defining the schema\n const fields: AttributeField[] = useMemo(() => {\n // Create custom fields as proper AttributeModel objects\n const customFieldsData: AttributeField[] = [\n {\n name: 'name',\n data: {\n type: 'string',\n title: 'Name',\n description: 'The name of the entity, used for identification in the pipeline',\n },\n },\n {\n name: 'label',\n data: {\n type: 'string',\n title: 'Label',\n description: 'Used as a nice visual label only',\n },\n },\n {\n name: 'folderType',\n hidden: formData?.entityType !== 'folder',\n data: {\n type: 'string',\n title: 'Folder Type',\n description: 'Type of the folder',\n enum: folderTypes.map((type) => ({\n value: type.name,\n label: type.name,\n icon: type.icon,\n })),\n },\n },\n {\n name: 'taskType',\n hidden: formData?.entityType !== 'task',\n data: {\n type: 'string',\n title: 'Task Type',\n description: 'Type of the task',\n enum: taskTypes.map((type) => ({\n value: type.name,\n label: type.name,\n icon: type.icon,\n })),\n },\n },\n {\n name: 'status',\n data: {\n type: 'string',\n title: 'Status',\n description: 'The state the entity is in, is it approved or in progress etc.',\n enum: statuses.map((status) => ({\n value: status.name,\n label: status.name,\n icon: status.icon,\n color: status.color,\n })),\n },\n },\n {\n name: 'tags',\n data: {\n type: 'list_of_strings',\n title: 'Tags',\n enum: tags.map((tag) => ({\n value: tag.name,\n label: tag.name,\n color: tag.color,\n })),\n },\n },\n ]\n\n // Filter API attributes based on entity type\n const apiAttributesData: AttributeField[] = formData?.entityType\n ? attributes\n .filter((attr) => attr.scope?.includes(formData.entityType))\n .map((attr) => ({\n name: 'attrib.' + attr.name,\n data: attr.data,\n }))\n : []\n\n const readOnlyFieldsData: AttributeField[] = readOnlyFields.map((field) => ({\n name: field as string,\n readonly: true,\n data: {\n type: 'string',\n title: upperFirst(field as string),\n },\n }))\n\n // Combine custom fields with API attributes\n const allFieldsData = [...customFieldsData, ...apiAttributesData, ...readOnlyFieldsData]\n const sortToTop = ['path', 'name']\n const sortedFieldsData = [...allFieldsData].sort((a, b) => {\n const aIndex = sortToTop.indexOf(a.name)\n const bIndex = sortToTop.indexOf(b.name)\n if (aIndex === -1 && bIndex === -1) return 0\n if (aIndex === -1) return 1\n if (bIndex === -1) return -1\n return aIndex - bIndex\n })\n\n return sortedFieldsData\n }, [attributes, folderTypes, taskTypes, statuses, tags, formData?.entityType])\n\n //\n let enableEditing = false\n if (\n ['task', 'folder'].includes(formData?.entityType || '') &&\n !mixedFields.includes('projectName')\n ) {\n enableEditing = true\n }\n\n const entityType = formData?.entityType || 'task'\n const projectName = formData?.projectName || ''\n\n // Setup entity update functionality\n const { updateEntity } = useEntityUpdate({\n entities: entities.map((entity) => ({\n id: entity.id,\n projectName: entity.projectName || '',\n folderId: entity.folder?.id,\n users: entity.task?.assignees || [],\n })),\n entityType,\n })\n\n const handleChange: DetailsPanelAttributesEditorProps['onChange'] = (key, value) => {\n if (key.startsWith('attrib.')) {\n value = {\n [key.replace('attrib.', '')]: value,\n }\n key = 'attrib'\n }\n\n console.log('handleChange', key, value)\n\n // update the form data\n // @ts-ignore\n setFormData((prev) => ({\n ...prev,\n [key]: value,\n }))\n\n // update the entity in database\n updateEntity(key, value)\n }\n\n return (\n <Section style={{ padding: 8, overflow: 'hidden' }}>\n <DetailsPanelAttributesEditor\n fields={fields}\n form={formData || {}}\n mixedFields={mixedFields}\n isLoading={isLoading}\n enableEditing={enableEditing}\n onChange={handleChange}\n />\n </Section>\n )\n}\n"],"names":["_a","formData","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,MAAM,gBAAyC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,iBAA0C;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAOO,MAAM,yBAAyB,CAAC;AAAA,EACrC,WAAW,CAAC;AAAA,EACZ;AACF,MAAmC;AAEjC,QAAM,CAAC,aAAa,cAAc,IAAI,SAAmB,CAAA,CAAE;AAC3D,QAAM,CAAC,UAAU,WAAW,IAAI,SAA4B,IAAI;AAEhE,QAAM,mBAAmB,MAAM;AAE7B,UAAM,gBAAuC,CAAC;AAExC,UAAA,qCAAqB,IAAY;AAE9B,aAAA,QAAQ,CAAC,WAAW;;AAC3B,YAAM,eAA2B;AAAA,QAC/B,IAAI,OAAO;AAAA,QACX,MAAM,OAAO;AAAA,QACb,OAAO,OAAO;AAAA,QACd,YAAY,OAAO;AAAA,QACnB,WAAW,OAAO;AAAA,QAClB,WAAW,OAAO;AAAA,QAClB,aAAa,OAAO;AAAA,QACpB,QAAQ,OAAO;AAAA,QACf,MAAM,OAAO,QAAQ,CAAC;AAAA,QACtB,MAAM,OAAO;AAAA,QACb,aAAY,YAAO,WAAP,mBAAe;AAAA,QAC3B,cAAa,YAAO,YAAP,mBAAgB;AAAA,QAC7B,WAAU,YAAO,SAAP,mBAAa;AAAA,MACzB;AAGA,aAAO,KAAK,YAAY,EAAE,QAAQ,CAAC,QAAQ;AACrC,YAAA,cAAc,SAAS,GAAuB,GAAG;AACnD,wBAAc,GAAG,IAAI,cAAc,GAAG,KAAK,CAAC;AAC5C,wBAAc,GAAG,EAAE,KAAM,aAAqB,GAAG,CAAC;AAAA,QAAA;AAAA,MACpD,CACD;AAGD,UAAI,OAAO,QAAQ;AACjB,eAAO,KAAK,OAAO,MAAM,EAAE,QAAQ,CAAC,QAAQ;;AACpC,gBAAA,YAAY,UAAU,GAAG;AAC/B,wBAAc,SAAS,IAAI,cAAc,SAAS,KAAK,CAAC;AACxD,wBAAc,SAAS,EAAE,MAAKA,MAAA,OAAO,WAAP,gBAAAA,IAAgB,IAAI;AAAA,QAAA,CACnD;AAAA,MAAA;AAAA,IACH,CACD;AAGKC,UAAAA,YAAW,OAAO,QAAQ,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,MAAM,MAAM;AAC/E,YAAM,EAAE,OAAO,YAAY,cAAc,MAAM;AAC/C,aAAO,GAAG,IAAI;AAGd,UAAI,SAAS;AACX,uBAAe,IAAI,GAAG;AAAA,MAAA;AAGjB,aAAA;AAAA,IACT,GAAG,EAAyB;AAE5B,gBAAYA,SAAsB;AAEnB,mBAAA,MAAM,KAAK,cAAc,CAAC;AAAA,EAC3C;AAEA,YAAU,MAAM;AACV,QAAA,aAAa,SAAS,WAAW,EAAG;AACvB,qBAAA;AAAA,EAAA,GAChB,CAAC,UAAU,SAAS,CAAC;AAElB,QAAA,EAAE,MAAM,YAAA,IAAgB;AAAA,IAC5B,EAAE,cAAa,qCAAU,gBAAe,GAAG;AAAA,IAC3C,EAAE,MAAM,EAAC,qCAAU,gBAAe,YAAY,SAAS,aAAa,EAAE;AAAA,EACxE;AACA,QAAM,EAAE,cAAc,IAAI,YAAY,CAAC,GAAG,WAAW,CAAA,GAAI,OAAO,GAAG,IAAI,eAAe,CAAC;AAEjF,QAAA,EAAE,MAAM,KAAK,IAAI,oBAAoB,EAAE,MAAM,MAAM;AACzD,QAAM,EAAE,aAAa,GAAG,IAAI,QAAQ,CAAC;AAG/B,QAAA,SAA2B,QAAQ,MAAM;AAE7C,UAAM,mBAAqC;AAAA,MACzC;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,aAAa;AAAA,QAAA;AAAA,MAEjB;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,aAAa;AAAA,QAAA;AAAA,MAEjB;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,SAAQ,qCAAU,gBAAe;AAAA,QACjC,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,aAAa;AAAA,UACb,MAAM,YAAY,IAAI,CAAC,UAAU;AAAA,YAC/B,OAAO,KAAK;AAAA,YACZ,OAAO,KAAK;AAAA,YACZ,MAAM,KAAK;AAAA,UAAA,EACX;AAAA,QAAA;AAAA,MAEN;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,SAAQ,qCAAU,gBAAe;AAAA,QACjC,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,aAAa;AAAA,UACb,MAAM,UAAU,IAAI,CAAC,UAAU;AAAA,YAC7B,OAAO,KAAK;AAAA,YACZ,OAAO,KAAK;AAAA,YACZ,MAAM,KAAK;AAAA,UAAA,EACX;AAAA,QAAA;AAAA,MAEN;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,aAAa;AAAA,UACb,MAAM,SAAS,IAAI,CAAC,YAAY;AAAA,YAC9B,OAAO,OAAO;AAAA,YACd,OAAO,OAAO;AAAA,YACd,MAAM,OAAO;AAAA,YACb,OAAO,OAAO;AAAA,UAAA,EACd;AAAA,QAAA;AAAA,MAEN;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM,KAAK,IAAI,CAAC,SAAS;AAAA,YACvB,OAAO,IAAI;AAAA,YACX,OAAO,IAAI;AAAA,YACX,OAAO,IAAI;AAAA,UAAA,EACX;AAAA,QAAA;AAAA,MACJ;AAAA,IAEJ;AAGA,UAAM,qBAAsC,qCAAU,cAClD,WACG,OAAO,CAAC,SAAS;;AAAA,wBAAK,UAAL,mBAAY,SAAS,SAAS;AAAA,KAAW,EAC1D,IAAI,CAAC,UAAU;AAAA,MACd,MAAM,YAAY,KAAK;AAAA,MACvB,MAAM,KAAK;AAAA,IACb,EAAE,IACJ,CAAC;AAEL,UAAM,qBAAuC,eAAe,IAAI,CAAC,WAAW;AAAA,MAC1E,MAAM;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,OAAO,WAAW,KAAe;AAAA,MAAA;AAAA,IACnC,EACA;AAGF,UAAM,gBAAgB,CAAC,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,kBAAkB;AACjF,UAAA,YAAY,CAAC,QAAQ,MAAM;AAC3B,UAAA,mBAAmB,CAAC,GAAG,aAAa,EAAE,KAAK,CAAC,GAAG,MAAM;AACzD,YAAM,SAAS,UAAU,QAAQ,EAAE,IAAI;AACvC,YAAM,SAAS,UAAU,QAAQ,EAAE,IAAI;AACvC,UAAI,WAAW,MAAM,WAAW,GAAW,QAAA;AACvC,UAAA,WAAW,GAAW,QAAA;AACtB,UAAA,WAAW,GAAW,QAAA;AAC1B,aAAO,SAAS;AAAA,IAAA,CACjB;AAEM,WAAA;AAAA,EAAA,GACN,CAAC,YAAY,aAAa,WAAW,UAAU,MAAM,qCAAU,UAAU,CAAC;AAG7E,MAAI,gBAAgB;AACpB,MACE,CAAC,QAAQ,QAAQ,EAAE,UAAS,qCAAU,eAAc,EAAE,KACtD,CAAC,YAAY,SAAS,aAAa,GACnC;AACgB,oBAAA;AAAA,EAAA;AAGZ,QAAA,cAAa,qCAAU,eAAc;AACvB,wCAAU,gBAAe;AAGvC,QAAA,EAAE,aAAa,IAAI,gBAAgB;AAAA,IACvC,UAAU,SAAS,IAAI,CAAC,WAAY;;AAAA;AAAA,QAClC,IAAI,OAAO;AAAA,QACX,aAAa,OAAO,eAAe;AAAA,QACnC,WAAU,YAAO,WAAP,mBAAe;AAAA,QACzB,SAAO,YAAO,SAAP,mBAAa,cAAa,CAAA;AAAA,MAAC;AAAA,KAClC;AAAA,IACF;AAAA,EAAA,CACD;AAEK,QAAA,eAA8D,CAAC,KAAK,UAAU;AAC9E,QAAA,IAAI,WAAW,SAAS,GAAG;AACrB,cAAA;AAAA,QACN,CAAC,IAAI,QAAQ,WAAW,EAAE,CAAC,GAAG;AAAA,MAChC;AACM,YAAA;AAAA,IAAA;AAGA,YAAA,IAAI,gBAAgB,KAAK,KAAK;AAItC,gBAAY,CAAC,UAAU;AAAA,MACrB,GAAG;AAAA,MACH,CAAC,GAAG,GAAG;AAAA,IAAA,EACP;AAGF,iBAAa,KAAK,KAAK;AAAA,EACzB;AAGE,SAAAC,sCAAC,WAAQ,OAAO,EAAE,SAAS,GAAG,UAAU,YACtC,UAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,MAAM,YAAY,CAAC;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,IAAA;AAAA,EAAA,GAEd;AAEJ;"}
1
+ {"version":3,"file":"DetailsPanelAttributes.es.js","sources":["../../../../../src/components/DetailsPanelAttributes/DetailsPanelAttributes.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\nimport { Section } from '@ynput/ayon-react-components'\nimport { getMixedState } from '@shared/util'\nimport { useGetSiteInfoQuery, useGetProjectQuery } from '@shared/api'\nimport {\n DetailsPanelAttributesEditor,\n AttributeField,\n DetailsPanelAttributesEditorProps,\n} from './DetailsPanelAttributesEditor'\nimport { useEntityUpdate } from '@shared/hooks'\nimport { upperFirst } from 'lodash'\nimport type { DetailsPanelEntityData } from '@shared/api'\n\ntype EntityForm = {\n id: string\n name: string\n label: string | null | undefined\n entityType: 'folder' | 'task' | 'product' | 'version'\n taskType?: string\n folderType?: string\n productType?: string\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n projectName: string\n path: string\n // attribs\n [key: string]: string | number | boolean | Date | any[] | Record<string, any> | undefined | null\n}\n\n// all fields in entity form are visible\nconst visibleFields: Array<keyof EntityForm> = [\n 'id',\n 'name',\n 'label',\n 'entityType',\n 'taskType',\n 'folderType',\n 'productType',\n 'tags',\n 'status',\n 'updatedAt',\n 'createdAt',\n 'projectName',\n 'path',\n]\n\nconst readOnlyFields: Array<keyof EntityForm> = [\n 'id',\n 'entityType',\n 'projectName',\n 'path',\n 'createdAt',\n 'updatedAt',\n]\n\nexport type DetailsPanelAttributesProps = {\n entities: DetailsPanelEntityData[]\n isLoading: boolean\n}\n\nexport const DetailsPanelAttributes = ({\n entities = [],\n isLoading,\n}: DetailsPanelAttributesProps) => {\n // form for project data\n const [mixedFields, setMixedFields] = useState<string[]>([])\n const [formData, setFormData] = useState<EntityForm | null>(null)\n\n const buildInitialForm = () => {\n // Group entity values by field name\n const valuesByField: Record<string, any[]> = {}\n // Track which fields have mixed values\n const mixedFieldsSet = new Set<string>()\n\n entities.forEach((entity) => {\n const mappedEntity: EntityForm = {\n id: entity.id,\n name: entity.name,\n label: entity.label,\n entityType: entity.entityType as 'folder' | 'task' | 'product' | 'version',\n createdAt: entity.createdAt,\n updatedAt: entity.updatedAt,\n projectName: entity.projectName,\n status: entity.status,\n tags: entity.tags || [],\n path: entity.path,\n folderType: entity.folder?.folderType,\n productType: entity.product?.productType,\n taskType: entity.task?.taskType,\n }\n\n // Process regular fields\n Object.keys(mappedEntity).forEach((key) => {\n if (visibleFields.includes(key as keyof EntityForm)) {\n valuesByField[key] = valuesByField[key] || []\n valuesByField[key].push((mappedEntity as any)[key])\n }\n })\n\n // Process attrib fields\n if (entity.attrib) {\n Object.keys(entity.attrib).forEach((key) => {\n const attribKey = `attrib.${key}`\n valuesByField[attribKey] = valuesByField[attribKey] || []\n valuesByField[attribKey].push(entity.attrib?.[key])\n })\n }\n })\n\n // Apply getMixedState to each field\n const formData = Object.entries(valuesByField).reduce((result, [key, values]) => {\n const { value, isMixed } = getMixedState(values)\n result[key] = value\n\n // Add to mixedFields if this field has mixed values\n if (isMixed) {\n mixedFieldsSet.add(key)\n }\n\n return result\n }, {} as Record<string, any>)\n\n setFormData(formData as EntityForm)\n // Update the mixedFields state with all fields that have mixed values\n setMixedFields(Array.from(mixedFieldsSet))\n }\n\n useEffect(() => {\n if (isLoading || entities.length === 0) return\n buildInitialForm()\n }, [entities, isLoading])\n\n const { data: projectData } = useGetProjectQuery(\n { projectName: formData?.projectName || '' },\n { skip: !formData?.projectName || mixedFields.includes('projectName') },\n )\n const { folderTypes = [], taskTypes = [], statuses = [], tags = [] } = projectData || {}\n\n const { data: info } = useGetSiteInfoQuery({ full: true })\n const { attributes = [] } = info || {}\n\n // build the fields array for defining the schema\n const fields: AttributeField[] = useMemo(() => {\n // Create custom fields as proper AttributeModel objects\n const customFieldsData: AttributeField[] = [\n {\n name: 'name',\n data: {\n type: 'string',\n title: 'Name',\n description: 'The name of the entity, used for identification in the pipeline',\n },\n },\n {\n name: 'label',\n data: {\n type: 'string',\n title: 'Label',\n description: 'Used as a nice visual label only',\n },\n },\n {\n name: 'folderType',\n hidden: formData?.entityType !== 'folder',\n data: {\n type: 'string',\n title: 'Folder Type',\n description: 'Type of the folder',\n enum: folderTypes.map((type) => ({\n value: type.name,\n label: type.name,\n icon: type.icon,\n })),\n },\n },\n {\n name: 'taskType',\n hidden: formData?.entityType !== 'task',\n data: {\n type: 'string',\n title: 'Task Type',\n description: 'Type of the task',\n enum: taskTypes.map((type) => ({\n value: type.name,\n label: type.name,\n icon: type.icon,\n })),\n },\n },\n {\n name: 'status',\n data: {\n type: 'string',\n title: 'Status',\n description: 'The state the entity is in, is it approved or in progress etc.',\n enum: statuses.map((status) => ({\n value: status.name,\n label: status.name,\n icon: status.icon,\n color: status.color,\n })),\n },\n },\n {\n name: 'tags',\n data: {\n type: 'list_of_strings',\n title: 'Tags',\n enum: tags.map((tag) => ({\n value: tag.name,\n label: tag.name,\n color: tag.color,\n })),\n },\n },\n ]\n\n // Filter API attributes based on entity type\n const apiAttributesData: AttributeField[] = formData?.entityType\n ? attributes\n .filter((attr) => attr.scope?.includes(formData.entityType))\n .map((attr) => ({\n name: 'attrib.' + attr.name,\n data: attr.data,\n }))\n : []\n\n const readOnlyFieldsData: AttributeField[] = readOnlyFields.map((field) => ({\n name: field as string,\n readonly: true,\n data: {\n type: 'string',\n title: upperFirst(field as string),\n },\n }))\n\n // Combine custom fields with API attributes\n const allFieldsData = [...customFieldsData, ...apiAttributesData, ...readOnlyFieldsData]\n const sortToTop = ['path', 'name']\n const sortedFieldsData = [...allFieldsData].sort((a, b) => {\n const aIndex = sortToTop.indexOf(a.name)\n const bIndex = sortToTop.indexOf(b.name)\n if (aIndex === -1 && bIndex === -1) return 0\n if (aIndex === -1) return 1\n if (bIndex === -1) return -1\n return aIndex - bIndex\n })\n\n return sortedFieldsData\n }, [attributes, folderTypes, taskTypes, statuses, tags, formData?.entityType])\n\n //\n let enableEditing = false\n if (\n ['task', 'folder'].includes(formData?.entityType || '') &&\n !mixedFields.includes('projectName')\n ) {\n enableEditing = true\n }\n\n const entityType = formData?.entityType || 'task'\n const projectName = formData?.projectName || ''\n\n // Setup entity update functionality\n const { updateEntity } = useEntityUpdate({\n entities: entities.map((entity) => ({\n id: entity.id,\n projectName: entity.projectName || '',\n folderId: entity.folder?.id,\n users: entity.task?.assignees || [],\n })),\n entityType,\n })\n\n const handleChange: DetailsPanelAttributesEditorProps['onChange'] = (key, value) => {\n if (key.startsWith('attrib.')) {\n value = {\n [key.replace('attrib.', '')]: value,\n }\n key = 'attrib'\n }\n\n console.log('handleChange', key, value)\n\n // update the form data\n // @ts-ignore\n setFormData((prev) => ({\n ...prev,\n [key]: value,\n }))\n\n // update the entity in database\n updateEntity(key, value)\n }\n\n return (\n <Section style={{ padding: 8, overflow: 'hidden' }}>\n <DetailsPanelAttributesEditor\n fields={fields}\n form={formData || {}}\n mixedFields={mixedFields}\n isLoading={isLoading}\n enableEditing={enableEditing}\n onChange={handleChange}\n />\n </Section>\n )\n}\n"],"names":["_a","formData","jsx"],"mappings":"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"}
@@ -105,6 +105,7 @@ require("../../api/queries/addons/updateAddons.cjs.js");
105
105
  require("../../api/queries/attributes/getAttributes.cjs.js");
106
106
  require("../../api/queries/attributes/updateAttributes.cjs.js");
107
107
  require("../../api/queries/authentication/getAuthentication.cjs.js");
108
+ require("../../api/queries/cloud/cloud.cjs.js");
108
109
  require("../../api/queries/entities/getEntity.cjs.js");
109
110
  require("../../api/queries/entities/getEntityPanel.cjs.js");
110
111
  const updateEntity = require("../../api/queries/entities/updateEntity.cjs.js");
@@ -113,24 +114,24 @@ require("../../api/queries/entityLists/updateLists.cjs.js");
113
114
  require("../../api/queries/entityLists/getListsAttributes.cjs.js");
114
115
  require("../../api/queries/entityLists/updateListsAttributes.cjs.js");
115
116
  require("../../api/queries/folders/getFolders.cjs.js");
117
+ require("../../api/queries/grouping/getGrouping.cjs.js");
116
118
  require("../../api/queries/overview/getOverview.cjs.js");
117
119
  require("../../api/queries/overview/updateOverview.cjs.js");
120
+ require("../../api/queries/permissions/getPermissions.cjs.js");
121
+ const createProduct = require("../../api/queries/products/createProduct.cjs.js");
118
122
  require("../../api/queries/project/getProject.cjs.js");
119
123
  require("../../api/queries/project/updateProject.cjs.js");
120
124
  require("../../api/queries/review/getReview.cjs.js");
121
125
  require("../../api/queries/review/updateReview.cjs.js");
126
+ require("../../api/queries/share/share.cjs.js");
122
127
  require("../../api/queries/system/getSystem.cjs.js");
123
128
  require("../../api/queries/userDashboard/getUserDashboard.cjs.js");
124
129
  require("../../api/queries/users/getUsers.cjs.js");
125
130
  require("../../api/queries/users/updateUsers.cjs.js");
126
- require("../../api/queries/watchers/getWatchers.cjs.js");
127
- require("../../api/queries/permissions/getPermissions.cjs.js");
128
- require("../../api/queries/grouping/getGrouping.cjs.js");
129
131
  const updateVersions = require("../../api/queries/versions/updateVersions.cjs.js");
130
- const createProduct = require("../../api/queries/products/createProduct.cjs.js");
131
- require("../../api/queries/cloud/cloud.cjs.js");
132
132
  require("../../api/queries/views/getViews.cjs.js");
133
133
  require("../../api/queries/views/updateViews.cjs.js");
134
+ require("../../api/queries/watchers/getWatchers.cjs.js");
134
135
  require("../../../../_virtual/runtime.cjs.js");
135
136
  require("../../../../_virtual/semver.cjs.js");
136
137
  require("react-redux");