@ynput/ayon-frontend-shared 0.3.31 → 0.3.32

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 (877) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +24 -22
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +213 -197
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/Slicer.cjs.js +1 -1
  8. package/dist/Slicer.es.js +19 -18
  9. package/dist/Slicer.es.js.map +1 -1
  10. package/dist/_virtual/index.cjs22.js +1 -1
  11. package/dist/_virtual/index.cjs23.js +1 -1
  12. package/dist/_virtual/index.cjs24.js +1 -1
  13. package/dist/_virtual/index.cjs4.js +1 -1
  14. package/dist/_virtual/index.cjs5.js +1 -1
  15. package/dist/_virtual/index.cjs6.js +1 -1
  16. package/dist/_virtual/index.cjs8.js +1 -1
  17. package/dist/_virtual/index.es19.js +2 -2
  18. package/dist/_virtual/index.es20.js +2 -2
  19. package/dist/_virtual/index.es22.js +3 -3
  20. package/dist/_virtual/index.es23.js +5 -5
  21. package/dist/_virtual/index.es24.js +5 -5
  22. package/dist/_virtual/index.es4.js +2 -5
  23. package/dist/_virtual/index.es4.js.map +1 -1
  24. package/dist/_virtual/index.es5.js +5 -2
  25. package/dist/_virtual/index.es5.js.map +1 -1
  26. package/dist/_virtual/index.es6.js +2 -2
  27. package/dist/_virtual/index.es8.js +2 -2
  28. package/dist/api.cjs.js +1 -1
  29. package/dist/api.es.js +453 -434
  30. package/dist/api.es.js.map +1 -1
  31. package/dist/index.cjs.js +1 -1
  32. package/dist/index.es.js +11 -9
  33. package/dist/index.es.js.map +1 -1
  34. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  35. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  36. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  37. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  38. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  39. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  40. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  41. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  42. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  43. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  44. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  45. package/dist/node_modules/remove-accents/index.es.js +1 -1
  46. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  47. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  48. package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
  49. package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
  50. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  51. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  52. package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
  53. package/dist/shared/node_modules/prop-types/index.es.js +1 -1
  54. package/dist/shared/src/api/base/client.cjs.js +1 -1
  55. package/dist/shared/src/api/base/client.cjs.js.map +1 -1
  56. package/dist/shared/src/api/base/client.es.js +21 -17
  57. package/dist/shared/src/api/base/client.es.js.map +1 -1
  58. package/dist/shared/src/api/generated/folders.cjs.js +1 -1
  59. package/dist/shared/src/api/generated/folders.cjs.js.map +1 -1
  60. package/dist/shared/src/api/generated/folders.es.js +2 -14
  61. package/dist/shared/src/api/generated/folders.es.js.map +1 -1
  62. package/dist/shared/src/api/generated/graphql.cjs.js +237 -55
  63. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  64. package/dist/shared/src/api/generated/graphql.es.js +361 -161
  65. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  66. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  67. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  68. package/dist/shared/src/api/queries/activities/activityQueries.cjs.js +1 -0
  69. package/dist/shared/src/api/queries/activities/activityQueries.cjs.js.map +1 -1
  70. package/dist/shared/src/api/queries/activities/activityQueries.es.js +1 -0
  71. package/dist/shared/src/api/queries/activities/activityQueries.es.js.map +1 -1
  72. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js +1 -1
  73. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js.map +1 -1
  74. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js +33 -21
  75. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js.map +1 -1
  76. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
  77. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
  78. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +74 -60
  79. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
  80. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js +2 -0
  81. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js.map +1 -0
  82. package/dist/shared/src/api/queries/columnStats/columnStats.es.js +96 -0
  83. package/dist/shared/src/api/queries/columnStats/columnStats.es.js.map +1 -0
  84. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js +2 -0
  85. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -0
  86. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js +88 -0
  87. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -0
  88. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
  89. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  90. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +62 -48
  91. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  92. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +1 -1
  93. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  94. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +7 -3
  95. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  96. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  97. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  98. package/dist/shared/src/api/queries/entityLists/getLists.es.js +94 -79
  99. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  100. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -1
  101. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  102. package/dist/shared/src/api/queries/folders/getFolders.es.js +104 -71
  103. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  104. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  105. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  106. package/dist/shared/src/api/queries/overview/getOverview.es.js +265 -216
  107. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  108. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +1 -1
  109. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  110. package/dist/shared/src/api/queries/overview/updateOverview.es.js +198 -183
  111. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  112. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  113. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  114. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +138 -107
  115. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  116. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  117. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  118. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +332 -239
  119. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  120. package/dist/shared/src/api/queries/views/updateViews.cjs.js +1 -1
  121. package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
  122. package/dist/shared/src/api/queries/views/updateViews.es.js +38 -38
  123. package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
  124. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +1 -1
  125. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
  126. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +3 -2
  127. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
  128. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +1 -1
  129. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  130. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +3 -2
  131. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  132. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  133. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  134. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +4 -2
  135. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  136. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  137. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  138. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +3 -2
  139. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  140. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +1 -1
  141. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  142. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +3 -2
  143. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  144. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  145. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  146. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +3 -2
  147. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  148. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
  149. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
  150. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +3 -2
  151. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
  152. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  153. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  154. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +137 -158
  155. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  156. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  157. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  158. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +4 -2
  159. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  160. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  161. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  162. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +3 -2
  163. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  164. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  165. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  166. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +5 -4
  167. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  168. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  169. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  170. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +3 -2
  171. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  172. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
  173. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  174. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +3 -2
  175. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  176. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  177. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  178. package/dist/shared/src/components/LinksManager/LinksManager.es.js +3 -2
  179. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  180. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  181. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  182. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +4 -2
  183. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  184. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  185. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  186. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +3 -2
  187. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  188. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
  189. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
  190. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +3 -2
  191. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
  192. package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
  193. package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
  194. package/dist/shared/src/components/Menu/Menu.es.js +3 -2
  195. package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
  196. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  197. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  198. package/dist/shared/src/components/Menu/MenuItem.es.js +1 -0
  199. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  200. package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
  201. package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
  202. package/dist/shared/src/components/Menu/MenuList.es.js +3 -2
  203. package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
  204. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +1 -1
  205. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  206. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +3 -2
  207. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  208. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  209. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  210. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +3 -2
  211. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  212. package/dist/shared/src/components/Powerpack/useFreeTrialLink.cjs.js +1 -1
  213. package/dist/shared/src/components/Powerpack/useFreeTrialLink.cjs.js.map +1 -1
  214. package/dist/shared/src/components/Powerpack/useFreeTrialLink.es.js +3 -2
  215. package/dist/shared/src/components/Powerpack/useFreeTrialLink.es.js.map +1 -1
  216. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +1 -1
  217. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  218. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +79 -77
  219. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  220. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  221. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  222. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +6 -4
  223. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  224. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  225. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  226. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +3 -2
  227. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  228. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  229. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  230. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +4 -2
  231. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  232. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  233. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  234. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +4 -2
  235. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  236. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  237. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  238. package/dist/shared/src/components/RenameForm/RenameForm.es.js +4 -2
  239. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  240. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +1 -1
  241. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  242. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +3 -2
  243. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  244. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  245. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  246. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +4 -2
  247. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  248. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  249. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  250. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +5 -3
  251. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  252. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  253. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  254. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +4 -2
  255. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  256. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
  257. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  258. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +3 -2
  259. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  260. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  261. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  262. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +4 -2
  263. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  264. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  265. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  266. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +7 -6
  267. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  268. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +1 -1
  269. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  270. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +3 -2
  271. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  272. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
  273. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  274. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +6 -4
  275. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  276. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  277. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  278. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +4 -2
  279. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  280. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
  281. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
  282. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +3 -2
  283. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
  284. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +2 -2
  285. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  286. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +11 -10
  287. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  288. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js +1 -1
  289. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js.map +1 -1
  290. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js +49 -44
  291. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js.map +1 -1
  292. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js +3 -3
  293. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js.map +1 -1
  294. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js +32 -22
  295. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js.map +1 -1
  296. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  297. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  298. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +4 -2
  299. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  300. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  301. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  302. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +8 -6
  303. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  304. package/dist/shared/src/components/Watchers/Watchers.cjs.js +1 -1
  305. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  306. package/dist/shared/src/components/Watchers/Watchers.es.js +3 -2
  307. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  308. package/dist/shared/src/config/powerpackFeatures.cjs.js +1 -1
  309. package/dist/shared/src/config/powerpackFeatures.cjs.js.map +1 -1
  310. package/dist/shared/src/config/powerpackFeatures.es.js +7 -1
  311. package/dist/shared/src/config/powerpackFeatures.es.js.map +1 -1
  312. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  313. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  314. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +4 -2
  315. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  316. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  317. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  318. package/dist/shared/src/containers/Actions/Actions.es.js +3 -2
  319. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  320. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  321. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  322. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +4 -2
  323. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  324. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  325. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  326. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +4 -2
  327. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  328. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  329. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  330. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +4 -2
  331. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  332. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  333. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  334. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +41 -38
  335. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  336. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  337. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  338. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +4 -2
  339. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  340. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  341. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  342. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +4 -2
  343. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  344. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  345. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  346. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +4 -2
  347. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  348. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  349. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  350. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +3 -2
  351. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  352. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  353. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  354. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +18 -16
  355. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  356. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  357. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  358. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +4 -2
  359. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  360. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  361. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  362. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +4 -2
  363. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  364. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  365. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  366. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +13 -11
  367. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  368. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js +1 -1
  369. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js.map +1 -1
  370. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js +14 -14
  371. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js.map +1 -1
  372. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  373. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  374. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +13 -9
  375. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  376. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  377. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  378. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +4 -2
  379. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  380. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  381. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  382. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +4 -2
  383. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  384. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  385. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  386. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +4 -2
  387. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  388. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  389. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  390. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +4 -2
  391. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  392. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  393. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  394. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +3 -2
  395. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  396. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  397. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  398. package/dist/shared/src/containers/Feed/Feed.es.js +5 -4
  399. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  400. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  401. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  402. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +4 -2
  403. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  404. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  405. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  406. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +4 -2
  407. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  408. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  409. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  410. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +4 -2
  411. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  412. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  413. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  414. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +28 -27
  415. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  416. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
  417. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  418. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +4 -2
  419. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  420. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  421. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  422. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +8 -6
  423. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  424. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  425. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  426. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +3 -2
  427. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  428. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  429. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  430. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +3 -2
  431. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  432. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  433. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  434. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +3 -2
  435. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  436. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  437. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  438. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +37 -44
  439. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  440. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.cjs.js +1 -1
  441. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.cjs.js.map +1 -1
  442. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.es.js +3 -2
  443. package/dist/shared/src/containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.es.js.map +1 -1
  444. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  445. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  446. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +6 -5
  447. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  448. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.cjs.js +1 -1
  449. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.cjs.js.map +1 -1
  450. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.es.js +14 -13
  451. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.es.js.map +1 -1
  452. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +1 -1
  453. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  454. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +3 -2
  455. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  456. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  457. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  458. package/dist/shared/src/containers/ListTable/ListTable.es.js +212 -204
  459. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  460. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  461. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  462. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +4 -2
  463. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  464. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  465. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  466. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +4 -2
  467. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  468. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  469. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  470. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +729 -675
  471. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  472. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +32 -10
  473. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  474. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +42 -18
  475. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  476. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  477. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  478. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +17 -14
  479. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  480. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  481. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  482. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +57 -43
  483. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  484. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  485. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  486. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +4 -2
  487. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  488. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  489. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  490. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +4 -2
  491. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  492. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js +48 -0
  493. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js.map +1 -0
  494. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js +103 -0
  495. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js.map +1 -0
  496. package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js +2 -0
  497. package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js.map +1 -0
  498. package/dist/shared/src/containers/ProjectTreeTable/constants.es.js +6 -0
  499. package/dist/shared/src/containers/ProjectTreeTable/constants.es.js.map +1 -0
  500. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  501. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  502. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +4 -2
  503. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  504. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +4 -4
  505. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  506. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +7 -5
  507. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  508. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
  509. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
  510. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  511. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  512. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +215 -181
  513. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  514. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  515. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  516. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +5 -4
  517. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  518. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +1 -1
  519. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -1
  520. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +3 -2
  521. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -1
  522. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js +1 -1
  523. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js.map +1 -1
  524. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js +21 -17
  525. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js.map +1 -1
  526. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js +1 -1
  527. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js.map +1 -1
  528. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js +1 -2
  529. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js.map +1 -1
  530. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  531. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  532. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +17 -11
  533. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  534. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  535. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  536. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +3 -2
  537. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  538. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  539. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  540. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +83 -81
  541. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  542. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  543. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  544. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +116 -111
  545. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  546. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  547. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  548. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +6 -3
  549. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  550. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  551. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  552. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +4 -2
  553. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  554. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  555. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  556. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +4 -2
  557. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  558. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  559. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  560. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +4 -2
  561. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  562. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  563. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  564. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +3 -2
  565. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  566. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.cjs.js.map +1 -1
  567. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.es.js.map +1 -1
  568. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  569. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  570. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +4 -2
  571. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  572. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  573. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  574. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +4 -2
  575. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  576. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  577. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  578. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +4 -2
  579. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  580. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  581. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  582. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +4 -2
  583. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  584. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  585. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  586. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +4 -2
  587. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  588. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  589. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  590. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +80 -78
  591. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  592. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  593. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  594. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +4 -2
  595. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  596. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  597. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  598. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +45 -44
  599. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  600. package/dist/shared/src/containers/ProjectTreeTable/types/summaryTypes.cjs.js +2 -0
  601. package/dist/shared/src/containers/ProjectTreeTable/types/summaryTypes.cjs.js.map +1 -0
  602. package/dist/shared/src/containers/ProjectTreeTable/types/summaryTypes.es.js +16 -0
  603. package/dist/shared/src/containers/ProjectTreeTable/types/summaryTypes.es.js.map +1 -0
  604. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  605. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  606. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +15 -13
  607. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  608. package/dist/shared/src/containers/ProjectTreeTable/utils/checkColumnVisibility.cjs.js +1 -1
  609. package/dist/shared/src/containers/ProjectTreeTable/utils/checkColumnVisibility.cjs.js.map +1 -1
  610. package/dist/shared/src/containers/ProjectTreeTable/utils/checkColumnVisibility.es.js +29 -25
  611. package/dist/shared/src/containers/ProjectTreeTable/utils/checkColumnVisibility.es.js.map +1 -1
  612. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.cjs.js +2 -0
  613. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.cjs.js.map +1 -0
  614. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.es.js +17 -0
  615. package/dist/shared/src/containers/ProjectTreeTable/utils/pinningUtils.es.js.map +1 -0
  616. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +1 -1
  617. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  618. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +4 -2
  619. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  620. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
  621. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  622. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +12 -10
  623. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  624. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  625. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  626. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +6 -4
  627. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  628. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +1 -1
  629. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
  630. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +3 -2
  631. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
  632. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  633. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  634. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +4 -2
  635. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  636. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  637. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  638. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +4 -2
  639. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  640. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +1 -1
  641. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
  642. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +3 -2
  643. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
  644. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +4 -4
  645. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  646. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +24 -19
  647. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  648. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  649. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  650. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +4 -2
  651. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  652. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  653. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  654. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +4 -2
  655. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  656. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +1 -1
  657. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
  658. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +3 -2
  659. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
  660. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  661. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  662. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +4 -2
  663. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  664. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  665. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  666. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +5 -4
  667. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  668. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
  669. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
  670. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +3 -2
  671. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
  672. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
  673. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
  674. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +3 -2
  675. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
  676. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js +1 -1
  677. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js.map +1 -1
  678. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js +4 -2
  679. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js.map +1 -1
  680. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
  681. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
  682. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +3 -2
  683. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
  684. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  685. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  686. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +12 -11
  687. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  688. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js +1 -1
  689. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -1
  690. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js +3 -2
  691. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -1
  692. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  693. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  694. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +3 -2
  695. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  696. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  697. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  698. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +4 -2
  699. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  700. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +1 -1
  701. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  702. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +3 -2
  703. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  704. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  705. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  706. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +119 -118
  707. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  708. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js +1 -1
  709. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js.map +1 -1
  710. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js +18 -16
  711. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js.map +1 -1
  712. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
  713. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  714. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +79 -51
  715. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  716. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.cjs.js +1 -1
  717. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.cjs.js.map +1 -1
  718. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.es.js +19 -17
  719. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.es.js.map +1 -1
  720. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
  721. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
  722. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +3 -2
  723. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
  724. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  725. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  726. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +6 -5
  727. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  728. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +1 -1
  729. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -1
  730. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +12 -11
  731. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -1
  732. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +1 -1
  733. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  734. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +3 -2
  735. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  736. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  737. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  738. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +78 -65
  739. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  740. package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
  741. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  742. package/dist/shared/src/context/AddonProjectContext.es.js +5 -4
  743. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  744. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  745. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  746. package/dist/shared/src/context/DetailsPanelContext.es.js +5 -4
  747. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  748. package/dist/shared/src/context/GlobalContext.cjs.js +1 -1
  749. package/dist/shared/src/context/GlobalContext.cjs.js.map +1 -1
  750. package/dist/shared/src/context/GlobalContext.es.js +5 -4
  751. package/dist/shared/src/context/GlobalContext.es.js.map +1 -1
  752. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  753. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  754. package/dist/shared/src/context/PowerpackContext.es.js +7 -6
  755. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  756. package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
  757. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
  758. package/dist/shared/src/context/ProjectContext.es.js +5 -4
  759. package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
  760. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  761. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  762. package/dist/shared/src/context/ProjectFoldersContext.es.js +5 -4
  763. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  764. package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
  765. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  766. package/dist/shared/src/context/RemoteModulesContext.es.js +5 -4
  767. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  768. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  769. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  770. package/dist/shared/src/context/SubtasksModulesContext.es.js +5 -4
  771. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  772. package/dist/shared/src/context/UriContext.cjs.js +1 -1
  773. package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
  774. package/dist/shared/src/context/UriContext.es.js +6 -5
  775. package/dist/shared/src/context/UriContext.es.js.map +1 -1
  776. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  777. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  778. package/dist/shared/src/context/WebsocketContext.es.js +6 -4
  779. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  780. package/dist/shared/src/hooks/useActionTriggers.cjs.js +1 -1
  781. package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
  782. package/dist/shared/src/hooks/useActionTriggers.es.js +3 -2
  783. package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
  784. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  785. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  786. package/dist/shared/src/hooks/useEntityUpdate.es.js +3 -2
  787. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  788. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js +1 -1
  789. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js.map +1 -1
  790. package/dist/shared/src/hooks/useGetEntityGroups.es.js +3 -2
  791. package/dist/shared/src/hooks/useGetEntityGroups.es.js.map +1 -1
  792. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  793. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  794. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +3 -2
  795. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  796. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
  797. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
  798. package/dist/shared/src/hooks/useHierarchyTable.es.js +3 -2
  799. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
  800. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +1 -1
  801. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  802. package/dist/shared/src/hooks/useScopedStatuses.es.js +5 -4
  803. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  804. package/dist/shared/src/hooks/useScopedTypes.cjs.js +1 -1
  805. package/dist/shared/src/hooks/useScopedTypes.cjs.js.map +1 -1
  806. package/dist/shared/src/hooks/useScopedTypes.es.js +3 -2
  807. package/dist/shared/src/hooks/useScopedTypes.es.js.map +1 -1
  808. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  809. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  810. package/dist/shared/src/hooks/useUserProjectConfig.es.js +3 -2
  811. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  812. package/dist/shared/src/util/columnConfigConverter.cjs.js +1 -1
  813. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
  814. package/dist/shared/src/util/columnConfigConverter.es.js +86 -65
  815. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
  816. package/dist/shared/src/util/getThumbnailUrl.cjs.js +2 -0
  817. package/dist/shared/src/util/getThumbnailUrl.cjs.js.map +1 -0
  818. package/dist/shared/src/util/getThumbnailUrl.es.js +23 -0
  819. package/dist/shared/src/util/getThumbnailUrl.es.js.map +1 -0
  820. package/dist/shared/src/util/thumbnailWebsocket.cjs.js +2 -0
  821. package/dist/shared/src/util/thumbnailWebsocket.cjs.js.map +1 -0
  822. package/dist/shared/src/util/thumbnailWebsocket.es.js +54 -0
  823. package/dist/shared/src/util/thumbnailWebsocket.es.js.map +1 -0
  824. package/dist/types/api/generated/folders.d.ts +1 -6
  825. package/dist/types/api/generated/graphql.d.ts +275 -6
  826. package/dist/types/api/generated/graphqlLinks.d.ts +7 -4
  827. package/dist/types/api/queries/activities/activityQueries.d.ts +1 -0
  828. package/dist/types/api/queries/activities/getActivities.d.ts +47 -0
  829. package/dist/types/api/queries/activities/updateActivities.d.ts +94 -0
  830. package/dist/types/api/queries/activities/util/activitiesHelpers.d.ts +1 -0
  831. package/dist/types/api/queries/columnStats/columnStats.d.ts +28 -0
  832. package/dist/types/api/queries/columnStats/index.d.ts +2 -0
  833. package/dist/types/api/queries/columnStats/metricTargets.d.ts +31 -0
  834. package/dist/types/api/queries/entities/getEntity.d.ts +47 -0
  835. package/dist/types/api/queries/entities/getEntityPanel.d.ts +47 -0
  836. package/dist/types/api/queries/entities/transformDetailsPanelData.d.ts +1 -0
  837. package/dist/types/api/queries/entities/updateEntity.d.ts +47 -0
  838. package/dist/types/api/queries/entityLists/getLists.d.ts +47 -0
  839. package/dist/types/api/queries/index.d.ts +1 -0
  840. package/dist/types/api/queries/overview/getOverview.d.ts +733 -1
  841. package/dist/types/api/queries/project/getProject.d.ts +47 -0
  842. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +69 -0
  843. package/dist/types/api/queries/users/getUsers.d.ts +47 -0
  844. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +828 -1
  845. package/dist/types/components/EntityPanelUploader/EntityPanelUploader.d.ts +1 -11
  846. package/dist/types/components/Thumbnail/StackedThumbnails.d.ts +2 -2
  847. package/dist/types/components/Thumbnail/Thumbnail.d.ts +2 -2
  848. package/dist/types/components/ThumbnailSimple/ThumbnailSimple.d.ts +1 -1
  849. package/dist/types/config/powerpackFeatures.d.ts +1 -1
  850. package/dist/types/containers/DetailsPanel/containers/FeedWrapper.d.ts +1 -0
  851. package/dist/types/containers/DetailsPanel/helpers/getThumbnails.d.ts +2 -2
  852. package/dist/types/containers/Feed/components/ActivityVersions/ActivityVersions.d.ts +1 -0
  853. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +8 -3
  854. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.styled.d.ts +2 -0
  855. package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +1 -1
  856. package/dist/types/containers/ProjectTreeTable/components/TableFooterRow.d.ts +14 -0
  857. package/dist/types/containers/ProjectTreeTable/constants.d.ts +2 -0
  858. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +10 -0
  859. package/dist/types/containers/ProjectTreeTable/context/SelectionCellsContext.d.ts +0 -1
  860. package/dist/types/containers/ProjectTreeTable/index.d.ts +1 -0
  861. package/dist/types/containers/ProjectTreeTable/types/index.d.ts +17 -1
  862. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +2 -0
  863. package/dist/types/containers/ProjectTreeTable/types/summaryTypes.d.ts +50 -0
  864. package/dist/types/containers/ProjectTreeTable/types/table.d.ts +3 -0
  865. package/dist/types/containers/ProjectTreeTable/utils/checkColumnVisibility.d.ts +2 -0
  866. package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +1 -0
  867. package/dist/types/containers/ProjectTreeTable/utils/pinningUtils.d.ts +6 -0
  868. package/dist/types/containers/ProjectTreeTable/widgets/ThumbnailWidget.d.ts +1 -1
  869. package/dist/types/containers/Views/hooks/useSelectedView.d.ts +2 -1
  870. package/dist/types/containers/Views/utils/viewUpdateHelper.d.ts +7 -3
  871. package/dist/types/util/getThumbnailUrl.d.ts +18 -0
  872. package/dist/types/util/index.d.ts +2 -0
  873. package/dist/types/util/thumbnailWebsocket.d.ts +21 -0
  874. package/dist/util.cjs.js +1 -1
  875. package/dist/util.es.js +35 -30
  876. package/dist/util.es.js.map +1 -1
  877. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"UploadVersionForm.cjs.js","sources":["../../../../../../src/components/VersionUploader/components/UploadVersionForm.tsx"],"sourcesContent":["import { FC, FormEvent, useEffect, useMemo, useRef, useState, useCallback } from 'react'\nimport styled from 'styled-components'\nimport type { DropdownRef } from '@ynput/ayon-react-components'\nimport {\n Button,\n Dropdown,\n FormLayout,\n FormRow,\n Icon,\n InputNumber,\n InputText,\n} from '@ynput/ayon-react-components'\nimport { ReviewableUpload } from '@shared/components'\nimport { useVersionUploadContext } from '../context/VersionUploadContext'\nimport { useProjectContext } from '@shared/context'\nimport { useGetTaskQuery } from '@shared/api'\nimport { EntityPickerDialog } from '@shared/containers/EntityPickerDialog/EntityPickerDialog'\nimport { Skeleton } from 'primereact/skeleton'\n\nconst StyledForm = styled.form`\n display: flex;\n flex-direction: column;\n gap: var(--base-gap-large);\n padding: var(--padding-m);\n width: 100%;\n`\n\nconst StyledFormLayout = styled(FormLayout)`\n width: 100%;\n margin: auto;\n\n & > div {\n align-items: start;\n }\n\n input {\n width: 100%;\n }\n`\n\nconst RecommendationNote = styled.div`\n font-size: var(--font-size-xs);\n color: var(--md-sys-color-outline);\n margin-top: var(--base-gap-small);\n line-height: 1.3;\n`\n\nconst InlineButton = styled.button`\n background: none;\n border: none;\n color: var(--md-sys-color-primary);\n text-decoration: underline;\n cursor: pointer;\n padding: 0;\n font-size: inherit;\n font-family: inherit;\n\n &:hover {\n color: var(--md-sys-color-primary-dark);\n }\n`\n\nconst NameInputRow = styled.div`\n display: flex;\n align-items: start;\n gap: var(--base-gap-small);\n width: 100%;\n\n & > div:first-child {\n flex: 1;\n min-width: 0;\n }\n`\n\nconst MatchNote = styled.div`\n font-size: var(--font-size-xs);\n color: var(--md-sys-color-primary);\n margin-top: var(--base-gap-small);\n line-height: 1.3;\n`\n\nconst StyledUpload = styled.div`\n position: relative;\n min-height: 80px;\n`\n\nconst TaskFieldContainer = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n width: 100%;\n`\n\nconst TaskButton = styled(Button)`\n flex: 1;\n`\n\nconst TaskText = styled.div`\n width: 100%;\n overflow: hidden;\n display: flex;\n min-width: 0;\n`\n\nconst TaskPath = styled.span`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: fit-content;\n margin-right: 4px;\n flex: 1;\n`\n\nconst TaskValue = styled.span`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: bold;\n`\n\ntype FormData = {\n version: number\n name: string\n productType: string\n}\n\ninterface UploadVersionFormProps {\n formData: FormData\n onChange: (key: keyof FormData, value: string | number) => void\n onSubmit: (formData: FormData) => void\n hidden?: (keyof FormData)[]\n projectName: string\n minVersion?: number\n versionId?: string | null\n productId?: string | null\n}\n\nexport const UploadVersionForm: FC<UploadVersionFormProps> = ({\n formData,\n onChange,\n onSubmit,\n hidden = [],\n projectName,\n minVersion = 1,\n versionId,\n productId,\n}) => {\n const previousProductTypeRef = useRef<string>(formData.productType)\n const dropdownRef = useRef<DropdownRef>(null)\n const formRef = useRef<HTMLFormElement>(null)\n const {\n pendingFiles,\n setPendingFiles,\n onCloseVersionUpload,\n extractAndSetVersionFromFiles,\n dispatch,\n taskId,\n linkedTask,\n isLoadingTask,\n setTaskId,\n setLinkedTask,\n folderId,\n folderProducts,\n isFolderProductsLoading,\n matchedProduct,\n } = useVersionUploadContext()\n\n const [isTaskPickerOpen, setIsTaskPickerOpen] = useState(false)\n\n const folderProductOptions = useMemo(\n () => folderProducts.map((p) => ({ value: p.name, label: p.name })),\n [folderProducts],\n )\n\n const handleProductPickerSelect = useCallback(\n (value: string[]) => {\n onChange('name', value.length > 0 ? value[0] : '')\n },\n [onChange],\n )\n\n const versionString = matchedProduct?.latestVersion\n ? `v${String(matchedProduct.latestVersion.version).padStart(3, '0')}`\n : ''\n\n // Fetch full task data for path; linkedTask provides instant name/type display\n const { data: taskData, isFetching: isFetchingTask } = useGetTaskQuery(\n { projectName, taskId },\n { skip: !taskId },\n )\n const isTaskLoading = isLoadingTask || (!!taskId && isFetchingTask && !linkedTask)\n\n // Use task's folder when available, fall back to product's folder\n const pickerFolderId = taskData?.folderId || folderId\n\n const project = useProjectContext()\n\n const taskName = taskData?.label || taskData?.name || linkedTask?.label || linkedTask?.name || ''\n const taskType = taskData?.taskType || linkedTask?.taskType\n const taskTypeInfo = taskType ? project.getTaskType(taskType) : undefined\n const taskIcon = taskTypeInfo?.icon || 'task_alt'\n const taskFolderPath = taskData?.path\n ? taskData.path.substring(0, taskData.path.lastIndexOf('/'))\n : ''\n\n const productTypeOptions = project.getProductTypeOptions()\n const productTypes = useMemo(() => {\n return project.productTypes.reduce((acc, type) => {\n acc[type.name] = type\n return acc\n }, {} as Record<string, { name: string; icon?: string; color?: string }>)\n }, [project.productTypes])\n\n useEffect(() => {\n // Check if the current name starts with the previous product type name\n const previousProductType = previousProductTypeRef.current\n const previousProductTypeName = productTypes[previousProductType]?.name || ''\n const currentProductTypeName = productTypes[formData.productType]?.name || ''\n\n // Only sync if the product type actually changed\n if (formData.productType !== previousProductType && previousProductTypeName) {\n // Check if the current name starts with the previous product type name\n if (formData.name.startsWith(previousProductTypeName)) {\n // Extract the suffix after the previous product type name\n const suffix = formData.name.slice(previousProductTypeName.length)\n // Create the new name with the current product type + suffix\n const newName = currentProductTypeName + suffix\n onChange('name', newName)\n }\n }\n\n // Update the ref to the current product type\n previousProductTypeRef.current = formData.productType\n }, [formData.productType, formData.name, onChange])\n\n const handleSubmit = (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n // @ts-expect-error - submitter is not defined in the type\n const submitter = e.nativeEvent.submitter as HTMLButtonElement | null\n // if the submitter is a button, check it's parent does not have the dropdown class\n if (submitter && submitter.closest('.dropdown')) {\n // if the submitter is a button inside a dropdown, do not submit the form\n return\n }\n\n onSubmit(formData)\n }\n\n const handleVersionChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = parseInt(e.target.value, 10)\n if (!isNaN(value)) {\n onChange('version', value)\n }\n }\n\n const handleNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange('name', e.target.value)\n }\n\n const handleProductTypeChange = (value: string[]) => {\n if (value.length > 0) {\n onChange('productType', value[0])\n // focus the name input after changing product type\n }\n }\n\n const handleApplyPrefix = () => {\n const currentProductTypeName = productTypes[formData.productType]?.name || ''\n const currentName = formData.name || ''\n\n // Capitalize the first letter of the existing name for camelCase\n const capitalizedName = currentName.charAt(0).toUpperCase() + currentName.slice(1)\n const newName = currentProductTypeName + capitalizedName\n onChange('name', newName)\n }\n\n const shouldShowRecommendation = () => {\n const currentProductTypeName = productTypes[formData.productType]?.name || ''\n return formData.name && !formData.name.startsWith(currentProductTypeName)\n }\n\n // Disable form fields if version has been created\n const isFormSubmitted = Boolean(versionId)\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLFormElement>) => {\n // Submit form on Cmd/Ctrl + Enter\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault()\n onSubmit(formData)\n return\n }\n }\n\n return (\n <StyledForm\n id=\"upload-version-form\"\n ref={formRef}\n onSubmit={handleSubmit}\n noValidate\n onKeyDown={handleKeyDown}\n >\n <StyledFormLayout>\n {!hidden.includes('name') && (\n <FormRow label=\"Product Name\">\n <NameInputRow>\n <div>\n <InputText\n value={formData.name}\n onChange={handleNameChange}\n placeholder=\"Enter product name\"\n minLength={1}\n autoFocus\n aria-label=\"Product Name\"\n aria-describedby={shouldShowRecommendation() ? 'name-recommendation' : undefined}\n disabled={isFormSubmitted}\n />\n {matchedProduct && (\n <MatchNote>\n {matchedProduct.latestVersion\n ? <>Matched existing product (latest: {versionString})</>\n : 'Matched existing product (no versions)'}\n </MatchNote>\n )}\n {!matchedProduct && shouldShowRecommendation() && (\n <RecommendationNote id=\"name-recommendation\">\n We recommend prefixing with \"{productTypes[formData.productType]?.name}\".{' '}\n <InlineButton type=\"button\" onClick={handleApplyPrefix}>\n Apply prefix\n </InlineButton>\n </RecommendationNote>\n )}\n </div>\n {!productId && !isFormSubmitted && (\n <Dropdown\n options={folderProductOptions}\n value={matchedProduct ? [matchedProduct.name] : []}\n onChange={handleProductPickerSelect}\n multiSelect={false}\n search\n widthExpand={false}\n disabled={isFolderProductsLoading || folderProducts.length === 0}\n aria-label=\"Select existing product\"\n valueTemplate={(_v, _s, isOpen) => (\n <Button\n icon=\"inventory_2\"\n variant=\"text\"\n data-tooltip=\"Browse existing products\"\n selected={isOpen}\n tabIndex={-1}\n disabled={isFolderProductsLoading || folderProducts.length === 0}\n />\n )}\n style={{ width: 'auto' }}\n />\n )}\n </NameInputRow>\n </FormRow>\n )}\n\n {!hidden.includes('productType') && (\n <FormRow label=\"Product Type\">\n <Dropdown\n ref={dropdownRef}\n options={productTypeOptions}\n value={[formData.productType]}\n onChange={handleProductTypeChange}\n widthExpand\n multiSelect={false}\n aria-label=\"Product Type\"\n search\n disabled={isFormSubmitted}\n />\n </FormRow>\n )}\n\n {!hidden.includes('version') && (\n <FormRow label={'Version'}>\n <InputNumber\n value={formData.version}\n onChange={handleVersionChange}\n min={minVersion}\n step={1}\n aria-label={'Version Number'}\n autoFocus={hidden.includes('name')}\n disabled={isFormSubmitted}\n />\n </FormRow>\n )}\n\n <FormRow label={'Task'}>\n <TaskFieldContainer>\n {isTaskLoading ? (\n <Skeleton height={'20px'} />\n ) : taskId && taskName ? (\n <>\n <TaskButton\n type={'button'}\n onClick={() => setIsTaskPickerOpen(true)}\n disabled={isFormSubmitted}\n variant=\"text\"\n >\n <Icon icon={taskIcon} style={{ color: taskTypeInfo?.color }} />\n <TaskText>\n {taskFolderPath && (\n <TaskPath>\n {taskFolderPath.split('/').filter(Boolean).join(' / ')} /{' '}\n </TaskPath>\n )}\n <TaskValue>{taskName}</TaskValue>\n </TaskText>\n </TaskButton>\n <Button\n type={'button'}\n icon={'close'}\n variant={'text'}\n onClick={() => {\n setTaskId('')\n setLinkedTask(null)\n }}\n disabled={isFormSubmitted}\n />\n </>\n ) : (\n <Button\n type={'button'}\n icon={'link'}\n label={'Link task'}\n variant={'text'}\n onClick={() => setIsTaskPickerOpen(true)}\n disabled={isFormSubmitted}\n />\n )}\n </TaskFieldContainer>\n </FormRow>\n </StyledFormLayout>\n\n {isTaskPickerOpen && (\n <EntityPickerDialog\n projectName={projectName}\n entityType={'task'}\n initialSelection={{\n ...(pickerFolderId ? { folder: { [pickerFolderId]: true } } : {}),\n ...(taskId ? { task: { [taskId]: true } } : {}),\n }}\n onSubmit={(selection) => {\n if (selection.length > 0) {\n setTaskId(selection[0])\n }\n setIsTaskPickerOpen(false)\n }}\n onClose={() => setIsTaskPickerOpen(false)}\n />\n )}\n\n <FormRow label=\"Reviewable files\" />\n <StyledUpload>\n <ReviewableUpload\n projectName={projectName}\n versionId={versionId}\n productId={productId}\n dispatch={dispatch}\n pendingFiles={pendingFiles}\n setPendingFiles={setPendingFiles}\n onUpload={onCloseVersionUpload}\n onFilesAdded={extractAndSetVersionFromFiles}\n pt={{\n upload: {\n style: { minHeight: 80 },\n },\n dropzone: {\n style: { inset: 0 },\n },\n }}\n />\n </StyledUpload>\n </StyledForm>\n )\n}\n"],"names":["StyledForm","styled","StyledFormLayout","FormLayout","RecommendationNote","InlineButton","NameInputRow","MatchNote","StyledUpload","TaskFieldContainer","TaskButton","Button","TaskText","TaskPath","TaskValue","UploadVersionForm","formData","onChange","onSubmit","hidden","projectName","minVersion","versionId","productId","previousProductTypeRef","useRef","dropdownRef","formRef","pendingFiles","setPendingFiles","onCloseVersionUpload","extractAndSetVersionFromFiles","dispatch","taskId","linkedTask","isLoadingTask","setTaskId","setLinkedTask","folderId","folderProducts","isFolderProductsLoading","matchedProduct","useVersionUploadContext","isTaskPickerOpen","setIsTaskPickerOpen","useState","folderProductOptions","useMemo","p","handleProductPickerSelect","useCallback","value","versionString","taskData","isFetchingTask","useGetTaskQuery","isTaskLoading","pickerFolderId","project","useProjectContext","taskName","taskType","taskTypeInfo","taskIcon","taskFolderPath","productTypeOptions","productTypes","acc","type","useEffect","previousProductType","previousProductTypeName","currentProductTypeName","suffix","newName","handleSubmit","submitter","handleVersionChange","handleNameChange","handleProductTypeChange","handleApplyPrefix","currentName","capitalizedName","shouldShowRecommendation","isFormSubmitted","handleKeyDown","jsxs","FormRow","jsx","InputText","Fragment","Dropdown","_v","_s","isOpen","InputNumber","Skeleton","Icon","EntityPickerDialog","selection","ReviewableUpload"],"mappings":"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"}
