@ynput/ayon-frontend-shared 0.2.44 → 0.3.0

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 (396) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +72 -65
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +104 -102
  6. package/dist/Slicer.cjs.js +1 -1
  7. package/dist/Slicer.es.js +113 -4
  8. package/dist/Slicer.es.js.map +1 -1
  9. package/dist/Views.cjs.js.map +1 -1
  10. package/dist/Views.es.js.map +1 -1
  11. package/dist/_virtual/index.cjs4.js +1 -1
  12. package/dist/_virtual/index.cjs5.js +1 -1
  13. package/dist/_virtual/index.es4.js +5 -2
  14. package/dist/_virtual/index.es4.js.map +1 -1
  15. package/dist/_virtual/index.es5.js +2 -5
  16. package/dist/_virtual/index.es5.js.map +1 -1
  17. package/dist/components.cjs.js +1 -1
  18. package/dist/components.es.js +141 -139
  19. package/dist/components.es.js.map +1 -1
  20. package/dist/index.cjs.js +1 -1
  21. package/dist/index.es.js +61 -54
  22. package/dist/index.es.js.map +1 -1
  23. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.cjs.js +5 -5
  24. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.cjs.js.map +1 -1
  25. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.es.js +313 -305
  26. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.es.js.map +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/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  30. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  31. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  32. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  33. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  34. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  35. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  36. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  37. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +73 -68
  38. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  39. package/dist/shared/src/api/queries/views/updateViews.cjs.js +1 -1
  40. package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
  41. package/dist/shared/src/api/queries/views/updateViews.es.js +1 -1
  42. package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
  43. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  44. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  45. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +57 -50
  46. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  47. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  48. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  49. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +45 -38
  50. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  51. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  52. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  53. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +47 -40
  54. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  55. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  56. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  57. package/dist/shared/src/components/Menu/MenuItem.es.js +21 -21
  58. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  59. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  60. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  61. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +49 -42
  62. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  63. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  64. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  65. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +44 -37
  66. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  67. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  68. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  69. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +48 -41
  70. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  71. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +2 -0
  72. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -0
  73. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +279 -0
  74. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -0
  75. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  76. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  77. package/dist/shared/src/components/RenameForm/RenameForm.es.js +48 -41
  78. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  79. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  80. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  81. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +64 -57
  82. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  83. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  84. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  85. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +54 -47
  86. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  87. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  88. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  89. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +53 -46
  90. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  91. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  92. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  93. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +52 -45
  94. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  95. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +2 -2
  96. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  97. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +56 -49
  98. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  99. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  100. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  101. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +53 -46
  102. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  103. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  104. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  105. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +54 -47
  106. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  107. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  108. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  109. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +70 -63
  110. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  111. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  112. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  113. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +49 -42
  114. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  115. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  116. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  117. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +68 -61
  118. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  119. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  120. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  121. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +93 -86
  122. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  123. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.cjs.js +1 -1
  124. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.cjs.js.map +1 -1
  125. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.es.js +47 -40
  126. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.es.js.map +1 -1
  127. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  128. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  129. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +46 -43
  130. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  131. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  132. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  133. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +49 -46
  134. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  135. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  136. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  137. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +49 -46
  138. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  139. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  140. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  141. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +49 -46
  142. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  143. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  144. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  145. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +50 -42
  146. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  147. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  148. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  149. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +55 -48
  150. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  151. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  152. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  153. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +70 -63
  154. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  155. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  156. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  157. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +47 -40
  158. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  159. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  160. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  161. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +468 -448
  162. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  163. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  164. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  165. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +96 -89
  166. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  167. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  168. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  169. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +47 -40
  170. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  171. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  172. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  173. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +57 -50
  174. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  175. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  176. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  177. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +54 -47
  178. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  179. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  180. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  181. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +1 -1
  182. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -1
  183. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +63 -68
  184. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -1
  185. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  186. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  187. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +49 -41
  188. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  189. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  190. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  191. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +51 -44
  192. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  193. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  194. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  195. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +48 -41
  196. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  197. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  198. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  199. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +55 -48
  200. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  201. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  202. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  203. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +54 -47
  204. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  205. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  206. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  207. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +51 -44
  208. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  209. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  210. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  211. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +51 -44
  212. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  213. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  214. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  215. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +51 -44
  216. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  217. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  218. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  219. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +54 -47
  220. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  221. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  222. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  223. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +46 -39
  224. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  225. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  226. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  227. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +46 -39
  228. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  229. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  230. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  231. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +48 -41
  232. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  233. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  234. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  235. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +62 -55
  236. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  237. package/dist/shared/src/containers/ProjectTreeTable/utils/restrictedEntity.cjs.js +1 -1
  238. package/dist/shared/src/containers/ProjectTreeTable/utils/restrictedEntity.cjs.js.map +1 -1
  239. package/dist/shared/src/containers/ProjectTreeTable/utils/restrictedEntity.es.js +11 -6
  240. package/dist/shared/src/containers/ProjectTreeTable/utils/restrictedEntity.es.js.map +1 -1
  241. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +2 -2
  242. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  243. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +16 -13
  244. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  245. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
  246. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  247. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +342 -116
  248. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  249. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidgetInput.cjs.js +2 -2
  250. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidgetInput.cjs.js.map +1 -1
  251. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidgetInput.es.js +47 -40
  252. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidgetInput.es.js.map +1 -1
  253. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +2 -2
  254. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  255. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +7 -7
  256. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  257. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  258. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  259. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +69 -62
  260. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  261. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  262. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  263. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +51 -44
  264. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  265. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidgetInput.cjs.js +2 -2
  266. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidgetInput.cjs.js.map +1 -1
  267. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidgetInput.es.js +29 -33
  268. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidgetInput.es.js.map +1 -1
  269. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  270. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  271. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +118 -111
  272. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  273. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  274. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  275. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +49 -46
  276. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  277. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -0
  278. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -0
  279. package/dist/shared/src/containers/Slicer/components/Slicer.es.js +82 -0
  280. package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -0
  281. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +27 -0
  282. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -0
  283. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +71 -0
  284. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -0
  285. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +10 -0
  286. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -0
  287. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +294 -0
  288. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -0
  289. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +2 -0
  290. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -0
  291. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +215 -0
  292. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -0
  293. package/dist/shared/src/containers/Slicer/hooks/useFiltersWithHierarchy.cjs.js.map +1 -0
  294. package/dist/shared/src/containers/Slicer/hooks/useFiltersWithHierarchy.es.js.map +1 -0
  295. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +2 -0
  296. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -0
  297. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +25 -0
  298. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -0
  299. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +2 -0
  300. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -0
  301. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +28 -0
  302. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -0
  303. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +2 -0
  304. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -0
  305. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +304 -0
  306. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -0
  307. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js +2 -0
  308. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -0
  309. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js +99 -0
  310. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -0
  311. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.cjs.js.map +1 -0
  312. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.es.js.map +1 -0
  313. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  314. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  315. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +95 -88
  316. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  317. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
  318. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  319. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +32 -31
  320. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  321. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  322. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  323. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +125 -121
  324. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  325. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
  326. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  327. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +47 -49
  328. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  329. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  330. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  331. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +6 -5
  332. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  333. package/dist/shared/src/context/AddonContext.cjs.js.map +1 -1
  334. package/dist/shared/src/context/AddonContext.es.js.map +1 -1
  335. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  336. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  337. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  338. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  339. package/dist/shared/src/context/WebsocketContext.es.js +51 -44
  340. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  341. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  342. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  343. package/dist/shared/src/hooks/useLoadModules.cjs.js +1 -1
  344. package/dist/shared/src/hooks/useLoadModules.cjs.js.map +1 -1
  345. package/dist/shared/src/hooks/useLoadModules.es.js +7 -7
  346. package/dist/shared/src/hooks/useLoadModules.es.js.map +1 -1
  347. package/dist/shared/src/util/columnConfigConverter.cjs.js +1 -1
  348. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
  349. package/dist/shared/src/util/columnConfigConverter.es.js +69 -46
  350. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
  351. package/dist/shared/src/util/getGroupByDataType.cjs.js +1 -1
  352. package/dist/shared/src/util/getGroupByDataType.cjs.js.map +1 -1
  353. package/dist/shared/src/util/getGroupByDataType.es.js +4 -4
  354. package/dist/shared/src/util/getGroupByDataType.es.js.map +1 -1
  355. package/dist/types/api/queries/activities/getActivities.d.ts +1 -1
  356. package/dist/types/api/queries/entityLists/getLists.d.ts +183 -183
  357. package/dist/types/api/queries/links/getLinks.d.ts +1 -1
  358. package/dist/types/api/queries/overview/getOverview.d.ts +1 -1
  359. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +1 -0
  360. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +2 -2
  361. package/dist/types/components/RemotePage/RemotePageWrapper.d.ts +28 -0
  362. package/dist/types/components/RemotePage/index.d.ts +1 -0
  363. package/dist/types/components/index.d.ts +31 -30
  364. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +0 -2
  365. package/dist/types/containers/ProjectTreeTable/context/ProjectTableProvider.d.ts +1 -4
  366. package/dist/types/containers/ProjectTreeTable/utils/restrictedEntity.d.ts +3 -3
  367. package/dist/types/containers/Slicer/components/Slicer.d.ts +9 -0
  368. package/dist/types/containers/Slicer/components/SlicerDropdownFallback.d.ts +7 -0
  369. package/dist/types/containers/Slicer/components/SlicerSearch.d.ts +6 -0
  370. package/dist/types/containers/Slicer/context/SlicerContext.d.ts +48 -0
  371. package/dist/types/containers/Slicer/hooks/index.d.ts +5 -0
  372. package/dist/types/containers/Slicer/{useFiltersWithHierarchy.d.ts → hooks/useFiltersWithHierarchy.d.ts} +1 -1
  373. package/dist/types/containers/Slicer/hooks/useProjectAnatomySlices.d.ts +51 -0
  374. package/dist/types/containers/Slicer/hooks/useSlicerAttributesData.d.ts +7 -0
  375. package/dist/types/containers/Slicer/hooks/useTableDataBySlice.d.ts +8 -0
  376. package/dist/types/containers/Slicer/hooks/useUsersTable.d.ts +10 -0
  377. package/dist/types/containers/Slicer/index.d.ts +4 -2
  378. package/dist/types/containers/Slicer/types.d.ts +35 -0
  379. package/dist/types/containers/Slicer/{createFilterFromSlicer.d.ts → util/createFilterFromSlicer.d.ts} +2 -2
  380. package/dist/types/containers/Slicer/util/index.d.ts +1 -0
  381. package/dist/types/containers/Views/ViewsMenuContainer/BaseViewsTags.d.ts +4 -1
  382. package/dist/types/containers/Views/hooks/pages/useOverviewViewSettings.d.ts +7 -1
  383. package/dist/types/containers/Views/index.d.ts +1 -1
  384. package/dist/types/containers/Views/utils/viewUpdateHelper.d.ts +1 -1
  385. package/dist/types/context/AddonContext.d.ts +10 -2
  386. package/dist/types/context/AddonProjectContext.d.ts +7 -12
  387. package/dist/types/hooks/useGroupByRemoteModules.d.ts +2 -1
  388. package/package.json +1 -1
  389. package/dist/shared/src/containers/Slicer/createFilterFromSlicer.cjs.js.map +0 -1
  390. package/dist/shared/src/containers/Slicer/createFilterFromSlicer.es.js.map +0 -1
  391. package/dist/shared/src/containers/Slicer/useFiltersWithHierarchy.cjs.js.map +0 -1
  392. package/dist/shared/src/containers/Slicer/useFiltersWithHierarchy.es.js.map +0 -1
  393. /package/dist/shared/src/containers/Slicer/{useFiltersWithHierarchy.cjs.js → hooks/useFiltersWithHierarchy.cjs.js} +0 -0
  394. /package/dist/shared/src/containers/Slicer/{useFiltersWithHierarchy.es.js → hooks/useFiltersWithHierarchy.es.js} +0 -0
  395. /package/dist/shared/src/containers/Slicer/{createFilterFromSlicer.cjs.js → util/createFilterFromSlicer.cjs.js} +0 -0
  396. /package/dist/shared/src/containers/Slicer/{createFilterFromSlicer.es.js → util/createFilterFromSlicer.es.js} +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 accessLevel: 30,\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 // Also update the getBaseView cache if this is a base view\n let baseViewPatch\n if (payload.label === '__base__') {\n // Check if the getBaseView cache exists before updating\n const currentBaseView = getViewsApi.endpoints.getBaseView.select({\n viewType: arg.viewType,\n projectName: arg.projectName,\n })(state)\n\n // Only perform optimistic update if cache is initialized (even if data is null)\n if (currentBaseView !== undefined) {\n const newBaseView = {\n ...payload,\n working: false,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n owner: user,\n accessLevel: 30,\n position: 0,\n }\n\n baseViewPatch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getBaseView',\n { viewType: arg.viewType, projectName: arg.projectName },\n () => newBaseView as any,\n ),\n )\n } else {\n // No cache exists yet, optimistic update will be skipped\n // The invalidation tags will handle the refetch\n console.log('Skipping optimistic update for getBaseView - cache does not exist yet')\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 if (baseViewPatch) {\n baseViewPatch.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, getState }) => {\n const { viewId, projectName, viewType } = arg\n const state = getState()\n\n // Optimistically remove the view from the list\n const patches: any[] = []\n\n patches.push(\n dispatch(\n getViewsApi.util.updateQueryData('listViews', { viewType, projectName }, (draft) => {\n return draft.filter((view) => view.id !== viewId)\n }),\n ),\n )\n\n // Check both project and studio level for base and default views\n const scopesToCheck = [\n { projectName },\n { projectName: undefined }, // studio level\n ]\n const queriesToCheck = ['getBaseView', 'getDefaultView'] as const\n\n for (const scope of scopesToCheck) {\n for (const queryName of queriesToCheck) {\n const currentView = getViewsApi.endpoints[queryName].select({\n viewType,\n projectName: scope.projectName,\n })(state)\n\n if (currentView?.isSuccess && currentView.data?.id === viewId) {\n patches.push(\n dispatch(\n getViewsApi.util.updateQueryData(\n queryName,\n { viewType, projectName: scope.projectName },\n () => null as any,\n ),\n ),\n )\n }\n }\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, roll back all optimistic updates\n patches.forEach((patch) => 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 getScopeTag(viewType, undefined),\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":["updateViewsApi","getViewsApi","arg","dispatch","queryFulfilled","getState","payload","state","user","patch","draft","newView","existingWorkingIndex","view","existingId","a","b","workingViewPatch","updatedWorkingView","baseViewPatch","newBaseView","error","_r","_e","viewType","projectName","getScopeTag","viewId","patches","scopesToCheck","queriesToCheck","scope","queryName","currentView","setDefaultViewRequestModel","currentDefaultView","useCreateViewMutation","useUpdateViewMutation","useDeleteViewMutation","useSetDefaultViewMutation"],"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 accessLevel: 30,\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 // Also update the getBaseView cache if this is a base view\n let baseViewPatch\n if (payload.label === '__base__') {\n // Check if the getBaseView cache exists before updating\n const currentBaseView = getViewsApi.endpoints.getBaseView.select({\n viewType: arg.viewType,\n projectName: arg.projectName,\n })(state)\n\n // Only perform optimistic update if cache is initialized (even if data is null)\n if (currentBaseView !== undefined) {\n const newBaseView = {\n ...payload,\n working: false,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n owner: user,\n accessLevel: 30,\n position: 0,\n }\n\n baseViewPatch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getBaseView',\n { viewType: arg.viewType, projectName: arg.projectName },\n () => newBaseView as any,\n ),\n )\n } else {\n // No cache exists yet, optimistic update will be skipped\n // The invalidation tags will handle the refetch\n console.log('Skipping optimistic update for getBaseView - cache does not exist yet')\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 if (baseViewPatch) {\n baseViewPatch.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, getState }) => {\n const { viewId, projectName, viewType } = arg\n const state = getState()\n\n // Optimistically remove the view from the list\n const patches: any[] = []\n\n patches.push(\n dispatch(\n getViewsApi.util.updateQueryData('listViews', { viewType, projectName }, (draft) => {\n return draft.filter((view) => view.id !== viewId)\n }),\n ),\n )\n\n // Check both project and studio level for base and default views\n const scopesToCheck = [\n { projectName },\n { projectName: undefined }, // studio level\n ]\n const queriesToCheck = ['getBaseView', 'getDefaultView'] as const\n\n for (const scope of scopesToCheck) {\n for (const queryName of queriesToCheck) {\n const currentView = getViewsApi.endpoints[queryName].select({\n viewType,\n projectName: scope.projectName,\n })(state)\n\n if (currentView?.isSuccess && currentView.data?.id === viewId) {\n patches.push(\n dispatch(\n getViewsApi.util.updateQueryData(\n queryName,\n { viewType, projectName: scope.projectName },\n () => null as any,\n ),\n ),\n )\n }\n }\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, roll back all optimistic updates\n patches.forEach((patch) => 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 getScopeTag(viewType, undefined),\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":["updateViewsApi","getViewsApi","arg","dispatch","queryFulfilled","getState","payload","state","user","patch","draft","newView","existingWorkingIndex","view","existingId","a","b","workingViewPatch","updatedWorkingView","baseViewPatch","newBaseView","error","_r","_e","viewType","projectName","getScopeTag","viewId","patches","scopesToCheck","queriesToCheck","scope","queryName","currentView","setDefaultViewRequestModel","currentDefaultView","useCreateViewMutation","useUpdateViewMutation","useDeleteViewMutation","useSetDefaultViewMutation"],"mappings":"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"}