1
+ {"version":3,"file":"UploadVersionForm.cjs.js","sources":["../../../../../../src/components/VersionUploader/components/UploadVersionForm.tsx"],"sourcesContent":["import { FC, FormEvent, useEffect, useMemo, useRef, useState, useCallback } from 'react'\nimport styled from 'styled-components'\nimport type { DropdownRef } from '@ynput/ayon-react-components'\nimport {\n Button,\n Dropdown,\n FormLayout,\n FormRow,\n Icon,\n InputNumber,\n InputText,\n} from '@ynput/ayon-react-components'\nimport { ReviewableUpload } from '@shared/components'\nimport { useVersionUploadContext } from '../context/VersionUploadContext'\nimport { useProjectContext } from '@shared/context'\nimport { useGetTaskQuery } from '@shared/api'\nimport { EntityPickerDialog } from '@shared/containers/EntityPickerDialog/EntityPickerDialog'\nimport { Skeleton } from 'primereact/skeleton'\n\nconst StyledForm = styled.form`\n display: flex;\n flex-direction: column;\n gap: var(--base-gap-large);\n padding: var(--padding-m);\n width: 100%;\n`\n\nconst StyledFormLayout = styled(FormLayout)`\n width: 100%;\n margin: auto;\n\n & > div {\n align-items: start;\n }\n\n input {\n width: 100%;\n }\n`\n\nconst RecommendationNote = styled.div`\n font-size: var(--font-size-xs);\n color: var(--md-sys-color-outline);\n margin-top: var(--base-gap-small);\n line-height: 1.3;\n`\n\nconst InlineButton = styled.button`\n background: none;\n border: none;\n color: var(--md-sys-color-primary);\n text-decoration: underline;\n cursor: pointer;\n padding: 0;\n font-size: inherit;\n font-family: inherit;\n\n &:hover {\n color: var(--md-sys-color-primary-dark);\n }\n`\n\nconst NameInputRow = styled.div`\n display: flex;\n align-items: start;\n gap: var(--base-gap-small);\n width: 100%;\n\n & > div:first-child {\n flex: 1;\n min-width: 0;\n }\n`\n\nconst MatchNote = styled.div`\n font-size: var(--font-size-xs);\n color: var(--md-sys-color-primary);\n margin-top: var(--base-gap-small);\n line-height: 1.3;\n`\n\nconst StyledUpload = styled.div`\n position: relative;\n min-height: 80px;\n`\n\nconst TaskFieldContainer = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n width: 100%;\n`\n\nconst TaskButton = styled(Button)`\n flex: 1;\n`\n\nconst TaskText = styled.div`\n width: 100%;\n overflow: hidden;\n display: flex;\n min-width: 0;\n`\n\nconst TaskPath = styled.span`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: fit-content;\n margin-right: 4px;\n flex: 1;\n`\n\nconst TaskValue = styled.span`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: bold;\n`\n\ntype FormData = {\n version: number\n name: string\n productType: string\n}\n\ninterface UploadVersionFormProps {\n formData: FormData\n onChange: (key: keyof FormData, value: string | number) => void\n onSubmit: (formData: FormData) => void\n hidden?: (keyof FormData)[]\n projectName: string\n minVersion?: number\n versionId?: string | null\n productId?: string | null\n}\n\nexport const UploadVersionForm: FC<UploadVersionFormProps> = ({\n formData,\n onChange,\n onSubmit,\n hidden = [],\n projectName,\n minVersion = 1,\n versionId,\n productId,\n}) => {\n const previousProductTypeRef = useRef<string>(formData.productType)\n const dropdownRef = useRef<DropdownRef>(null)\n const formRef = useRef<HTMLFormElement>(null)\n const {\n pendingFiles,\n setPendingFiles,\n onCloseVersionUpload,\n extractAndSetVersionFromFiles,\n dispatch,\n taskId,\n linkedTask,\n isLoadingTask,\n setTaskId,\n setLinkedTask,\n folderId,\n folderProducts,\n isFolderProductsLoading,\n matchedProduct,\n } = useVersionUploadContext()\n\n const [isTaskPickerOpen, setIsTaskPickerOpen] = useState(false)\n\n const folderProductOptions = useMemo(\n () => folderProducts.map((p) => ({ value: p.name, label: p.name })),\n [folderProducts],\n )\n\n const handleProductPickerSelect = useCallback(\n (value: string[]) => {\n onChange('name', value.length > 0 ? value[0] : '')\n },\n [onChange],\n )\n\n const versionString = matchedProduct?.latestVersion\n ? `v${String(matchedProduct.latestVersion.version).padStart(3, '0')}`\n : ''\n\n // Fetch full task data for path; linkedTask provides instant name/type display\n const { data: taskData, isFetching: isFetchingTask } = useGetTaskQuery(\n { projectName, taskId },\n { skip: !taskId },\n )\n const isTaskLoading = isLoadingTask || (!!taskId && isFetchingTask && !linkedTask)\n\n // Use task's folder when available, fall back to product's folder\n const pickerFolderId = taskData?.folderId || folderId\n\n const project = useProjectContext()\n\n const taskName = taskData?.label || taskData?.name || linkedTask?.label || linkedTask?.name || ''\n const taskType = taskData?.taskType || linkedTask?.taskType\n const taskTypeInfo = taskType ? project.getTaskType(taskType) : undefined\n const taskIcon = taskTypeInfo?.icon || 'task_alt'\n const taskFolderPath = taskData?.path\n ? taskData.path.substring(0, taskData.path.lastIndexOf('/'))\n : ''\n\n const productTypeOptions = project.getProductTypeOptions()\n const productTypes = useMemo(() => {\n return project.productTypes.reduce((acc, type) => {\n acc[type.name] = type\n return acc\n }, {} as Record<string, { name: string; icon?: string; color?: string }>)\n }, [project.productTypes])\n\n useEffect(() => {\n // Check if the current name starts with the previous product type name\n const previousProductType = previousProductTypeRef.current\n const previousProductTypeName = productTypes[previousProductType]?.name || ''\n const currentProductTypeName = productTypes[formData.productType]?.name || ''\n\n // Only sync if the product type actually changed\n if (formData.productType !== previousProductType && previousProductTypeName) {\n // Check if the current name starts with the previous product type name\n if (formData.name.startsWith(previousProductTypeName)) {\n // Extract the suffix after the previous product type name\n const suffix = formData.name.slice(previousProductTypeName.length)\n // Create the new name with the current product type + suffix\n const newName = currentProductTypeName + suffix\n onChange('name', newName)\n }\n }\n\n // Update the ref to the current product type\n previousProductTypeRef.current = formData.productType\n }, [formData.productType, formData.name, onChange])\n\n const handleSubmit = (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n // @ts-expect-error - submitter is not defined in the type\n const submitter = e.nativeEvent.submitter as HTMLButtonElement | null\n // if the submitter is a button, check it's parent does not have the dropdown class\n if (submitter && submitter.closest('.dropdown')) {\n // if the submitter is a button inside a dropdown, do not submit the form\n return\n }\n\n onSubmit(formData)\n }\n\n const handleVersionChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = parseInt(e.target.value, 10)\n if (!isNaN(value)) {\n onChange('version', value)\n }\n }\n\n const handleNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange('name', e.target.value)\n }\n\n const handleProductTypeChange = (value: string[]) => {\n if (value.length > 0) {\n onChange('productType', value[0])\n // focus the name input after changing product type\n }\n }\n\n const handleApplyPrefix = () => {\n const currentProductTypeName = productTypes[formData.productType]?.name || ''\n const currentName = formData.name || ''\n\n // Capitalize the first letter of the existing name for camelCase\n const capitalizedName = currentName.charAt(0).toUpperCase() + currentName.slice(1)\n const newName = currentProductTypeName + capitalizedName\n onChange('name', newName)\n }\n\n const shouldShowRecommendation = () => {\n const currentProductTypeName = productTypes[formData.productType]?.name || ''\n return formData.name && !formData.name.startsWith(currentProductTypeName)\n }\n\n // Disable form fields if version has been created\n const isFormSubmitted = Boolean(versionId)\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLFormElement>) => {\n // Submit form on Cmd/Ctrl + Enter\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault()\n onSubmit(formData)\n return\n }\n }\n\n return (\n <StyledForm\n id=\"upload-version-form\"\n ref={formRef}\n onSubmit={handleSubmit}\n noValidate\n onKeyDown={handleKeyDown}\n >\n <StyledFormLayout>\n {!hidden.includes('name') && (\n <FormRow label=\"Product Name\">\n <NameInputRow>\n <div>\n <InputText\n value={formData.name}\n onChange={handleNameChange}\n placeholder=\"Enter product name\"\n minLength={1}\n autoFocus\n aria-label=\"Product Name\"\n aria-describedby={shouldShowRecommendation() ? 'name-recommendation' : undefined}\n disabled={isFormSubmitted}\n />\n {matchedProduct && (\n <MatchNote>\n {matchedProduct.latestVersion\n ? <>Matched existing product (latest: {versionString})</>\n : 'Matched existing product (no versions)'}\n </MatchNote>\n )}\n {!matchedProduct && shouldShowRecommendation() && (\n <RecommendationNote id=\"name-recommendation\">\n We recommend prefixing with \"{productTypes[formData.productType]?.name}\".{' '}\n <InlineButton type=\"button\" onClick={handleApplyPrefix}>\n Apply prefix\n </InlineButton>\n </RecommendationNote>\n )}\n </div>\n {!productId && !isFormSubmitted && (\n <Dropdown\n options={folderProductOptions}\n value={matchedProduct ? [matchedProduct.name] : []}\n onChange={handleProductPickerSelect}\n multiSelect={false}\n search\n widthExpand={false}\n disabled={isFolderProductsLoading || folderProducts.length === 0}\n aria-label=\"Select existing product\"\n valueTemplate={(_v, _s, isOpen) => (\n <Button\n icon=\"inventory_2\"\n variant=\"text\"\n data-tooltip=\"Browse existing products\"\n selected={isOpen}\n tabIndex={-1}\n disabled={isFolderProductsLoading || folderProducts.length === 0}\n />\n )}\n style={{ width: 'auto' }}\n />\n )}\n </NameInputRow>\n </FormRow>\n )}\n\n {!hidden.includes('productType') && (\n <FormRow label=\"Product Type\">\n <Dropdown\n ref={dropdownRef}\n options={productTypeOptions}\n value={[formData.productType]}\n onChange={handleProductTypeChange}\n widthExpand\n multiSelect={false}\n aria-label=\"Product Type\"\n search\n disabled={isFormSubmitted}\n />\n </FormRow>\n )}\n\n {!hidden.includes('version') && (\n <FormRow label={'Version'}>\n <InputNumber\n value={formData.version}\n onChange={handleVersionChange}\n min={minVersion}\n step={1}\n aria-label={'Version Number'}\n autoFocus={hidden.includes('name')}\n disabled={isFormSubmitted}\n />\n </FormRow>\n )}\n\n <FormRow label={'Task'}>\n <TaskFieldContainer>\n {isTaskLoading ? (\n <Skeleton height={'20px'} />\n ) : taskId && taskName ? (\n <>\n <TaskButton\n type={'button'}\n onClick={() => setIsTaskPickerOpen(true)}\n disabled={isFormSubmitted}\n variant=\"text\"\n >\n <Icon icon={taskIcon} style={{ color: taskTypeInfo?.color }} />\n <TaskText>\n {taskFolderPath && (\n <TaskPath>\n {taskFolderPath.split('/').filter(Boolean).join(' / ')} /{' '}\n </TaskPath>\n )}\n <TaskValue>{taskName}</TaskValue>\n </TaskText>\n </TaskButton>\n <Button\n type={'button'}\n icon={'close'}\n variant={'text'}\n onClick={() => {\n setTaskId('')\n setLinkedTask(null)\n }}\n disabled={isFormSubmitted}\n />\n </>\n ) : (\n <Button\n type={'button'}\n icon={'link'}\n label={'Link task'}\n variant={'text'}\n onClick={() => setIsTaskPickerOpen(true)}\n disabled={isFormSubmitted}\n />\n )}\n </TaskFieldContainer>\n </FormRow>\n </StyledFormLayout>\n\n {isTaskPickerOpen && (\n <EntityPickerDialog\n projectName={projectName}\n entityType={'task'}\n initialSelection={{\n ...(pickerFolderId ? { folder: { [pickerFolderId]: true } } : {}),\n ...(taskId ? { task: { [taskId]: true } } : {}),\n }}\n onSubmit={(selection) => {\n if (selection.length > 0) {\n setTaskId(selection[0])\n }\n setIsTaskPickerOpen(false)\n }}\n onClose={() => setIsTaskPickerOpen(false)}\n />\n )}\n\n <FormRow label=\"Reviewable files\" />\n <StyledUpload>\n <ReviewableUpload\n projectName={projectName}\n versionId={versionId}\n productId={productId}\n dispatch={dispatch}\n pendingFiles={pendingFiles}\n setPendingFiles={setPendingFiles}\n onUpload={onCloseVersionUpload}\n onFilesAdded={extractAndSetVersionFromFiles}\n pt={{\n upload: {\n style: { minHeight: 80 },\n },\n dropzone: {\n style: { inset: 0 },\n },\n }}\n />\n </StyledUpload>\n </StyledForm>\n )\n}\n"],"names":["StyledForm","styled","StyledFormLayout","FormLayout","RecommendationNote","InlineButton","NameInputRow","MatchNote","StyledUpload","TaskFieldContainer","TaskButton","Button","TaskText","TaskPath","TaskValue","UploadVersionForm","formData","onChange","onSubmit","hidden","projectName","minVersion","versionId","productId","previousProductTypeRef","useRef","dropdownRef","formRef","pendingFiles","setPendingFiles","onCloseVersionUpload","extractAndSetVersionFromFiles","dispatch","taskId","linkedTask","isLoadingTask","setTaskId","setLinkedTask","folderId","folderProducts","isFolderProductsLoading","matchedProduct","useVersionUploadContext","isTaskPickerOpen","setIsTaskPickerOpen","useState","folderProductOptions","useMemo","p","handleProductPickerSelect","useCallback","value","versionString","taskData","isFetchingTask","useGetTaskQuery","isTaskLoading","pickerFolderId","project","useProjectContext","taskName","taskType","taskTypeInfo","taskIcon","taskFolderPath","productTypeOptions","productTypes","acc","type","useEffect","previousProductType","previousProductTypeName","currentProductTypeName","suffix","newName","handleSubmit","submitter","handleVersionChange","handleNameChange","handleProductTypeChange","handleApplyPrefix","currentName","capitalizedName","shouldShowRecommendation","isFormSubmitted","handleKeyDown","jsxs","FormRow","jsx","InputText","Fragment","Dropdown","_v","_s","isOpen","InputNumber","Skeleton","Icon","EntityPickerDialog","selection","ReviewableUpload"],"mappings":"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"}
@@ -68,6 +68,7 @@ import "../../../api/queries/attributes/getAttributes.es.js";
68
68
  import "../../../api/queries/attributes/updateAttributes.es.js";