@@ -3,7 +3,7 @@ const f = u.enhanceEndpoints({
3
3
  endpoints: {
4
4
  createView: {
5
5
  onQueryStarted: async (e, { dispatch: c, queryFulfilled: a, getState: n }) => {
6
- const { payload: i } = e, d = n(), p = d.user.name, v = c(
6
+ const { payload: i } = e, d = n(), p = d.user?.name, v = c(
7
7
  u.util.updateQueryData(
8
8
  "listViews",
9
9
  { viewType: e.viewType, projectName: e.projectName },
@@ -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 accessLevel: 30,\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 // Also update the getBaseView cache if this is a base view\n let baseViewPatch\n if (payload.label === '__base__') {\n // Check if the getBaseView cache exists before updating\n const currentBaseView = getViewsApi.endpoints.getBaseView.select({\n viewType: arg.viewType,\n projectName: arg.projectName,\n })(state)\n\n // Only perform optimistic update if cache is initialized (even if data is null)\n if (currentBaseView !== undefined) {\n const newBaseView = {\n ...payload,\n working: false,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n owner: user,\n accessLevel: 30,\n position: 0,\n }\n\n baseViewPatch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getBaseView',\n { viewType: arg.viewType, projectName: arg.projectName },\n () => newBaseView as any,\n ),\n )\n } else {\n // No cache exists yet, optimistic update will be skipped\n // The invalidation tags will handle the refetch\n console.log('Skipping optimistic update for getBaseView - cache does not exist yet')\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 if (baseViewPatch) {\n baseViewPatch.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, getState }) => {\n const { viewId, projectName, viewType } = arg\n const state = getState()\n\n // Optimistically remove the view from the list\n const patches: any[] = []\n\n patches.push(\n dispatch(\n getViewsApi.util.updateQueryData('listViews', { viewType, projectName }, (draft) => {\n return draft.filter((view) => view.id !== viewId)\n }),\n ),\n )\n\n // Check both project and studio level for base and default views\n const scopesToCheck = [\n { projectName },\n { projectName: undefined }, // studio level\n ]\n const queriesToCheck = ['getBaseView', 'getDefaultView'] as const\n\n for (const scope of scopesToCheck) {\n for (const queryName of queriesToCheck) {\n const currentView = getViewsApi.endpoints[queryName].select({\n viewType,\n projectName: scope.projectName,\n })(state)\n\n if (currentView?.isSuccess && currentView.data?.id === viewId) {\n patches.push(\n dispatch(\n getViewsApi.util.updateQueryData(\n queryName,\n { viewType, projectName: scope.projectName },\n () => null as any,\n ),\n ),\n )\n }\n }\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, roll back all optimistic updates\n patches.forEach((patch) => 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 getScopeTag(viewType, undefined),\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":["updateViewsApi","getViewsApi","arg","dispatch","queryFulfilled","getState","payload","state","user","patch","draft","newView","existingWorkingIndex","view","existingId","a","b","workingViewPatch","updatedWorkingView","baseViewPatch","newBaseView","error","_r","_e","viewType","projectName","getScopeTag","viewId","patches","scopesToCheck","queriesToCheck","scope","queryName","currentView","setDefaultViewRequestModel","currentDefaultView","v","useCreateViewMutation","useUpdateViewMutation","useDeleteViewMutation","useSetDefaultViewMutation"],"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 accessLevel: 30,\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 // Also update the getBaseView cache if this is a base view\n let baseViewPatch\n if (payload.label === '__base__') {\n // Check if the getBaseView cache exists before updating\n const currentBaseView = getViewsApi.endpoints.getBaseView.select({\n viewType: arg.viewType,\n projectName: arg.projectName,\n })(state)\n\n // Only perform optimistic update if cache is initialized (even if data is null)\n if (currentBaseView !== undefined) {\n const newBaseView = {\n ...payload,\n working: false,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n owner: user,\n accessLevel: 30,\n position: 0,\n }\n\n baseViewPatch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getBaseView',\n { viewType: arg.viewType, projectName: arg.projectName },\n () => newBaseView as any,\n ),\n )\n } else {\n // No cache exists yet, optimistic update will be skipped\n // The invalidation tags will handle the refetch\n console.log('Skipping optimistic update for getBaseView - cache does not exist yet')\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 if (baseViewPatch) {\n baseViewPatch.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, getState }) => {\n const { viewId, projectName, viewType } = arg\n const state = getState()\n\n // Optimistically remove the view from the list\n const patches: any[] = []\n\n patches.push(\n dispatch(\n getViewsApi.util.updateQueryData('listViews', { viewType, projectName }, (draft) => {\n return draft.filter((view) => view.id !== viewId)\n }),\n ),\n )\n\n // Check both project and studio level for base and default views\n const scopesToCheck = [\n { projectName },\n { projectName: undefined }, // studio level\n ]\n const queriesToCheck = ['getBaseView', 'getDefaultView'] as const\n\n for (const scope of scopesToCheck) {\n for (const queryName of queriesToCheck) {\n const currentView = getViewsApi.endpoints[queryName].select({\n viewType,\n projectName: scope.projectName,\n })(state)\n\n if (currentView?.isSuccess && currentView.data?.id === viewId) {\n patches.push(\n dispatch(\n getViewsApi.util.updateQueryData(\n queryName,\n { viewType, projectName: scope.projectName },\n () => null as any,\n ),\n ),\n )\n }\n }\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, roll back all optimistic updates\n patches.forEach((patch) => 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 getScopeTag(viewType, undefined),\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":["updateViewsApi","getViewsApi","arg","dispatch","queryFulfilled","getState","payload","state","user","patch","draft","newView","existingWorkingIndex","view","existingId","a","b","workingViewPatch","updatedWorkingView","baseViewPatch","newBaseView","error","_r","_e","viewType","projectName","getScopeTag","viewId","patches","scopesToCheck","queriesToCheck","scope","queryName","currentView","setDefaultViewRequestModel","currentDefaultView","v","useCreateViewMutation","useUpdateViewMutation","useDeleteViewMutation","useSetDefaultViewMutation"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../../../../_virtual/jsx-runtime.cjs.js"),o=require("react"),se=require("clsx");require("../../containers/ContextMenu/ContextMenuContext.cjs.js");require("@ynput/ayon-react-components");;/* empty css */require("react-dom");require("../../containers/Feed/context/FeedContext.cjs.js");require("../../containers/Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../context/RemoteModulesContext.cjs.js");const oe=require("../../context/DetailsPanelContext.cjs.js"),ae=require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("../../context/UriContext.cjs.js");require("../../containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../containers/Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../../containers/Feed/components/CommentInput/CommentInput.cjs.js");require("../../containers/Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../../containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../../containers/Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../containers/Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("lodash");require("../../containers/Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js");const w=require("react-toastify");require("uuid");const d=require("../../util/versionUploadHelpers.cjs.js");require("../../util/pubsub.cjs.js");require("react-router-dom");require("../../containers/Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../containers/Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../containers/Feed/components/ActivityDate.cjs.js");require("../AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../ThumbnailSimple/ThumbnailSimple.cjs.js");require("../EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");const qe=require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");const le=require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");const ce=require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../ReviewablesList/ReviewablesList.styled.cjs.js");require("../ReviewablesList/ReviewablesUpload.styled.cjs.js");const de=require("../ReviewablesList/useReviewablesUpload.cjs.js");require("../ReviewableCard/ReviewableCard.cjs.js");require("../ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../FileThumbnail/FileThumbnail.cjs.js");require("../Thumbnail/Thumbnail.styled.cjs.js");require("../Thumbnail/StackedThumbnails.cjs.js");const p=require("./EntityPanelUploader.styled.cjs.js"),pe=require("./Dropzone.cjs.js"),he=require("axios"),fe=require("./EntityPanelUploaderDialog.cjs.js");require("../SimpleFormDialog/SimpleFormDialog.cjs.js");require("../EntityPath/EntityPath.styled.cjs.js");require("../EntityPath/SegmentProvider.cjs.js");require("../DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../DetailsPanelDetails/DetailsSection.cjs.js");require("../DetailsPanelDetails/FieldLabel.cjs.js");require("../Watchers/Watchers.cjs.js");require("../ProjectTableSettings/ProjectTableSettings.cjs.js");require("../Powerpack/PowerpackButton.cjs.js");require("../Powerpack/PricingLink.cjs.js");require("../Powerpack/PowerpackDialog.styled.cjs.js");require("../Powerpack/CTAButton.cjs.js");require("../Powerpack/RequiredAddonVersion.cjs.js");require("../SizeSlider/SizeSlider.cjs.js");require("../SettingsPanel/SettingsPanel.cjs.js");require("../SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../AttributeEditor/components/MinMaxField.cjs.js");require("../EnumEditor/EnumEditor.styled.cjs.js");require("../SearchFilter/filterDates.cjs.js");require("../FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../Badge/Badge.cjs.js");require("../VersionUploader/components/UploadVersionDialog.cjs.js");require("../VersionUploader/context/VersionUploadContext.cjs.js");require("../Feedback/FeedbackContext.cjs.js");require("../Feedback/SupportBubble.cjs.js");require("../Chips/Chips.cjs.js");require("../LinksManager/LinksManager.styled.cjs.js");require("../../containers/EntityPickerDialog/EntityPickerDialog.cjs.js");require("../StyledLink/StyledLink.cjs.js");require("date-fns");require("../ShareOptionIcon/ShareOptionIcon.cjs.js");require("../AccessUser/AccessUser.cjs.js");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../TableGridSwitch/TableGridSwitch.cjs.js");require("../SortingSetting/SortingSetting.styled.cjs.js");require("../EarlyPreview/EarlyPreview.cjs.js");require("../LegacyBadge/LegacyBadge.cjs.js");require("../Menu/Menu.styled.cjs.js");require("../Menu/MenuItem.cjs.js");require("../../containers/Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../../containers/Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../../containers/Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../../containers/Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../../containers/Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../../containers/Feed/Feed.styled.cjs.js");require("../../containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../containers/Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("@tanstack/react-virtual");require("@tanstack/react-table");require("../../containers/ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/DateWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/TextWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/CellWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../LinksManager/CellEditingDialog.cjs.js");require("../../containers/ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../../containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../../containers/ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../../containers/ProjectTreeTable/context/CellEditingContext.cjs.js");require("short-uuid");require("../../containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../../containers/ProjectTreeTable/context/ClipboardContext.cjs.js");require("../../containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectDataContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../../containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("../../containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../../containers/ProjectTreeTable/components/SelectionCell.cjs.js");require("../../containers/ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../../containers/ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../../containers/ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../../containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js");require("../../containers/DetailsPanel/DetailsPanel.styled.cjs.js");require("../../containers/DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");const ge=require("../../containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../PlayableIcon/PlayableIcon.cjs.js");require("../../containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../containers/Actions/Actions.styled.cjs.js");require("../../containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../containers/Actions/ActionIcon.cjs.js");require("../../containers/Views/context/ViewsContext.cjs.js");require("../../containers/Views/Views.styled.cjs.js");require("../../containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../containers/Views/ViewsMenu/ViewsMenu.cjs.js");const me=[{id:"thumbnail",label:"Upload thumbnail",icon:"add_photo_alternate"},{id:"version",label:"Upload version",icon:"layers"}],xe=({children:H=[],entityType:T,entities:q=[],projectName:y,onUploaded:I,onVersionCreated:_})=>{const{dispatch:k}=oe.useDetailsPanelContext(),[S,h]=o.useState(!1),[b,f]=o.useState(null),c=o.useRef(0),[j,l]=o.useState(null),[L,v]=o.useState(0),[W,g]=o.useState(!1),[D,m]=o.useState(null),n=q.length===1?q[0]:null,C=n?.task?.id,E=n?.folder?.id,B=n?.product?.id,G=n?.id,P=!!(n&&T!=="representation"),{handleFileUpload:J}=de.useReviewablesUpload({projectName:y,versionId:G,taskId:C,folderId:E,productId:B,dispatch:k,onUpload:()=>{l(null),v(0)},onProgress:e=>{v(e)}}),K=me.filter(e=>e.id==="version"?P:!0),s=()=>{l(null),h(!1),f(null),c.current=0,v(0),g(!1),m(null)},Q=async e=>{if(!D||!n){g(!1),m(null);return}const r=d.sanitizeProductName(e);if(!r.trim()){w.toast.error("Product name must contain valid characters (letters, numbers, underscore, or hyphen)");return}try{if(!E)throw new Error("Folder ID is required to create a product");l("version");const i=await d.createProductHelper(z,y,{folderId:E,name:r,productType:"review"});g(!1),await F(D,i.id),m(null)}catch(i){d.handleUploadError(i,"creating product"),s()}},X=()=>{g(!1),m(null),s()},[Y]=ce.useCreateVersionMutation(),[z]=le.useCreateProductMutation(),V=async e=>{if(!P||!n)return w.toast.error("Please select exactly one version to upload reviewables"),s();const r=n.product?.id;if(!r){m(e),g(!0);return}await F(e,r)},F=async(e,r)=>{try{const i=d.getNextVersionNumber(n.product?.latestVersion),t=await d.createVersionHelper(Y,y,{productId:r,taskId:C,version:i});await J(e,t.id),s(),_?.(t.id)}catch(i){d.handleUploadError(i,"uploading version"),s()}},N=async(e=[])=>{if(h(!1),!q.length)return;const r=new Date().toISOString();let i=[];for(const t of e){const a=q.find(R=>R.id===t.id);if(!a)continue;t.thumbnailId;const x=t.users||[];i.push({id:a.id,projectName:a.projectName,data:{updatedAt:r},currentAssignees:x}),a.productId}try{await ee({operations:i,entityType:T}),I&&I(i)}catch(t){console.error("Error uploading thumbnail:",t)}},O=async e=>{if(!e)return s();try{if(!e.type.includes("image"))throw new Error("File is not an image");let r=[];for(const a of q){const{id:x,entityType:R,projectName:U}=a;if(!U)throw new Error("Project name is required");const ne=he.post(U&&`/api/projects/${U}/${R}s/${x}/thumbnail`,e,{onUploadProgress:M=>{v(Math.round(100*M.loaded/(M.total||e.size)))},headers:{"Content-Type":e.type}});r.push(ne)}const t=(await Promise.all(r)).map((a,x)=>({thumbnailId:a.data.id,id:q[x].id}));N(t),s()}catch(r){console.error(r),w.toast.error(r.message),s()}},[ee]=qe.useUpdateEntitiesMutation(),re=e=>{e.preventDefault(),c.current++,c.current===1&&h(!0)},ie=e=>{e.preventDefault(),c.current--,c.current===0&&(h(!1),f(null))},ue=e=>{e.preventDefault()},te=e=>{if(e.preventDefault(),c.current=0,h(!1),f(null),!(!e.dataTransfer.files||e.dataTransfer.files.length===0)){if(b==="thumbnail"){l("thumbnail");const r=e.dataTransfer.files[0];O(r)}if(b==="version"){l("version");const r=e.dataTransfer.files;V(r)}}},Z=async(e,r)=>{const i=e.target.files;!i||i.length===0||(r==="version"&&(l("version"),V(i)),r==="thumbnail"&&(l("thumbnail"),O(i[0])))},$=o.useRef(null),A=o.useRef(null);return u.jsxRuntimeExports.jsxs(ae.ThumbnailUploadProvider,{entities:q,handleThumbnailUpload:N,thumbnailInputRef:$,versionsInputRef:P?A:void 0,children:[u.jsxRuntimeExports.jsxs(p.DragAndDropWrapper,{className:se({dragging:S}),onDragEnter:re,onDragLeave:ie,onDragOver:ue,onDrop:te,children:[u.jsxRuntimeExports.jsx(ge.ThumbnailWrapper,{children:u.jsxRuntimeExports.jsx("div",{children:H})}),S&&u.jsxRuntimeExports.jsx(p.DropZones,{children:K.map(e=>u.jsxRuntimeExports.jsx(pe,{id:e.id,label:e.label,icon:e.icon,isActive:b===e.id,onDragOver:()=>f(e.id),onDragLeave:()=>f(null)},e.id))}),(j==="thumbnail"||j==="version")&&u.jsxRuntimeExports.jsxs(p.DropZones,{children:[u.jsxRuntimeExports.jsxs(p.UploadingProgress,{children:[u.jsxRuntimeExports.jsx(p.Progress,{style:{right:`${100-L}%`}}),u.jsxRuntimeExports.jsx("span",{className:"label",children:`Uploading ${j}...`})]}),u.jsxRuntimeExports.jsx(p.CancelButton,{icon:"close",variant:"text",onClick:s})]}),u.jsxRuntimeExports.jsx("input",{type:"file",onChange:e=>Z(e,"thumbnail"),ref:$}),u.jsxRuntimeExports.jsx("input",{type:"file",onChange:e=>Z(e,"version"),ref:A})]}),u.jsxRuntimeExports.jsx(fe,{isOpen:W,files:D,onSubmit:Q,onCancel:X})]})};exports.EntityPanelUploader=xe;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../../../../_virtual/jsx-runtime.cjs.js"),o=require("react"),se=require("clsx");require("../../containers/ContextMenu/ContextMenuContext.cjs.js");require("@ynput/ayon-react-components");;/* empty css */require("react-dom");require("../../containers/Feed/context/FeedContext.cjs.js");require("../../containers/Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../context/RemoteModulesContext.cjs.js");const oe=require("../../context/DetailsPanelContext.cjs.js"),qe=require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("../../context/UriContext.cjs.js");require("../../containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../containers/Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../../containers/Feed/components/CommentInput/CommentInput.cjs.js");require("../../containers/Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../../containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../../containers/Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../containers/Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("lodash");require("../../containers/Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js");const w=require("react-toastify");require("uuid");const d=require("../../util/versionUploadHelpers.cjs.js");require("../../util/pubsub.cjs.js");require("react-router-dom");require("../../containers/Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../containers/Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../containers/Feed/components/ActivityDate.cjs.js");require("../AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../AccessUser/AccessUser.cjs.js");require("../AttributeEditor/components/MinMaxField.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../EnumEditor/EnumEditor.styled.cjs.js");require("../Badge/Badge.cjs.js");require("../Chips/Chips.cjs.js");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");const ae=require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");const le=require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");const ce=require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");require("../DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../DetailsPanelDetails/DetailsSection.cjs.js");require("../DetailsPanelDetails/FieldLabel.cjs.js");require("../EarlyPreview/EarlyPreview.cjs.js");require("../EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");const p=require("./EntityPanelUploader.styled.cjs.js"),de=require("./Dropzone.cjs.js"),pe=require("axios");require("../ReviewablesList/ReviewablesList.styled.cjs.js");require("../ReviewablesList/ReviewablesUpload.styled.cjs.js");const he=require("../ReviewablesList/useReviewablesUpload.cjs.js"),fe=require("./EntityPanelUploaderDialog.cjs.js");require("../EntityPath/EntityPath.styled.cjs.js");require("../EntityPath/SegmentProvider.cjs.js");require("../FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../Feedback/FeedbackContext.cjs.js");require("../Feedback/SupportBubble.cjs.js");require("../FileThumbnail/FileThumbnail.cjs.js");require("../LegacyBadge/LegacyBadge.cjs.js");require("../LinksManager/LinksManager.styled.cjs.js");require("../../containers/EntityPickerDialog/EntityPickerDialog.cjs.js");require("date-fns");require("../Powerpack/PowerpackButton.cjs.js");require("../Powerpack/PricingLink.cjs.js");require("../Powerpack/PowerpackDialog.styled.cjs.js");require("../Powerpack/CTAButton.cjs.js");require("../Powerpack/RequiredAddonVersion.cjs.js");require("../ProjectTableSettings/ProjectTableSettings.cjs.js");require("../SizeSlider/SizeSlider.cjs.js");require("../ReviewableCard/ReviewableCard.cjs.js");require("../ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../SearchFilter/filterDates.cjs.js");require("../SettingsPanel/SettingsPanel.cjs.js");require("../SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../ShareOptionIcon/ShareOptionIcon.cjs.js");require("../SimpleFormDialog/SimpleFormDialog.cjs.js");require("../SortingSetting/SortingSetting.styled.cjs.js");require("../StyledLink/StyledLink.cjs.js");require("../TableGridSwitch/TableGridSwitch.cjs.js");require("../Thumbnail/Thumbnail.styled.cjs.js");require("../Thumbnail/StackedThumbnails.cjs.js");require("../ThumbnailSimple/ThumbnailSimple.cjs.js");require("../VersionUploader/components/UploadVersionDialog.cjs.js");require("../VersionUploader/context/VersionUploadContext.cjs.js");require("../Watchers/Watchers.cjs.js");require("../Menu/Menu.styled.cjs.js");require("../Menu/MenuItem.cjs.js");require("../../containers/Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../../containers/Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../../containers/Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../../containers/Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../../containers/Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../../containers/Feed/Feed.styled.cjs.js");require("../../containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../containers/Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("@tanstack/react-virtual");require("@tanstack/react-table");require("../../containers/ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/DateWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/TextWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/CellWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../LinksManager/CellEditingDialog.cjs.js");require("../../containers/ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../../containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../../containers/ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../../containers/ProjectTreeTable/context/CellEditingContext.cjs.js");require("short-uuid");require("../../containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../../containers/ProjectTreeTable/context/ClipboardContext.cjs.js");require("../../containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectDataContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../../containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("../../containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../../containers/ProjectTreeTable/components/SelectionCell.cjs.js");require("../../containers/ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../../containers/ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../../containers/ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../../containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js");require("../../containers/SimpleTable/SimpleTable.styled.cjs.js");require("@tanstack/match-sorter-utils");require("../../containers/SimpleTable/context/SimpleTableContext.cjs.js");require("../../containers/SimpleTable/SimpleTableRowTemplate.cjs.js");require("../../containers/Slicer/hooks/useTableDataBySlice.cjs.js");require("../../containers/Slicer/components/SlicerSearch.cjs.js");require("../../containers/Slicer/context/SlicerContext.cjs.js");require("../../containers/DetailsPanel/DetailsPanel.styled.cjs.js");require("../../containers/DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");const ge=require("../../containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../PlayableIcon/PlayableIcon.cjs.js");require("../../containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../containers/Actions/Actions.styled.cjs.js");require("../../containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../containers/Actions/ActionIcon.cjs.js");require("../../containers/Views/context/ViewsContext.cjs.js");require("../../containers/Views/Views.styled.cjs.js");require("../../containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../containers/Views/ViewsMenu/ViewsMenu.cjs.js");const me=[{id:"thumbnail",label:"Upload thumbnail",icon:"add_photo_alternate"},{id:"version",label:"Upload version",icon:"layers"}],xe=({children:H=[],entityType:T,entities:a=[],projectName:y,onUploaded:I,onVersionCreated:_})=>{const{dispatch:k}=oe.useDetailsPanelContext(),[S,h]=o.useState(!1),[b,f]=o.useState(null),c=o.useRef(0),[j,l]=o.useState(null),[L,v]=o.useState(0),[W,g]=o.useState(!1),[D,m]=o.useState(null),n=a.length===1?a[0]:null,C=n?.task?.id,E=n?.folder?.id,B=n?.product?.id,G=n?.id,P=!!(n&&T!=="representation"),{handleFileUpload:J}=he.useReviewablesUpload({projectName:y,versionId:G,taskId:C,folderId:E,productId:B,dispatch:k,onUpload:()=>{l(null),v(0)},onProgress:e=>{v(e)}}),K=me.filter(e=>e.id==="version"?P:!0),s=()=>{l(null),h(!1),f(null),c.current=0,v(0),g(!1),m(null)},Q=async e=>{if(!D||!n){g(!1),m(null);return}const r=d.sanitizeProductName(e);if(!r.trim()){w.toast.error("Product name must contain valid characters (letters, numbers, underscore, or hyphen)");return}try{if(!E)throw new Error("Folder ID is required to create a product");l("version");const i=await d.createProductHelper(z,y,{folderId:E,name:r,productType:"review"});g(!1),await F(D,i.id),m(null)}catch(i){d.handleUploadError(i,"creating product"),s()}},X=()=>{g(!1),m(null),s()},[Y]=ce.useCreateVersionMutation(),[z]=le.useCreateProductMutation(),V=async e=>{if(!P||!n)return w.toast.error("Please select exactly one version to upload reviewables"),s();const r=n.product?.id;if(!r){m(e),g(!0);return}await F(e,r)},F=async(e,r)=>{try{const i=d.getNextVersionNumber(n.product?.latestVersion),t=await d.createVersionHelper(Y,y,{productId:r,taskId:C,version:i});await J(e,t.id),s(),_?.(t.id)}catch(i){d.handleUploadError(i,"uploading version"),s()}},N=async(e=[])=>{if(h(!1),!a.length)return;const r=new Date().toISOString();let i=[];for(const t of e){const q=a.find(R=>R.id===t.id);if(!q)continue;t.thumbnailId;const x=t.users||[];i.push({id:q.id,projectName:q.projectName,data:{updatedAt:r},currentAssignees:x}),q.productId}try{await ee({operations:i,entityType:T}),I&&I(i)}catch(t){console.error("Error uploading thumbnail:",t)}},O=async e=>{if(!e)return s();try{if(!e.type.includes("image"))throw new Error("File is not an image");let r=[];for(const q of a){const{id:x,entityType:R,projectName:U}=q;if(!U)throw new Error("Project name is required");const ne=pe.post(U&&`/api/projects/${U}/${R}s/${x}/thumbnail`,e,{onUploadProgress:M=>{v(Math.round(100*M.loaded/(M.total||e.size)))},headers:{"Content-Type":e.type}});r.push(ne)}const t=(await Promise.all(r)).map((q,x)=>({thumbnailId:q.data.id,id:a[x].id}));N(t),s()}catch(r){console.error(r),w.toast.error(r.message),s()}},[ee]=ae.useUpdateEntitiesMutation(),re=e=>{e.preventDefault(),c.current++,c.current===1&&h(!0)},ie=e=>{e.preventDefault(),c.current--,c.current===0&&(h(!1),f(null))},ue=e=>{e.preventDefault()},te=e=>{if(e.preventDefault(),c.current=0,h(!1),f(null),!(!e.dataTransfer.files||e.dataTransfer.files.length===0)){if(b==="thumbnail"){l("thumbnail");const r=e.dataTransfer.files[0];O(r)}if(b==="version"){l("version");const r=e.dataTransfer.files;V(r)}}},Z=async(e,r)=>{const i=e.target.files;!i||i.length===0||(r==="version"&&(l("version"),V(i)),r==="thumbnail"&&(l("thumbnail"),O(i[0])))},$=o.useRef(null),A=o.useRef(null);return u.jsxRuntimeExports.jsxs(qe.ThumbnailUploadProvider,{entities:a,handleThumbnailUpload:N,thumbnailInputRef:$,versionsInputRef:P?A:void 0,children:[u.jsxRuntimeExports.jsxs(p.DragAndDropWrapper,{className:se({dragging:S}),onDragEnter:re,onDragLeave:ie,onDragOver:ue,onDrop:te,children:[u.jsxRuntimeExports.jsx(ge.ThumbnailWrapper,{children:u.jsxRuntimeExports.jsx("div",{children:H})}),S&&u.jsxRuntimeExports.jsx(p.DropZones,{children:K.map(e=>u.jsxRuntimeExports.jsx(de,{id:e.id,label:e.label,icon:e.icon,isActive:b===e.id,onDragOver:()=>f(e.id),onDragLeave:()=>f(null)},e.id))}),(j==="thumbnail"||j==="version")&&u.jsxRuntimeExports.jsxs(p.DropZones,{children:[u.jsxRuntimeExports.jsxs(p.UploadingProgress,{children:[u.jsxRuntimeExports.jsx(p.Progress,{style:{right:`${100-L}%`}}),u.jsxRuntimeExports.jsx("span",{className:"label",children:`Uploading ${j}...`})]}),u.jsxRuntimeExports.jsx(p.CancelButton,{icon:"close",variant:"text",onClick:s})]}),u.jsxRuntimeExports.jsx("input",{type:"file",onChange:e=>Z(e,"thumbnail"),ref:$}),u.jsxRuntimeExports.jsx("input",{type:"file",onChange:e=>Z(e,"version"),ref:A})]}),u.jsxRuntimeExports.jsx(fe,{isOpen:W,files:D,onSubmit:Q,onCancel:X})]})};exports.EntityPanelUploader=xe;
2
2
  //# sourceMappingURL=EntityPanelUploader.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntityPanelUploader.cjs.js","sources":["../../../../../src/components/EntityPanelUploader/EntityPanelUploader.tsx"],"sourcesContent":["import { ChangeEvent, useRef, useState } from 'react'\nimport clsx from 'clsx'\n\nimport { ThumbnailWrapper } from '@shared/containers'\nimport {\n useCreateVersionMutation,\n useUpdateEntitiesMutation,\n useCreateProductMutation,\n} from '@shared/api'\nimport * as Styled from './EntityPanelUploader.styled'\nimport { ThumbnailUploadProvider } from '../../context/ThumbnailUploaderContext'\nimport Dropzone, { DropzoneType } from './Dropzone'\nimport axios from 'axios'\nimport { toast } from 'react-toastify'\nimport { useReviewablesUpload } from '../ReviewablesList'\nimport { useDetailsPanelContext } from '@shared/context'\nimport EntityPanelUploaderDialog from './EntityPanelUploaderDialog'\nimport {\n sanitizeProductName,\n createProductHelper,\n createVersionHelper,\n getNextVersionNumber,\n handleUploadError,\n} from '@shared/util'\n\ntype Operation = {\n id: string\n projectName: string\n currentAssignees: any[]\n data: { updatedAt: string }\n}\nexport type EntityPanelUploaderProps = {\n entityType: string\n entities: any[]\n projectName: any\n children?: JSX.Element | JSX.Element[]\n onUploaded?: (operations: Operation[]) => void\n resetFileUploadState?: () => void\n onVersionCreated?: (versionId: string) => void\n}\n\ntype UploadType = 'thumbnail' | 'version'\nconst dropZones: (DropzoneType & { id: UploadType })[] = [\n { id: 'thumbnail', label: 'Upload thumbnail', icon: 'add_photo_alternate' },\n { id: 'version', label: 'Upload version', icon: 'layers' },\n]\n\nexport const EntityPanelUploader = ({\n children = [],\n entityType,\n entities = [],\n projectName,\n onUploaded,\n onVersionCreated,\n}: EntityPanelUploaderProps) => {\n const { dispatch } = useDetailsPanelContext()\n // Dragging and dropping state\n const [isDraggingFile, setIsDraggingFile] = useState(false)\n const [draggingZone, setDraggingZone] = useState<UploadType | null>(null)\n const dragCounterRef = useRef(0)\n\n // Uploading state\n const [uploadingType, setUploadingType] = useState<UploadType | null>(null)\n const [progress, setProgress] = useState(0)\n\n // Dialog state for product creation\n const [showProductDialog, setShowProductDialog] = useState(false)\n const [pendingFiles, setPendingFiles] = useState<FileList | null>(null)\n\n // Check if we have exactly one entity selected\n const singleEntity = entities.length === 1 ? entities[0] : null\n // extra all entity IDs for the single version entity\n const taskId: string | undefined = singleEntity?.task?.id\n const folderId: string | undefined = singleEntity?.folder?.id\n const productId: string | undefined = singleEntity?.product?.id\n const versionId: string | undefined = singleEntity?.id\n const canUploadVersions = Boolean(singleEntity && entityType !== 'representation')\n\n // Use the custom hook for reviewable upload logic (only when single version)\n const { handleFileUpload: uploadReviewableFiles } = useReviewablesUpload({\n projectName,\n versionId: versionId,\n taskId: taskId,\n folderId: folderId,\n productId: productId,\n dispatch,\n onUpload: () => {\n setUploadingType(null)\n setProgress(0)\n },\n onProgress: (progress) => {\n setProgress(progress)\n },\n })\n\n // Filter drop zones based on whether we can upload reviewables\n const availableDropZones = dropZones.filter((zone) => {\n if (zone.id === 'version') {\n return canUploadVersions\n }\n return true\n })\n\n const resetState = () => {\n setUploadingType(null)\n setIsDraggingFile(false)\n setDraggingZone(null)\n dragCounterRef.current = 0\n setProgress(0)\n setShowProductDialog(false)\n setPendingFiles(null)\n }\n\n // Handle dialog submission - create product and upload version\n const handleDialogSubmit = async (productName: string) => {\n if (!pendingFiles || !singleEntity) {\n setShowProductDialog(false)\n setPendingFiles(null)\n return\n }\n\n const sanitizedName = sanitizeProductName(productName)\n\n if (!sanitizedName.trim()) {\n toast.error(\n 'Product name must contain valid characters (letters, numbers, underscore, or hyphen)',\n )\n return\n }\n\n try {\n if (!folderId) {\n throw new Error('Folder ID is required to create a product')\n }\n setUploadingType('version')\n\n // Create the product\n const productRes = await createProductHelper(createProduct, projectName, {\n folderId: folderId,\n name: sanitizedName,\n productType: 'review', // default product type for uploaded files\n })\n\n // Close dialog and proceed with version upload\n setShowProductDialog(false)\n await uploadVersionWithProduct(pendingFiles, productRes.id)\n setPendingFiles(null)\n } catch (error: any) {\n handleUploadError(error, 'creating product')\n resetState()\n }\n }\n\n // Handle dialog cancellation\n const handleDialogCancel = () => {\n setShowProductDialog(false)\n setPendingFiles(null)\n resetState()\n }\n\n const [createVersion] = useCreateVersionMutation()\n const [createProduct] = useCreateProductMutation()\n // Handle version/reviewable file upload\n const handleVersionUpload = async (files: FileList) => {\n if (!canUploadVersions || !singleEntity) {\n toast.error('Please select exactly one version to upload reviewables')\n return resetState()\n }\n\n const productId = singleEntity.product?.id\n if (!productId) {\n // Show dialog to create product first\n setPendingFiles(files)\n setShowProductDialog(true)\n return\n }\n\n // If we have a productId, proceed with upload\n await uploadVersionWithProduct(files, productId)\n }\n\n // Helper function to handle the actual version upload\n const uploadVersionWithProduct = async (files: FileList, productId: string) => {\n try {\n const nextVersion = getNextVersionNumber(singleEntity!.product?.latestVersion)\n\n // create a new version\n const versionRes = await createVersionHelper(createVersion, projectName, {\n productId,\n taskId, // previous version could have a taskId or we are uploading on a task\n version: nextVersion,\n })\n\n await uploadReviewableFiles(files, versionRes.id)\n // The hook handles success callbacks, just reset our local state\n resetState()\n\n // update entity panel to focus the new version\n onVersionCreated?.(versionRes.id)\n } catch (error: any) {\n handleUploadError(error, 'uploading version')\n resetState()\n }\n }\n\n // once the file has been uploaded, we need to patch the entities with the new thumbnail\n const handleThumbnailFileUploaded = async (thumbnails: any[] = []) => {\n // always set isDragginle to false\n setIsDraggingFile(false)\n\n // check something was actually uploaded\n if (!entities.length) {\n return\n }\n\n // patching the updatedAt will force a refresh of the thumbnail url\n const newUpdatedAt = new Date().toISOString()\n\n let operations: Operation[] = []\n let versionPatches = []\n\n for (const entity of thumbnails) {\n const entityToPatch = entities.find((e) => e.id === entity.id)\n if (!entityToPatch) continue\n const thumbnailId = entity.thumbnailId\n const currentAssignees = entity.users || []\n\n operations.push({\n id: entityToPatch.id,\n projectName: entityToPatch.projectName,\n data: { updatedAt: newUpdatedAt },\n currentAssignees,\n })\n\n const versionPatch = {\n productId: entityToPatch.productId,\n versionUpdatedAt: newUpdatedAt,\n versionThumbnailId: thumbnailId,\n }\n\n versionPatches.push(versionPatch)\n }\n\n try {\n await updateEntities({ operations, entityType })\n onUploaded && onUploaded(operations)\n } catch (error) {\n console.error('Error uploading thumbnail:', error)\n }\n }\n\n const handleUploadThumbnail = async (file: File) => {\n if (!file) return resetState()\n\n try {\n // check file is an image\n if (!file.type.includes('image')) {\n throw new Error('File is not an image')\n }\n\n let promises = []\n for (const entity of entities) {\n const { id, entityType, projectName } = entity\n\n if (!projectName) throw new Error('Project name is required')\n\n const promise = axios.post(\n projectName && `/api/projects/${projectName}/${entityType}s/${id}/thumbnail`,\n file,\n {\n onUploadProgress: (e) => {\n setProgress(Math.round((100 * e.loaded) / (e.total || file.size)))\n },\n headers: {\n 'Content-Type': file.type,\n },\n },\n )\n\n promises.push(promise)\n }\n\n const res = await Promise.all(promises)\n\n const updatedEntities = res.map((res, i) => ({\n thumbnailId: res.data.id as string,\n id: entities[i].id,\n }))\n\n handleThumbnailFileUploaded(updatedEntities)\n resetState()\n } catch (error: any) {\n console.error(error)\n toast.error(error.message)\n resetState()\n }\n }\n\n const [updateEntities] = useUpdateEntitiesMutation()\n\n const handleDragEnter = (e: React.DragEvent) => {\n e.preventDefault()\n dragCounterRef.current++\n if (dragCounterRef.current === 1) {\n setIsDraggingFile(true)\n }\n }\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault()\n dragCounterRef.current--\n if (dragCounterRef.current === 0) {\n setIsDraggingFile(false)\n setDraggingZone(null)\n }\n }\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault()\n }\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault()\n dragCounterRef.current = 0\n setIsDraggingFile(false)\n setDraggingZone(null)\n\n if (!e.dataTransfer.files || e.dataTransfer.files.length === 0) {\n return\n }\n\n if (draggingZone === 'thumbnail') {\n setUploadingType('thumbnail')\n const file = e.dataTransfer.files[0]\n // try to upload the thumbnail\n handleUploadThumbnail(file)\n }\n\n if (draggingZone === 'version') {\n setUploadingType('version')\n const files = e.dataTransfer.files\n // try to upload the reviewables using the hook\n handleVersionUpload(files)\n }\n }\n\n // upload thumbnail from input (right click on thumbnail)\n const handleInputUpload = async (event: ChangeEvent<HTMLInputElement>, type: UploadType) => {\n const files = event.target.files\n if (!files || files.length === 0) {\n return\n }\n\n if (type === 'version') {\n setUploadingType('version')\n handleVersionUpload(files)\n }\n if (type === 'thumbnail') {\n setUploadingType('thumbnail')\n handleUploadThumbnail(files[0])\n }\n }\n\n const thumbnailInputRef = useRef<HTMLInputElement>(null)\n const versionsInputRef = useRef<HTMLInputElement>(null)\n\n return (\n <ThumbnailUploadProvider\n entities={entities}\n handleThumbnailUpload={handleThumbnailFileUploaded}\n thumbnailInputRef={thumbnailInputRef}\n versionsInputRef={canUploadVersions ? versionsInputRef : undefined}\n >\n <Styled.DragAndDropWrapper\n className={clsx({ dragging: isDraggingFile })}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <ThumbnailWrapper>\n <div>{children}</div>\n </ThumbnailWrapper>\n {isDraggingFile && (\n <Styled.DropZones>\n {availableDropZones.map((zone) => (\n <Dropzone\n key={zone.id}\n id={zone.id}\n label={zone.label}\n icon={zone.icon}\n isActive={draggingZone === zone.id}\n onDragOver={() => setDraggingZone(zone.id)}\n onDragLeave={() => setDraggingZone(null)}\n />\n ))}\n </Styled.DropZones>\n )}\n {(uploadingType === 'thumbnail' || uploadingType === 'version') && (\n <Styled.DropZones>\n <Styled.UploadingProgress>\n <Styled.Progress\n style={{\n right: `${100 - progress}%`,\n }}\n />\n <span className=\"label\">{`Uploading ${uploadingType}...`}</span>\n </Styled.UploadingProgress>\n <Styled.CancelButton icon={'close'} variant=\"text\" onClick={resetState} />\n </Styled.DropZones>\n )}\n <input\n type=\"file\"\n onChange={(e) => handleInputUpload(e, 'thumbnail')}\n ref={thumbnailInputRef}\n />\n <input\n type=\"file\"\n onChange={(e) => handleInputUpload(e, 'version')}\n ref={versionsInputRef}\n />\n </Styled.DragAndDropWrapper>\n\n {/* Product creation dialog */}\n <EntityPanelUploaderDialog\n isOpen={showProductDialog}\n files={pendingFiles}\n onSubmit={handleDialogSubmit}\n onCancel={handleDialogCancel}\n />\n </ThumbnailUploadProvider>\n )\n}\n"],"names":["dropZones","EntityPanelUploader","children","entityType","entities","projectName","onUploaded","onVersionCreated","dispatch","useDetailsPanelContext","isDraggingFile","setIsDraggingFile","useState","draggingZone","setDraggingZone","dragCounterRef","useRef","uploadingType","setUploadingType","progress","setProgress","showProductDialog","setShowProductDialog","pendingFiles","setPendingFiles","singleEntity","taskId","folderId","productId","versionId","canUploadVersions","uploadReviewableFiles","useReviewablesUpload","availableDropZones","zone","resetState","handleDialogSubmit","productName","sanitizedName","sanitizeProductName","toast","productRes","createProductHelper","createProduct","uploadVersionWithProduct","error","handleUploadError","handleDialogCancel","createVersion","useCreateVersionMutation","useCreateProductMutation","handleVersionUpload","files","nextVersion","getNextVersionNumber","versionRes","createVersionHelper","handleThumbnailFileUploaded","thumbnails","newUpdatedAt","operations","entity","entityToPatch","e","currentAssignees","updateEntities","handleUploadThumbnail","file","promises","id","promise","axios","updatedEntities","res","i","useUpdateEntitiesMutation","handleDragEnter","handleDragLeave","handleDragOver","handleDrop","handleInputUpload","event","type","thumbnailInputRef","versionsInputRef","jsxs","ThumbnailUploadProvider","Styled.DragAndDropWrapper","clsx","jsx","ThumbnailWrapper","Styled.DropZones","Dropzone","Styled.UploadingProgress","Styled.Progress","Styled.CancelButton","EntityPanelUploaderDialog"],"mappings":"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"}
1
+ {"version":3,"file":"EntityPanelUploader.cjs.js","sources":["../../../../../src/components/EntityPanelUploader/EntityPanelUploader.tsx"],"sourcesContent":["import { ChangeEvent, useRef, useState } from 'react'\nimport clsx from 'clsx'\n\nimport { ThumbnailWrapper } from '@shared/containers'\nimport {\n useCreateVersionMutation,\n useUpdateEntitiesMutation,\n useCreateProductMutation,\n} from '@shared/api'\nimport * as Styled from './EntityPanelUploader.styled'\nimport { ThumbnailUploadProvider } from '../../context/ThumbnailUploaderContext'\nimport Dropzone, { DropzoneType } from './Dropzone'\nimport axios from 'axios'\nimport { toast } from 'react-toastify'\nimport { useReviewablesUpload } from '../ReviewablesList'\nimport { useDetailsPanelContext } from '@shared/context'\nimport EntityPanelUploaderDialog from './EntityPanelUploaderDialog'\nimport {\n sanitizeProductName,\n createProductHelper,\n createVersionHelper,\n getNextVersionNumber,\n handleUploadError,\n} from '@shared/util'\n\ntype Operation = {\n id: string\n projectName: string\n currentAssignees: any[]\n data: { updatedAt: string }\n}\nexport type EntityPanelUploaderProps = {\n entityType: string\n entities: any[]\n projectName: any\n children?: JSX.Element | JSX.Element[]\n onUploaded?: (operations: Operation[]) => void\n resetFileUploadState?: () => void\n onVersionCreated?: (versionId: string) => void\n}\n\ntype UploadType = 'thumbnail' | 'version'\nconst dropZones: (DropzoneType & { id: UploadType })[] = [\n { id: 'thumbnail', label: 'Upload thumbnail', icon: 'add_photo_alternate' },\n { id: 'version', label: 'Upload version', icon: 'layers' },\n]\n\nexport const EntityPanelUploader = ({\n children = [],\n entityType,\n entities = [],\n projectName,\n onUploaded,\n onVersionCreated,\n}: EntityPanelUploaderProps) => {\n const { dispatch } = useDetailsPanelContext()\n // Dragging and dropping state\n const [isDraggingFile, setIsDraggingFile] = useState(false)\n const [draggingZone, setDraggingZone] = useState<UploadType | null>(null)\n const dragCounterRef = useRef(0)\n\n // Uploading state\n const [uploadingType, setUploadingType] = useState<UploadType | null>(null)\n const [progress, setProgress] = useState(0)\n\n // Dialog state for product creation\n const [showProductDialog, setShowProductDialog] = useState(false)\n const [pendingFiles, setPendingFiles] = useState<FileList | null>(null)\n\n // Check if we have exactly one entity selected\n const singleEntity = entities.length === 1 ? entities[0] : null\n // extra all entity IDs for the single version entity\n const taskId: string | undefined = singleEntity?.task?.id\n const folderId: string | undefined = singleEntity?.folder?.id\n const productId: string | undefined = singleEntity?.product?.id\n const versionId: string | undefined = singleEntity?.id\n const canUploadVersions = Boolean(singleEntity && entityType !== 'representation')\n\n // Use the custom hook for reviewable upload logic (only when single version)\n const { handleFileUpload: uploadReviewableFiles } = useReviewablesUpload({\n projectName,\n versionId: versionId,\n taskId: taskId,\n folderId: folderId,\n productId: productId,\n dispatch,\n onUpload: () => {\n setUploadingType(null)\n setProgress(0)\n },\n onProgress: (progress) => {\n setProgress(progress)\n },\n })\n\n // Filter drop zones based on whether we can upload reviewables\n const availableDropZones = dropZones.filter((zone) => {\n if (zone.id === 'version') {\n return canUploadVersions\n }\n return true\n })\n\n const resetState = () => {\n setUploadingType(null)\n setIsDraggingFile(false)\n setDraggingZone(null)\n dragCounterRef.current = 0\n setProgress(0)\n setShowProductDialog(false)\n setPendingFiles(null)\n }\n\n // Handle dialog submission - create product and upload version\n const handleDialogSubmit = async (productName: string) => {\n if (!pendingFiles || !singleEntity) {\n setShowProductDialog(false)\n setPendingFiles(null)\n return\n }\n\n const sanitizedName = sanitizeProductName(productName)\n\n if (!sanitizedName.trim()) {\n toast.error(\n 'Product name must contain valid characters (letters, numbers, underscore, or hyphen)',\n )\n return\n }\n\n try {\n if (!folderId) {\n throw new Error('Folder ID is required to create a product')\n }\n setUploadingType('version')\n\n // Create the product\n const productRes = await createProductHelper(createProduct, projectName, {\n folderId: folderId,\n name: sanitizedName,\n productType: 'review', // default product type for uploaded files\n })\n\n // Close dialog and proceed with version upload\n setShowProductDialog(false)\n await uploadVersionWithProduct(pendingFiles, productRes.id)\n setPendingFiles(null)\n } catch (error: any) {\n handleUploadError(error, 'creating product')\n resetState()\n }\n }\n\n // Handle dialog cancellation\n const handleDialogCancel = () => {\n setShowProductDialog(false)\n setPendingFiles(null)\n resetState()\n }\n\n const [createVersion] = useCreateVersionMutation()\n const [createProduct] = useCreateProductMutation()\n // Handle version/reviewable file upload\n const handleVersionUpload = async (files: FileList) => {\n if (!canUploadVersions || !singleEntity) {\n toast.error('Please select exactly one version to upload reviewables')\n return resetState()\n }\n\n const productId = singleEntity.product?.id\n if (!productId) {\n // Show dialog to create product first\n setPendingFiles(files)\n setShowProductDialog(true)\n return\n }\n\n // If we have a productId, proceed with upload\n await uploadVersionWithProduct(files, productId)\n }\n\n // Helper function to handle the actual version upload\n const uploadVersionWithProduct = async (files: FileList, productId: string) => {\n try {\n const nextVersion = getNextVersionNumber(singleEntity!.product?.latestVersion)\n\n // create a new version\n const versionRes = await createVersionHelper(createVersion, projectName, {\n productId,\n taskId, // previous version could have a taskId or we are uploading on a task\n version: nextVersion,\n })\n\n await uploadReviewableFiles(files, versionRes.id)\n // The hook handles success callbacks, just reset our local state\n resetState()\n\n // update entity panel to focus the new version\n onVersionCreated?.(versionRes.id)\n } catch (error: any) {\n handleUploadError(error, 'uploading version')\n resetState()\n }\n }\n\n // once the file has been uploaded, we need to patch the entities with the new thumbnail\n const handleThumbnailFileUploaded = async (thumbnails: any[] = []) => {\n // always set isDragginle to false\n setIsDraggingFile(false)\n\n // check something was actually uploaded\n if (!entities.length) {\n return\n }\n\n // patching the updatedAt will force a refresh of the thumbnail url\n const newUpdatedAt = new Date().toISOString()\n\n let operations: Operation[] = []\n let versionPatches = []\n\n for (const entity of thumbnails) {\n const entityToPatch = entities.find((e) => e.id === entity.id)\n if (!entityToPatch) continue\n const thumbnailId = entity.thumbnailId\n const currentAssignees = entity.users || []\n\n operations.push({\n id: entityToPatch.id,\n projectName: entityToPatch.projectName,\n data: { updatedAt: newUpdatedAt },\n currentAssignees,\n })\n\n const versionPatch = {\n productId: entityToPatch.productId,\n versionUpdatedAt: newUpdatedAt,\n versionThumbnailId: thumbnailId,\n }\n\n versionPatches.push(versionPatch)\n }\n\n try {\n await updateEntities({ operations, entityType })\n onUploaded && onUploaded(operations)\n } catch (error) {\n console.error('Error uploading thumbnail:', error)\n }\n }\n\n const handleUploadThumbnail = async (file: File) => {\n if (!file) return resetState()\n\n try {\n // check file is an image\n if (!file.type.includes('image')) {\n throw new Error('File is not an image')\n }\n\n let promises = []\n for (const entity of entities) {\n const { id, entityType, projectName } = entity\n\n if (!projectName) throw new Error('Project name is required')\n\n const promise = axios.post(\n projectName && `/api/projects/${projectName}/${entityType}s/${id}/thumbnail`,\n file,\n {\n onUploadProgress: (e) => {\n setProgress(Math.round((100 * e.loaded) / (e.total || file.size)))\n },\n headers: {\n 'Content-Type': file.type,\n },\n },\n )\n\n promises.push(promise)\n }\n\n const res = await Promise.all(promises)\n\n const updatedEntities = res.map((res, i) => ({\n thumbnailId: res.data.id as string,\n id: entities[i].id,\n }))\n\n handleThumbnailFileUploaded(updatedEntities)\n resetState()\n } catch (error: any) {\n console.error(error)\n toast.error(error.message)\n resetState()\n }\n }\n\n const [updateEntities] = useUpdateEntitiesMutation()\n\n const handleDragEnter = (e: React.DragEvent) => {\n e.preventDefault()\n dragCounterRef.current++\n if (dragCounterRef.current === 1) {\n setIsDraggingFile(true)\n }\n }\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault()\n dragCounterRef.current--\n if (dragCounterRef.current === 0) {\n setIsDraggingFile(false)\n setDraggingZone(null)\n }\n }\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault()\n }\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault()\n dragCounterRef.current = 0\n setIsDraggingFile(false)\n setDraggingZone(null)\n\n if (!e.dataTransfer.files || e.dataTransfer.files.length === 0) {\n return\n }\n\n if (draggingZone === 'thumbnail') {\n setUploadingType('thumbnail')\n const file = e.dataTransfer.files[0]\n // try to upload the thumbnail\n handleUploadThumbnail(file)\n }\n\n if (draggingZone === 'version') {\n setUploadingType('version')\n const files = e.dataTransfer.files\n // try to upload the reviewables using the hook\n handleVersionUpload(files)\n }\n }\n\n // upload thumbnail from input (right click on thumbnail)\n const handleInputUpload = async (event: ChangeEvent<HTMLInputElement>, type: UploadType) => {\n const files = event.target.files\n if (!files || files.length === 0) {\n return\n }\n\n if (type === 'version') {\n setUploadingType('version')\n handleVersionUpload(files)\n }\n if (type === 'thumbnail') {\n setUploadingType('thumbnail')\n handleUploadThumbnail(files[0])\n }\n }\n\n const thumbnailInputRef = useRef<HTMLInputElement>(null)\n const versionsInputRef = useRef<HTMLInputElement>(null)\n\n return (\n <ThumbnailUploadProvider\n entities={entities}\n handleThumbnailUpload={handleThumbnailFileUploaded}\n thumbnailInputRef={thumbnailInputRef}\n versionsInputRef={canUploadVersions ? versionsInputRef : undefined}\n >\n <Styled.DragAndDropWrapper\n className={clsx({ dragging: isDraggingFile })}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <ThumbnailWrapper>\n <div>{children}</div>\n </ThumbnailWrapper>\n {isDraggingFile && (\n <Styled.DropZones>\n {availableDropZones.map((zone) => (\n <Dropzone\n key={zone.id}\n id={zone.id}\n label={zone.label}\n icon={zone.icon}\n isActive={draggingZone === zone.id}\n onDragOver={() => setDraggingZone(zone.id)}\n onDragLeave={() => setDraggingZone(null)}\n />\n ))}\n </Styled.DropZones>\n )}\n {(uploadingType === 'thumbnail' || uploadingType === 'version') && (\n <Styled.DropZones>\n <Styled.UploadingProgress>\n <Styled.Progress\n style={{\n right: `${100 - progress}%`,\n }}\n />\n <span className=\"label\">{`Uploading ${uploadingType}...`}</span>\n </Styled.UploadingProgress>\n <Styled.CancelButton icon={'close'} variant=\"text\" onClick={resetState} />\n </Styled.DropZones>\n )}\n <input\n type=\"file\"\n onChange={(e) => handleInputUpload(e, 'thumbnail')}\n ref={thumbnailInputRef}\n />\n <input\n type=\"file\"\n onChange={(e) => handleInputUpload(e, 'version')}\n ref={versionsInputRef}\n />\n </Styled.DragAndDropWrapper>\n\n {/* Product creation dialog */}\n <EntityPanelUploaderDialog\n isOpen={showProductDialog}\n files={pendingFiles}\n onSubmit={handleDialogSubmit}\n onCancel={handleDialogCancel}\n />\n </ThumbnailUploadProvider>\n )\n}\n"],"names":["dropZones","EntityPanelUploader","children","entityType","entities","projectName","onUploaded","onVersionCreated","dispatch","useDetailsPanelContext","isDraggingFile","setIsDraggingFile","useState","draggingZone","setDraggingZone","dragCounterRef","useRef","uploadingType","setUploadingType","progress","setProgress","showProductDialog","setShowProductDialog","pendingFiles","setPendingFiles","singleEntity","taskId","folderId","productId","versionId","canUploadVersions","uploadReviewableFiles","useReviewablesUpload","availableDropZones","zone","resetState","handleDialogSubmit","productName","sanitizedName","sanitizeProductName","toast","productRes","createProductHelper","createProduct","uploadVersionWithProduct","error","handleUploadError","handleDialogCancel","createVersion","useCreateVersionMutation","useCreateProductMutation","handleVersionUpload","files","nextVersion","getNextVersionNumber","versionRes","createVersionHelper","handleThumbnailFileUploaded","thumbnails","newUpdatedAt","operations","entity","entityToPatch","e","currentAssignees","updateEntities","handleUploadThumbnail","file","promises","id","promise","axios","updatedEntities","res","i","useUpdateEntitiesMutation","handleDragEnter","handleDragLeave","handleDragOver","handleDrop","handleInputUpload","event","type","thumbnailInputRef","versionsInputRef","jsxs","ThumbnailUploadProvider","Styled.DragAndDropWrapper","clsx","jsx","ThumbnailWrapper","Styled.DropZones","Dropzone","Styled.UploadingProgress","Styled.Progress","Styled.CancelButton","EntityPanelUploaderDialog"],"mappings":"okdA0CA,MAAMA,GAAmD,CACvD,CAAE,GAAI,YAAa,MAAO,mBAAoB,KAAM,qBAAA,EACpD,CAAE,GAAI,UAAW,MAAO,iBAAkB,KAAM,QAAA,CAClD,EAEaC,GAAsB,CAAC,CAClC,SAAAC,EAAW,CAAA,EACX,WAAAC,EACA,SAAAC,EAAW,CAAA,EACX,YAAAC,EACA,WAAAC,EACA,iBAAAC,CACF,IAAgC,CAC9B,KAAM,CAAE,SAAAC,CAAA,EAAaC,0BAAA,EAEf,CAACC,EAAgBC,CAAiB,EAAIC,EAAAA,SAAS,EAAK,EACpD,CAACC,EAAcC,CAAe,EAAIF,EAAAA,SAA4B,IAAI,EAClEG,EAAiBC,EAAAA,OAAO,CAAC,EAGzB,CAACC,EAAeC,CAAgB,EAAIN,EAAAA,SAA4B,IAAI,EACpE,CAACO,EAAUC,CAAW,EAAIR,EAAAA,SAAS,CAAC,EAGpC,CAACS,EAAmBC,CAAoB,EAAIV,EAAAA,SAAS,EAAK,EAC1D,CAACW,EAAcC,CAAe,EAAIZ,EAAAA,SAA0B,IAAI,EAGhEa,EAAerB,EAAS,SAAW,EAAIA,EAAS,CAAC,EAAI,KAErDsB,EAA6BD,GAAc,MAAM,GACjDE,EAA+BF,GAAc,QAAQ,GACrDG,EAAgCH,GAAc,SAAS,GACvDI,EAAgCJ,GAAc,GAC9CK,EAAoB,GAAQL,GAAgBtB,IAAe,kBAG3D,CAAE,iBAAkB4B,CAAA,EAA0BC,wBAAqB,CACvE,YAAA3B,EACA,UAAAwB,EACA,OAAAH,EACA,SAAAC,EACA,UAAAC,EACA,SAAApB,EACA,SAAU,IAAM,CACdU,EAAiB,IAAI,EACrBE,EAAY,CAAC,CACf,EACA,WAAaD,GAAa,CACxBC,EAAYD,CAAQ,CACtB,CAAA,CACD,EAGKc,EAAqBjC,GAAU,OAAQkC,GACvCA,EAAK,KAAO,UACPJ,EAEF,EACR,EAEKK,EAAa,IAAM,CACvBjB,EAAiB,IAAI,EACrBP,EAAkB,EAAK,EACvBG,EAAgB,IAAI,EACpBC,EAAe,QAAU,EACzBK,EAAY,CAAC,EACbE,EAAqB,EAAK,EAC1BE,EAAgB,IAAI,CACtB,EAGMY,EAAqB,MAAOC,GAAwB,CACxD,GAAI,CAACd,GAAgB,CAACE,EAAc,CAClCH,EAAqB,EAAK,EAC1BE,EAAgB,IAAI,EACpB,MACF,CAEA,MAAMc,EAAgBC,EAAAA,oBAAoBF,CAAW,EAErD,GAAI,CAACC,EAAc,OAAQ,CACzBE,EAAAA,MAAM,MACJ,sFAAA,EAEF,MACF,CAEA,GAAI,CACF,GAAI,CAACb,EACH,MAAM,IAAI,MAAM,2CAA2C,EAE7DT,EAAiB,SAAS,EAG1B,MAAMuB,EAAa,MAAMC,sBAAoBC,EAAetC,EAAa,CACvE,SAAAsB,EACA,KAAMW,EACN,YAAa,QAAA,CACd,EAGDhB,EAAqB,EAAK,EAC1B,MAAMsB,EAAyBrB,EAAckB,EAAW,EAAE,EAC1DjB,EAAgB,IAAI,CACtB,OAASqB,EAAY,CACnBC,EAAAA,kBAAkBD,EAAO,kBAAkB,EAC3CV,EAAA,CACF,CACF,EAGMY,EAAqB,IAAM,CAC/BzB,EAAqB,EAAK,EAC1BE,EAAgB,IAAI,EACpBW,EAAA,CACF,EAEM,CAACa,CAAa,EAAIC,4BAAA,EAClB,CAACN,CAAa,EAAIO,4BAAA,EAElBC,EAAsB,MAAOC,GAAoB,CACrD,GAAI,CAACtB,GAAqB,CAACL,EACzBe,OAAAA,EAAAA,MAAM,MAAM,yDAAyD,EAC9DL,EAAA,EAGT,MAAMP,EAAYH,EAAa,SAAS,GACxC,GAAI,CAACG,EAAW,CAEdJ,EAAgB4B,CAAK,EACrB9B,EAAqB,EAAI,EACzB,MACF,CAGA,MAAMsB,EAAyBQ,EAAOxB,CAAS,CACjD,EAGMgB,EAA2B,MAAOQ,EAAiBxB,IAAsB,CAC7E,GAAI,CACF,MAAMyB,EAAcC,EAAAA,qBAAqB7B,EAAc,SAAS,aAAa,EAGvE8B,EAAa,MAAMC,sBAAoBR,EAAe3C,EAAa,CACvE,UAAAuB,EACA,OAAAF,EACA,QAAS2B,CAAA,CACV,EAED,MAAMtB,EAAsBqB,EAAOG,EAAW,EAAE,EAEhDpB,EAAA,EAGA5B,IAAmBgD,EAAW,EAAE,CAClC,OAASV,EAAY,CACnBC,EAAAA,kBAAkBD,EAAO,mBAAmB,EAC5CV,EAAA,CACF,CACF,EAGMsB,EAA8B,MAAOC,EAAoB,KAAO,CAKpE,GAHA/C,EAAkB,EAAK,EAGnB,CAACP,EAAS,OACZ,OAIF,MAAMuD,EAAe,IAAI,KAAA,EAAO,YAAA,EAEhC,IAAIC,EAA0B,CAAA,EAG9B,UAAWC,KAAUH,EAAY,CAC/B,MAAMI,EAAgB1D,EAAS,KAAM2D,GAAMA,EAAE,KAAOF,EAAO,EAAE,EAC7D,GAAI,CAACC,EAAe,SACAD,EAAO,YAC3B,MAAMG,EAAmBH,EAAO,OAAS,CAAA,EAEzCD,EAAW,KAAK,CACd,GAAIE,EAAc,GAClB,YAAaA,EAAc,YAC3B,KAAM,CAAE,UAAWH,CAAA,EACnB,iBAAAK,CAAA,CACD,EAGYF,EAAc,SAM7B,CAEA,GAAI,CACF,MAAMG,GAAe,CAAE,WAAAL,EAAY,WAAAzD,EAAY,EAC/CG,GAAcA,EAAWsD,CAAU,CACrC,OAASf,EAAO,CACd,QAAQ,MAAM,6BAA8BA,CAAK,CACnD,CACF,EAEMqB,EAAwB,MAAOC,GAAe,CAClD,GAAI,CAACA,EAAM,OAAOhC,EAAA,EAElB,GAAI,CAEF,GAAI,CAACgC,EAAK,KAAK,SAAS,OAAO,EAC7B,MAAM,IAAI,MAAM,sBAAsB,EAGxC,IAAIC,EAAW,CAAA,EACf,UAAWP,KAAUzD,EAAU,CAC7B,KAAM,CAAE,GAAAiE,EAAI,WAAAlE,EAAY,YAAAE,GAAgBwD,EAExC,GAAI,CAACxD,EAAa,MAAM,IAAI,MAAM,0BAA0B,EAE5D,MAAMiE,GAAUC,GAAM,KACpBlE,GAAe,iBAAiBA,CAAW,IAAIF,CAAU,KAAKkE,CAAE,aAChEF,EACA,CACE,iBAAmBJ,GAAM,CACvB3C,EAAY,KAAK,MAAO,IAAM2C,EAAE,QAAWA,EAAE,OAASI,EAAK,KAAK,CAAC,CACnE,EACA,QAAS,CACP,eAAgBA,EAAK,IAAA,CACvB,CACF,EAGFC,EAAS,KAAKE,EAAO,CACvB,CAIA,MAAME,GAFM,MAAM,QAAQ,IAAIJ,CAAQ,GAEV,IAAI,CAACK,EAAKC,KAAO,CAC3C,YAAaD,EAAI,KAAK,GACtB,GAAIrE,EAASsE,CAAC,EAAE,EAAA,EAChB,EAEFjB,EAA4Be,CAAe,EAC3CrC,EAAA,CACF,OAASU,EAAY,CACnB,QAAQ,MAAMA,CAAK,EACnBL,QAAM,MAAMK,EAAM,OAAO,EACzBV,EAAA,CACF,CACF,EAEM,CAAC8B,EAAc,EAAIU,6BAAA,EAEnBC,GAAmB,GAAuB,CAC9C,EAAE,eAAA,EACF7D,EAAe,UACXA,EAAe,UAAY,GAC7BJ,EAAkB,EAAI,CAE1B,EAEMkE,GAAmB,GAAuB,CAC9C,EAAE,eAAA,EACF9D,EAAe,UACXA,EAAe,UAAY,IAC7BJ,EAAkB,EAAK,EACvBG,EAAgB,IAAI,EAExB,EAEMgE,GAAkB,GAAuB,CAC7C,EAAE,eAAA,CACJ,EAEMC,GAAc,GAAuB,CAMzC,GALA,EAAE,eAAA,EACFhE,EAAe,QAAU,EACzBJ,EAAkB,EAAK,EACvBG,EAAgB,IAAI,EAEhB,GAAC,EAAE,aAAa,OAAS,EAAE,aAAa,MAAM,SAAW,GAI7D,IAAID,IAAiB,YAAa,CAChCK,EAAiB,WAAW,EAC5B,MAAMiD,EAAO,EAAE,aAAa,MAAM,CAAC,EAEnCD,EAAsBC,CAAI,CAC5B,CAEA,GAAItD,IAAiB,UAAW,CAC9BK,EAAiB,SAAS,EAC1B,MAAMkC,EAAQ,EAAE,aAAa,MAE7BD,EAAoBC,CAAK,CAC3B,EACF,EAGM4B,EAAoB,MAAOC,EAAsCC,IAAqB,CAC1F,MAAM9B,EAAQ6B,EAAM,OAAO,MACvB,CAAC7B,GAASA,EAAM,SAAW,IAI3B8B,IAAS,YACXhE,EAAiB,SAAS,EAC1BiC,EAAoBC,CAAK,GAEvB8B,IAAS,cACXhE,EAAiB,WAAW,EAC5BgD,EAAsBd,EAAM,CAAC,CAAC,GAElC,EAEM+B,EAAoBnE,EAAAA,OAAyB,IAAI,EACjDoE,EAAmBpE,EAAAA,OAAyB,IAAI,EAEtD,OACEqE,EAAAA,kBAAAA,KAACC,GAAAA,wBAAA,CACC,SAAAlF,EACA,sBAAuBqD,EACvB,kBAAA0B,EACA,iBAAkBrD,EAAoBsD,EAAmB,OAEzD,SAAA,CAAAC,EAAAA,kBAAAA,KAACE,EAAAA,mBAAA,CACC,UAAWC,GAAK,CAAE,SAAU9E,EAAgB,EAC5C,YAAakE,GACb,YAAaC,GACb,WAAYC,GACZ,OAAQC,GAER,SAAA,CAAAU,wBAACC,GAAAA,iBAAA,CACC,SAAAD,EAAAA,kBAAAA,IAAC,MAAA,CAAK,SAAAvF,CAAA,CAAS,EACjB,EACCQ,2BACEiF,EAAAA,UAAA,CACE,SAAA1D,EAAmB,IAAKC,GACvBuD,EAAAA,kBAAAA,IAACG,GAAA,CAEC,GAAI1D,EAAK,GACT,MAAOA,EAAK,MACZ,KAAMA,EAAK,KACX,SAAUrB,IAAiBqB,EAAK,GAChC,WAAY,IAAMpB,EAAgBoB,EAAK,EAAE,EACzC,YAAa,IAAMpB,EAAgB,IAAI,CAAA,EANlCoB,EAAK,EAAA,CAQb,EACH,GAEAjB,IAAkB,aAAeA,IAAkB,YACnDoE,yBAACM,EAAAA,UAAA,CACC,SAAA,CAAAN,yBAACQ,EAAAA,kBAAA,CACC,SAAA,CAAAJ,EAAAA,kBAAAA,IAACK,EAAAA,SAAA,CACC,MAAO,CACL,MAAO,GAAG,IAAM3E,CAAQ,GAAA,CAC1B,CAAA,0BAED,OAAA,CAAK,UAAU,QAAS,SAAA,aAAaF,CAAa,KAAA,CAAM,CAAA,EAC3D,EACAwE,wBAACM,EAAAA,aAAA,CAAoB,KAAM,QAAS,QAAQ,OAAO,QAAS5D,CAAA,CAAY,CAAA,EAC1E,EAEFsD,EAAAA,kBAAAA,IAAC,QAAA,CACC,KAAK,OACL,SAAW,GAAMT,EAAkB,EAAG,WAAW,EACjD,IAAKG,CAAA,CAAA,EAEPM,EAAAA,kBAAAA,IAAC,QAAA,CACC,KAAK,OACL,SAAW,GAAMT,EAAkB,EAAG,SAAS,EAC/C,IAAKI,CAAA,CAAA,CACP,CAAA,CAAA,EAIFK,EAAAA,kBAAAA,IAACO,GAAA,CACC,OAAQ3E,EACR,MAAOE,EACP,SAAUa,EACV,SAAUW,CAAA,CAAA,CACZ,CAAA,CAAA,CAGN"}
@@ -49,9 +49,15 @@ import "../../containers/Feed/components/ActivityStatus/ActivityStatus.es.js";
49
49
  import "../../containers/Feed/components/ActivityHeader/ActivityHeader.styled.es.js";
50
50
  import "../../containers/Feed/components/ActivityDate.es.js";
51
51
  import "../AddonLoadingScreen/AddonLoadingScreen.es.js";
52
- import "../ThumbnailSimple/ThumbnailSimple.es.js";
53
- import "../EmptyPlaceholder/EmptyPlaceholder.es.js";
54
- import "../EmptyPlaceholder/EmptyPlaceholderFlex.styled.es.js";
52
+ import "../../../../node_modules/match-sorter/dist/match-sorter.esm.es.js";
53
+ import "../AccessSearchInput/AccessSearchInput.styled.es.js";
54
+ import "../AccessUser/AccessUser.es.js";
55
+ import "../AttributeEditor/components/MinMaxField.es.js";
56
+ import "@dnd-kit/core";
57
+ import "@dnd-kit/sortable";
58
+ import "../EnumEditor/EnumEditor.styled.es.js";
59
+ import "../Badge/Badge.es.js";
60
+ import "../Chips/Chips.es.js";
55
61
  import "../../api/base/client.es.js";
56
62
  import "../../api/generated/graphql.es.js";
57
63
  import "../../api/generated/graphqlLinks.es.js";
@@ -137,59 +143,53 @@ import "../../api/queries/views/getViews.es.js";
137
143
  import "../../api/queries/views/updateViews.es.js";
138
144
  import "../../api/queries/watchers/getWatchers.es.js";
139
145
  import "../../api/queries/uris/getUris.es.js";
140
- import "@dnd-kit/core";
141
- import "@dnd-kit/sortable";
146
+ import "../DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js";
147
+ import "../DetailsPanelDetails/DetailsPanelDetails.es.js";
148
+ import "../DetailsPanelDetails/DetailsSection.es.js";
149
+ import "../DetailsPanelDetails/FieldLabel.es.js";
150
+ import "../EarlyPreview/EarlyPreview.es.js";
151
+ import "../EmptyPlaceholder/EmptyPlaceholder.es.js";
152
+ import "../EmptyPlaceholder/EmptyPlaceholderFlex.styled.es.js";
153
+ import { DragAndDropWrapper as vr, DropZones as L, UploadingProgress as br, Progress as Dr, CancelButton as yr } from "./EntityPanelUploader.styled.es.js";
154
+ import xr from "./Dropzone.es.js";
155
+ import Pr from "axios";
142
156
  import "../ReviewablesList/ReviewablesList.styled.es.js";
143
157
  import "../ReviewablesList/ReviewablesUpload.styled.es.js";
144
- import { useReviewablesUpload as vr } from "../ReviewablesList/useReviewablesUpload.es.js";
145
- import "../ReviewableCard/ReviewableCard.es.js";
146
- import "../ReviewableProgressCard/ReviewableProgressCard.styled.es.js";
147
- import "../FileThumbnail/FileThumbnail.es.js";
148
- import "../Thumbnail/Thumbnail.styled.es.js";
149
- import "../Thumbnail/StackedThumbnails.es.js";
150
- import { DragAndDropWrapper as br, DropZones as L, UploadingProgress as Dr, Progress as yr, CancelButton as xr } from "./EntityPanelUploader.styled.es.js";
151
- import Pr from "./Dropzone.es.js";
152
- import wr from "axios";
158
+ import { useReviewablesUpload as wr } from "../ReviewablesList/useReviewablesUpload.es.js";
153
159
  import jr from "./EntityPanelUploaderDialog.es.js";
154
- import "../SimpleFormDialog/SimpleFormDialog.es.js";
155
160
  import "../EntityPath/EntityPath.styled.es.js";
156
161
  import "../EntityPath/SegmentProvider.es.js";
157
- import "../DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js";
158
- import "../DetailsPanelDetails/DetailsPanelDetails.es.js";
159
- import "../DetailsPanelDetails/DetailsSection.es.js";
160
- import "../DetailsPanelDetails/FieldLabel.es.js";
161
- import "../Watchers/Watchers.es.js";
162
- import "../ProjectTableSettings/ProjectTableSettings.es.js";
162
+ import "../FeaturedVersionOrder/FeaturedVersionOrder.es.js";
163
+ import "../Feedback/FeedbackContext.es.js";
164
+ import "../Feedback/SupportBubble.es.js";
165
+ import "../FileThumbnail/FileThumbnail.es.js";
166
+ import "../LegacyBadge/LegacyBadge.es.js";
167
+ import "../LinksManager/LinksManager.styled.es.js";
168
+ import "../../containers/EntityPickerDialog/EntityPickerDialog.es.js";
169
+ import "date-fns";
163
170
  import "../Powerpack/PowerpackButton.es.js";
164
171
  import "../Powerpack/PricingLink.es.js";
165
172
  import "../Powerpack/PowerpackDialog.styled.es.js";
166
173
  import "../Powerpack/CTAButton.es.js";
167
174
  import "../Powerpack/RequiredAddonVersion.es.js";
175
+ import "../ProjectTableSettings/ProjectTableSettings.es.js";
168
176
  import "../SizeSlider/SizeSlider.es.js";
177
+ import "../ReviewableCard/ReviewableCard.es.js";
178
+ import "../ReviewableProgressCard/ReviewableProgressCard.styled.es.js";
179
+ import "../SearchFilter/filterDates.es.js";
169
180
  import "../SettingsPanel/SettingsPanel.es.js";
170
181
  import "../SettingsPanel/SettingsPanelItemTemplate.es.js";
171
- import "../AttributeEditor/components/MinMaxField.es.js";
172
- import "../EnumEditor/EnumEditor.styled.es.js";
173
- import "../SearchFilter/filterDates.es.js";
174
- import "../FeaturedVersionOrder/FeaturedVersionOrder.es.js";
175
- import "../Badge/Badge.es.js";
176
- import "../VersionUploader/components/UploadVersionDialog.es.js";
177
- import "../VersionUploader/context/VersionUploadContext.es.js";
178
- import "../Feedback/FeedbackContext.es.js";
179
- import "../Feedback/SupportBubble.es.js";
180
- import "../Chips/Chips.es.js";
181
- import "../LinksManager/LinksManager.styled.es.js";
182
- import "../../containers/EntityPickerDialog/EntityPickerDialog.es.js";
183
- import "../StyledLink/StyledLink.es.js";
184
- import "date-fns";
185
182
  import "../ShareOptionIcon/ShareOptionIcon.es.js";
186
- import "../AccessUser/AccessUser.es.js";
187
- import "../../../../node_modules/match-sorter/dist/match-sorter.esm.es.js";
188
- import "../AccessSearchInput/AccessSearchInput.styled.es.js";
189
- import "../TableGridSwitch/TableGridSwitch.es.js";
183
+ import "../SimpleFormDialog/SimpleFormDialog.es.js";
190
184
  import "../SortingSetting/SortingSetting.styled.es.js";
191
- import "../EarlyPreview/EarlyPreview.es.js";
192
- import "../LegacyBadge/LegacyBadge.es.js";
185
+ import "../StyledLink/StyledLink.es.js";
186
+ import "../TableGridSwitch/TableGridSwitch.es.js";
187
+ import "../Thumbnail/Thumbnail.styled.es.js";
188
+ import "../Thumbnail/StackedThumbnails.es.js";
189
+ import "../ThumbnailSimple/ThumbnailSimple.es.js";
190
+ import "../VersionUploader/components/UploadVersionDialog.es.js";
191
+ import "../VersionUploader/context/VersionUploadContext.es.js";
192
+ import "../Watchers/Watchers.es.js";
193
193
  import "../Menu/Menu.styled.es.js";
194
194
  import "../Menu/MenuItem.es.js";
195
195
  import "../../containers/Feed/components/ActivityCategorySelect/CategoryTag.es.js";
@@ -235,6 +235,13 @@ import "../../containers/ProjectTreeTable/components/RowSelectionHeader.es.js";
235
235
  import "../../containers/ProjectTreeTable/widgets/LoadMoreWidget.es.js";
236
236
  import "../../containers/ProjectTreeTable/components/HeaderActionButton.es.js";
237
237
  import "../../containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js";
238
+ import "../../containers/SimpleTable/SimpleTable.styled.es.js";
239
+ import "@tanstack/match-sorter-utils";
240
+ import "../../containers/SimpleTable/context/SimpleTableContext.es.js";
241
+ import "../../containers/SimpleTable/SimpleTableRowTemplate.es.js";
242
+ import "../../containers/Slicer/hooks/useTableDataBySlice.es.js";
243
+ import "../../containers/Slicer/components/SlicerSearch.es.js";
244
+ import "../../containers/Slicer/context/SlicerContext.es.js";
238
245
  import "../../containers/DetailsPanel/DetailsPanel.styled.es.js";
239
246
  import "../../containers/DetailsPanel/FeedFilters/FeedFilters.styled.es.js";
240
247
  import { ThumbnailWrapper as Ur } from "../../containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.es.js";
@@ -252,7 +259,7 @@ import "../../containers/Views/ViewsMenu/ViewsMenu.es.js";
252
259
  const Ir = [
253
260
  { id: "thumbnail", label: "Upload thumbnail", icon: "add_photo_alternate" },
254
261
  { id: "version", label: "Upload version", icon: "layers" }
255
- ], sm = ({
262
+ ], gm = ({
256
263
  children: W = [],
257
264
  entityType: E,
258
265
  entities: a = [],
@@ -260,7 +267,7 @@ const Ir = [
260
267
  onUploaded: C,
261
268
  onVersionCreated: q
262
269
  }) => {
263
- const { dispatch: B } = ar(), [R, c] = d(!1), [D, u] = d(null), l = I(0), [y, s] = d(null), [H, v] = d(0), [_, f] = d(!1), [x, h] = d(null), m = a.length === 1 ? a[0] : null, F = m?.task?.id, P = m?.folder?.id, G = m?.product?.id, J = m?.id, w = !!(m && E !== "representation"), { handleFileUpload: K } = vr({
270
+ const { dispatch: B } = ar(), [R, c] = d(!1), [D, u] = d(null), l = I(0), [y, s] = d(null), [H, v] = d(0), [_, f] = d(!1), [x, h] = d(null), m = a.length === 1 ? a[0] : null, F = m?.task?.id, P = m?.folder?.id, G = m?.product?.id, J = m?.id, w = !!(m && E !== "representation"), { handleFileUpload: K } = wr({
264
271
  projectName: b,
265
272
  versionId: J,
266
273
  taskId: F,
@@ -355,7 +362,7 @@ const Ir = [
355
362
  for (const n of a) {
356
363
  const { id: g, entityType: j, projectName: U } = n;
357
364
  if (!U) throw new Error("Project name is required");
358
- const er = wr.post(
365
+ const er = Pr.post(
359
366
  U && `/api/projects/${U}/${j}s/${g}/thumbnail`,
360
367
  r,
361
368
  {
@@ -409,7 +416,7 @@ const Ir = [
409
416
  versionsInputRef: w ? $ : void 0,
410
417
  children: [
411
418
  /* @__PURE__ */ i.jsxs(
412
- br,
419
+ vr,
413
420
  {
414
421
  className: nr({ dragging: R }),
415
422
  onDragEnter: or,
@@ -419,7 +426,7 @@ const Ir = [
419
426
  children: [
420
427
  /* @__PURE__ */ i.jsx(Ur, { children: /* @__PURE__ */ i.jsx("div", { children: W }) }),
421
428
  R && /* @__PURE__ */ i.jsx(L, { children: Q.map((r) => /* @__PURE__ */ i.jsx(
422
- Pr,
429
+ xr,
423
430
  {
424
431
  id: r.id,
425
432
  label: r.label,
@@ -431,9 +438,9 @@ const Ir = [
431
438
  r.id
432
439
  )) }),
433
440
  (y === "thumbnail" || y === "version") && /* @__PURE__ */ i.jsxs(L, { children: [
434
- /* @__PURE__ */ i.jsxs(Dr, { children: [
441
+ /* @__PURE__ */ i.jsxs(br, { children: [
435
442
  /* @__PURE__ */ i.jsx(
436
- yr,
443
+ Dr,
437
444
  {
438
445
  style: {
439
446
  right: `${100 - H}%`
@@ -442,7 +449,7 @@ const Ir = [
442
449
  ),
443
450
  /* @__PURE__ */ i.jsx("span", { className: "label", children: `Uploading ${y}...` })
444
451
  ] }),
445
- /* @__PURE__ */ i.jsx(xr, { icon: "close", variant: "text", onClick: e })
452
+ /* @__PURE__ */ i.jsx(yr, { icon: "close", variant: "text", onClick: e })
446
453
  ] }),
447
454
  /* @__PURE__ */ i.jsx(
448
455
  "input",
@@ -477,6 +484,6 @@ const Ir = [
477
484
  );
478
485
  };
479
486
  export {
480
- sm as EntityPanelUploader
487
+ gm as EntityPanelUploader
481
488
  };
482
489
  //# sourceMappingURL=EntityPanelUploader.es.js.map