69
69
  import "../../../api/queries/authentication/getAuthentication.es.js";
70
70
  import "../../../api/queries/cloud/cloud.es.js";
71
+ import "../../../api/queries/columnStats/metricTargets.es.js";
71
72
  import "../../../api/queries/config/getConfig.es.js";
72
73
  import "../../../api/queries/config/updateConfig.es.js";
73
74
  import "../../../api/queries/entities/getEntity.es.js";
@@ -224,6 +225,7 @@ import "../../../containers/ProjectTreeTable/components/SelectionCell.es.js";
224
225
  import "../../../containers/ProjectTreeTable/components/RowSelectionHeader.es.js";
225
226
  import "../../../containers/ProjectTreeTable/widgets/LoadMoreWidget.es.js";
226
227
  import "../../../containers/ProjectTreeTable/components/HeaderActionButton.es.js";
228
+ import "../../../containers/ProjectTreeTable/components/TableFooterRow.es.js";
227
229
  import { EntityPickerDialog as vt } from "../../../containers/EntityPickerDialog/EntityPickerDialog.es.js";
228
230
  import "../../../containers/Slicer/components/Slicer.es.js";
229
231
  import "../../../containers/Slicer/context/SlicerContext.es.js";
@@ -359,7 +361,7 @@ const bt = p.form`
359
361
  overflow: hidden;
360
362
  text-overflow: ellipsis;
361
363
  font-weight: bold;
362
- `, qe = ({
364
+ `, Xe = ({
363
365
  formData: i,
364
366
  onChange: e,
365
367
  onSubmit: k,
@@ -604,6 +606,6 @@ const bt = p.form`
604
606
  );
605
607
  };
606
608
  export {
607
- qe as UploadVersionForm
609
+ Xe as UploadVersionForm
608
610
  };
609
611
  //# sourceMappingURL=UploadVersionForm.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UploadVersionForm.es.js","sources":["../../../../../../src/components/VersionUploader/components/UploadVersionForm.tsx"],"sourcesContent":["import { FC, FormEvent, useEffect, useMemo, useRef, useState, useCallback } from 'react'\nimport styled from 'styled-components'\nimport type { DropdownRef } from '@ynput/ayon-react-components'\nimport {\n Button,\n Dropdown,\n FormLayout,\n FormRow,\n Icon,\n InputNumber,\n InputText,\n} from '@ynput/ayon-react-components'\nimport { ReviewableUpload } from '@shared/components'\nimport { useVersionUploadContext } from '../context/VersionUploadContext'\nimport { useProjectContext } from '@shared/context'\nimport { useGetTaskQuery } from '@shared/api'\nimport { EntityPickerDialog } from '@shared/containers/EntityPickerDialog/EntityPickerDialog'\nimport { Skeleton } from 'primereact/skeleton'\n\nconst StyledForm = styled.form`\n display: flex;\n flex-direction: column;\n gap: var(--base-gap-large);\n padding: var(--padding-m);\n width: 100%;\n`\n\nconst StyledFormLayout = styled(FormLayout)`\n width: 100%;\n margin: auto;\n\n & > div {\n align-items: start;\n }\n\n input {\n width: 100%;\n }\n`\n\nconst RecommendationNote = styled.div`\n font-size: var(--font-size-xs);\n color: var(--md-sys-color-outline);\n margin-top: var(--base-gap-small);\n line-height: 1.3;\n`\n\nconst InlineButton = styled.button`\n background: none;\n border: none;\n color: var(--md-sys-color-primary);\n text-decoration: underline;\n cursor: pointer;\n padding: 0;\n font-size: inherit;\n font-family: inherit;\n\n &:hover {\n color: var(--md-sys-color-primary-dark);\n }\n`\n\nconst NameInputRow = styled.div`\n display: flex;\n align-items: start;\n gap: var(--base-gap-small);\n width: 100%;\n\n & > div:first-child {\n flex: 1;\n min-width: 0;\n }\n`\n\nconst MatchNote = styled.div`\n font-size: var(--font-size-xs);\n color: var(--md-sys-color-primary);\n margin-top: var(--base-gap-small);\n line-height: 1.3;\n`\n\nconst StyledUpload = styled.div`\n position: relative;\n min-height: 80px;\n`\n\nconst TaskFieldContainer = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n width: 100%;\n`\n\nconst TaskButton = styled(Button)`\n flex: 1;\n`\n\nconst TaskText = styled.div`\n width: 100%;\n overflow: hidden;\n display: flex;\n min-width: 0;\n`\n\nconst TaskPath = styled.span`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: fit-content;\n margin-right: 4px;\n flex: 1;\n`\n\nconst TaskValue = styled.span`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: bold;\n`\n\ntype FormData = {\n version: number\n name: string\n productType: string\n}\n\ninterface UploadVersionFormProps {\n formData: FormData\n onChange: (key: keyof FormData, value: string | number) => void\n onSubmit: (formData: FormData) => void\n hidden?: (keyof FormData)[]\n projectName: string\n minVersion?: number\n versionId?: string | null\n productId?: string | null\n}\n\nexport const UploadVersionForm: FC<UploadVersionFormProps> = ({\n formData,\n onChange,\n onSubmit,\n hidden = [],\n projectName,\n minVersion = 1,\n versionId,\n productId,\n}) => {\n const previousProductTypeRef = useRef<string>(formData.productType)\n const dropdownRef = useRef<DropdownRef>(null)\n const formRef = useRef<HTMLFormElement>(null)\n const {\n pendingFiles,\n setPendingFiles,\n onCloseVersionUpload,\n extractAndSetVersionFromFiles,\n dispatch,\n taskId,\n linkedTask,\n isLoadingTask,\n setTaskId,\n setLinkedTask,\n folderId,\n folderProducts,\n isFolderProductsLoading,\n matchedProduct,\n } = useVersionUploadContext()\n\n const [isTaskPickerOpen, setIsTaskPickerOpen] = useState(false)\n\n const folderProductOptions = useMemo(\n () => folderProducts.map((p) => ({ value: p.name, label: p.name })),\n [folderProducts],\n )\n\n const handleProductPickerSelect = useCallback(\n (value: string[]) => {\n onChange('name', value.length > 0 ? value[0] : '')\n },\n [onChange],\n )\n\n const versionString = matchedProduct?.latestVersion\n ? `v${String(matchedProduct.latestVersion.version).padStart(3, '0')}`\n : ''\n\n // Fetch full task data for path; linkedTask provides instant name/type display\n const { data: taskData, isFetching: isFetchingTask } = useGetTaskQuery(\n { projectName, taskId },\n { skip: !taskId },\n )\n const isTaskLoading = isLoadingTask || (!!taskId && isFetchingTask && !linkedTask)\n\n // Use task's folder when available, fall back to product's folder\n const pickerFolderId = taskData?.folderId || folderId\n\n const project = useProjectContext()\n\n const taskName = taskData?.label || taskData?.name || linkedTask?.label || linkedTask?.name || ''\n const taskType = taskData?.taskType || linkedTask?.taskType\n const taskTypeInfo = taskType ? project.getTaskType(taskType) : undefined\n const taskIcon = taskTypeInfo?.icon || 'task_alt'\n const taskFolderPath = taskData?.path\n ? taskData.path.substring(0, taskData.path.lastIndexOf('/'))\n : ''\n\n const productTypeOptions = project.getProductTypeOptions()\n const productTypes = useMemo(() => {\n return project.productTypes.reduce((acc, type) => {\n acc[type.name] = type\n return acc\n }, {} as Record<string, { name: string; icon?: string; color?: string }>)\n }, [project.productTypes])\n\n useEffect(() => {\n // Check if the current name starts with the previous product type name\n const previousProductType = previousProductTypeRef.current\n const previousProductTypeName = productTypes[previousProductType]?.name || ''\n const currentProductTypeName = productTypes[formData.productType]?.name || ''\n\n // Only sync if the product type actually changed\n if (formData.productType !== previousProductType && previousProductTypeName) {\n // Check if the current name starts with the previous product type name\n if (formData.name.startsWith(previousProductTypeName)) {\n // Extract the suffix after the previous product type name\n const suffix = formData.name.slice(previousProductTypeName.length)\n // Create the new name with the current product type + suffix\n const newName = currentProductTypeName + suffix\n onChange('name', newName)\n }\n }\n\n // Update the ref to the current product type\n previousProductTypeRef.current = formData.productType\n }, [formData.productType, formData.name, onChange])\n\n const handleSubmit = (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n // @ts-expect-error - submitter is not defined in the type\n const submitter = e.nativeEvent.submitter as HTMLButtonElement | null\n // if the submitter is a button, check it's parent does not have the dropdown class\n if (submitter && submitter.closest('.dropdown')) {\n // if the submitter is a button inside a dropdown, do not submit the form\n return\n }\n\n onSubmit(formData)\n }\n\n const handleVersionChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = parseInt(e.target.value, 10)\n if (!isNaN(value)) {\n onChange('version', value)\n }\n }\n\n const handleNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange('name', e.target.value)\n }\n\n const handleProductTypeChange = (value: string[]) => {\n if (value.length > 0) {\n onChange('productType', value[0])\n // focus the name input after changing product type\n }\n }\n\n const handleApplyPrefix = () => {\n const currentProductTypeName = productTypes[formData.productType]?.name || ''\n const currentName = formData.name || ''\n\n // Capitalize the first letter of the existing name for camelCase\n const capitalizedName = currentName.charAt(0).toUpperCase() + currentName.slice(1)\n const newName = currentProductTypeName + capitalizedName\n onChange('name', newName)\n }\n\n const shouldShowRecommendation = () => {\n const currentProductTypeName = productTypes[formData.productType]?.name || ''\n return formData.name && !formData.name.startsWith(currentProductTypeName)\n }\n\n // Disable form fields if version has been created\n const isFormSubmitted = Boolean(versionId)\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLFormElement>) => {\n // Submit form on Cmd/Ctrl + Enter\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault()\n onSubmit(formData)\n return\n }\n }\n\n return (\n <StyledForm\n id=\"upload-version-form\"\n ref={formRef}\n onSubmit={handleSubmit}\n noValidate\n onKeyDown={handleKeyDown}\n >\n <StyledFormLayout>\n {!hidden.includes('name') && (\n <FormRow label=\"Product Name\">\n <NameInputRow>\n <div>\n <InputText\n value={formData.name}\n onChange={handleNameChange}\n placeholder=\"Enter product name\"\n minLength={1}\n autoFocus\n aria-label=\"Product Name\"\n aria-describedby={shouldShowRecommendation() ? 'name-recommendation' : undefined}\n disabled={isFormSubmitted}\n />\n {matchedProduct && (\n <MatchNote>\n {matchedProduct.latestVersion\n ? <>Matched existing product (latest: {versionString})</>\n : 'Matched existing product (no versions)'}\n </MatchNote>\n )}\n {!matchedProduct && shouldShowRecommendation() && (\n <RecommendationNote id=\"name-recommendation\">\n We recommend prefixing with \"{productTypes[formData.productType]?.name}\".{' '}\n <InlineButton type=\"button\" onClick={handleApplyPrefix}>\n Apply prefix\n </InlineButton>\n </RecommendationNote>\n )}\n </div>\n {!productId && !isFormSubmitted && (\n <Dropdown\n options={folderProductOptions}\n value={matchedProduct ? [matchedProduct.name] : []}\n onChange={handleProductPickerSelect}\n multiSelect={false}\n search\n widthExpand={false}\n disabled={isFolderProductsLoading || folderProducts.length === 0}\n aria-label=\"Select existing product\"\n valueTemplate={(_v, _s, isOpen) => (\n <Button\n icon=\"inventory_2\"\n variant=\"text\"\n data-tooltip=\"Browse existing products\"\n selected={isOpen}\n tabIndex={-1}\n disabled={isFolderProductsLoading || folderProducts.length === 0}\n />\n )}\n style={{ width: 'auto' }}\n />\n )}\n </NameInputRow>\n </FormRow>\n )}\n\n {!hidden.includes('productType') && (\n <FormRow label=\"Product Type\">\n <Dropdown\n ref={dropdownRef}\n options={productTypeOptions}\n value={[formData.productType]}\n onChange={handleProductTypeChange}\n widthExpand\n multiSelect={false}\n aria-label=\"Product Type\"\n search\n disabled={isFormSubmitted}\n />\n </FormRow>\n )}\n\n {!hidden.includes('version') && (\n <FormRow label={'Version'}>\n <InputNumber\n value={formData.version}\n onChange={handleVersionChange}\n min={minVersion}\n step={1}\n aria-label={'Version Number'}\n autoFocus={hidden.includes('name')}\n disabled={isFormSubmitted}\n />\n </FormRow>\n )}\n\n <FormRow label={'Task'}>\n <TaskFieldContainer>\n {isTaskLoading ? (\n <Skeleton height={'20px'} />\n ) : taskId && taskName ? (\n <>\n <TaskButton\n type={'button'}\n onClick={() => setIsTaskPickerOpen(true)}\n disabled={isFormSubmitted}\n variant=\"text\"\n >\n <Icon icon={taskIcon} style={{ color: taskTypeInfo?.color }} />\n <TaskText>\n {taskFolderPath && (\n <TaskPath>\n {taskFolderPath.split('/').filter(Boolean).join(' / ')} /{' '}\n </TaskPath>\n )}\n <TaskValue>{taskName}</TaskValue>\n </TaskText>\n </TaskButton>\n <Button\n type={'button'}\n icon={'close'}\n variant={'text'}\n onClick={() => {\n setTaskId('')\n setLinkedTask(null)\n }}\n disabled={isFormSubmitted}\n />\n </>\n ) : (\n <Button\n type={'button'}\n icon={'link'}\n label={'Link task'}\n variant={'text'}\n onClick={() => setIsTaskPickerOpen(true)}\n disabled={isFormSubmitted}\n />\n )}\n </TaskFieldContainer>\n </FormRow>\n </StyledFormLayout>\n\n {isTaskPickerOpen && (\n <EntityPickerDialog\n projectName={projectName}\n entityType={'task'}\n initialSelection={{\n ...(pickerFolderId ? { folder: { [pickerFolderId]: true } } : {}),\n ...(taskId ? { task: { [taskId]: true } } : {}),\n }}\n onSubmit={(selection) => {\n if (selection.length > 0) {\n setTaskId(selection[0])\n }\n setIsTaskPickerOpen(false)\n }}\n onClose={() => setIsTaskPickerOpen(false)}\n />\n )}\n\n <FormRow label=\"Reviewable files\" />\n <StyledUpload>\n <ReviewableUpload\n projectName={projectName}\n versionId={versionId}\n productId={productId}\n dispatch={dispatch}\n pendingFiles={pendingFiles}\n setPendingFiles={setPendingFiles}\n onUpload={onCloseVersionUpload}\n onFilesAdded={extractAndSetVersionFromFiles}\n pt={{\n upload: {\n style: { minHeight: 80 },\n },\n dropzone: {\n style: { inset: 0 },\n },\n }}\n />\n </StyledUpload>\n </StyledForm>\n )\n}\n"],"names":["StyledForm","styled","StyledFormLayout","FormLayout","RecommendationNote","InlineButton","NameInputRow","MatchNote","StyledUpload","TaskFieldContainer","TaskButton","Button","TaskText","TaskPath","TaskValue","UploadVersionForm","formData","onChange","onSubmit","hidden","projectName","minVersion","versionId","productId","previousProductTypeRef","useRef","dropdownRef","formRef","pendingFiles","setPendingFiles","onCloseVersionUpload","extractAndSetVersionFromFiles","dispatch","taskId","linkedTask","isLoadingTask","setTaskId","setLinkedTask","folderId","folderProducts","isFolderProductsLoading","matchedProduct","useVersionUploadContext","isTaskPickerOpen","setIsTaskPickerOpen","useState","folderProductOptions","useMemo","p","handleProductPickerSelect","useCallback","value","versionString","taskData","isFetchingTask","useGetTaskQuery","isTaskLoading","pickerFolderId","project","useProjectContext","taskName","taskType","taskTypeInfo","taskIcon","taskFolderPath","productTypeOptions","productTypes","acc","type","useEffect","previousProductType","previousProductTypeName","currentProductTypeName","suffix","newName","handleSubmit","e","submitter","handleVersionChange","handleNameChange","handleProductTypeChange","handleApplyPrefix","currentName","capitalizedName","shouldShowRecommendation","isFormSubmitted","handleKeyDown","jsxs","FormRow","jsx","InputText","Fragment","Dropdown","_v","_s","isOpen","InputNumber","Skeleton","Icon","EntityPickerDialog","selection","ReviewableUpload"],"mappings":"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"}
1
+ {"version":3,"file":"UploadVersionForm.es.js","sources":["../../../../../../src/components/VersionUploader/components/UploadVersionForm.tsx"],"sourcesContent":["import { FC, FormEvent, useEffect, useMemo, useRef, useState, useCallback } from 'react'\nimport styled from 'styled-components'\nimport type { DropdownRef } from '@ynput/ayon-react-components'\nimport {\n Button,\n Dropdown,\n FormLayout,\n FormRow,\n Icon,\n InputNumber,\n InputText,\n} from '@ynput/ayon-react-components'\nimport { ReviewableUpload } from '@shared/components'\nimport { useVersionUploadContext } from '../context/VersionUploadContext'\nimport { useProjectContext } from '@shared/context'\nimport { useGetTaskQuery } from '@shared/api'\nimport { EntityPickerDialog } from '@shared/containers/EntityPickerDialog/EntityPickerDialog'\nimport { Skeleton } from 'primereact/skeleton'\n\nconst StyledForm = styled.form`\n display: flex;\n flex-direction: column;\n gap: var(--base-gap-large);\n padding: var(--padding-m);\n width: 100%;\n`\n\nconst StyledFormLayout = styled(FormLayout)`\n width: 100%;\n margin: auto;\n\n & > div {\n align-items: start;\n }\n\n input {\n width: 100%;\n }\n`\n\nconst RecommendationNote = styled.div`\n font-size: var(--font-size-xs);\n color: var(--md-sys-color-outline);\n margin-top: var(--base-gap-small);\n line-height: 1.3;\n`\n\nconst InlineButton = styled.button`\n background: none;\n border: none;\n color: var(--md-sys-color-primary);\n text-decoration: underline;\n cursor: pointer;\n padding: 0;\n font-size: inherit;\n font-family: inherit;\n\n &:hover {\n color: var(--md-sys-color-primary-dark);\n }\n`\n\nconst NameInputRow = styled.div`\n display: flex;\n align-items: start;\n gap: var(--base-gap-small);\n width: 100%;\n\n & > div:first-child {\n flex: 1;\n min-width: 0;\n }\n`\n\nconst MatchNote = styled.div`\n font-size: var(--font-size-xs);\n color: var(--md-sys-color-primary);\n margin-top: var(--base-gap-small);\n line-height: 1.3;\n`\n\nconst StyledUpload = styled.div`\n position: relative;\n min-height: 80px;\n`\n\nconst TaskFieldContainer = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n width: 100%;\n`\n\nconst TaskButton = styled(Button)`\n flex: 1;\n`\n\nconst TaskText = styled.div`\n width: 100%;\n overflow: hidden;\n display: flex;\n min-width: 0;\n`\n\nconst TaskPath = styled.span`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: fit-content;\n margin-right: 4px;\n flex: 1;\n`\n\nconst TaskValue = styled.span`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: bold;\n`\n\ntype FormData = {\n version: number\n name: string\n productType: string\n}\n\ninterface UploadVersionFormProps {\n formData: FormData\n onChange: (key: keyof FormData, value: string | number) => void\n onSubmit: (formData: FormData) => void\n hidden?: (keyof FormData)[]\n projectName: string\n minVersion?: number\n versionId?: string | null\n productId?: string | null\n}\n\nexport const UploadVersionForm: FC<UploadVersionFormProps> = ({\n formData,\n onChange,\n onSubmit,\n hidden = [],\n projectName,\n minVersion = 1,\n versionId,\n productId,\n}) => {\n const previousProductTypeRef = useRef<string>(formData.productType)\n const dropdownRef = useRef<DropdownRef>(null)\n const formRef = useRef<HTMLFormElement>(null)\n const {\n pendingFiles,\n setPendingFiles,\n onCloseVersionUpload,\n extractAndSetVersionFromFiles,\n dispatch,\n taskId,\n linkedTask,\n isLoadingTask,\n setTaskId,\n setLinkedTask,\n folderId,\n folderProducts,\n isFolderProductsLoading,\n matchedProduct,\n } = useVersionUploadContext()\n\n const [isTaskPickerOpen, setIsTaskPickerOpen] = useState(false)\n\n const folderProductOptions = useMemo(\n () => folderProducts.map((p) => ({ value: p.name, label: p.name })),\n [folderProducts],\n )\n\n const handleProductPickerSelect = useCallback(\n (value: string[]) => {\n onChange('name', value.length > 0 ? value[0] : '')\n },\n [onChange],\n )\n\n const versionString = matchedProduct?.latestVersion\n ? `v${String(matchedProduct.latestVersion.version).padStart(3, '0')}`\n : ''\n\n // Fetch full task data for path; linkedTask provides instant name/type display\n const { data: taskData, isFetching: isFetchingTask } = useGetTaskQuery(\n { projectName, taskId },\n { skip: !taskId },\n )\n const isTaskLoading = isLoadingTask || (!!taskId && isFetchingTask && !linkedTask)\n\n // Use task's folder when available, fall back to product's folder\n const pickerFolderId = taskData?.folderId || folderId\n\n const project = useProjectContext()\n\n const taskName = taskData?.label || taskData?.name || linkedTask?.label || linkedTask?.name || ''\n const taskType = taskData?.taskType || linkedTask?.taskType\n const taskTypeInfo = taskType ? project.getTaskType(taskType) : undefined\n const taskIcon = taskTypeInfo?.icon || 'task_alt'\n const taskFolderPath = taskData?.path\n ? taskData.path.substring(0, taskData.path.lastIndexOf('/'))\n : ''\n\n const productTypeOptions = project.getProductTypeOptions()\n const productTypes = useMemo(() => {\n return project.productTypes.reduce((acc, type) => {\n acc[type.name] = type\n return acc\n }, {} as Record<string, { name: string; icon?: string; color?: string }>)\n }, [project.productTypes])\n\n useEffect(() => {\n // Check if the current name starts with the previous product type name\n const previousProductType = previousProductTypeRef.current\n const previousProductTypeName = productTypes[previousProductType]?.name || ''\n const currentProductTypeName = productTypes[formData.productType]?.name || ''\n\n // Only sync if the product type actually changed\n if (formData.productType !== previousProductType && previousProductTypeName) {\n // Check if the current name starts with the previous product type name\n if (formData.name.startsWith(previousProductTypeName)) {\n // Extract the suffix after the previous product type name\n const suffix = formData.name.slice(previousProductTypeName.length)\n // Create the new name with the current product type + suffix\n const newName = currentProductTypeName + suffix\n onChange('name', newName)\n }\n }\n\n // Update the ref to the current product type\n previousProductTypeRef.current = formData.productType\n }, [formData.productType, formData.name, onChange])\n\n const handleSubmit = (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n // @ts-expect-error - submitter is not defined in the type\n const submitter = e.nativeEvent.submitter as HTMLButtonElement | null\n // if the submitter is a button, check it's parent does not have the dropdown class\n if (submitter && submitter.closest('.dropdown')) {\n // if the submitter is a button inside a dropdown, do not submit the form\n return\n }\n\n onSubmit(formData)\n }\n\n const handleVersionChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = parseInt(e.target.value, 10)\n if (!isNaN(value)) {\n onChange('version', value)\n }\n }\n\n const handleNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange('name', e.target.value)\n }\n\n const handleProductTypeChange = (value: string[]) => {\n if (value.length > 0) {\n onChange('productType', value[0])\n // focus the name input after changing product type\n }\n }\n\n const handleApplyPrefix = () => {\n const currentProductTypeName = productTypes[formData.productType]?.name || ''\n const currentName = formData.name || ''\n\n // Capitalize the first letter of the existing name for camelCase\n const capitalizedName = currentName.charAt(0).toUpperCase() + currentName.slice(1)\n const newName = currentProductTypeName + capitalizedName\n onChange('name', newName)\n }\n\n const shouldShowRecommendation = () => {\n const currentProductTypeName = productTypes[formData.productType]?.name || ''\n return formData.name && !formData.name.startsWith(currentProductTypeName)\n }\n\n // Disable form fields if version has been created\n const isFormSubmitted = Boolean(versionId)\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLFormElement>) => {\n // Submit form on Cmd/Ctrl + Enter\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault()\n onSubmit(formData)\n return\n }\n }\n\n return (\n <StyledForm\n id=\"upload-version-form\"\n ref={formRef}\n onSubmit={handleSubmit}\n noValidate\n onKeyDown={handleKeyDown}\n >\n <StyledFormLayout>\n {!hidden.includes('name') && (\n <FormRow label=\"Product Name\">\n <NameInputRow>\n <div>\n <InputText\n value={formData.name}\n onChange={handleNameChange}\n placeholder=\"Enter product name\"\n minLength={1}\n autoFocus\n aria-label=\"Product Name\"\n aria-describedby={shouldShowRecommendation() ? 'name-recommendation' : undefined}\n disabled={isFormSubmitted}\n />\n {matchedProduct && (\n <MatchNote>\n {matchedProduct.latestVersion\n ? <>Matched existing product (latest: {versionString})</>\n : 'Matched existing product (no versions)'}\n </MatchNote>\n )}\n {!matchedProduct && shouldShowRecommendation() && (\n <RecommendationNote id=\"name-recommendation\">\n We recommend prefixing with \"{productTypes[formData.productType]?.name}\".{' '}\n <InlineButton type=\"button\" onClick={handleApplyPrefix}>\n Apply prefix\n </InlineButton>\n </RecommendationNote>\n )}\n </div>\n {!productId && !isFormSubmitted && (\n <Dropdown\n options={folderProductOptions}\n value={matchedProduct ? [matchedProduct.name] : []}\n onChange={handleProductPickerSelect}\n multiSelect={false}\n search\n widthExpand={false}\n disabled={isFolderProductsLoading || folderProducts.length === 0}\n aria-label=\"Select existing product\"\n valueTemplate={(_v, _s, isOpen) => (\n <Button\n icon=\"inventory_2\"\n variant=\"text\"\n data-tooltip=\"Browse existing products\"\n selected={isOpen}\n tabIndex={-1}\n disabled={isFolderProductsLoading || folderProducts.length === 0}\n />\n )}\n style={{ width: 'auto' }}\n />\n )}\n </NameInputRow>\n </FormRow>\n )}\n\n {!hidden.includes('productType') && (\n <FormRow label=\"Product Type\">\n <Dropdown\n ref={dropdownRef}\n options={productTypeOptions}\n value={[formData.productType]}\n onChange={handleProductTypeChange}\n widthExpand\n multiSelect={false}\n aria-label=\"Product Type\"\n search\n disabled={isFormSubmitted}\n />\n </FormRow>\n )}\n\n {!hidden.includes('version') && (\n <FormRow label={'Version'}>\n <InputNumber\n value={formData.version}\n onChange={handleVersionChange}\n min={minVersion}\n step={1}\n aria-label={'Version Number'}\n autoFocus={hidden.includes('name')}\n disabled={isFormSubmitted}\n />\n </FormRow>\n )}\n\n <FormRow label={'Task'}>\n <TaskFieldContainer>\n {isTaskLoading ? (\n <Skeleton height={'20px'} />\n ) : taskId && taskName ? (\n <>\n <TaskButton\n type={'button'}\n onClick={() => setIsTaskPickerOpen(true)}\n disabled={isFormSubmitted}\n variant=\"text\"\n >\n <Icon icon={taskIcon} style={{ color: taskTypeInfo?.color }} />\n <TaskText>\n {taskFolderPath && (\n <TaskPath>\n {taskFolderPath.split('/').filter(Boolean).join(' / ')} /{' '}\n </TaskPath>\n )}\n <TaskValue>{taskName}</TaskValue>\n </TaskText>\n </TaskButton>\n <Button\n type={'button'}\n icon={'close'}\n variant={'text'}\n onClick={() => {\n setTaskId('')\n setLinkedTask(null)\n }}\n disabled={isFormSubmitted}\n />\n </>\n ) : (\n <Button\n type={'button'}\n icon={'link'}\n label={'Link task'}\n variant={'text'}\n onClick={() => setIsTaskPickerOpen(true)}\n disabled={isFormSubmitted}\n />\n )}\n </TaskFieldContainer>\n </FormRow>\n </StyledFormLayout>\n\n {isTaskPickerOpen && (\n <EntityPickerDialog\n projectName={projectName}\n entityType={'task'}\n initialSelection={{\n ...(pickerFolderId ? { folder: { [pickerFolderId]: true } } : {}),\n ...(taskId ? { task: { [taskId]: true } } : {}),\n }}\n onSubmit={(selection) => {\n if (selection.length > 0) {\n setTaskId(selection[0])\n }\n setIsTaskPickerOpen(false)\n }}\n onClose={() => setIsTaskPickerOpen(false)}\n />\n )}\n\n <FormRow label=\"Reviewable files\" />\n <StyledUpload>\n <ReviewableUpload\n projectName={projectName}\n versionId={versionId}\n productId={productId}\n dispatch={dispatch}\n pendingFiles={pendingFiles}\n setPendingFiles={setPendingFiles}\n onUpload={onCloseVersionUpload}\n onFilesAdded={extractAndSetVersionFromFiles}\n pt={{\n upload: {\n style: { minHeight: 80 },\n },\n dropzone: {\n style: { inset: 0 },\n },\n }}\n />\n </StyledUpload>\n </StyledForm>\n )\n}\n"],"names":["StyledForm","styled","StyledFormLayout","FormLayout","RecommendationNote","InlineButton","NameInputRow","MatchNote","StyledUpload","TaskFieldContainer","TaskButton","Button","TaskText","TaskPath","TaskValue","UploadVersionForm","formData","onChange","onSubmit","hidden","projectName","minVersion","versionId","productId","previousProductTypeRef","useRef","dropdownRef","formRef","pendingFiles","setPendingFiles","onCloseVersionUpload","extractAndSetVersionFromFiles","dispatch","taskId","linkedTask","isLoadingTask","setTaskId","setLinkedTask","folderId","folderProducts","isFolderProductsLoading","matchedProduct","useVersionUploadContext","isTaskPickerOpen","setIsTaskPickerOpen","useState","folderProductOptions","useMemo","p","handleProductPickerSelect","useCallback","value","versionString","taskData","isFetchingTask","useGetTaskQuery","isTaskLoading","pickerFolderId","project","useProjectContext","taskName","taskType","taskTypeInfo","taskIcon","taskFolderPath","productTypeOptions","productTypes","acc","type","useEffect","previousProductType","previousProductTypeName","currentProductTypeName","suffix","newName","handleSubmit","e","submitter","handleVersionChange","handleNameChange","handleProductTypeChange","handleApplyPrefix","currentName","capitalizedName","shouldShowRecommendation","isFormSubmitted","handleKeyDown","jsxs","FormRow","jsx","InputText","Fragment","Dropdown","_v","_s","isOpen","InputNumber","Skeleton","Icon","EntityPickerDialog","selection","ReviewableUpload"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const le=require("../../../../../_virtual/jsx-runtime.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/dataImport.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/projectFolders.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");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.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/permissions/getPermissions.cjs.js");const de=require("../../../api/queries/products/createProduct.cjs.js"),ce=require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.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/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.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 E=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");const r=require("react");require("lodash");const qe=require("react-toastify");require("uuid");const fe=require("../../../util/extractVersionFromFilename.cjs.js"),O=require("../../../util/versionUploadHelpers.cjs.js");require("../../../util/pubsub.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("@ynput/ayon-react-components");require("../../AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../AccessUser/AccessUser.cjs.js");require("clsx");require("../../AttributeEditor/AttributeEditor.cjs.js");require("../../AttributeEditor/attributeTypeMap.cjs.js");require("../../Badge/Badge.cjs.js");require("../../Chips/Chips.cjs.js");require("react-dom");require("date-fns");require("../../DateRangePicker/DateRangePicker.styled.cjs.js");require("../../LinksManager/CellEditingDialog.cjs.js");require("../../../../../_virtual/index.cjs.js");require("../../../../../node_modules/refractor/lib/common.cjs.js");require("../../../../../node_modules/refractor/lib/all.cjs.js");;/* empty css */require("../../DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("react-quill-ayon");require("../../DetailsPanelDetails/BorderedSection.cjs.js");require("../../QuillListStyles/QuillListStyles.cjs.js");require("../../DetailsPanelDetails/DescriptionSection.styles.cjs.js");require("react-markdown");require("remark-gfm");require("rehype-raw");require("../../../containers/Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../DetailsPanelDetails/hooks/useMentionSystem.cjs.js");require("../../../containers/Feed/components/CommentInput/modules/index.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("../../../context/PowerpackContextInstance.cjs.js");require("../../../context/UriContext.cjs.js");require("../../../context/DetailsPanelContextInstance.cjs.js");require("../../../context/SubtasksModulesContextInstance.cjs.js");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/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("react-redux");require("custom-protocol-check");require("../../../containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("../../DetailsPanelDetails/DetailsSection.cjs.js");require("../../DetailsPanelDetails/FieldLabel.cjs.js");require("../../DoneCheckbox/DoneCheckbox.cjs.js");require("../../EarlyPreview/EarlyPreview.cjs.js");require("../../EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../EnumEditor/EnumEditor.styled.cjs.js");require("../../../containers/ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../../../containers/Feed/context/FeedContext.cjs.js");require("../../../containers/Feed/components/Tooltips/UserTooltipItem.cjs.js");require("../../../containers/Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../../containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.styled.cjs.js");require("../../../containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../../containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../../containers/Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("remark-emoji");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/ActivityComment/ActivityComment.styled.cjs.js");require("../../../containers/Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../../containers/Feed/components/ActivityReference/ActivityReference.styled.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("../../../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/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.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/EnumCellValue.cjs.js");require("../../../containers/ProjectTreeTable/widgets/TextWidget.cjs.js");require("../../../containers/ProjectTreeTable/widgets/MarkdownWidget.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("../../../containers/ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../../../containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../../LinksManager/LinksManager.styled.cjs.js");require("../../../containers/ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../../../containers/ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../../../containers/ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../../../containers/ProjectTreeTable/context/CellEditingContext.cjs.js");require("../../SearchFilter/filterDates.cjs.js");require("short-uuid");require("../../../containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../../../containers/ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../../../containers/ProjectTreeTable/context/ClipboardContext.cjs.js");require("../../../containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../../../containers/ProjectTreeTable/components/DeleteConfirmContent.cjs.js");require("../../../containers/ProjectTreeTable/context/ProjectDataContext.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/EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../../containers/Slicer/components/Slicer.cjs.js");require("../../../containers/Slicer/context/SlicerContext.cjs.js");require("../../../containers/Slicer/hooks/useTableDataBySlice.cjs.js");require("../../../containers/DetailsPanel/DetailsPanel.styled.cjs.js");require("../../../containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../../../containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../PlayableIcon/PlayableIcon.cjs.js");require("../../../containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../../containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js");require("../../../containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../../containers/DetailsPanel/components/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/ViewsMenu/ViewsMenu.cjs.js");require("../../../containers/Views/context/ViewsContextInstance.cjs.js");require("../../../containers/Views/Views.styled.cjs.js");require("../../../containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../../containers/ListTable/ListTableRow.cjs.js");require("../../../containers/ListTable/ListTable.styled.cjs.js");require("../../EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../EntityPath/EntityPath.styled.cjs.js");require("../../EntityPath/SegmentProvider.cjs.js");require("../../FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../Feedback/FeedbackContextInstance.cjs.js");require("../../Feedback/SupportBubble.cjs.js");require("../../FileThumbnail/FileThumbnail.cjs.js");require("../../LegacyBadge/LegacyBadge.cjs.js");require("../../Powerpack/PowerpackButton.cjs.js");require("../../Powerpack/FreeTrialLink.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("../../SettingsPanel/SettingsPanel.cjs.js");require("../../SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../SimpleFormDialog/SimpleFormDialog.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("../components/UploadVersionDialog.cjs.js");require("../../Watchers/Watchers.cjs.js");require("../../Menu/Menu.styled.cjs.js");require("../../Menu/MenuItem.cjs.js");require("../../ReviewablesSelector/ReviewablesSelector.cjs.js");require("../../ColumnHeaderMenuUI.cjs.js");require("../../ReviewablesList/ReviewablesList.styled.cjs.js");require("../../ReviewablesList/ReviewablesUpload.styled.cjs.js");const ve=require("../../ReviewablesList/useReviewablesUpload.cjs.js"),M=r.createContext(void 0),V={version:1,name:"review",productType:"review"},pe=({children:b,projectName:c,onVersionCreated:A,dispatch:G})=>{const[a,x]=r.useState(""),[t,T]=r.useState(""),[k,m]=r.useState(null),[Q,p]=r.useState(null),[s,D]=r.useState(!1),[I,R]=r.useState([]),[f,q]=r.useState(V),[H,y]=r.useState(!1),[B,F]=r.useState(""),[$,z]=r.useState(null),[J,K]=r.useState(null),[g,W]=r.useState(void 0),[L,X]=r.useState(void 0),v=r.useRef(!1),Y=r.useRef(null),{data:n=[],isLoading:Z}=ce.useGetFolderProductsQuery({projectName:c,folderId:a},{skip:!a||!s||!!t}),o=r.useMemo(()=>{if(!(t||!f.name||n.length===0))return n.find(e=>e.name===f.name)},[t,f.name,n]),l=t||o?.id||"",{currentData:w}=E.useGetLatestProductVersionQuery({projectName:c,productId:t},{skip:!t||!s||g!=null}),{data:_}=E.useGetVersionQuery({projectName:c,versionId:L},{skip:!L||!s||k!==null}),C=k??_?.taskId??"",j=!!(L&&k===null&&!_),N=r.useCallback(({productId:e,folderId:i,taskId:u,linkedTask:d,latestVersionNumber:S,latestVersionId:oe})=>{T(e||""),x(i||""),m(u||null),p(d||null),W(S),X(oe),q(ae=>({...ae,...S!=null?{version:S+1}:{}})),D(!0)},[]),P=r.useCallback(()=>{I.forEach(e=>{e.preview&&URL.revokeObjectURL(e.preview)}),R([]),q(V),z(null),K(null),F(""),y(!1),D(!1),T(""),x(""),m(null),p(null),v.current=!1,W(void 0),X(void 0)},[I]),[se]=de.useCreateProductMutation(),[ee]=E.useCreateVersionMutation(),U=r.useCallback(async e=>{try{if(l){const i=await O.createVersionHelper(ee,c,{productId:l,version:e.version,taskId:C||void 0});return A(l,i.id),qe.toast.success("Created new version"),{productId:l,versionId:i.id}}else{const{product:i,version:u}=await O.createProductAndVersion(se,ee,c,{folderId:a,name:e.name,productType:e.productType||"review",productBaseType:e.productType||"review"},{version:e.version,taskId:C||void 0});return A(i.id,u.id),qe.toast.success("Created new version"),{productId:i.id,versionId:u.id}}}catch(i){throw console.error("Error uploading version:",i),i.message||i}},[P,l,a,C,c]),re=r.useCallback(e=>{if(l)return;const i=e[0];if(i){const u=ve.parseFilename(i.name),d=fe.extractVersionFromFilename(u);d&&d!==f.version&&q(S=>({...S,version:d}))}},[l,f.version]),h=w?.version??g??o?.latestVersion?.version,ie=r.useCallback((e,i)=>{q(u=>({...u,[e]:i})),F("")},[]),ue=r.useCallback(async e=>{try{y(!0),F("");const i=O.validateFormData(e,h,!l);if(!i.isValid)throw i.error;const u=await U(e);a&&(Y.current={folderId:a,productName:e.name}),u?.productId&&z(u.productId),u?.versionId&&K(u.versionId),I.length<1&&(y(!1),P())}catch(i){F(i),y(!1)}},[U,I.length,P,h,l]);r.useEffect(()=>{if(!(!s||g!=null))return q(w?e=>({...e,version:w.version+1}):V),()=>{q(V)}},[s,w,g]),r.useEffect(()=>{if(!s||t||n.length===0||f.name!==V.name)return;const e=Y.current;if(e&&e.folderId===a&&n.some(d=>d.name===e.productName)){q(d=>({...d,name:e.productName}));return}const i=n[n.length-1];i&&q(u=>({...u,name:i.name}))},[s,t,n]),r.useEffect(()=>{if(!(!s||t))if(o){q(i=>({...i,productType:o.productType,...o.latestVersion&&{version:o.latestVersion.version+1}}));const e=o.latestVersion?.task;e&&(k===null||v.current)?(m(e.id),p({id:e.id,name:e.name,label:e.label,taskType:e.taskType}),v.current=!0):!e&&v.current&&(m(null),p(null),v.current=!1)}else q(e=>({...e,version:V.version})),(k===null||v.current)&&(m(null),p(null),v.current=!1)},[s,t,o]);const te=r.useCallback(e=>{m(e),v.current=!1},[]),ne=r.useMemo(()=>({productId:t,setProductId:T,folderId:a,taskId:C,linkedTask:Q,isLoadingTask:j,setTaskId:te,setLinkedTask:p,setFolderId:x,isOpen:s,projectName:c,latestVersion:h,pendingFiles:I,setPendingFiles:R,onOpenVersionUpload:N,onCloseVersionUpload:P,onUploadVersion:U,extractAndSetVersionFromFiles:re,form:f,setForm:q,isSubmitting:H,error:B,createdProductId:$,createdVersionId:J,handleFormChange:ie,handleFormSubmit:ue,folderProducts:n,isFolderProductsLoading:Z,matchedProduct:o,dispatch:G}),[a,x,t,C,Q,j,te,p,T,s,c,h,I,R,N,P,U,re,f,H,B,$,J,ie,ue,n,Z,o,G]);return le.jsxRuntimeExports.jsx(M.Provider,{value:ne,children:b})},me=()=>{const b=r.useContext(M);if(b===void 0)throw new Error("useVersionUploadContext must be used within a VersionUploadProvider");return b},Ie=()=>r.useContext(M)??null;exports.VersionUploadProvider=pe;exports.useOptionalVersionUploadContext=Ie;exports.useVersionUploadContext=me;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const le=require("../../../../../_virtual/jsx-runtime.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/dataImport.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/projectFolders.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/columnStats/metricTargets.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");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.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/permissions/getPermissions.cjs.js");const de=require("../../../api/queries/products/createProduct.cjs.js"),ce=require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.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/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.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 E=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");const r=require("react");require("lodash");const qe=require("react-toastify");require("uuid");const fe=require("../../../util/extractVersionFromFilename.cjs.js"),O=require("../../../util/versionUploadHelpers.cjs.js");require("../../../util/pubsub.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("@ynput/ayon-react-components");require("../../AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../AccessUser/AccessUser.cjs.js");require("clsx");require("../../AttributeEditor/AttributeEditor.cjs.js");require("../../AttributeEditor/attributeTypeMap.cjs.js");require("../../Badge/Badge.cjs.js");require("../../Chips/Chips.cjs.js");require("react-dom");require("date-fns");require("../../DateRangePicker/DateRangePicker.styled.cjs.js");require("../../LinksManager/CellEditingDialog.cjs.js");require("../../../../../_virtual/index.cjs.js");require("../../../../../node_modules/refractor/lib/common.cjs.js");require("../../../../../node_modules/refractor/lib/all.cjs.js");;/* empty css */require("../../DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("react-quill-ayon");require("../../DetailsPanelDetails/BorderedSection.cjs.js");require("../../QuillListStyles/QuillListStyles.cjs.js");require("../../DetailsPanelDetails/DescriptionSection.styles.cjs.js");require("react-markdown");require("remark-gfm");require("rehype-raw");require("../../../containers/Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../DetailsPanelDetails/hooks/useMentionSystem.cjs.js");require("../../../containers/Feed/components/CommentInput/modules/index.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("../../../context/PowerpackContextInstance.cjs.js");require("../../../context/UriContext.cjs.js");require("../../../context/DetailsPanelContextInstance.cjs.js");require("../../../context/SubtasksModulesContextInstance.cjs.js");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/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("react-redux");require("custom-protocol-check");require("../../../containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("../../DetailsPanelDetails/DetailsSection.cjs.js");require("../../DetailsPanelDetails/FieldLabel.cjs.js");require("../../DoneCheckbox/DoneCheckbox.cjs.js");require("../../EarlyPreview/EarlyPreview.cjs.js");require("../../EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../EnumEditor/EnumEditor.styled.cjs.js");require("../../../containers/ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../../../containers/Feed/context/FeedContext.cjs.js");require("../../../containers/Feed/components/Tooltips/UserTooltipItem.cjs.js");require("../../../containers/Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../../containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.styled.cjs.js");require("../../../containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../../containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../../containers/Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("remark-emoji");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/ActivityComment/ActivityComment.styled.cjs.js");require("../../../containers/Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../../containers/Feed/components/ActivityReference/ActivityReference.styled.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("../../../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/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.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/EnumCellValue.cjs.js");require("../../../containers/ProjectTreeTable/widgets/TextWidget.cjs.js");require("../../../containers/ProjectTreeTable/widgets/MarkdownWidget.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("../../../containers/ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../../../containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../../LinksManager/LinksManager.styled.cjs.js");require("../../../containers/ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../../../containers/ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../../../containers/ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../../../containers/ProjectTreeTable/context/CellEditingContext.cjs.js");require("../../SearchFilter/filterDates.cjs.js");require("short-uuid");require("../../../containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../../../containers/ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../../../containers/ProjectTreeTable/context/ClipboardContext.cjs.js");require("../../../containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../../../containers/ProjectTreeTable/components/DeleteConfirmContent.cjs.js");require("../../../containers/ProjectTreeTable/context/ProjectDataContext.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/TableFooterRow.cjs.js");require("../../../containers/EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../../containers/Slicer/components/Slicer.cjs.js");require("../../../containers/Slicer/context/SlicerContext.cjs.js");require("../../../containers/Slicer/hooks/useTableDataBySlice.cjs.js");require("../../../containers/DetailsPanel/DetailsPanel.styled.cjs.js");require("../../../containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../../../containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../PlayableIcon/PlayableIcon.cjs.js");require("../../../containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../../containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js");require("../../../containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../../containers/DetailsPanel/components/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/ViewsMenu/ViewsMenu.cjs.js");require("../../../containers/Views/context/ViewsContextInstance.cjs.js");require("../../../containers/Views/Views.styled.cjs.js");require("../../../containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../../containers/ListTable/ListTableRow.cjs.js");require("../../../containers/ListTable/ListTable.styled.cjs.js");require("../../EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../EntityPath/EntityPath.styled.cjs.js");require("../../EntityPath/SegmentProvider.cjs.js");require("../../FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../Feedback/FeedbackContextInstance.cjs.js");require("../../Feedback/SupportBubble.cjs.js");require("../../FileThumbnail/FileThumbnail.cjs.js");require("../../LegacyBadge/LegacyBadge.cjs.js");require("../../Powerpack/PowerpackButton.cjs.js");require("../../Powerpack/FreeTrialLink.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("../../SettingsPanel/SettingsPanel.cjs.js");require("../../SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../SimpleFormDialog/SimpleFormDialog.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("../components/UploadVersionDialog.cjs.js");require("../../Watchers/Watchers.cjs.js");require("../../Menu/Menu.styled.cjs.js");require("../../Menu/MenuItem.cjs.js");require("../../ReviewablesSelector/ReviewablesSelector.cjs.js");require("../../ColumnHeaderMenuUI.cjs.js");require("../../ReviewablesList/ReviewablesList.styled.cjs.js");require("../../ReviewablesList/ReviewablesUpload.styled.cjs.js");const ve=require("../../ReviewablesList/useReviewablesUpload.cjs.js"),M=r.createContext(void 0),V={version:1,name:"review",productType:"review"},pe=({children:b,projectName:c,onVersionCreated:A,dispatch:G})=>{const[a,x]=r.useState(""),[t,T]=r.useState(""),[k,m]=r.useState(null),[Q,p]=r.useState(null),[s,D]=r.useState(!1),[I,R]=r.useState([]),[f,q]=r.useState(V),[H,y]=r.useState(!1),[B,F]=r.useState(""),[$,z]=r.useState(null),[J,K]=r.useState(null),[g,W]=r.useState(void 0),[L,X]=r.useState(void 0),v=r.useRef(!1),Y=r.useRef(null),{data:n=[],isLoading:Z}=ce.useGetFolderProductsQuery({projectName:c,folderId:a},{skip:!a||!s||!!t}),o=r.useMemo(()=>{if(!(t||!f.name||n.length===0))return n.find(e=>e.name===f.name)},[t,f.name,n]),l=t||o?.id||"",{currentData:w}=E.useGetLatestProductVersionQuery({projectName:c,productId:t},{skip:!t||!s||g!=null}),{data:_}=E.useGetVersionQuery({projectName:c,versionId:L},{skip:!L||!s||k!==null}),C=k??_?.taskId??"",j=!!(L&&k===null&&!_),N=r.useCallback(({productId:e,folderId:i,taskId:u,linkedTask:d,latestVersionNumber:S,latestVersionId:oe})=>{T(e||""),x(i||""),m(u||null),p(d||null),W(S),X(oe),q(ae=>({...ae,...S!=null?{version:S+1}:{}})),D(!0)},[]),P=r.useCallback(()=>{I.forEach(e=>{e.preview&&URL.revokeObjectURL(e.preview)}),R([]),q(V),z(null),K(null),F(""),y(!1),D(!1),T(""),x(""),m(null),p(null),v.current=!1,W(void 0),X(void 0)},[I]),[se]=de.useCreateProductMutation(),[ee]=E.useCreateVersionMutation(),U=r.useCallback(async e=>{try{if(l){const i=await O.createVersionHelper(ee,c,{productId:l,version:e.version,taskId:C||void 0});return A(l,i.id),qe.toast.success("Created new version"),{productId:l,versionId:i.id}}else{const{product:i,version:u}=await O.createProductAndVersion(se,ee,c,{folderId:a,name:e.name,productType:e.productType||"review",productBaseType:e.productType||"review"},{version:e.version,taskId:C||void 0});return A(i.id,u.id),qe.toast.success("Created new version"),{productId:i.id,versionId:u.id}}}catch(i){throw console.error("Error uploading version:",i),i.message||i}},[P,l,a,C,c]),re=r.useCallback(e=>{if(l)return;const i=e[0];if(i){const u=ve.parseFilename(i.name),d=fe.extractVersionFromFilename(u);d&&d!==f.version&&q(S=>({...S,version:d}))}},[l,f.version]),h=w?.version??g??o?.latestVersion?.version,ie=r.useCallback((e,i)=>{q(u=>({...u,[e]:i})),F("")},[]),ue=r.useCallback(async e=>{try{y(!0),F("");const i=O.validateFormData(e,h,!l);if(!i.isValid)throw i.error;const u=await U(e);a&&(Y.current={folderId:a,productName:e.name}),u?.productId&&z(u.productId),u?.versionId&&K(u.versionId),I.length<1&&(y(!1),P())}catch(i){F(i),y(!1)}},[U,I.length,P,h,l]);r.useEffect(()=>{if(!(!s||g!=null))return q(w?e=>({...e,version:w.version+1}):V),()=>{q(V)}},[s,w,g]),r.useEffect(()=>{if(!s||t||n.length===0||f.name!==V.name)return;const e=Y.current;if(e&&e.folderId===a&&n.some(d=>d.name===e.productName)){q(d=>({...d,name:e.productName}));return}const i=n[n.length-1];i&&q(u=>({...u,name:i.name}))},[s,t,n]),r.useEffect(()=>{if(!(!s||t))if(o){q(i=>({...i,productType:o.productType,...o.latestVersion&&{version:o.latestVersion.version+1}}));const e=o.latestVersion?.task;e&&(k===null||v.current)?(m(e.id),p({id:e.id,name:e.name,label:e.label,taskType:e.taskType}),v.current=!0):!e&&v.current&&(m(null),p(null),v.current=!1)}else q(e=>({...e,version:V.version})),(k===null||v.current)&&(m(null),p(null),v.current=!1)},[s,t,o]);const te=r.useCallback(e=>{m(e),v.current=!1},[]),ne=r.useMemo(()=>({productId:t,setProductId:T,folderId:a,taskId:C,linkedTask:Q,isLoadingTask:j,setTaskId:te,setLinkedTask:p,setFolderId:x,isOpen:s,projectName:c,latestVersion:h,pendingFiles:I,setPendingFiles:R,onOpenVersionUpload:N,onCloseVersionUpload:P,onUploadVersion:U,extractAndSetVersionFromFiles:re,form:f,setForm:q,isSubmitting:H,error:B,createdProductId:$,createdVersionId:J,handleFormChange:ie,handleFormSubmit:ue,folderProducts:n,isFolderProductsLoading:Z,matchedProduct:o,dispatch:G}),[a,x,t,C,Q,j,te,p,T,s,c,h,I,R,N,P,U,re,f,H,B,$,J,ie,ue,n,Z,o,G]);return le.jsxRuntimeExports.jsx(M.Provider,{value:ne,children:b})},me=()=>{const b=r.useContext(M);if(b===void 0)throw new Error("useVersionUploadContext must be used within a VersionUploadProvider");return b},Ie=()=>r.useContext(M)??null;exports.VersionUploadProvider=pe;exports.useOptionalVersionUploadContext=Ie;exports.useVersionUploadContext=me;
2
2
  //# sourceMappingURL=VersionUploadContext.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VersionUploadContext.cjs.js","sources":["../../../../../../src/components/VersionUploader/context/VersionUploadContext.tsx"],"sourcesContent":["import {\n useCreateVersionMutation,\n useCreateProductMutation,\n useGetLatestProductVersionQuery,\n useGetVersionQuery,\n useGetFolderProductsQuery,\n} from '@shared/api'\nimport type { FolderProduct } from '@shared/api'\nimport React, {\n createContext,\n useContext,\n useState,\n useRef,\n ReactNode,\n useMemo,\n useCallback,\n useEffect,\n} from 'react'\nimport { extractVersionFromFilename } from '@shared/util'\nimport { toast } from 'react-toastify'\nimport {\n validateFormData as validateFormDataHelper,\n createProductAndVersion,\n createVersionHelper,\n} from '@shared/util/versionUploadHelpers'\nimport { parseFilename } from '@shared/components/ReviewablesList'\n\nexport interface FormData {\n version: number\n name: string\n productType: string\n}\nexport interface LinkedTask {\n id: string\n name: string\n label?: string | null\n taskType: string\n}\n\ninterface VersionUploadContextType {\n productId: string\n folderId: string\n taskId: string\n linkedTask: LinkedTask | null\n isLoadingTask: boolean\n setTaskId: (taskId: string) => void\n setLinkedTask: (task: LinkedTask | null) => void\n setProductId: (productId: string) => void\n setFolderId: (folderId: string) => void\n isOpen: boolean\n projectName: string\n latestVersion: number | undefined\n pendingFiles: Array<{ file: File; preview?: string }>\n setPendingFiles: React.Dispatch<React.SetStateAction<Array<{ file: File; preview?: string }>>>\n extractAndSetVersionFromFiles: (files: File[]) => void\n form: FormData\n setForm: React.Dispatch<React.SetStateAction<FormData>>\n isSubmitting: boolean\n error: string\n createdProductId: string | null\n createdVersionId: string | null\n onOpenVersionUpload: (params: {\n productId?: string\n folderId?: string\n taskId?: string\n linkedTask?: LinkedTask\n latestVersionNumber?: number\n latestVersionId?: string\n }) => void\n onCloseVersionUpload: () => void\n onUploadVersion: (data: FormData) => Promise<{ productId: string; versionId: string }>\n handleFormChange: (key: keyof FormData, value: string | number) => void\n handleFormSubmit: (formData: FormData) => Promise<void>\n folderProducts: FolderProduct[]\n isFolderProductsLoading: boolean\n matchedProduct: FolderProduct | undefined\n // pass through\n dispatch: any\n}\n\nconst VersionUploadContext = createContext<VersionUploadContextType | undefined>(undefined)\n\ninterface VersionUploadProviderProps {\n children: ReactNode\n projectName: string\n onVersionCreated: (productId: string, versionId: string) => void\n dispatch: any\n}\n\nconst defaultFormData: FormData = {\n version: 1,\n name: 'review',\n productType: 'review',\n}\n\nexport const VersionUploadProvider: React.FC<VersionUploadProviderProps> = ({\n children,\n projectName,\n onVersionCreated,\n dispatch,\n}) => {\n const [folderId, setFolderId] = useState<string>('')\n const [productId, setProductId] = useState<string>('')\n // optional task to link the version to\n // null = not set by user (auto-resolve from version), '' = explicitly cleared, 'id' = explicitly set\n const [userTaskId, setUserTaskId] = useState<string | null>(null)\n const [linkedTask, setLinkedTask] = useState<LinkedTask | null>(null)\n const [isOpen, setIsOpen] = useState<boolean>(false)\n const [pendingFiles, setPendingFiles] = useState<Array<{ file: File; preview?: string }>>([])\n const [form, setForm] = useState<FormData>(defaultFormData)\n const [isSubmitting, setIsSubmitting] = useState(false)\n const [error, setError] = useState<string>('')\n const [createdProductId, setCreatedProductId] = useState<string | null>(null)\n const [createdVersionId, setCreatedVersionId] = useState<string | null>(null)\n // Stores the latest version number passed from the caller (e.g. VP page)\n // so we can skip the GetLatestProductVersion query when we already know it\n const [latestVersionNumber, setLatestVersionNumber] = useState<number | undefined>(undefined)\n // Stores the latest version ID so we can fetch its task when not already known\n const [latestVersionId, setLatestVersionId] = useState<string | undefined>(undefined)\n // Tracks whether the current task was auto-linked from a matched product (not explicitly user-chosen)\n const isTaskAutoLinkedRef = useRef(false)\n // Remember the last submitted product name per folder so we can prefill on reopen\n const lastSubmittedRef = useRef<{ folderId: string; productName: string } | null>(null)\n\n // Fetch products for the folder (only when no productId — Overview/Browser flow)\n const { data: folderProducts = [], isLoading: isFolderProductsLoading } =\n useGetFolderProductsQuery(\n { projectName, folderId },\n { skip: !folderId || !isOpen || !!productId },\n )\n\n // Match typed product name against existing folder products\n const matchedProduct = useMemo(() => {\n if (productId || !form.name || folderProducts.length === 0) return undefined\n return folderProducts.find((p) => p.name === form.name)\n }, [productId, form.name, folderProducts])\n\n const effectiveProductId = productId || matchedProduct?.id || ''\n\n const { currentData: version } = useGetLatestProductVersionQuery(\n {\n projectName,\n productId,\n },\n { skip: !productId || !isOpen || latestVersionNumber != null },\n )\n\n // Fetch the latest version to discover its taskId (e.g. when versions are collapsed)\n const { data: latestVersionData } = useGetVersionQuery(\n { projectName, versionId: latestVersionId! },\n { skip: !latestVersionId || !isOpen || userTaskId !== null },\n )\n\n // Derive effective taskId: user's explicit choice takes priority, then auto-resolved from version\n const taskId = userTaskId ?? latestVersionData?.taskId ?? ''\n const isLoadingTask = !!(latestVersionId && userTaskId === null && !latestVersionData)\n\n const onOpenVersionUpload = useCallback<VersionUploadContextType['onOpenVersionUpload']>(\n ({ productId, folderId, taskId, linkedTask, latestVersionNumber, latestVersionId }) => {\n setProductId(productId || '')\n setFolderId(folderId || '')\n setUserTaskId(taskId || null)\n setLinkedTask(linkedTask || null)\n setLatestVersionNumber(latestVersionNumber)\n setLatestVersionId(latestVersionId)\n\n // Set initial form state in a single update\n setForm((prev) => ({\n ...prev,\n ...(latestVersionNumber != null ? { version: latestVersionNumber + 1 } : {}),\n }))\n setIsOpen(true)\n },\n [],\n )\n\n const onCloseVersionUpload = useCallback<VersionUploadContextType['onCloseVersionUpload']>(() => {\n // Clean up pending files\n pendingFiles.forEach((item) => {\n if (item.preview) {\n URL.revokeObjectURL(item.preview)\n }\n })\n setPendingFiles([])\n setForm(defaultFormData)\n setCreatedProductId(null)\n setCreatedVersionId(null)\n setError('')\n setIsSubmitting(false)\n setIsOpen(false)\n setProductId('')\n setFolderId('')\n setUserTaskId(null)\n setLinkedTask(null)\n isTaskAutoLinkedRef.current = false\n setLatestVersionNumber(undefined)\n setLatestVersionId(undefined)\n }, [pendingFiles])\n\n const [createProduct] = useCreateProductMutation()\n const [createVersion] = useCreateVersionMutation()\n\n const onUploadVersion = useCallback<VersionUploadContextType['onUploadVersion']>(\n async (data: FormData) => {\n try {\n if (effectiveProductId) {\n // product already exists (either passed directly or matched by name)\n const versionRes = await createVersionHelper(createVersion, projectName, {\n productId: effectiveProductId,\n version: data.version,\n taskId: taskId || undefined,\n })\n\n // select the new version\n onVersionCreated(effectiveProductId, versionRes.id)\n\n toast.success('Created new version')\n\n return {\n productId: effectiveProductId,\n versionId: versionRes.id,\n }\n } else {\n // product does not exist, create new product with version\n const { product: productRes, version: versionRes } = await createProductAndVersion(\n createProduct,\n createVersion,\n projectName,\n {\n folderId,\n name: data.name,\n productType: data.productType || 'review',\n productBaseType: data.productType || 'review',\n },\n {\n version: data.version,\n taskId: taskId || undefined,\n },\n )\n\n // select the new product and version\n onVersionCreated(productRes.id, versionRes.id)\n\n toast.success('Created new version')\n\n return {\n productId: productRes.id,\n versionId: versionRes.id,\n }\n }\n } catch (error: any) {\n console.error('Error uploading version:', error)\n throw error.message || error\n }\n },\n [onCloseVersionUpload, effectiveProductId, folderId, taskId, projectName],\n )\n\n const extractAndSetVersionFromFiles = useCallback(\n (files: File[]) => {\n // Only extract version if we don't already have a product (new product workflow)\n if (effectiveProductId) return\n\n // Try to extract version from the first file\n const firstFile = files[0]\n if (firstFile) {\n const fileName = parseFilename(firstFile.name)\n const extractedVersion = extractVersionFromFilename(fileName)\n if (extractedVersion && extractedVersion !== form.version) {\n setForm((prev) => ({\n ...prev,\n version: extractedVersion,\n }))\n }\n }\n },\n [effectiveProductId, form.version],\n )\n\n // Fallback order: (1) queried from productId, (2) passed by caller, (3) from matched product name\n const latestVersion =\n version?.version ?? latestVersionNumber ?? matchedProduct?.latestVersion?.version\n\n // Handle form changes\n const handleFormChange = useCallback((key: keyof FormData, value: string | number) => {\n setForm((prev) => ({\n ...prev,\n [key]: value,\n }))\n // Clear any previous validation error when user edits the form\n setError('')\n }, [])\n\n // Handle form submission\n const handleFormSubmit = useCallback(\n async (formData: FormData) => {\n try {\n setIsSubmitting(true)\n setError('')\n\n // validate the form data\n const validation = validateFormDataHelper(formData, latestVersion, !effectiveProductId)\n if (!validation.isValid) {\n throw validation.error\n }\n\n const response = await onUploadVersion(formData)\n\n // Remember last submitted product name for this folder so we can prefill on reopen\n if (folderId) {\n lastSubmittedRef.current = { folderId, productName: formData.name }\n }\n\n // Extract productId and versionId from response\n if (response?.productId) {\n setCreatedProductId(response.productId)\n }\n if (response?.versionId) {\n setCreatedVersionId(response.versionId)\n }\n\n if (pendingFiles.length < 1) {\n setIsSubmitting(false)\n onCloseVersionUpload()\n }\n } catch (error: any) {\n setError(error)\n setIsSubmitting(false)\n }\n },\n [onUploadVersion, pendingFiles.length, onCloseVersionUpload, latestVersion, effectiveProductId],\n )\n\n // Update form when version data changes (only when query is used as fallback)\n useEffect(() => {\n if (!isOpen || latestVersionNumber != null) return\n\n if (version) {\n setForm((prev) => ({ ...prev, version: version.version + 1 }))\n } else {\n setForm(defaultFormData)\n }\n\n return () => {\n setForm(defaultFormData)\n }\n }, [isOpen, version, latestVersionNumber])\n\n // Default product name: prefer last submitted name for same folder, else last folder product\n useEffect(() => {\n if (!isOpen || productId || folderProducts.length === 0) return\n // Only auto-fill if user hasn't changed the name from default\n if (form.name !== defaultFormData.name) return\n\n // Prefer the product name from the last successful submit on this folder\n const lastSubmitted = lastSubmittedRef.current\n if (lastSubmitted && lastSubmitted.folderId === folderId) {\n const exists = folderProducts.some((p) => p.name === lastSubmitted.productName)\n if (exists) {\n setForm((prev) => ({ ...prev, name: lastSubmitted.productName }))\n return\n }\n }\n\n // Fallback: use the last product in the folder list\n const lastProduct = folderProducts[folderProducts.length - 1]\n if (lastProduct) {\n setForm((prev) => ({ ...prev, name: lastProduct.name }))\n }\n }, [isOpen, productId, folderProducts])\n\n // Auto-set version, productType, and task when a matched product is found, reset when match is lost\n useEffect(() => {\n if (!isOpen || productId) return\n\n if (matchedProduct) {\n setForm((prev) => ({\n ...prev,\n productType: matchedProduct.productType,\n ...(matchedProduct.latestVersion && {\n version: matchedProduct.latestVersion.version + 1,\n }),\n }))\n\n const matchedTask = matchedProduct.latestVersion?.task\n if (matchedTask && (userTaskId === null || isTaskAutoLinkedRef.current)) {\n // Auto-link task from matched product's latest version\n setUserTaskId(matchedTask.id)\n setLinkedTask({\n id: matchedTask.id,\n name: matchedTask.name,\n label: matchedTask.label,\n taskType: matchedTask.taskType,\n })\n isTaskAutoLinkedRef.current = true\n } else if (!matchedTask && isTaskAutoLinkedRef.current) {\n // Matched product has no task — clear the auto-linked one\n setUserTaskId(null)\n setLinkedTask(null)\n isTaskAutoLinkedRef.current = false\n }\n } else {\n // Match lost — reset version back to default for new product\n setForm((prev) => ({ ...prev, version: defaultFormData.version }))\n // Clear auto-linked task (only if it was auto-set, not user-chosen)\n if (userTaskId === null || isTaskAutoLinkedRef.current) {\n setUserTaskId(null)\n setLinkedTask(null)\n isTaskAutoLinkedRef.current = false\n }\n }\n }, [isOpen, productId, matchedProduct])\n\n // Wrap setUserTaskId so consumers use a simple string setter\n // Any explicit user action (pick or clear) marks the task as not auto-linked\n const setTaskId = useCallback((id: string) => {\n setUserTaskId(id)\n isTaskAutoLinkedRef.current = false\n }, [])\n\n const value = useMemo(\n () => ({\n productId,\n setProductId,\n folderId,\n taskId,\n linkedTask,\n isLoadingTask,\n setTaskId,\n setLinkedTask,\n setFolderId,\n isOpen,\n projectName,\n latestVersion,\n pendingFiles,\n setPendingFiles,\n onOpenVersionUpload,\n onCloseVersionUpload,\n onUploadVersion,\n extractAndSetVersionFromFiles,\n form,\n setForm,\n isSubmitting,\n error,\n createdProductId,\n createdVersionId,\n handleFormChange,\n handleFormSubmit,\n folderProducts,\n isFolderProductsLoading,\n matchedProduct,\n dispatch,\n }),\n [\n folderId,\n setFolderId,\n productId,\n taskId,\n linkedTask,\n isLoadingTask,\n setTaskId,\n setLinkedTask,\n setProductId,\n isOpen,\n projectName,\n latestVersion,\n pendingFiles,\n setPendingFiles,\n onOpenVersionUpload,\n onCloseVersionUpload,\n onUploadVersion,\n extractAndSetVersionFromFiles,\n form,\n isSubmitting,\n error,\n createdProductId,\n createdVersionId,\n handleFormChange,\n handleFormSubmit,\n folderProducts,\n isFolderProductsLoading,\n matchedProduct,\n dispatch,\n ],\n )\n\n return <VersionUploadContext.Provider value={value}>{children}</VersionUploadContext.Provider>\n}\n\nexport const useVersionUploadContext = (): VersionUploadContextType => {\n const context = useContext(VersionUploadContext)\n if (context === undefined) {\n throw new Error('useVersionUploadContext must be used within a VersionUploadProvider')\n }\n return context\n}\n\n// Same as useVersionUploadContext but returns null instead of throwing when no provider is mounted.\n// Use in shared components that may render under pages without a VersionUploadProvider.\nexport const useOptionalVersionUploadContext = (): VersionUploadContextType | null => {\n return useContext(VersionUploadContext) ?? null\n}\n"],"names":["VersionUploadContext","createContext","defaultFormData","VersionUploadProvider","children","projectName","onVersionCreated","dispatch","folderId","setFolderId","useState","productId","setProductId","userTaskId","setUserTaskId","linkedTask","setLinkedTask","isOpen","setIsOpen","pendingFiles","setPendingFiles","form","setForm","isSubmitting","setIsSubmitting","error","setError","createdProductId","setCreatedProductId","createdVersionId","setCreatedVersionId","latestVersionNumber","setLatestVersionNumber","latestVersionId","setLatestVersionId","isTaskAutoLinkedRef","useRef","lastSubmittedRef","folderProducts","isFolderProductsLoading","useGetFolderProductsQuery","matchedProduct","useMemo","p","effectiveProductId","version","useGetLatestProductVersionQuery","latestVersionData","useGetVersionQuery","taskId","isLoadingTask","onOpenVersionUpload","useCallback","prev","onCloseVersionUpload","item","createProduct","useCreateProductMutation","createVersion","useCreateVersionMutation","onUploadVersion","data","versionRes","createVersionHelper","toast","productRes","createProductAndVersion","extractAndSetVersionFromFiles","files","firstFile","fileName","parseFilename","extractedVersion","extractVersionFromFilename","latestVersion","handleFormChange","key","value","handleFormSubmit","formData","validation","validateFormDataHelper","response","useEffect","lastSubmitted","lastProduct","matchedTask","setTaskId","id","jsx","useVersionUploadContext","context","useContext","useOptionalVersionUploadContext"],"mappings":"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"}
1
+ {"version":3,"file":"VersionUploadContext.cjs.js","sources":["../../../../../../src/components/VersionUploader/context/VersionUploadContext.tsx"],"sourcesContent":["import {\n useCreateVersionMutation,\n useCreateProductMutation,\n useGetLatestProductVersionQuery,\n useGetVersionQuery,\n useGetFolderProductsQuery,\n} from '@shared/api'\nimport type { FolderProduct } from '@shared/api'\nimport React, {\n createContext,\n useContext,\n useState,\n useRef,\n ReactNode,\n useMemo,\n useCallback,\n useEffect,\n} from 'react'\nimport { extractVersionFromFilename } from '@shared/util'\nimport { toast } from 'react-toastify'\nimport {\n validateFormData as validateFormDataHelper,\n createProductAndVersion,\n createVersionHelper,\n} from '@shared/util/versionUploadHelpers'\nimport { parseFilename } from '@shared/components/ReviewablesList'\n\nexport interface FormData {\n version: number\n name: string\n productType: string\n}\nexport interface LinkedTask {\n id: string\n name: string\n label?: string | null\n taskType: string\n}\n\ninterface VersionUploadContextType {\n productId: string\n folderId: string\n taskId: string\n linkedTask: LinkedTask | null\n isLoadingTask: boolean\n setTaskId: (taskId: string) => void\n setLinkedTask: (task: LinkedTask | null) => void\n setProductId: (productId: string) => void\n setFolderId: (folderId: string) => void\n isOpen: boolean\n projectName: string\n latestVersion: number | undefined\n pendingFiles: Array<{ file: File; preview?: string }>\n setPendingFiles: React.Dispatch<React.SetStateAction<Array<{ file: File; preview?: string }>>>\n extractAndSetVersionFromFiles: (files: File[]) => void\n form: FormData\n setForm: React.Dispatch<React.SetStateAction<FormData>>\n isSubmitting: boolean\n error: string\n createdProductId: string | null\n createdVersionId: string | null\n onOpenVersionUpload: (params: {\n productId?: string\n folderId?: string\n taskId?: string\n linkedTask?: LinkedTask\n latestVersionNumber?: number\n latestVersionId?: string\n }) => void\n onCloseVersionUpload: () => void\n onUploadVersion: (data: FormData) => Promise<{ productId: string; versionId: string }>\n handleFormChange: (key: keyof FormData, value: string | number) => void\n handleFormSubmit: (formData: FormData) => Promise<void>\n folderProducts: FolderProduct[]\n isFolderProductsLoading: boolean\n matchedProduct: FolderProduct | undefined\n // pass through\n dispatch: any\n}\n\nconst VersionUploadContext = createContext<VersionUploadContextType | undefined>(undefined)\n\ninterface VersionUploadProviderProps {\n children: ReactNode\n projectName: string\n onVersionCreated: (productId: string, versionId: string) => void\n dispatch: any\n}\n\nconst defaultFormData: FormData = {\n version: 1,\n name: 'review',\n productType: 'review',\n}\n\nexport const VersionUploadProvider: React.FC<VersionUploadProviderProps> = ({\n children,\n projectName,\n onVersionCreated,\n dispatch,\n}) => {\n const [folderId, setFolderId] = useState<string>('')\n const [productId, setProductId] = useState<string>('')\n // optional task to link the version to\n // null = not set by user (auto-resolve from version), '' = explicitly cleared, 'id' = explicitly set\n const [userTaskId, setUserTaskId] = useState<string | null>(null)\n const [linkedTask, setLinkedTask] = useState<LinkedTask | null>(null)\n const [isOpen, setIsOpen] = useState<boolean>(false)\n const [pendingFiles, setPendingFiles] = useState<Array<{ file: File; preview?: string }>>([])\n const [form, setForm] = useState<FormData>(defaultFormData)\n const [isSubmitting, setIsSubmitting] = useState(false)\n const [error, setError] = useState<string>('')\n const [createdProductId, setCreatedProductId] = useState<string | null>(null)\n const [createdVersionId, setCreatedVersionId] = useState<string | null>(null)\n // Stores the latest version number passed from the caller (e.g. VP page)\n // so we can skip the GetLatestProductVersion query when we already know it\n const [latestVersionNumber, setLatestVersionNumber] = useState<number | undefined>(undefined)\n // Stores the latest version ID so we can fetch its task when not already known\n const [latestVersionId, setLatestVersionId] = useState<string | undefined>(undefined)\n // Tracks whether the current task was auto-linked from a matched product (not explicitly user-chosen)\n const isTaskAutoLinkedRef = useRef(false)\n // Remember the last submitted product name per folder so we can prefill on reopen\n const lastSubmittedRef = useRef<{ folderId: string; productName: string } | null>(null)\n\n // Fetch products for the folder (only when no productId — Overview/Browser flow)\n const { data: folderProducts = [], isLoading: isFolderProductsLoading } =\n useGetFolderProductsQuery(\n { projectName, folderId },\n { skip: !folderId || !isOpen || !!productId },\n )\n\n // Match typed product name against existing folder products\n const matchedProduct = useMemo(() => {\n if (productId || !form.name || folderProducts.length === 0) return undefined\n return folderProducts.find((p) => p.name === form.name)\n }, [productId, form.name, folderProducts])\n\n const effectiveProductId = productId || matchedProduct?.id || ''\n\n const { currentData: version } = useGetLatestProductVersionQuery(\n {\n projectName,\n productId,\n },\n { skip: !productId || !isOpen || latestVersionNumber != null },\n )\n\n // Fetch the latest version to discover its taskId (e.g. when versions are collapsed)\n const { data: latestVersionData } = useGetVersionQuery(\n { projectName, versionId: latestVersionId! },\n { skip: !latestVersionId || !isOpen || userTaskId !== null },\n )\n\n // Derive effective taskId: user's explicit choice takes priority, then auto-resolved from version\n const taskId = userTaskId ?? latestVersionData?.taskId ?? ''\n const isLoadingTask = !!(latestVersionId && userTaskId === null && !latestVersionData)\n\n const onOpenVersionUpload = useCallback<VersionUploadContextType['onOpenVersionUpload']>(\n ({ productId, folderId, taskId, linkedTask, latestVersionNumber, latestVersionId }) => {\n setProductId(productId || '')\n setFolderId(folderId || '')\n setUserTaskId(taskId || null)\n setLinkedTask(linkedTask || null)\n setLatestVersionNumber(latestVersionNumber)\n setLatestVersionId(latestVersionId)\n\n // Set initial form state in a single update\n setForm((prev) => ({\n ...prev,\n ...(latestVersionNumber != null ? { version: latestVersionNumber + 1 } : {}),\n }))\n setIsOpen(true)\n },\n [],\n )\n\n const onCloseVersionUpload = useCallback<VersionUploadContextType['onCloseVersionUpload']>(() => {\n // Clean up pending files\n pendingFiles.forEach((item) => {\n if (item.preview) {\n URL.revokeObjectURL(item.preview)\n }\n })\n setPendingFiles([])\n setForm(defaultFormData)\n setCreatedProductId(null)\n setCreatedVersionId(null)\n setError('')\n setIsSubmitting(false)\n setIsOpen(false)\n setProductId('')\n setFolderId('')\n setUserTaskId(null)\n setLinkedTask(null)\n isTaskAutoLinkedRef.current = false\n setLatestVersionNumber(undefined)\n setLatestVersionId(undefined)\n }, [pendingFiles])\n\n const [createProduct] = useCreateProductMutation()\n const [createVersion] = useCreateVersionMutation()\n\n const onUploadVersion = useCallback<VersionUploadContextType['onUploadVersion']>(\n async (data: FormData) => {\n try {\n if (effectiveProductId) {\n // product already exists (either passed directly or matched by name)\n const versionRes = await createVersionHelper(createVersion, projectName, {\n productId: effectiveProductId,\n version: data.version,\n taskId: taskId || undefined,\n })\n\n // select the new version\n onVersionCreated(effectiveProductId, versionRes.id)\n\n toast.success('Created new version')\n\n return {\n productId: effectiveProductId,\n versionId: versionRes.id,\n }\n } else {\n // product does not exist, create new product with version\n const { product: productRes, version: versionRes } = await createProductAndVersion(\n createProduct,\n createVersion,\n projectName,\n {\n folderId,\n name: data.name,\n productType: data.productType || 'review',\n productBaseType: data.productType || 'review',\n },\n {\n version: data.version,\n taskId: taskId || undefined,\n },\n )\n\n // select the new product and version\n onVersionCreated(productRes.id, versionRes.id)\n\n toast.success('Created new version')\n\n return {\n productId: productRes.id,\n versionId: versionRes.id,\n }\n }\n } catch (error: any) {\n console.error('Error uploading version:', error)\n throw error.message || error\n }\n },\n [onCloseVersionUpload, effectiveProductId, folderId, taskId, projectName],\n )\n\n const extractAndSetVersionFromFiles = useCallback(\n (files: File[]) => {\n // Only extract version if we don't already have a product (new product workflow)\n if (effectiveProductId) return\n\n // Try to extract version from the first file\n const firstFile = files[0]\n if (firstFile) {\n const fileName = parseFilename(firstFile.name)\n const extractedVersion = extractVersionFromFilename(fileName)\n if (extractedVersion && extractedVersion !== form.version) {\n setForm((prev) => ({\n ...prev,\n version: extractedVersion,\n }))\n }\n }\n },\n [effectiveProductId, form.version],\n )\n\n // Fallback order: (1) queried from productId, (2) passed by caller, (3) from matched product name\n const latestVersion =\n version?.version ?? latestVersionNumber ?? matchedProduct?.latestVersion?.version\n\n // Handle form changes\n const handleFormChange = useCallback((key: keyof FormData, value: string | number) => {\n setForm((prev) => ({\n ...prev,\n [key]: value,\n }))\n // Clear any previous validation error when user edits the form\n setError('')\n }, [])\n\n // Handle form submission\n const handleFormSubmit = useCallback(\n async (formData: FormData) => {\n try {\n setIsSubmitting(true)\n setError('')\n\n // validate the form data\n const validation = validateFormDataHelper(formData, latestVersion, !effectiveProductId)\n if (!validation.isValid) {\n throw validation.error\n }\n\n const response = await onUploadVersion(formData)\n\n // Remember last submitted product name for this folder so we can prefill on reopen\n if (folderId) {\n lastSubmittedRef.current = { folderId, productName: formData.name }\n }\n\n // Extract productId and versionId from response\n if (response?.productId) {\n setCreatedProductId(response.productId)\n }\n if (response?.versionId) {\n setCreatedVersionId(response.versionId)\n }\n\n if (pendingFiles.length < 1) {\n setIsSubmitting(false)\n onCloseVersionUpload()\n }\n } catch (error: any) {\n setError(error)\n setIsSubmitting(false)\n }\n },\n [onUploadVersion, pendingFiles.length, onCloseVersionUpload, latestVersion, effectiveProductId],\n )\n\n // Update form when version data changes (only when query is used as fallback)\n useEffect(() => {\n if (!isOpen || latestVersionNumber != null) return\n\n if (version) {\n setForm((prev) => ({ ...prev, version: version.version + 1 }))\n } else {\n setForm(defaultFormData)\n }\n\n return () => {\n setForm(defaultFormData)\n }\n }, [isOpen, version, latestVersionNumber])\n\n // Default product name: prefer last submitted name for same folder, else last folder product\n useEffect(() => {\n if (!isOpen || productId || folderProducts.length === 0) return\n // Only auto-fill if user hasn't changed the name from default\n if (form.name !== defaultFormData.name) return\n\n // Prefer the product name from the last successful submit on this folder\n const lastSubmitted = lastSubmittedRef.current\n if (lastSubmitted && lastSubmitted.folderId === folderId) {\n const exists = folderProducts.some((p) => p.name === lastSubmitted.productName)\n if (exists) {\n setForm((prev) => ({ ...prev, name: lastSubmitted.productName }))\n return\n }\n }\n\n // Fallback: use the last product in the folder list\n const lastProduct = folderProducts[folderProducts.length - 1]\n if (lastProduct) {\n setForm((prev) => ({ ...prev, name: lastProduct.name }))\n }\n }, [isOpen, productId, folderProducts])\n\n // Auto-set version, productType, and task when a matched product is found, reset when match is lost\n useEffect(() => {\n if (!isOpen || productId) return\n\n if (matchedProduct) {\n setForm((prev) => ({\n ...prev,\n productType: matchedProduct.productType,\n ...(matchedProduct.latestVersion && {\n version: matchedProduct.latestVersion.version + 1,\n }),\n }))\n\n const matchedTask = matchedProduct.latestVersion?.task\n if (matchedTask && (userTaskId === null || isTaskAutoLinkedRef.current)) {\n // Auto-link task from matched product's latest version\n setUserTaskId(matchedTask.id)\n setLinkedTask({\n id: matchedTask.id,\n name: matchedTask.name,\n label: matchedTask.label,\n taskType: matchedTask.taskType,\n })\n isTaskAutoLinkedRef.current = true\n } else if (!matchedTask && isTaskAutoLinkedRef.current) {\n // Matched product has no task — clear the auto-linked one\n setUserTaskId(null)\n setLinkedTask(null)\n isTaskAutoLinkedRef.current = false\n }\n } else {\n // Match lost — reset version back to default for new product\n setForm((prev) => ({ ...prev, version: defaultFormData.version }))\n // Clear auto-linked task (only if it was auto-set, not user-chosen)\n if (userTaskId === null || isTaskAutoLinkedRef.current) {\n setUserTaskId(null)\n setLinkedTask(null)\n isTaskAutoLinkedRef.current = false\n }\n }\n }, [isOpen, productId, matchedProduct])\n\n // Wrap setUserTaskId so consumers use a simple string setter\n // Any explicit user action (pick or clear) marks the task as not auto-linked\n const setTaskId = useCallback((id: string) => {\n setUserTaskId(id)\n isTaskAutoLinkedRef.current = false\n }, [])\n\n const value = useMemo(\n () => ({\n productId,\n setProductId,\n folderId,\n taskId,\n linkedTask,\n isLoadingTask,\n setTaskId,\n setLinkedTask,\n setFolderId,\n isOpen,\n projectName,\n latestVersion,\n pendingFiles,\n setPendingFiles,\n onOpenVersionUpload,\n onCloseVersionUpload,\n onUploadVersion,\n extractAndSetVersionFromFiles,\n form,\n setForm,\n isSubmitting,\n error,\n createdProductId,\n createdVersionId,\n handleFormChange,\n handleFormSubmit,\n folderProducts,\n isFolderProductsLoading,\n matchedProduct,\n dispatch,\n }),\n [\n folderId,\n setFolderId,\n productId,\n taskId,\n linkedTask,\n isLoadingTask,\n setTaskId,\n setLinkedTask,\n setProductId,\n isOpen,\n projectName,\n latestVersion,\n pendingFiles,\n setPendingFiles,\n onOpenVersionUpload,\n onCloseVersionUpload,\n onUploadVersion,\n extractAndSetVersionFromFiles,\n form,\n isSubmitting,\n error,\n createdProductId,\n createdVersionId,\n handleFormChange,\n handleFormSubmit,\n folderProducts,\n isFolderProductsLoading,\n matchedProduct,\n dispatch,\n ],\n )\n\n return <VersionUploadContext.Provider value={value}>{children}</VersionUploadContext.Provider>\n}\n\nexport const useVersionUploadContext = (): VersionUploadContextType => {\n const context = useContext(VersionUploadContext)\n if (context === undefined) {\n throw new Error('useVersionUploadContext must be used within a VersionUploadProvider')\n }\n return context\n}\n\n// Same as useVersionUploadContext but returns null instead of throwing when no provider is mounted.\n// Use in shared components that may render under pages without a VersionUploadProvider.\nexport const useOptionalVersionUploadContext = (): VersionUploadContextType | null => {\n return useContext(VersionUploadContext) ?? null\n}\n"],"names":["VersionUploadContext","createContext","defaultFormData","VersionUploadProvider","children","projectName","onVersionCreated","dispatch","folderId","setFolderId","useState","productId","setProductId","userTaskId","setUserTaskId","linkedTask","setLinkedTask","isOpen","setIsOpen","pendingFiles","setPendingFiles","form","setForm","isSubmitting","setIsSubmitting","error","setError","createdProductId","setCreatedProductId","createdVersionId","setCreatedVersionId","latestVersionNumber","setLatestVersionNumber","latestVersionId","setLatestVersionId","isTaskAutoLinkedRef","useRef","lastSubmittedRef","folderProducts","isFolderProductsLoading","useGetFolderProductsQuery","matchedProduct","useMemo","p","effectiveProductId","version","useGetLatestProductVersionQuery","latestVersionData","useGetVersionQuery","taskId","isLoadingTask","onOpenVersionUpload","useCallback","prev","onCloseVersionUpload","item","createProduct","useCreateProductMutation","createVersion","useCreateVersionMutation","onUploadVersion","data","versionRes","createVersionHelper","toast","productRes","createProductAndVersion","extractAndSetVersionFromFiles","files","firstFile","fileName","parseFilename","extractedVersion","extractVersionFromFilename","latestVersion","handleFormChange","key","value","handleFormSubmit","formData","validation","validateFormDataHelper","response","useEffect","lastSubmitted","lastProduct","matchedTask","setTaskId","id","jsx","useVersionUploadContext","context","useContext","useOptionalVersionUploadContext"],"mappings":"upiBAgFMA,EAAuBC,EAAAA,cAAoD,MAAS,EASpFC,EAA4B,CAChC,QAAS,EACT,KAAM,SACN,YAAa,QACf,EAEaC,GAA8D,CAAC,CAC1E,SAAAC,EACA,YAAAC,EACA,iBAAAC,EACA,SAAAC,CACF,IAAM,CACJ,KAAM,CAACC,EAAUC,CAAW,EAAIC,EAAAA,SAAiB,EAAE,EAC7C,CAACC,EAAWC,CAAY,EAAIF,EAAAA,SAAiB,EAAE,EAG/C,CAACG,EAAYC,CAAa,EAAIJ,EAAAA,SAAwB,IAAI,EAC1D,CAACK,EAAYC,CAAa,EAAIN,EAAAA,SAA4B,IAAI,EAC9D,CAACO,EAAQC,CAAS,EAAIR,EAAAA,SAAkB,EAAK,EAC7C,CAACS,EAAcC,CAAe,EAAIV,EAAAA,SAAkD,CAAA,CAAE,EACtF,CAACW,EAAMC,CAAO,EAAIZ,EAAAA,SAAmBR,CAAe,EACpD,CAACqB,EAAcC,CAAe,EAAId,EAAAA,SAAS,EAAK,EAChD,CAACe,EAAOC,CAAQ,EAAIhB,EAAAA,SAAiB,EAAE,EACvC,CAACiB,EAAkBC,CAAmB,EAAIlB,EAAAA,SAAwB,IAAI,EACtE,CAACmB,EAAkBC,CAAmB,EAAIpB,EAAAA,SAAwB,IAAI,EAGtE,CAACqB,EAAqBC,CAAsB,EAAItB,EAAAA,SAA6B,MAAS,EAEtF,CAACuB,EAAiBC,CAAkB,EAAIxB,EAAAA,SAA6B,MAAS,EAE9EyB,EAAsBC,EAAAA,OAAO,EAAK,EAElCC,EAAmBD,EAAAA,OAAyD,IAAI,EAGhF,CAAE,KAAME,EAAiB,CAAA,EAAI,UAAWC,GAC5CC,GAAAA,0BACE,CAAE,YAAAnC,EAAa,SAAAG,CAAA,EACf,CAAE,KAAM,CAACA,GAAY,CAACS,GAAU,CAAC,CAACN,CAAA,CAAU,EAI1C8B,EAAiBC,EAAAA,QAAQ,IAAM,CACnC,GAAI,EAAA/B,GAAa,CAACU,EAAK,MAAQiB,EAAe,SAAW,GACzD,OAAOA,EAAe,KAAMK,GAAMA,EAAE,OAAStB,EAAK,IAAI,CACxD,EAAG,CAACV,EAAWU,EAAK,KAAMiB,CAAc,CAAC,EAEnCM,EAAqBjC,GAAa8B,GAAgB,IAAM,GAExD,CAAE,YAAaI,CAAA,EAAYC,EAAAA,gCAC/B,CACE,YAAAzC,EACA,UAAAM,CAAA,EAEF,CAAE,KAAM,CAACA,GAAa,CAACM,GAAUc,GAAuB,IAAA,CAAK,EAIzD,CAAE,KAAMgB,CAAA,EAAsBC,EAAAA,mBAClC,CAAE,YAAA3C,EAAa,UAAW4B,CAAA,EAC1B,CAAE,KAAM,CAACA,GAAmB,CAAChB,GAAUJ,IAAe,IAAA,CAAK,EAIvDoC,EAASpC,GAAckC,GAAmB,QAAU,GACpDG,EAAgB,CAAC,EAAEjB,GAAmBpB,IAAe,MAAQ,CAACkC,GAE9DI,EAAsBC,EAAAA,YAC1B,CAAC,CAAE,UAAAzC,EAAW,SAAAH,EAAU,OAAAyC,EAAQ,WAAAlC,EAAY,oBAAAgB,EAAqB,gBAAAE,MAAsB,CACrFrB,EAAaD,GAAa,EAAE,EAC5BF,EAAYD,GAAY,EAAE,EAC1BM,EAAcmC,GAAU,IAAI,EAC5BjC,EAAcD,GAAc,IAAI,EAChCiB,EAAuBD,CAAmB,EAC1CG,EAAmBD,EAAe,EAGlCX,EAAS+B,KAAU,CACjB,GAAGA,GACH,GAAItB,GAAuB,KAAO,CAAE,QAASA,EAAsB,CAAA,EAAM,CAAA,CAAC,EAC1E,EACFb,EAAU,EAAI,CAChB,EACA,CAAA,CAAC,EAGGoC,EAAuBF,EAAAA,YAA8D,IAAM,CAE/FjC,EAAa,QAASoC,GAAS,CACzBA,EAAK,SACP,IAAI,gBAAgBA,EAAK,OAAO,CAEpC,CAAC,EACDnC,EAAgB,CAAA,CAAE,EAClBE,EAAQpB,CAAe,EACvB0B,EAAoB,IAAI,EACxBE,EAAoB,IAAI,EACxBJ,EAAS,EAAE,EACXF,EAAgB,EAAK,EACrBN,EAAU,EAAK,EACfN,EAAa,EAAE,EACfH,EAAY,EAAE,EACdK,EAAc,IAAI,EAClBE,EAAc,IAAI,EAClBmB,EAAoB,QAAU,GAC9BH,EAAuB,MAAS,EAChCE,EAAmB,MAAS,CAC9B,EAAG,CAACf,CAAY,CAAC,EAEX,CAACqC,EAAa,EAAIC,4BAAA,EAClB,CAACC,EAAa,EAAIC,2BAAA,EAElBC,EAAkBR,EAAAA,YACtB,MAAOS,GAAmB,CACxB,GAAI,CACF,GAAIjB,EAAoB,CAEtB,MAAMkB,EAAa,MAAMC,sBAAoBL,GAAerD,EAAa,CACvE,UAAWuC,EACX,QAASiB,EAAK,QACd,OAAQZ,GAAU,MAAA,CACnB,EAGD,OAAA3C,EAAiBsC,EAAoBkB,EAAW,EAAE,EAElDE,GAAAA,MAAM,QAAQ,qBAAqB,EAE5B,CACL,UAAWpB,EACX,UAAWkB,EAAW,EAAA,CAE1B,KAAO,CAEL,KAAM,CAAE,QAASG,EAAY,QAASH,CAAA,EAAe,MAAMI,EAAAA,wBACzDV,GACAE,GACArD,EACA,CACE,SAAAG,EACA,KAAMqD,EAAK,KACX,YAAaA,EAAK,aAAe,SACjC,gBAAiBA,EAAK,aAAe,QAAA,EAEvC,CACE,QAASA,EAAK,QACd,OAAQZ,GAAU,MAAA,CACpB,EAIF,OAAA3C,EAAiB2D,EAAW,GAAIH,EAAW,EAAE,EAE7CE,GAAAA,MAAM,QAAQ,qBAAqB,EAE5B,CACL,UAAWC,EAAW,GACtB,UAAWH,EAAW,EAAA,CAE1B,CACF,OAASrC,EAAY,CACnB,cAAQ,MAAM,2BAA4BA,CAAK,EACzCA,EAAM,SAAWA,CACzB,CACF,EACA,CAAC6B,EAAsBV,EAAoBpC,EAAUyC,EAAQ5C,CAAW,CAAA,EAGpE8D,GAAgCf,EAAAA,YACnCgB,GAAkB,CAEjB,GAAIxB,EAAoB,OAGxB,MAAMyB,EAAYD,EAAM,CAAC,EACzB,GAAIC,EAAW,CACb,MAAMC,EAAWC,GAAAA,cAAcF,EAAU,IAAI,EACvCG,EAAmBC,GAAAA,2BAA2BH,CAAQ,EACxDE,GAAoBA,IAAqBnD,EAAK,SAChDC,EAAS+B,IAAU,CACjB,GAAGA,EACH,QAASmB,CAAA,EACT,CAEN,CACF,EACA,CAAC5B,EAAoBvB,EAAK,OAAO,CAAA,EAI7BqD,EACJ7B,GAAS,SAAWd,GAAuBU,GAAgB,eAAe,QAGtEkC,GAAmBvB,EAAAA,YAAY,CAACwB,EAAqBC,IAA2B,CACpFvD,EAAS+B,IAAU,CACjB,GAAGA,EACH,CAACuB,CAAG,EAAGC,CAAA,EACP,EAEFnD,EAAS,EAAE,CACb,EAAG,CAAA,CAAE,EAGCoD,GAAmB1B,EAAAA,YACvB,MAAO2B,GAAuB,CAC5B,GAAI,CACFvD,EAAgB,EAAI,EACpBE,EAAS,EAAE,EAGX,MAAMsD,EAAaC,EAAAA,iBAAuBF,EAAUL,EAAe,CAAC9B,CAAkB,EACtF,GAAI,CAACoC,EAAW,QACd,MAAMA,EAAW,MAGnB,MAAME,EAAW,MAAMtB,EAAgBmB,CAAQ,EAG3CvE,IACF6B,EAAiB,QAAU,CAAE,SAAA7B,EAAU,YAAauE,EAAS,IAAA,GAI3DG,GAAU,WACZtD,EAAoBsD,EAAS,SAAS,EAEpCA,GAAU,WACZpD,EAAoBoD,EAAS,SAAS,EAGpC/D,EAAa,OAAS,IACxBK,EAAgB,EAAK,EACrB8B,EAAA,EAEJ,OAAS7B,EAAY,CACnBC,EAASD,CAAK,EACdD,EAAgB,EAAK,CACvB,CACF,EACA,CAACoC,EAAiBzC,EAAa,OAAQmC,EAAsBoB,EAAe9B,CAAkB,CAAA,EAIhGuC,EAAAA,UAAU,IAAM,CACd,GAAI,GAAClE,GAAUc,GAAuB,MAEtC,OACET,EADEuB,EACOQ,IAAU,CAAE,GAAGA,EAAM,QAASR,EAAQ,QAAU,CAAA,GAEjD3C,CAFqD,EAKxD,IAAM,CACXoB,EAAQpB,CAAe,CACzB,CACF,EAAG,CAACe,EAAQ4B,EAASd,CAAmB,CAAC,EAGzCoD,EAAAA,UAAU,IAAM,CAGd,GAFI,CAAClE,GAAUN,GAAa2B,EAAe,SAAW,GAElDjB,EAAK,OAASnB,EAAgB,KAAM,OAGxC,MAAMkF,EAAgB/C,EAAiB,QACvC,GAAI+C,GAAiBA,EAAc,WAAa5E,GAC/B8B,EAAe,KAAMK,GAAMA,EAAE,OAASyC,EAAc,WAAW,EAClE,CACV9D,EAAS+B,IAAU,CAAE,GAAGA,EAAM,KAAM+B,EAAc,aAAc,EAChE,MACF,CAIF,MAAMC,EAAc/C,EAAeA,EAAe,OAAS,CAAC,EACxD+C,GACF/D,EAAS+B,IAAU,CAAE,GAAGA,EAAM,KAAMgC,EAAY,MAAO,CAE3D,EAAG,CAACpE,EAAQN,EAAW2B,CAAc,CAAC,EAGtC6C,EAAAA,UAAU,IAAM,CACd,GAAI,GAAClE,GAAUN,GAEf,GAAI8B,EAAgB,CAClBnB,EAAS+B,IAAU,CACjB,GAAGA,EACH,YAAaZ,EAAe,YAC5B,GAAIA,EAAe,eAAiB,CAClC,QAASA,EAAe,cAAc,QAAU,CAAA,CAClD,EACA,EAEF,MAAM6C,EAAc7C,EAAe,eAAe,KAC9C6C,IAAgBzE,IAAe,MAAQsB,EAAoB,UAE7DrB,EAAcwE,EAAY,EAAE,EAC5BtE,EAAc,CACZ,GAAIsE,EAAY,GAChB,KAAMA,EAAY,KAClB,MAAOA,EAAY,MACnB,SAAUA,EAAY,QAAA,CACvB,EACDnD,EAAoB,QAAU,IACrB,CAACmD,GAAenD,EAAoB,UAE7CrB,EAAc,IAAI,EAClBE,EAAc,IAAI,EAClBmB,EAAoB,QAAU,GAElC,MAEEb,EAAS+B,IAAU,CAAE,GAAGA,EAAM,QAASnD,EAAgB,SAAU,GAE7DW,IAAe,MAAQsB,EAAoB,WAC7CrB,EAAc,IAAI,EAClBE,EAAc,IAAI,EAClBmB,EAAoB,QAAU,GAGpC,EAAG,CAAClB,EAAQN,EAAW8B,CAAc,CAAC,EAItC,MAAM8C,GAAYnC,cAAaoC,GAAe,CAC5C1E,EAAc0E,CAAE,EAChBrD,EAAoB,QAAU,EAChC,EAAG,CAAA,CAAE,EAEC0C,GAAQnC,EAAAA,QACZ,KAAO,CACL,UAAA/B,EACA,aAAAC,EACA,SAAAJ,EACA,OAAAyC,EACA,WAAAlC,EACA,cAAAmC,EACA,UAAAqC,GACA,cAAAvE,EACA,YAAAP,EACA,OAAAQ,EACA,YAAAZ,EACA,cAAAqE,EACA,aAAAvD,EACA,gBAAAC,EACA,oBAAA+B,EACA,qBAAAG,EACA,gBAAAM,EACA,8BAAAO,GACA,KAAA9C,EACA,QAAAC,EACA,aAAAC,EACA,MAAAE,EACA,iBAAAE,EACA,iBAAAE,EACA,iBAAA8C,GACA,iBAAAG,GACA,eAAAxC,EACA,wBAAAC,EACA,eAAAE,EACA,SAAAlC,CAAA,GAEF,CACEC,EACAC,EACAE,EACAsC,EACAlC,EACAmC,EACAqC,GACAvE,EACAJ,EACAK,EACAZ,EACAqE,EACAvD,EACAC,EACA+B,EACAG,EACAM,EACAO,GACA9C,EACAE,EACAE,EACAE,EACAE,EACA8C,GACAG,GACAxC,EACAC,EACAE,EACAlC,CAAA,CACF,EAGF,OAAOkF,GAAAA,kBAAAA,IAACzF,EAAqB,SAArB,CAA8B,MAAA6E,GAAe,SAAAzE,CAAA,CAAS,CAChE,EAEasF,GAA0B,IAAgC,CACrE,MAAMC,EAAUC,EAAAA,WAAW5F,CAAoB,EAC/C,GAAI2F,IAAY,OACd,MAAM,IAAI,MAAM,qEAAqE,EAEvF,OAAOA,CACT,EAIaE,GAAkC,IACtCD,EAAAA,WAAW5F,CAAoB,GAAK"}